<?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>223808</bug_id>
          
          <creation_ts>2021-03-26 11:32:14 -0700</creation_ts>
          <short_desc>Service Worker scripts use too much memory in the network process</short_desc>
          <delta_ts>2021-04-04 20:34:08 -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>Service Workers</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=224015</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224059</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224175</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
    
    <cc>mkwst</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744252</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 11:32:14 -0700</bug_when>
    <thetext>Service Worker scripts use to much memory in the network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744253</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 11:32:29 -0700</bug_when>
    <thetext>&lt;rdar://75637093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744255</commentid>
    <comment_count>2</comment_count>
      <attachid>424382</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 11:33:24 -0700</bug_when>
    <thetext>Created attachment 424382
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744263</commentid>
    <comment_count>3</comment_count>
      <attachid>424387</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 11:52:48 -0700</bug_when>
    <thetext>Created attachment 424387
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744296</commentid>
    <comment_count>4</comment_count>
      <attachid>424395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 13:09:36 -0700</bug_when>
    <thetext>Created attachment 424395
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744301</commentid>
    <comment_count>5</comment_count>
      <attachid>424396</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 13:20:38 -0700</bug_when>
    <thetext>Created attachment 424396
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744322</commentid>
    <comment_count>6</comment_count>
      <attachid>424402</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 14:03:03 -0700</bug_when>
    <thetext>Created attachment 424402
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744359</commentid>
    <comment_count>7</comment_count>
      <attachid>424411</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 15:51:22 -0700</bug_when>
    <thetext>Created attachment 424411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744395</commentid>
    <comment_count>8</comment_count>
      <attachid>424421</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 17:09:48 -0700</bug_when>
    <thetext>Created attachment 424421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744430</commentid>
    <comment_count>9</comment_count>
      <attachid>424431</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 19:14:00 -0700</bug_when>
    <thetext>Created attachment 424431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744454</commentid>
    <comment_count>10</comment_count>
      <attachid>424440</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 21:13:47 -0700</bug_when>
    <thetext>Created attachment 424440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744911</commentid>
    <comment_count>11</comment_count>
      <attachid>424577</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 14:18:29 -0700</bug_when>
    <thetext>Created attachment 424577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744947</commentid>
    <comment_count>12</comment_count>
      <attachid>424589</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 15:07:59 -0700</bug_when>
    <thetext>Created attachment 424589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744969</commentid>
    <comment_count>13</comment_count>
      <attachid>424597</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 15:51:26 -0700</bug_when>
    <thetext>Created attachment 424597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744986</commentid>
    <comment_count>14</comment_count>
      <attachid>424604</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 17:05:52 -0700</bug_when>
    <thetext>Created attachment 424604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744995</commentid>
    <comment_count>15</comment_count>
      <attachid>424605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 17:27:22 -0700</bug_when>
    <thetext>Created attachment 424605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745191</commentid>
    <comment_count>16</comment_count>
      <attachid>424663</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 11:19:04 -0700</bug_when>
    <thetext>Created attachment 424663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745193</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 11:20:15 -0700</bug_when>
    <thetext>I did manual memory testing with a very large service worker that had one ~100MB main
script, importing another ~100MB script.

Here are the memory results without my change:
- Networking (Dirty): 238MB (cold) / 331MB (warm)
- WebContent (Dirty): 441MB (cold) / 857MB (warm)

Here are the memory results with my change:
- Networking (Dirty): 22MB (cold) / 14MB (warm)
- WebContent (Dirty): 440MB (cold) / 438MB (warm)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745239</commentid>
    <comment_count>18</comment_count>
      <attachid>424663</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-30 12:29:12 -0700</bug_when>
    <thetext>Comment on attachment 424663
Patch

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

Looks good. A few comments. I&apos;m not going to say r+ yet because I think the salt issue might change the on-disk representation a smidge, and I&apos;d hate to have to bump the version again just for that.

&gt; Source/WebCore/ChangeLog:15
&gt; +        and greatly reduce memory usage.

reduce [ dirty ] memory usage

&gt; Source/WebCore/ChangeLog:36
&gt; +        - WebContent (Dirty): 440MB (cold) / 438MB (warm)

I wonder why the warm case used to use 1.5X - 2X more memory than the cold case. Maybe this won&apos;t matter once we&apos;re done optimizing; but it almost suggests that we have two copies of the script somewhere in both networking and WebContent.

&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:53
&gt; -static const uint64_t schemaVersion = 5;
&gt; +static const uint64_t schemaVersion = 6;

Is this schema bump sufficient to delete the old database, or do we need to do something explicit? (We want to avoid leaving old data behind, including in the case of a restore from a backup from a previous version of WebKit.)

&gt; Source/WebCore/workers/service/server/SWScriptStorage.cpp:45
&gt; +    auto crypto = PAL::CryptoDigest::create(PAL::CryptoDigest::Algorithm::SHA_256);
&gt; +    auto inputUtf8 = input.utf8();
&gt; +    crypto-&gt;addBytes(inputUtf8.data(), inputUtf8.length());
&gt; +    auto hash = crypto-&gt;computeHash();

Is there anything in this code that will add a salt to the hash? If not, I think we need to add a salt -- otherwise the hash does not confer much secrecy. (Specifically, anyone searching for a specific URL can just compute the hash for themselves and then compare. And perhaps there are other attacks; I&apos;m not an expert, but I know that salt is best practice and also what we use in the HTTP cache.)

&gt; Source/WebCore/workers/service/server/SWScriptStorage.cpp:94
&gt; +    // If mmap() fails, fall back to less efficient way.
&gt; +    auto fileHandle = FileSystem::openFile(scriptPath, FileSystem::FileOpenMode::Write);
&gt; +    if (!FileSystem::isHandleValid(fileHandle)) {
&gt; +        RELEASE_LOG_ERROR(ServiceWorker, &quot;SWScriptStorage::store: Failure to store %s, FileSystem::openFile() failed&quot;, scriptPath.utf8().data());
&gt; +        return nullptr;
&gt; +    }
&gt; +    for (auto it = script.begin(); it != script.end(); ++it)
&gt; +        FileSystem::writeToFile(fileHandle, it-&gt;segment-&gt;data(), it-&gt;segment-&gt;size());
&gt; +
&gt; +    FileSystem::closeFile(fileHandle);
&gt; +    return script.copy();

Do we expect mmap to fail in any reasonable case? If not, I think we should just fail the operation instead of falling back. I don&apos;t love having fallback behavior that we can&apos;t test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745243</commentid>
    <comment_count>19</comment_count>
      <attachid>424663</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 12:38:54 -0700</bug_when>
    <thetext>Comment on attachment 424663
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        and greatly reduce memory usage.
&gt; 
&gt; reduce [ dirty ] memory usage

OK

&gt;&gt; Source/WebCore/ChangeLog:36
&gt;&gt; +        - WebContent (Dirty): 440MB (cold) / 438MB (warm)
&gt; 
&gt; I wonder why the warm case used to use 1.5X - 2X more memory than the cold case. Maybe this won&apos;t matter once we&apos;re done optimizing; but it almost suggests that we have two copies of the script somewhere in both networking and WebContent.

Yes, I think this deserves a separate investigation. I could not believe the 857MB at first so I took the measurement twice...

&gt;&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:53
&gt;&gt; +static const uint64_t schemaVersion = 6;
&gt; 
&gt; Is this schema bump sufficient to delete the old database, or do we need to do something explicit? (We want to avoid leaving old data behind, including in the case of a restore from a backup from a previous version of WebKit.)

This is sufficient because the following will get called and remove old databases:
```
static inline void cleanOldDatabases(const String&amp; databaseDirectory)
{
    for (uint64_t version = 1; version &lt; schemaVersion; ++version)
        SQLiteFileSystem::deleteDatabaseFile(FileSystem::pathByAppendingComponent(databaseDirectory, databaseFilenameFromVersion(version)));
}
```

&gt;&gt; Source/WebCore/workers/service/server/SWScriptStorage.cpp:45
&gt;&gt; +    auto hash = crypto-&gt;computeHash();
&gt; 
&gt; Is there anything in this code that will add a salt to the hash? If not, I think we need to add a salt -- otherwise the hash does not confer much secrecy. (Specifically, anyone searching for a specific URL can just compute the hash for themselves and then compare. And perhaps there are other attacks; I&apos;m not an expert, but I know that salt is best practice and also what we use in the HTTP cache.)

Ok, I will look into adding a Salt. I did not realized we were concerned about this sort of attack.

&gt;&gt; Source/WebCore/workers/service/server/SWScriptStorage.cpp:94
&gt;&gt; +    return script.copy();
&gt; 
&gt; Do we expect mmap to fail in any reasonable case? If not, I think we should just fail the operation instead of falling back. I don&apos;t love having fallback behavior that we can&apos;t test.

Ok, so there is definitely one case:
1. size is 0 (I found out because some of our API test use empty files). FileSystem::mapToFile() definitely fails with an empty file.

This code path is definitely tested by API tests.

Then there is a possible second case I thought of:
2. I am assuming the system has some sort of limits on how many files you can have mmap&apos;d() at the same time. If so, once we reach that limit, it is nicer to fall back to basic writing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745251</commentid>
    <comment_count>20</comment_count>
      <attachid>424663</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 12:42:50 -0700</bug_when>
    <thetext>Comment on attachment 424663
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/service/server/SWScriptStorage.cpp:94
&gt;&gt;&gt; +    return script.copy();
&gt;&gt; 
&gt;&gt; Do we expect mmap to fail in any reasonable case? If not, I think we should just fail the operation instead of falling back. I don&apos;t love having fallback behavior that we can&apos;t test.
&gt; 
&gt; Ok, so there is definitely one case:
&gt; 1. size is 0 (I found out because some of our API test use empty files). FileSystem::mapToFile() definitely fails with an empty file.
&gt; 
&gt; This code path is definitely tested by API tests.
&gt; 
&gt; Then there is a possible second case I thought of:
&gt; 2. I am assuming the system has some sort of limits on how many files you can have mmap&apos;d() at the same time. If so, once we reach that limit, it is nicer to fall back to basic writing.

Also note that the existing SharedBuffer::createWithContentsOfFile() does:
1. Try to mmap() file and return that if successful
2. Read file into memory

So my storing behavior is consistent with our retrieval behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745257</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-30 12:53:29 -0700</bug_when>
    <thetext>&gt; &gt; Do we expect mmap to fail in any reasonable case? If not, I think we should just fail the operation instead of falling back. I don&apos;t love having fallback behavior that we can&apos;t test.
&gt; 
&gt; Ok, so there is definitely one case:
&gt; 1. size is 0 (I found out because some of our API test use empty files).
&gt; FileSystem::mapToFile() definitely fails with an empty file.

This behavior in mapToFile() seems like a bug? Zero-byte files are definitely a valid thing:

~&gt; touch test
~&gt; ls -al test
-rw-r--r--  1 ggaren  staff  0 Mar 30 12:49 test

&gt; Then there is a possible second case I thought of:
&gt; 2. I am assuming the system has some sort of limits on how many files you
&gt; can have mmap&apos;d() at the same time. If so, once we reach that limit, it is
&gt; nicer to fall back to basic writing.

There *is* a limit (per process, per user, and per device) on number of open files, but it applies equally to mmap and other file descriptors. So, if you hit that limit, mapToFile() will fail, but so will openFile()!

So, like, if we had a test for this condition, it would be failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745305</commentid>
    <comment_count>22</comment_count>
      <attachid>424693</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 14:09:08 -0700</bug_when>
    <thetext>Created attachment 424693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745306</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 14:10:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #22)
&gt; Created attachment 424693 [details]
&gt; Patch

Made the following suggested changes:
1. Added a Salt when computing the hashes. I moved the salt logic from NetworkCacheData to FileSystem so that I could reuse it.
2. Made mapToFile() return a valid mapped file, even if the file size is 0.
3. Drop logic to try writing manually to file when mapToFile() fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745312</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-30 14:16:31 -0700</bug_when>
    <thetext>What do we do to prevent ourselves from mapping an arbitrarily large number of files? I assume we can’t do that safely without having a bad effect on the rest of the system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745316</commentid>
    <comment_count>25</comment_count>
      <attachid>424693</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 14:19:30 -0700</bug_when>
    <thetext>Comment on attachment 424693
Patch

Just noticed something that probably needs fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745340</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 14:48:42 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #24)
&gt; What do we do to prevent ourselves from mapping an arbitrarily large number
&gt; of files? I assume we can’t do that safely without having a bad effect on
&gt; the rest of the system.

That is a good question. I am not sure how we deal with this on the network cache side (where we do the same mmap&apos;ing). I will try and find out.

I currently do not have a limit in my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745359</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 15:07:19 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #26)
&gt; (In reply to Darin Adler from comment #24)
&gt; &gt; What do we do to prevent ourselves from mapping an arbitrarily large number
&gt; &gt; of files? I assume we can’t do that safely without having a bad effect on
&gt; &gt; the rest of the system.
&gt; 
&gt; That is a good question. I am not sure how we deal with this on the network
&gt; cache side (where we do the same mmap&apos;ing). I will try and find out.
&gt; 
&gt; I currently do not have a limit in my patch.

I am having trouble finding out how we&apos;re dealing with this in the network cache code. I am open to suggestions here. It seems that we could avoid using mmap() if the size is smallish to avoid mmap() overuse. We may also want to have a limit on the total number of mmap&apos;d files the SWScriptStorage can have (and fallback to reading file from disk)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745376</commentid>
    <comment_count>28</comment_count>
      <attachid>424708</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 15:50:26 -0700</bug_when>
    <thetext>Created attachment 424708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745377</commentid>
    <comment_count>29</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 15:51:34 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #28)
&gt; Created attachment 424708 [details]
&gt; Patch

1. Fixed regression in my patch where NetworkCacheData::mapToFile() was no longer calling NetworkCacheData::apply() to write the data.
2. Do not use mmap() for files &lt; PAGE_SIZE, similarly to what the network cache is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745380</commentid>
    <comment_count>30</comment_count>
      <attachid>424709</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 15:53:02 -0700</bug_when>
    <thetext>Created attachment 424709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745382</commentid>
    <comment_count>31</comment_count>
      <attachid>424709</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-30 15:55:47 -0700</bug_when>
    <thetext>Comment on attachment 424709
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745479</commentid>
    <comment_count>32</comment_count>
      <attachid>424729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 19:53:45 -0700</bug_when>
    <thetext>Created attachment 424729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745481</commentid>
    <comment_count>33</comment_count>
      <attachid>424730</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 19:58:07 -0700</bug_when>
    <thetext>Created attachment 424730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745495</commentid>
    <comment_count>34</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-30 20:56:30 -0700</bug_when>
    <thetext>I will follow-up to restrict the number of open file descriptors in the network process since the solution likely needs to cover both the network cache and this service worker storage (and seems more likely to be an issue in the network cache case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745499</commentid>
    <comment_count>35</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-30 21:25:05 -0700</bug_when>
    <thetext>Committed r275267: &lt;https://commits.webkit.org/r275267&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424730.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424382</attachid>
            <date>2021-03-26 11:33:24 -0700</date>
            <delta_ts>2021-03-26 11:52:48 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>223808_ServiceWorkerScriptStorage_wip.patch</filename>
            <type>text/plain</type>
            <size>50168</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggYTc1YTJmMzM1ZGRhLi5lYWFjNDQ0OGE5NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yNjgxLDYgKzI2ODEsNyBAQCB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5j
cHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKK3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjM2
ODVmOTU2YjZlLi42MmIwZGQ3MDA2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNjIsNiArMTI2Miw3IEBACiAJCTQ2MENC
RjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDky
RTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYw
MzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIy
RjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYy
MThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4
MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2Ny
aXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5
MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYz
RUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0MTM3QyAvKiBK
U1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5oICovOyB9OwpA
QCAtODIyNyw2ICs4MjI4LDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyog
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyog
U1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2Ny
aXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5
MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lu
ZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkw
RTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwNzAzLDYgKzIwNzA2LDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVn
aXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dP
cmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3Jp
Z2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmNw
cCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJ
CQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBA
IC0zMTkzMSw2ICszMTkzNiw3IEBACiAJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENT
U1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDlDNzcwOTFENkU0OTg3MDBD
MERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyU2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJU
b2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NEUxRDZEMDhBQTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0MTgyNzhGMUQ4Q0FGOTIw
MDQ5Mjc2NCAvKiBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2Vydmlj
ZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyLi40YTNlN2U5NzgxZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZp
Y2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlNlcnZpY2VXb3JrZXI6OkNvbmZpZ3VyYXRpb24+
PiBTZXJ2aWNlV29yawogICAgICAgICAuc2V0VGFyZ2V0SWQobV9zZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaWRlbnRpZmllcigpKQogICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4obV9zZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSkKICAgICAg
ICAgLnNldFVybChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0
YSgpLnNjcmlwdFVSTC5zdHJpbmcoKSkKLSAgICAgICAgLnNldENvbnRlbnQobV9zZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpCisgICAgICAgIC5z
ZXRDb250ZW50KHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0KSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNTFiYzRhYTk4
M2M4Li5lYjk1Njg2ZTk3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMzY3LDMgKzM2Nyw2OSBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKKworc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciogYnVmZmVyKQoreworICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDA7CisgICAgZW5jb2RlciA8PCBidWZmZXJTaXplOworICAgIGlmICghYnVm
ZmVyU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogKmJ1ZmZlcikKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZWxlbWVudC5zZWdtZW50LT5kYXRhKCkpLCBlbGVt
ZW50LnNlZ21lbnQtPnNpemUoKSk7Cit9CisKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gYnVmZmVyU2l6
ZTsKKyAgICBkZWNvZGVyID4+IGJ1ZmZlclNpemU7CisgICAgaWYgKCFidWZmZXJTaXplKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoISpidWZmZXJTaXplKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
PHVpbnQ4X3Q+KCpidWZmZXJTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5ncm93KCpidWZmZXJTaXplKTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgQ29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworT3B0
aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
cHRyKCkpOworfQorCitPcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gQ29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAyM2JmNWE4ZWRiNGMuLjRiZmFkMzE5
ZDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiBVU0UoQ0YpCkBAIC0yNTAsMyArMjUxLDE5IEBAIHByaXZhdGU6CiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGlj
IE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDRkNDc0
ZjE2ZTU4OC4uYTRiZTEwMDQwYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC02MCw3
ICs2MSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAKICAgICBpZiAoaXNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0
UmVzb3VyY2UodXJsKSkgewotICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdFJlc291
cmNlLT5zY3JpcHQpOworICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdEJ1ZmZlclRv
U3RyaW5nKCpzY3JpcHRSZXNvdXJjZS0+c2NyaXB0KSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNl
VVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25z
ZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAogICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTmV0d29ya0Vycm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0
IG1pbWUgdHlwZSJfcyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJM
LCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHN0cmluZ1RvU2NyaXB0QnVm
ZmVyKHNjcmlwdCgpKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAg
IH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
CmluZGV4IDE2ZGYyZDgyNDlmOC4uNDg4MTQxYWZhZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JEYXRhSWRlbnRp
ZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAorICAg
ICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsNiArNDgsMjAgQEAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7IGl0KyspCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEo
KSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NS4uODQ1NDFkNDYyYThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRC
dWZmZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3Qg
SW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29s
YXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbXBvcnRl
ZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29weSgpLCBy
ZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQog
CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAgICAgICAg
ICBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAgICAgZGVj
b2RlciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+
IHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAg
ICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3Jp
cHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAg
ICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2VydmljZVdv
cmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1v
dmUoKnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAgICAgICAg
IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShyZWZlcnJl
clBvbGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVlNjkzZi4u
YTY4NGM3MjBmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1
ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtl
ckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikK
LSAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vy
dmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50
aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVy
UHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFy
ZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtl
eS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHks
IHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQor
ICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2
aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRp
ZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2Us
IE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIHNjcmlwdEJ1ZmZlclRvU3RyaW5n
KGRhdGEuc2NyaXB0KSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWws
IGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgp
LCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6
Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAg
ICAgLCBtX3dvcmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWQoKSkKICAgICAsIG1faGVhcnRCZWF0VGltZW91dChTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jb25uZWN0aW9uKCktPnNob3VsZFVzZVNob3J0VGltZW91dCgpID8gaGVhcnRCZWF0
VGltZW91dEZvclRlc3QgOiBoZWFydEJlYXRUaW1lb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAppbmRleCBjZWU4Y2M4YzA4YmUuLmZjMzhjY2I3MjRhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5z
YWN0aW9uLmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2
ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CkBAIC00OSw3
ICs1MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90
IHNjaGVtYVZlcnNpb24gPSA1Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24g
PSA2OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJp
bmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYxLDcgKzYzLDYgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBy
ZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgICAgICIsIGxh
c3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAg
ICAgICAgIiwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAg
ICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwg
d29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIGNv
bnRlbnRTZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKQEAg
LTEyNCw5ICsxMjUsOSBAQCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFi
YXNlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFi
YXNlIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAg
aWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2Ug
PSBXVEZNb3ZlKG1fZGF0YWJhc2UpXSB7IH0pOworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlw
dFN0b3JhZ2UgbmVlZCB0byBiZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgor
ICAgIGlmIChtX2RhdGFiYXNlIHx8IG1fc2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3Jh
Z2UgPSBXVEZNb3ZlKG1fc2NyaXB0U3RvcmFnZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OnBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
CkBAIC0xODUsNiArMTg2LDE5IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxp
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dT
Y3JpcHRTdG9yYWdlJiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisg
ICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG1ha2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3Jp
cHRTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQor
CiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMzMzLDggKzM0NywxMCBAQCB2b2lk
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZQogewogICAgIHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2Ug
PSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmls
ZShtX2RhdGFiYXNlRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeShzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNv
bGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwpAQCAtMzQ4LDExICszNjQsMTIgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRh
PiYKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KKyAgICBhdXRvJiBzY3JpcHRTdG9yYWdlID0gdGhpcy0+c2NyaXB0U3RvcmFnZSgpOwog
CiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRy
YW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNl
LCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8s
ID8sID8sID8sID8pIl9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAi
SU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8s
ID8sID8pIl9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0
YXRlbWVudCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVp
KSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2LDE0ICszODMsMjAgQEAgYm9vbCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VX
b3JrZXIsICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAg
ICAgIHNjcmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyIGNzcEVuY29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5
UG9saWN5LmVuY29kZShjc3BFbmNvZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxs
eSBlbmNvZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJl
IHN0b3JlZCBzZXBhcmF0ZWx5CisgICAgICAgIC8vIGluIHRoZSBTY3JpcHRTdG9yYWdlLgogICAg
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsK
LSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VN
YXA7CisgICAgICAgIGF1dG8gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyA9IGRhdGEu
c2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIGZvciAoYXV0byYgaW1wb3J0ZWRTY3JpcHQgOiBz
Y3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzLnZhbHVlcygpKQorICAgICAgICAgICAgaW1w
b3J0ZWRTY3JpcHQuc2NyaXB0ID0gbnVsbHB0cjsKKyAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyIDw8IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAKICAgICAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwogICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpAQCAtMzg1LDIx
ICs0MDgsMjcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHx8IHNxbC5i
aW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRl
eHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFD
YWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDcsIGRhdGEu
c2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5k
VGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmlu
ZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBj
c3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwu
YmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCks
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAg
ICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZl
cigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29y
a2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDksIGNz
cEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlwdFJlc291cmNl
TWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUo
KSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIGNlcnRpZmlj
YXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWls
ZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICAvLyBTYXZl
IHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYm9vbCBzdWNjZXNzID0gc2NyaXB0U3RvcmFnZS5z
dG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXks
ICpwYWlyLnZhbHVlLnNjcmlwdCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3Ms
IHN1Y2Nlc3MpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7
Ci0KLSAgICBMT0coU2VydmljZVdvcmtlciwgIlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3Ry
YXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSBy
ZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRhdGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92
ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91
cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSByZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRh
dGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQwNyw2ICs0MzYsNyBAQCBTdHJpbmcgUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjppbXBvcnRSZWNvcmRzOiIpOwogICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJh
c2UsICJTRUxFQ1QgKiBGUk9NIFJlY29yZHM7Il9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gcHJlcGFy
ZSBzdGF0ZW1lbnQgdG8gcmV0cmlldmUgcmVnaXN0cmF0aW9ucyBmcm9tIHJlY29yZHMgdGFibGUg
KCIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
ck1zZygpKTsKQEAgLTQxNCw2ICs0NDQsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHMoKQogICAgIGludCByZXN1bHQgPSBzcWwuc3RlcCgpOwogCiAgICAgZm9y
ICg7IHJlc3VsdCA9PSBTUUxJVEVfUk9XOyByZXN1bHQgPSBzcWwuc3RlcCgpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3JkczogSW1wb3J0aW5nIGEgcmVnaXN0cmF0aW9uIGZyb20gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIGF1dG8ga2V5ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFi
YXNlS2V5KHNxbC5nZXRDb2x1bW5UZXh0KDApKTsKICAgICAgICAgYXV0byBvcmlnaW5VUkwgPSBV
UkwgeyBVUkwoKSwgc3FsLmdldENvbHVtblRleHQoMSkgfTsKICAgICAgICAgYXV0byBzY29wZVBh
dGggPSBzcWwuZ2V0Q29sdW1uVGV4dCgyKTsKQEAgLTQyMiw1MiArNDUzLDc3IEBAIFN0cmluZyBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gbGFzdFVw
ZGF0ZUNoZWNrVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzcWwuZ2V0Q29sdW1uRG91
YmxlKDQpKTsKICAgICAgICAgYXV0byB1cGRhdGVWaWFDYWNoZSA9IHN0cmluZ1RvVXBkYXRlVmlh
Q2FjaGUoc3FsLmdldENvbHVtblRleHQoNSkpOwogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVS
TCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCg2KSB9OwotICAgICAgICBhdXRvIHNjcmlwdCA9
IHNxbC5nZXRDb2x1bW5UZXh0KDcpOwotICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdU
b1dvcmtlclR5cGUoc3FsLmdldENvbHVtblRleHQoOCkpOworICAgICAgICBhdXRvIHdvcmtlclR5
cGUgPSBzdHJpbmdUb1dvcmtlclR5cGUoc3FsLmdldENvbHVtblRleHQoNykpOwogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhOwotICAgICAgICBzcWwu
Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEpOworICAg
ICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDgsIGNvbnRlbnRTZWN1cml0eVBvbGljeURh
dGEpOwogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVu
dFNlY3VyaXR5UG9saWN5RGF0YS5kYXRhKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6
ZSgpKTsKICAgICAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzPiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgICAgIGlmIChjb250ZW50U2VjdXJpdHlQ
b2xpY3lEYXRhLnNpemUoKSkgewogICAgICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2Vj
dXJpdHlQb2xpY3k7Ci0gICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAg
ICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNvbnRlbnRTZWN1cml0eVBvbGljeSIpOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byByZWZlcnJlclBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDEwKTsKKyAgICAg
ICAgYXV0byByZWZlcnJlclBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDkpOwogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBzY3JpcHRSZXNvdXJjZU1hcERhdGE7Ci0gICAgICAgIHNxbC5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMTEsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7CisgICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTAsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7CiAgICAg
ICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0Pj4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIoc2NyaXB0UmVzb3VyY2VNYXBEYXRh
LmRhdGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChzY3Jp
cHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1h
cERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXA7Ci0gICAgICAgICAgICBpZiAoIXNjcmlwdFJl
c291cmNlTWFwKQorICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBzY3JpcHRSZXNvdXJjZU1h
cCIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNlcnRpZmljYXRlSW5mb0RhdGE7Ci0gICAgICAg
IHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTIsIGNlcnRpZmljYXRlSW5mb0RhdGEpOworICAg
ICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDExLCBjZXJ0aWZpY2F0ZUluZm9EYXRhKTsK
ICAgICAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAKICAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNl
cnRpZmljYXRlSW5mb0RhdGEuZGF0YSgpLCBjZXJ0aWZpY2F0ZUluZm9EYXRhLnNpemUoKSk7CiAg
ICAgICAgIGNlcnRpZmljYXRlSW5mb0RlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwotICAgICAg
ICBpZiAoIWNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRp
b25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjZXJ0aWZpY2F0ZUlu
Zm8iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAgICAgLy8gVmFs
aWRhdGUgdGhlIGlucHV0IGZvciB0aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gSWYgYW55
IHBhcnQgb2YgdGhpcyBpbnB1dCBpcyBpbnZhbGlkLCBsZXQncyBza2lwIHRoaXMgcmVnaXN0cmF0
aW9uLgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiBhbiBlcnJvciBza2lwcGlu
ZyAqYWxsKiByZWdpc3RyYXRpb25zPwotICAgICAgICBpZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlz
VmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVWaWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlz
VmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVVUkwuaXNWYWxpZCgpKQorICAgICAgICBp
ZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlzVmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVW
aWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlzVmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVV
UkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29y
a2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNv
ZGUgcGFydCBvZiB0aGUgcmVnaXN0cmF0aW9uIik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9y
YWdlKCk7CisgICAgICAgIGF1dG8gc2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5yZXRyaWV2ZSgqa2V5
LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAgICAgaWYgKCFzY3Jp
cHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdp
c3RyYXRpb25EYXRhYmFzZTo6U2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWxlZCB0byByZXRyaWV2
ZSBtYWluIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgc2NyaXB0VVJMLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiAqc2NyaXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIGF1dG8g
aW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKCprZXksIHBhaXIua2V5KTsK
KyAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlwdCk7CisgICAgICAgICAgICBpZiAoIWlt
cG9ydGVkU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vydmlj
ZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFp
bGVkIHRvIHJldHJpZXZlIGltcG9ydGVkIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgcGFpci5r
ZXkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBwYWlyLnZhbHVlLnNjcmlwdCA9IGltcG9ydGVkU2Ny
aXB0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHdvcmtlcklk
ZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAg
YXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBT
ZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdv
cmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVy
IH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNj
b3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAg
YXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9w
dCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlw
dCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBv
bGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3Jr
ZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0
byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwg
V1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHQucmVsZWFzZU5v
bk51bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3Vy
aXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwg
KndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OwogCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29u
dGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250
ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCmluZGV4IGQ2YWVkNmI0MGU2MC4uN2Fl
YjI3NzE3ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3RvcmU7CiBjbGFzcyBTUUxp
dGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsK
QEAgLTYxLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJl
Y3RvcnlJc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpOyB9CiAKKyAgICBTV1NjcmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3JhZ2UoKTsK
KwogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cnkgeyBObywgWWVzIH07CiAgICAgdm9pZCBzY2hl
ZHVsZVB1c2hDaGFuZ2VzKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JiYsIFZlY3Rv
cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiYmLCBTaG91bGRSZXRyeSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rp
b248dm9pZCgpPiYmKTsKQEAgLTcyLDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9y
dFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0
b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYpOworICAgIFN0cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAK
ICAgICAvLyBSZXBsaWVzIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODQsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0
cjxSZWdpc3RyYXRpb25TdG9yZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3Jp
cHRTdG9yYWdlPiBtX3NjcmlwdFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rv
cnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODM5OTM0MjQyY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1NI
QTEuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGhhc2hVUkwoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgU0hBMSBzaGExOworICAgIHNoYTEuYWRkQnl0ZXModXJsLnN0
cmluZygpLnV0ZjgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc2hhMS5jb21wdXRl
SGV4RGlnZXN0KCkpOworfQorCitTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSkKKyAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKK3sKKyAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6
cmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RpcmVjdG9yeSwgeyByZWdpc3RyYXRpb25LZXkudG9wT3Jp
Z2luKCkuZGF0YWJhc2VJZGVudGlmaWVyKCksIGhhc2hVUkwocmVnaXN0cmF0aW9uS2V5LnNjb3Bl
KCkpIH0pOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KSwgaGFzaFVS
TChzY3JpcHRVUkwpKTsKK30KKworYm9vbCBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0aChy
ZWdpc3RyYXRpb25LZXksIHNjcmlwdFVSTCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOworCisgICAgYXV0
byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQoZmlsZUhhbmRsZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdv
cmtlciwgIlNjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBpbnZhbGlk
IGhhbmRsZSIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoZmlsZUhhbmRsZSwgMCk7
CisgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5lbmQoKTsg
KytpdCkKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgaXQtPnNl
Z21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRo
aXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworCisgICAgLy8gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoKSB1c2VzIG1tYXAoKSB3aGVuZXZl
ciBwb3NzaWJsZSB0byBzYXZlIG1lbW9yeS4KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCk7Cit9CisKK3ZvaWQgU1dTY3JpcHRTdG9y
YWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCit7CisgICAgYXV0byByZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5yZWdpc3Ry
YXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KTsKKyAgICBib29sIHJlc3VsdCA9IEZpbGVT
eXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIs
ICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJl
Z2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRh
dGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMzMyN2QxY2M3NDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
CitjbGFzcyBTV1NjcmlwdFN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSk7CisKKyAgICBib29sIHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CisgICAgdm9pZCBjbGVhcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisKK3ByaXZhdGU6CisgICAgU3RyaW5n
IHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25zdDsKKworICAgIFN0cmluZyBt
X2RpcmVjdG9yeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3Li40MjI5Y2I3NWIyNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKIAogdm9p
ZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRp
b24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
UG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewotICAgIHRyeUlu
c3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVy
YXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJl
ZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFw
KSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRh
IHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQpLCBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwg
dHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOwogfQogCiB2b2lkIFNX
U2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgwMmE0ODAxMTUxYS4uNWNhMjUyNjkxMTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bAogICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29y
a2VyJ3Mgc2NyaXB0IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRl
IGZyYWdtZW50cwogICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMg
YSBieXRlLWZvci1ieXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNl
J3Mgc291cmNlCiAgICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwg
am9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUg
JiYgcmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNh
dGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0
ZUluZm8oKSkpIHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYg
bmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9
PSBzY3JpcHRCdWZmZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRp
ZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlm
aWNhdGVJbmZvKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlm
aWNhdGUgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0
cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Ig
bm9uIGNsYXNzaWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdz
IFtbRUNNQVNjcmlwdENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDJiOGZmNjg1ZTA0OS4uMTIwMDUxNjk4YmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCB2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSkKK3ZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYgc2NyaXB0KQogewogICAg
IGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgd29ya2VyLT5zZXRTY3Jp
cHRSZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUocmVzcG9uc2VVUkwpLCBX
VEZNb3ZlKG1pbWVUeXBlKSB9KTsKKyAgICAgICAgd29ya2VyLT5zZXRTY3JpcHRSZXNvdXJjZShX
VEZNb3ZlKHNjcmlwdFVSTCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDQ2NTlmOWY5ZmE2Yy4uOWJlMzQ0NDkxZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCBjbGllbnRJZFJlcXVl
c3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFp
bShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxFeGNlcHRpb25EYXRhPiYmKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNr
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKaW5kZXggM2JhMzZhM2Y5NWE1Li5kNTk3ZThlNDJjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldv
cmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9
CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRl
bnRTZWN1cml0eVBvbGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNv
dXJjZU1hcCkKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlw
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXAp
CiAgICAgOiBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRp
b25LZXkocmVnaXN0cmF0aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQ
dHIocmVnaXN0cmF0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAzNzhmYmE2NTdlOGIuLmQyN2Y3M2Yy
MWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2
ZXIqIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdldCgpOyB9CiAgICAgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpc3RyYXRpb25LZXk7IH0KICAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5zY3JpcHRVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CisgICAgU2hhcmVkQnVmZmVyJiBzY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdDsgfQogICAgIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICBXb3Jr
ZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudHlwZTsgfQogCkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCk7CiAKIHBy
aXZhdGU6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcm
JiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsK
KyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCiAgICAg
dm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIoYm9vbCBzdWNjZXNzKTsKIApAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3Jl
Z2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiBtX3JlZ2lz
dHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7Ci0gICAgU3RyaW5nIG1fc2Ny
aXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5m
byBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXJQb2xp
Y3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmM2I3NWE1ZWJhM2YuLmQ4ZDk0MzQwODQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBGaW5kQ2xpZW50QnlJZGVu
dGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwo
dWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYwotICAgIFNldFNjcmlw
dFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVS
TCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVU
eXBlKQorICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCA0MmYzNzliYTFiYmYuLmUxNDFiZjMxZDdjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFNjcmlw
dFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVz
b3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQuc2NyaXB0LCBzY3Jp
cHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwg
c2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3
b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424387</attachid>
            <date>2021-03-26 11:52:48 -0700</date>
            <delta_ts>2021-03-26 13:09:36 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>223808_ServiceWorkerScriptStorage_wip.patch</filename>
            <type>text/plain</type>
            <size>51780</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggYTc1YTJmMzM1ZGRhLi5lYWFjNDQ0OGE5NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yNjgxLDYgKzI2ODEsNyBAQCB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5j
cHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKK3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjM2
ODVmOTU2YjZlLi42MmIwZGQ3MDA2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNjIsNiArMTI2Miw3IEBACiAJCTQ2MENC
RjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDky
RTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYw
MzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIy
RjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYy
MThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4
MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2Ny
aXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5
MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYz
RUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0MTM3QyAvKiBK
U1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5oICovOyB9OwpA
QCAtODIyNyw2ICs4MjI4LDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyog
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyog
U1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2Ny
aXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5
MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lu
ZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkw
RTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwNzAzLDYgKzIwNzA2LDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVn
aXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dP
cmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3Jp
Z2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmNw
cCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJ
CQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBA
IC0zMTkzMSw2ICszMTkzNiw3IEBACiAJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENT
U1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDlDNzcwOTFENkU0OTg3MDBD
MERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyU2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJU
b2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NEUxRDZEMDhBQTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0MTgyNzhGMUQ4Q0FGOTIw
MDQ5Mjc2NCAvKiBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2Vydmlj
ZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyLi40YTNlN2U5NzgxZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZp
Y2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlNlcnZpY2VXb3JrZXI6OkNvbmZpZ3VyYXRpb24+
PiBTZXJ2aWNlV29yawogICAgICAgICAuc2V0VGFyZ2V0SWQobV9zZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaWRlbnRpZmllcigpKQogICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4obV9zZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSkKICAgICAg
ICAgLnNldFVybChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0
YSgpLnNjcmlwdFVSTC5zdHJpbmcoKSkKLSAgICAgICAgLnNldENvbnRlbnQobV9zZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpCisgICAgICAgIC5z
ZXRDb250ZW50KHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0KSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNTFiYzRhYTk4
M2M4Li5lYjk1Njg2ZTk3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMzY3LDMgKzM2Nyw2OSBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKKworc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciogYnVmZmVyKQoreworICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDA7CisgICAgZW5jb2RlciA8PCBidWZmZXJTaXplOworICAgIGlmICghYnVm
ZmVyU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogKmJ1ZmZlcikKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZWxlbWVudC5zZWdtZW50LT5kYXRhKCkpLCBlbGVt
ZW50LnNlZ21lbnQtPnNpemUoKSk7Cit9CisKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gYnVmZmVyU2l6
ZTsKKyAgICBkZWNvZGVyID4+IGJ1ZmZlclNpemU7CisgICAgaWYgKCFidWZmZXJTaXplKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoISpidWZmZXJTaXplKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
PHVpbnQ4X3Q+KCpidWZmZXJTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5ncm93KCpidWZmZXJTaXplKTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgQ29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworT3B0
aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
cHRyKCkpOworfQorCitPcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gQ29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAyM2JmNWE4ZWRiNGMuLjRiZmFkMzE5
ZDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiBVU0UoQ0YpCkBAIC0yNTAsMyArMjUxLDE5IEBAIHByaXZhdGU6CiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGlj
IE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDRkNDc0
ZjE2ZTU4OC4uYTRiZTEwMDQwYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC02MCw3
ICs2MSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAKICAgICBpZiAoaXNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0
UmVzb3VyY2UodXJsKSkgewotICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdFJlc291
cmNlLT5zY3JpcHQpOworICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdEJ1ZmZlclRv
U3RyaW5nKCpzY3JpcHRSZXNvdXJjZS0+c2NyaXB0KSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNl
VVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25z
ZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAogICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTmV0d29ya0Vycm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0
IG1pbWUgdHlwZSJfcyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJM
LCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHN0cmluZ1RvU2NyaXB0QnVm
ZmVyKHNjcmlwdCgpKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAg
IH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
CmluZGV4IDE2ZGYyZDgyNDlmOC4uNDg4MTQxYWZhZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JEYXRhSWRlbnRp
ZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAorICAg
ICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsNiArNDgsMjAgQEAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7IGl0KyspCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEo
KSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NS4uODQ1NDFkNDYyYThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRC
dWZmZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3Qg
SW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29s
YXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbXBvcnRl
ZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29weSgpLCBy
ZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQog
CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAgICAgICAg
ICBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAgICAgZGVj
b2RlciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+
IHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAg
ICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3Jp
cHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAg
ICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2VydmljZVdv
cmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1v
dmUoKnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAgICAgICAg
IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShyZWZlcnJl
clBvbGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVlNjkzZi4u
YTY4NGM3MjBmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1
ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtl
ckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikK
LSAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vy
dmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50
aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVy
UHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFy
ZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtl
eS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHks
IHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQor
ICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2
aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRp
ZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2Us
IE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIHNjcmlwdEJ1ZmZlclRvU3RyaW5n
KGRhdGEuc2NyaXB0KSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWws
IGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgp
LCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6
Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAg
ICAgLCBtX3dvcmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWQoKSkKICAgICAsIG1faGVhcnRCZWF0VGltZW91dChTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jb25uZWN0aW9uKCktPnNob3VsZFVzZVNob3J0VGltZW91dCgpID8gaGVhcnRCZWF0
VGltZW91dEZvclRlc3QgOiBoZWFydEJlYXRUaW1lb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAppbmRleCBjZWU4Y2M4YzA4YmUuLmZjMzhjY2I3MjRhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5z
YWN0aW9uLmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2
ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CkBAIC00OSw3
ICs1MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90
IHNjaGVtYVZlcnNpb24gPSA1Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24g
PSA2OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJp
bmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYxLDcgKzYzLDYgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBy
ZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgICAgICIsIGxh
c3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAg
ICAgICAgIiwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAg
ICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwg
d29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIGNv
bnRlbnRTZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKQEAg
LTEyNCw5ICsxMjUsOSBAQCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFi
YXNlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFi
YXNlIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAg
aWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2Ug
PSBXVEZNb3ZlKG1fZGF0YWJhc2UpXSB7IH0pOworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlw
dFN0b3JhZ2UgbmVlZCB0byBiZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgor
ICAgIGlmIChtX2RhdGFiYXNlIHx8IG1fc2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3Jh
Z2UgPSBXVEZNb3ZlKG1fc2NyaXB0U3RvcmFnZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OnBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
CkBAIC0xODUsNiArMTg2LDE5IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxp
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dT
Y3JpcHRTdG9yYWdlJiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisg
ICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG1ha2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3Jp
cHRTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQor
CiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMzMzLDggKzM0NywxMCBAQCB2b2lk
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZQogewogICAgIHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2Ug
PSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmls
ZShtX2RhdGFiYXNlRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeShzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNv
bGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwpAQCAtMzQ4LDExICszNjQsMTIgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRh
PiYKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KKyAgICBhdXRvJiBzY3JpcHRTdG9yYWdlID0gdGhpcy0+c2NyaXB0U3RvcmFnZSgpOwog
CiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRy
YW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNl
LCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8s
ID8sID8sID8sID8pIl9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAi
SU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8s
ID8sID8pIl9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0
YXRlbWVudCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVp
KSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2LDE0ICszODMsMjAgQEAgYm9vbCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VX
b3JrZXIsICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAg
ICAgIHNjcmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyIGNzcEVuY29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5
UG9saWN5LmVuY29kZShjc3BFbmNvZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxs
eSBlbmNvZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJl
IHN0b3JlZCBzZXBhcmF0ZWx5CisgICAgICAgIC8vIGluIHRoZSBTY3JpcHRTdG9yYWdlLgogICAg
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsK
LSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VN
YXA7CisgICAgICAgIGF1dG8gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyA9IGRhdGEu
c2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIGZvciAoYXV0byYgaW1wb3J0ZWRTY3JpcHQgOiBz
Y3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzLnZhbHVlcygpKQorICAgICAgICAgICAgaW1w
b3J0ZWRTY3JpcHQuc2NyaXB0ID0gbnVsbHB0cjsKKyAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyIDw8IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAKICAgICAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwogICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpAQCAtMzg1LDIx
ICs0MDgsMjcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHx8IHNxbC5i
aW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRl
eHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFD
YWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDcsIGRhdGEu
c2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5k
VGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmlu
ZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBj
c3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwu
YmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCks
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAg
ICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZl
cigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29y
a2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDksIGNz
cEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlwdFJlc291cmNl
TWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUo
KSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIGNlcnRpZmlj
YXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWls
ZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICAvLyBTYXZl
IHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYm9vbCBzdWNjZXNzID0gc2NyaXB0U3RvcmFnZS5z
dG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXks
ICpwYWlyLnZhbHVlLnNjcmlwdCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3Ms
IHN1Y2Nlc3MpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7
Ci0KLSAgICBMT0coU2VydmljZVdvcmtlciwgIlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3Ry
YXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSBy
ZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRhdGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92
ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91
cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSByZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRh
dGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQwNyw2ICs0MzYsNyBAQCBTdHJpbmcgUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjppbXBvcnRSZWNvcmRzOiIpOwogICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJh
c2UsICJTRUxFQ1QgKiBGUk9NIFJlY29yZHM7Il9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gcHJlcGFy
ZSBzdGF0ZW1lbnQgdG8gcmV0cmlldmUgcmVnaXN0cmF0aW9ucyBmcm9tIHJlY29yZHMgdGFibGUg
KCIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
ck1zZygpKTsKQEAgLTQxNCw2ICs0NDQsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHMoKQogICAgIGludCByZXN1bHQgPSBzcWwuc3RlcCgpOwogCiAgICAgZm9y
ICg7IHJlc3VsdCA9PSBTUUxJVEVfUk9XOyByZXN1bHQgPSBzcWwuc3RlcCgpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3JkczogSW1wb3J0aW5nIGEgcmVnaXN0cmF0aW9uIGZyb20gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIGF1dG8ga2V5ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFi
YXNlS2V5KHNxbC5nZXRDb2x1bW5UZXh0KDApKTsKICAgICAgICAgYXV0byBvcmlnaW5VUkwgPSBV
UkwgeyBVUkwoKSwgc3FsLmdldENvbHVtblRleHQoMSkgfTsKICAgICAgICAgYXV0byBzY29wZVBh
dGggPSBzcWwuZ2V0Q29sdW1uVGV4dCgyKTsKQEAgLTQyMiw1MiArNDUzLDc3IEBAIFN0cmluZyBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gbGFzdFVw
ZGF0ZUNoZWNrVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzcWwuZ2V0Q29sdW1uRG91
YmxlKDQpKTsKICAgICAgICAgYXV0byB1cGRhdGVWaWFDYWNoZSA9IHN0cmluZ1RvVXBkYXRlVmlh
Q2FjaGUoc3FsLmdldENvbHVtblRleHQoNSkpOwogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVS
TCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCg2KSB9OwotICAgICAgICBhdXRvIHNjcmlwdCA9
IHNxbC5nZXRDb2x1bW5UZXh0KDcpOwotICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdU
b1dvcmtlclR5cGUoc3FsLmdldENvbHVtblRleHQoOCkpOworICAgICAgICBhdXRvIHdvcmtlclR5
cGUgPSBzdHJpbmdUb1dvcmtlclR5cGUoc3FsLmdldENvbHVtblRleHQoNykpOwogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhOwotICAgICAgICBzcWwu
Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEpOworICAg
ICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDgsIGNvbnRlbnRTZWN1cml0eVBvbGljeURh
dGEpOwogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVu
dFNlY3VyaXR5UG9saWN5RGF0YS5kYXRhKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6
ZSgpKTsKICAgICAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzPiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgICAgIGlmIChjb250ZW50U2VjdXJpdHlQ
b2xpY3lEYXRhLnNpemUoKSkgewogICAgICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2Vj
dXJpdHlQb2xpY3k7Ci0gICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAg
ICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNvbnRlbnRTZWN1cml0eVBvbGljeSIpOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byByZWZlcnJlclBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDEwKTsKKyAgICAg
ICAgYXV0byByZWZlcnJlclBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDkpOwogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBzY3JpcHRSZXNvdXJjZU1hcERhdGE7Ci0gICAgICAgIHNxbC5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMTEsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7CisgICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTAsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7CiAgICAg
ICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0Pj4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIoc2NyaXB0UmVzb3VyY2VNYXBEYXRh
LmRhdGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChzY3Jp
cHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1h
cERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXA7Ci0gICAgICAgICAgICBpZiAoIXNjcmlwdFJl
c291cmNlTWFwKQorICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBzY3JpcHRSZXNvdXJjZU1h
cCIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNlcnRpZmljYXRlSW5mb0RhdGE7Ci0gICAgICAg
IHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTIsIGNlcnRpZmljYXRlSW5mb0RhdGEpOworICAg
ICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDExLCBjZXJ0aWZpY2F0ZUluZm9EYXRhKTsK
ICAgICAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAKICAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNl
cnRpZmljYXRlSW5mb0RhdGEuZGF0YSgpLCBjZXJ0aWZpY2F0ZUluZm9EYXRhLnNpemUoKSk7CiAg
ICAgICAgIGNlcnRpZmljYXRlSW5mb0RlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwotICAgICAg
ICBpZiAoIWNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRp
b25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjZXJ0aWZpY2F0ZUlu
Zm8iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAgICAgLy8gVmFs
aWRhdGUgdGhlIGlucHV0IGZvciB0aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gSWYgYW55
IHBhcnQgb2YgdGhpcyBpbnB1dCBpcyBpbnZhbGlkLCBsZXQncyBza2lwIHRoaXMgcmVnaXN0cmF0
aW9uLgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiBhbiBlcnJvciBza2lwcGlu
ZyAqYWxsKiByZWdpc3RyYXRpb25zPwotICAgICAgICBpZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlz
VmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVWaWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlz
VmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVVUkwuaXNWYWxpZCgpKQorICAgICAgICBp
ZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlzVmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVW
aWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlzVmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVV
UkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29y
a2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNv
ZGUgcGFydCBvZiB0aGUgcmVnaXN0cmF0aW9uIik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9y
YWdlKCk7CisgICAgICAgIGF1dG8gc2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5yZXRyaWV2ZSgqa2V5
LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAgICAgaWYgKCFzY3Jp
cHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdp
c3RyYXRpb25EYXRhYmFzZTo6U2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWxlZCB0byByZXRyaWV2
ZSBtYWluIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgc2NyaXB0VVJMLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiAqc2NyaXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIGF1dG8g
aW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKCprZXksIHBhaXIua2V5KTsK
KyAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlwdCk7CisgICAgICAgICAgICBpZiAoIWlt
cG9ydGVkU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vydmlj
ZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFp
bGVkIHRvIHJldHJpZXZlIGltcG9ydGVkIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgcGFpci5r
ZXkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBwYWlyLnZhbHVlLnNjcmlwdCA9IGltcG9ydGVkU2Ny
aXB0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHdvcmtlcklk
ZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAg
YXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBT
ZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdv
cmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVy
IH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNj
b3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAg
YXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9w
dCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlw
dCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBv
bGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3Jr
ZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0
byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwg
V1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHQucmVsZWFzZU5v
bk51bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3Vy
aXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwg
KndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OwogCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29u
dGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250
ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCmluZGV4IGQ2YWVkNmI0MGU2MC4uN2Fl
YjI3NzE3ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3RvcmU7CiBjbGFzcyBTUUxp
dGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsK
QEAgLTYxLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJl
Y3RvcnlJc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpOyB9CiAKKyAgICBTV1NjcmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3JhZ2UoKTsK
KwogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cnkgeyBObywgWWVzIH07CiAgICAgdm9pZCBzY2hl
ZHVsZVB1c2hDaGFuZ2VzKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JiYsIFZlY3Rv
cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiYmLCBTaG91bGRSZXRyeSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rp
b248dm9pZCgpPiYmKTsKQEAgLTcyLDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9y
dFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0
b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYpOworICAgIFN0cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAK
ICAgICAvLyBSZXBsaWVzIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODQsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0
cjxSZWdpc3RyYXRpb25TdG9yZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3Jp
cHRTdG9yYWdlPiBtX3NjcmlwdFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rv
cnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODM5OTM0MjQyY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1NI
QTEuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGhhc2hVUkwoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgU0hBMSBzaGExOworICAgIHNoYTEuYWRkQnl0ZXModXJsLnN0
cmluZygpLnV0ZjgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc2hhMS5jb21wdXRl
SGV4RGlnZXN0KCkpOworfQorCitTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSkKKyAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKK3sKKyAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6
cmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RpcmVjdG9yeSwgeyByZWdpc3RyYXRpb25LZXkudG9wT3Jp
Z2luKCkuZGF0YWJhc2VJZGVudGlmaWVyKCksIGhhc2hVUkwocmVnaXN0cmF0aW9uS2V5LnNjb3Bl
KCkpIH0pOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KSwgaGFzaFVS
TChzY3JpcHRVUkwpKTsKK30KKworYm9vbCBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0aChy
ZWdpc3RyYXRpb25LZXksIHNjcmlwdFVSTCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOworCisgICAgYXV0
byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQoZmlsZUhhbmRsZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdv
cmtlciwgIlNjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBpbnZhbGlk
IGhhbmRsZSIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoZmlsZUhhbmRsZSwgMCk7
CisgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5lbmQoKTsg
KytpdCkKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgaXQtPnNl
Z21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRo
aXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworCisgICAgLy8gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoKSB1c2VzIG1tYXAoKSB3aGVuZXZl
ciBwb3NzaWJsZSB0byBzYXZlIG1lbW9yeS4KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCk7Cit9CisKK3ZvaWQgU1dTY3JpcHRTdG9y
YWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCit7CisgICAgYXV0byByZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5yZWdpc3Ry
YXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KTsKKyAgICBib29sIHJlc3VsdCA9IEZpbGVT
eXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIs
ICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJl
Z2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRh
dGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMzMyN2QxY2M3NDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
CitjbGFzcyBTV1NjcmlwdFN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSk7CisKKyAgICBib29sIHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CisgICAgdm9pZCBjbGVhcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisKK3ByaXZhdGU6CisgICAgU3RyaW5n
IHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25zdDsKKworICAgIFN0cmluZyBt
X2RpcmVjdG9yeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3Li40MjI5Y2I3NWIyNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKIAogdm9p
ZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRp
b24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
UG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewotICAgIHRyeUlu
c3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVy
YXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJl
ZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFw
KSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRh
IHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQpLCBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwg
dHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOwogfQogCiB2b2lkIFNX
U2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgwMmE0ODAxMTUxYS4uNWNhMjUyNjkxMTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bAogICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29y
a2VyJ3Mgc2NyaXB0IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRl
IGZyYWdtZW50cwogICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMg
YSBieXRlLWZvci1ieXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNl
J3Mgc291cmNlCiAgICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwg
am9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUg
JiYgcmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNh
dGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0
ZUluZm8oKSkpIHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYg
bmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9
PSBzY3JpcHRCdWZmZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRp
ZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlm
aWNhdGVJbmZvKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlm
aWNhdGUgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0
cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Ig
bm9uIGNsYXNzaWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdz
IFtbRUNNQVNjcmlwdENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDJiOGZmNjg1ZTA0OS4uMTIwMDUxNjk4YmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCB2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSkKK3ZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYgc2NyaXB0KQogewogICAg
IGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgd29ya2VyLT5zZXRTY3Jp
cHRSZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUocmVzcG9uc2VVUkwpLCBX
VEZNb3ZlKG1pbWVUeXBlKSB9KTsKKyAgICAgICAgd29ya2VyLT5zZXRTY3JpcHRSZXNvdXJjZShX
VEZNb3ZlKHNjcmlwdFVSTCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDQ2NTlmOWY5ZmE2Yy4uOWJlMzQ0NDkxZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCBjbGllbnRJZFJlcXVl
c3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFp
bShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxFeGNlcHRpb25EYXRhPiYmKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNr
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKaW5kZXggM2JhMzZhM2Y5NWE1Li5kNTk3ZThlNDJjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldv
cmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9
CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRl
bnRTZWN1cml0eVBvbGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNv
dXJjZU1hcCkKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlw
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXAp
CiAgICAgOiBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRp
b25LZXkocmVnaXN0cmF0aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQ
dHIocmVnaXN0cmF0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAzNzhmYmE2NTdlOGIuLmQyN2Y3M2Yy
MWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2
ZXIqIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdldCgpOyB9CiAgICAgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpc3RyYXRpb25LZXk7IH0KICAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5zY3JpcHRVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CisgICAgU2hhcmVkQnVmZmVyJiBzY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdDsgfQogICAgIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICBXb3Jr
ZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudHlwZTsgfQogCkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCk7CiAKIHBy
aXZhdGU6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcm
JiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsK
KyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCiAgICAg
dm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIoYm9vbCBzdWNjZXNzKTsKIApAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3Jl
Z2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiBtX3JlZ2lz
dHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7Ci0gICAgU3RyaW5nIG1fc2Ny
aXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5m
byBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXJQb2xp
Y3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmM2I3NWE1ZWJhM2YuLmQ4ZDk0MzQwODQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBGaW5kQ2xpZW50QnlJZGVu
dGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwo
dWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYwotICAgIFNldFNjcmlw
dFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVS
TCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVU
eXBlKQorICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCA0MmYzNzliYTFiYmYuLmUxNDFiZjMxZDdjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFNjcmlw
dFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVz
b3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQuc2NyaXB0LCBzY3Jp
cHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwg
c2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3
b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3YzcuLmU5ZmViODQx
ZWQ4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
ZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTE5NTYsNyArMTk1Niw3IEBAIFRFU1Qo
U2VydmljZVdvcmtlcnMsIFN1c3BlbmROZXR3b3JrUHJvY2VzcykKICAgICBhdXRvIHBhdGggPSBz
dG9yZS5fY29uZmlndXJhdGlvbi5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5w
YXRoOwogCiAgICAgTlNVUkwqIGRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0
aCBpc0RpcmVjdG9yeTpZRVNdOwotICAgIE5TVVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5z
cWxpdGUzIl07CisgICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXTsK
IAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpzd0RCUGF0aC5wYXRoXSk7CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFRFU1Qo
V2ViS2l0LCBTZXJ2aWNlV29ya2VyRGF0YWJhc2VXaXRoUmVjb3Jkc1RhYmxlQnV0VW5leHBlY3Rl
ZFNjaGVtYSkKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7CiAKICAgICBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRp
YXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0
aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cy01LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0gZXJyb3I6
bmlsXTsKIAogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsK
</data>
<flag name="commit-queue"
          id="444041"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424395</attachid>
            <date>2021-03-26 13:09:36 -0700</date>
            <delta_ts>2021-03-26 13:20:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>223808_ServiceWorkerScriptStorage_wip.patch</filename>
            <type>text/plain</type>
            <size>61032</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlLi4xMWNiYTVkODkxZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCkBAIC00MDgsNSArNDA4LDIwIEBAIFN0cmluZyBjcmVhdGVUZW1wb3Jh
cnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYpCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShD
T0NPQSkgJiYgIU9TKFdJTkRPV1MpCitib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGVudHJpZXMgPSBsaXN0RGlyZWN0b3J5KHBhdGgs
ICIqIl9zKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgeworICAgICAgICBib29s
IGlzRGlyZWN0b3J5ID0gZmlsZUlzRGlyZWN0b3J5KGVudHJ5LCBTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpObyk7CisgICAgICAgIGlmIChpc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5UGF0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKKyAgICB9CisgICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGly
ZWN0b3J5KHBhdGgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBs
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCBhZWMxMTVkNjVkNGYuLjkw
ODE3NTU4ZDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTkwLDE0ICsxOTAsMTQgQEAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIFdURl9F
WFBPUlRfUFJJVkFURSBOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5n
ICpkaXJlY3RvcnlQcmVmaXgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAorV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisKIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7CiAKIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGlzU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChjb25zdCBTdHJpbmcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggYTc1YTJmMzM1ZGRhLi5lYWFjNDQ0OGE5NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yNjgxLDYgKzI2ODEsNyBAQCB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5j
cHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKK3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjM2
ODVmOTU2YjZlLi42MmIwZGQ3MDA2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNjIsNiArMTI2Miw3IEBACiAJCTQ2MENC
RjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDky
RTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYw
MzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIy
RjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYy
MThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4
MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2Ny
aXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5
MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYz
RUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0MTM3QyAvKiBK
U1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5oICovOyB9OwpA
QCAtODIyNyw2ICs4MjI4LDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9N
V2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyog
SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyog
U1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2Ny
aXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5
MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2lu
ZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkw
RTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwNzAzLDYgKzIwNzA2LDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVn
aXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dP
cmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3Jp
Z2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmNw
cCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJ
CQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBA
IC0zMTkzMSw2ICszMTkzNiw3IEBACiAJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENT
U1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDlDNzcwOTFENkU0OTg3MDBD
MERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyU2VsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJU
b2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NEUxRDZEMDhBQTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0MTgyNzhGMUQ4Q0FGOTIw
MDQ5Mjc2NCAvKiBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2Vydmlj
ZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyLi40YTNlN2U5NzgxZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZp
Y2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlNlcnZpY2VXb3JrZXI6OkNvbmZpZ3VyYXRpb24+
PiBTZXJ2aWNlV29yawogICAgICAgICAuc2V0VGFyZ2V0SWQobV9zZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaWRlbnRpZmllcigpKQogICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4obV9zZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSkKICAgICAg
ICAgLnNldFVybChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0
YSgpLnNjcmlwdFVSTC5zdHJpbmcoKSkKLSAgICAgICAgLnNldENvbnRlbnQobV9zZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpCisgICAgICAgIC5z
ZXRDb250ZW50KHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0KSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNTFiYzRhYTk4
M2M4Li5lYjk1Njg2ZTk3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcApAQCAtMzY3LDMgKzM2Nyw2OSBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25h
bWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKKworc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciogYnVmZmVyKQoreworICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDA7CisgICAgZW5jb2RlciA8PCBidWZmZXJTaXplOworICAgIGlmICghYnVm
ZmVyU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogKmJ1ZmZlcikKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZWxlbWVudC5zZWdtZW50LT5kYXRhKCkpLCBlbGVt
ZW50LnNlZ21lbnQtPnNpemUoKSk7Cit9CisKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gYnVmZmVyU2l6
ZTsKKyAgICBkZWNvZGVyID4+IGJ1ZmZlclNpemU7CisgICAgaWYgKCFidWZmZXJTaXplKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoISpidWZmZXJTaXplKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
PHVpbnQ4X3Q+KCpidWZmZXJTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgZGF0YS5ncm93KCpidWZmZXJTaXplKTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgQ29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworT3B0
aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
cHRyKCkpOworfQorCitPcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gQ29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAyM2JmNWE4ZWRiNGMuLjRiZmFkMzE5
ZDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiBVU0UoQ0YpCkBAIC0yNTAsMyArMjUxLDE5IEBAIHByaXZhdGU6CiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGlj
IE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDRkNDc0
ZjE2ZTU4OC4uYTRiZTEwMDQwYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC02MCw3
ICs2MSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAKICAgICBpZiAoaXNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0
UmVzb3VyY2UodXJsKSkgewotICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdFJlc291
cmNlLT5zY3JpcHQpOworICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdEJ1ZmZlclRv
U3RyaW5nKCpzY3JpcHRSZXNvdXJjZS0+c2NyaXB0KSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNl
VVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25z
ZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAogICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTmV0d29ya0Vycm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0
IG1pbWUgdHlwZSJfcyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJM
LCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHN0cmluZ1RvU2NyaXB0QnVm
ZmVyKHNjcmlwdCgpKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAg
IH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
CmluZGV4IDE2ZGYyZDgyNDlmOC4uNDg4MTQxYWZhZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JEYXRhSWRlbnRp
ZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAorICAg
ICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsNiArNDgsMjAgQEAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7IGl0KyspCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEo
KSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NS4uODQ1NDFkNDYyYThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRC
dWZmZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3Qg
SW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29s
YXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbXBvcnRl
ZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29weSgpLCBy
ZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQog
CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAgICAgICAg
ICBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAgICAgZGVj
b2RlciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+
IHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAg
ICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3Jp
cHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAg
ICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2VydmljZVdv
cmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1v
dmUoKnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAgICAgICAg
IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShyZWZlcnJl
clBvbGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVlNjkzZi4u
YTY4NGM3MjBmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1
ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtl
ckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikK
LSAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vy
dmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50
aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNl
LCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVy
UHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFy
ZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtl
eS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHks
IHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQor
ICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2
aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRp
ZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJT
dHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2Us
IE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIHNjcmlwdEJ1ZmZlclRvU3RyaW5n
KGRhdGEuc2NyaXB0KSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWws
IGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgp
LCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6
Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAg
ICAgLCBtX3dvcmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWQoKSkKICAgICAsIG1faGVhcnRCZWF0VGltZW91dChTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jb25uZWN0aW9uKCktPnNob3VsZFVzZVNob3J0VGltZW91dCgpID8gaGVhcnRCZWF0
VGltZW91dEZvclRlc3QgOiBoZWFydEJlYXRUaW1lb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAppbmRleCBjZWU4Y2M4YzA4YmUuLmZjMzhjY2I3MjRhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5z
YWN0aW9uLmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2
ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CkBAIC00OSw3
ICs1MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90
IHNjaGVtYVZlcnNpb24gPSA1Oworc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24g
PSA2OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJp
bmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYxLDcgKzYzLDYgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBy
ZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgICAgICIsIGxh
c3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAg
ICAgICAgIiwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAg
ICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwg
d29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIGNv
bnRlbnRTZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKQEAg
LTEyNCw5ICsxMjUsOSBAQCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFi
YXNlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFi
YXNlIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAg
aWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2Ug
PSBXVEZNb3ZlKG1fZGF0YWJhc2UpXSB7IH0pOworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlw
dFN0b3JhZ2UgbmVlZCB0byBiZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgor
ICAgIGlmIChtX2RhdGFiYXNlIHx8IG1fc2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3Jh
Z2UgPSBXVEZNb3ZlKG1fc2NyaXB0U3RvcmFnZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OnBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
CkBAIC0xODUsNiArMTg2LDE5IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxp
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dT
Y3JpcHRTdG9yYWdlJiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisg
ICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG1ha2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3Jp
cHRTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQor
CiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMzMzLDggKzM0NywxMCBAQCB2b2lk
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZQogewogICAgIHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2Ug
PSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmls
ZShtX2RhdGFiYXNlRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeShzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNv
bGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwpAQCAtMzQ4LDExICszNjQsMTIgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRh
PiYKICAgICAgICAgaWYgKCFtX2RhdGFiYXNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KKyAgICBhdXRvJiBzY3JpcHRTdG9yYWdlID0gdGhpcy0+c2NyaXB0U3RvcmFnZSgpOwog
CiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRy
YW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNl
LCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8s
ID8sID8sID8sID8pIl9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAi
SU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8s
ID8sID8pIl9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0
YXRlbWVudCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVp
KSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzY2LDE0ICszODMsMjAgQEAgYm9vbCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VX
b3JrZXIsICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAg
ICAgIHNjcmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyIGNzcEVuY29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5
UG9saWN5LmVuY29kZShjc3BFbmNvZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxs
eSBlbmNvZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJl
IHN0b3JlZCBzZXBhcmF0ZWx5CisgICAgICAgIC8vIGluIHRoZSBTY3JpcHRTdG9yYWdlLgogICAg
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsK
LSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VN
YXA7CisgICAgICAgIGF1dG8gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyA9IGRhdGEu
c2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIGZvciAoYXV0byYgaW1wb3J0ZWRTY3JpcHQgOiBz
Y3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzLnZhbHVlcygpKQorICAgICAgICAgICAgaW1w
b3J0ZWRTY3JpcHQuc2NyaXB0ID0gbnVsbHB0cjsKKyAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyIDw8IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAKICAgICAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwogICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpAQCAtMzg1LDIx
ICs0MDgsMjcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHx8IHNxbC5i
aW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRl
eHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFD
YWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDcsIGRhdGEu
c2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5k
VGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmlu
ZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBj
c3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwu
YmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCks
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAg
ICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZl
cigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29y
a2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDksIGNz
cEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlwdFJlc291cmNl
TWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUo
KSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIGNlcnRpZmlj
YXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWls
ZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICAvLyBTYXZl
IHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYm9vbCBzdWNjZXNzID0gc2NyaXB0U3RvcmFnZS5z
dG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIHN1Y2Nl
c3MgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXks
ICpwYWlyLnZhbHVlLnNjcmlwdCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3Ms
IHN1Y2Nlc3MpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7
Ci0KLSAgICBMT0coU2VydmljZVdvcmtlciwgIlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3Ry
YXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSBy
ZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRhdGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92
ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91
cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSByZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRh
dGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQwNyw2ICs0MzYsNyBAQCBTdHJpbmcgUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjppbXBvcnRSZWNvcmRzOiIpOwogICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJh
c2UsICJTRUxFQ1QgKiBGUk9NIFJlY29yZHM7Il9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gcHJlcGFy
ZSBzdGF0ZW1lbnQgdG8gcmV0cmlldmUgcmVnaXN0cmF0aW9ucyBmcm9tIHJlY29yZHMgdGFibGUg
KCIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
ck1zZygpKTsKQEAgLTQxNCw2ICs0NDQsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHMoKQogICAgIGludCByZXN1bHQgPSBzcWwuc3RlcCgpOwogCiAgICAgZm9y
ICg7IHJlc3VsdCA9PSBTUUxJVEVfUk9XOyByZXN1bHQgPSBzcWwuc3RlcCgpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3JkczogSW1wb3J0aW5nIGEgcmVnaXN0cmF0aW9uIGZyb20gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIGF1dG8ga2V5ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFi
YXNlS2V5KHNxbC5nZXRDb2x1bW5UZXh0KDApKTsKICAgICAgICAgYXV0byBvcmlnaW5VUkwgPSBV
UkwgeyBVUkwoKSwgc3FsLmdldENvbHVtblRleHQoMSkgfTsKICAgICAgICAgYXV0byBzY29wZVBh
dGggPSBzcWwuZ2V0Q29sdW1uVGV4dCgyKTsKQEAgLTQyMiw1MiArNDUzLDc3IEBAIFN0cmluZyBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gbGFzdFVw
ZGF0ZUNoZWNrVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzcWwuZ2V0Q29sdW1uRG91
YmxlKDQpKTsKICAgICAgICAgYXV0byB1cGRhdGVWaWFDYWNoZSA9IHN0cmluZ1RvVXBkYXRlVmlh
Q2FjaGUoc3FsLmdldENvbHVtblRleHQoNSkpOwogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVS
TCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCg2KSB9OwotICAgICAgICBhdXRvIHNjcmlwdCA9
IHNxbC5nZXRDb2x1bW5UZXh0KDcpOwotICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdU
b1dvcmtlclR5cGUoc3FsLmdldENvbHVtblRleHQoOCkpOworICAgICAgICBhdXRvIHdvcmtlclR5
cGUgPSBzdHJpbmdUb1dvcmtlclR5cGUoc3FsLmdldENvbHVtblRleHQoNykpOwogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhOwotICAgICAgICBzcWwu
Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEpOworICAg
ICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDgsIGNvbnRlbnRTZWN1cml0eVBvbGljeURh
dGEpOwogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVu
dFNlY3VyaXR5UG9saWN5RGF0YS5kYXRhKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6
ZSgpKTsKICAgICAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzPiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgICAgIGlmIChjb250ZW50U2VjdXJpdHlQ
b2xpY3lEYXRhLnNpemUoKSkgewogICAgICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2Vj
dXJpdHlQb2xpY3k7Ci0gICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAg
ICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KSB7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNvbnRlbnRTZWN1cml0eVBvbGljeSIpOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byByZWZlcnJlclBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDEwKTsKKyAgICAg
ICAgYXV0byByZWZlcnJlclBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDkpOwogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBzY3JpcHRSZXNvdXJjZU1hcERhdGE7Ci0gICAgICAgIHNxbC5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMTEsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7CisgICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTAsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7CiAgICAg
ICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0Pj4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIoc2NyaXB0UmVzb3VyY2VNYXBEYXRh
LmRhdGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChzY3Jp
cHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1h
cERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXA7Ci0gICAgICAgICAgICBpZiAoIXNjcmlwdFJl
c291cmNlTWFwKQorICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBzY3JpcHRSZXNvdXJjZU1h
cCIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNlcnRpZmljYXRlSW5mb0RhdGE7Ci0gICAgICAg
IHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTIsIGNlcnRpZmljYXRlSW5mb0RhdGEpOworICAg
ICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDExLCBjZXJ0aWZpY2F0ZUluZm9EYXRhKTsK
ICAgICAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAKICAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNl
cnRpZmljYXRlSW5mb0RhdGEuZGF0YSgpLCBjZXJ0aWZpY2F0ZUluZm9EYXRhLnNpemUoKSk7CiAg
ICAgICAgIGNlcnRpZmljYXRlSW5mb0RlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwotICAgICAg
ICBpZiAoIWNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRp
b25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjZXJ0aWZpY2F0ZUlu
Zm8iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAgICAgLy8gVmFs
aWRhdGUgdGhlIGlucHV0IGZvciB0aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gSWYgYW55
IHBhcnQgb2YgdGhpcyBpbnB1dCBpcyBpbnZhbGlkLCBsZXQncyBza2lwIHRoaXMgcmVnaXN0cmF0
aW9uLgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiBhbiBlcnJvciBza2lwcGlu
ZyAqYWxsKiByZWdpc3RyYXRpb25zPwotICAgICAgICBpZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlz
VmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVWaWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlz
VmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVVUkwuaXNWYWxpZCgpKQorICAgICAgICBp
ZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlzVmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVW
aWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlzVmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVV
UkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29y
a2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNv
ZGUgcGFydCBvZiB0aGUgcmVnaXN0cmF0aW9uIik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9y
YWdlKCk7CisgICAgICAgIGF1dG8gc2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5yZXRyaWV2ZSgqa2V5
LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAgICAgaWYgKCFzY3Jp
cHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdp
c3RyYXRpb25EYXRhYmFzZTo6U2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWxlZCB0byByZXRyaWV2
ZSBtYWluIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgc2NyaXB0VVJMLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiAqc2NyaXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIGF1dG8g
aW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKCprZXksIHBhaXIua2V5KTsK
KyAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlwdCk7CisgICAgICAgICAgICBpZiAoIWlt
cG9ydGVkU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vydmlj
ZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFp
bGVkIHRvIHJldHJpZXZlIGltcG9ydGVkIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgcGFpci5r
ZXkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBwYWlyLnZhbHVlLnNjcmlwdCA9IGltcG9ydGVkU2Ny
aXB0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHdvcmtlcklk
ZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAg
YXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBT
ZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdv
cmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVy
IH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNj
b3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAg
YXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9w
dCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlw
dCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBv
bGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3Jr
ZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0
byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwg
V1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHQucmVsZWFzZU5v
bk51bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3Vy
aXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwg
KndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OwogCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29u
dGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250
ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCmluZGV4IGQ2YWVkNmI0MGU2MC4uN2Fl
YjI3NzE3ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3RvcmU7CiBjbGFzcyBTUUxp
dGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsK
QEAgLTYxLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICAKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJl
Y3RvcnlJc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpOyB9CiAKKyAgICBTV1NjcmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3JhZ2UoKTsK
KwogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cnkgeyBObywgWWVzIH07CiAgICAgdm9pZCBzY2hl
ZHVsZVB1c2hDaGFuZ2VzKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JiYsIFZlY3Rv
cjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiYmLCBTaG91bGRSZXRyeSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rp
b248dm9pZCgpPiYmKTsKQEAgLTcyLDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9y
dFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0
b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYpOworICAgIFN0cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAK
ICAgICAvLyBSZXBsaWVzIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODQsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0
cjxSZWdpc3RyYXRpb25TdG9yZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3Jp
cHRTdG9yYWdlPiBtX3NjcmlwdFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rv
cnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iODM5OTM0MjQyY2EKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1NI
QTEuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGhhc2hVUkwoY29u
c3QgVVJMJiB1cmwpCit7CisgICAgU0hBMSBzaGExOworICAgIHNoYTEuYWRkQnl0ZXModXJsLnN0
cmluZygpLnV0ZjgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc2hhMS5jb21wdXRl
SGV4RGlnZXN0KCkpOworfQorCitTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSkKKyAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKK3sKKyAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6
cmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RpcmVjdG9yeSwgeyByZWdpc3RyYXRpb25LZXkudG9wT3Jp
Z2luKCkuZGF0YWJhc2VJZGVudGlmaWVyKCksIGhhc2hVUkwocmVnaXN0cmF0aW9uS2V5LnNjb3Bl
KCkpIH0pOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KSwgaGFzaFVS
TChzY3JpcHRVUkwpKTsKK30KKworYm9vbCBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0aChy
ZWdpc3RyYXRpb25LZXksIHNjcmlwdFVSTCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOworCisgICAgYXV0
byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQoZmlsZUhhbmRsZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdv
cmtlciwgIlNjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBpbnZhbGlk
IGhhbmRsZSIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoZmlsZUhhbmRsZSwgMCk7
CisgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5lbmQoKTsg
KytpdCkKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgaXQtPnNl
Z21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRo
aXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworCisgICAgLy8gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoKSB1c2VzIG1tYXAoKSB3aGVuZXZl
ciBwb3NzaWJsZSB0byBzYXZlIG1lbW9yeS4KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCk7Cit9CisKK3ZvaWQgU1dTY3JpcHRTdG9y
YWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCit7CisgICAgYXV0byByZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5yZWdpc3Ry
YXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KTsKKyAgICBib29sIHJlc3VsdCA9IEZpbGVT
eXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIs
ICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJl
Z2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRh
dGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMzMyN2QxY2M3NDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OworY2xhc3MgU2hhcmVkQnVmZmVyOwor
CitjbGFzcyBTV1NjcmlwdFN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSk7CisKKyAgICBib29sIHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CisgICAgdm9pZCBjbGVhcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisKK3ByaXZhdGU6CisgICAgU3RyaW5n
IHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25zdDsKKworICAgIFN0cmluZyBt
X2RpcmVjdG9yeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3Li40MjI5Y2I3NWIyNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKIAogdm9p
ZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRp
b24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
UG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewotICAgIHRyeUlu
c3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVy
YXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJl
ZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFw
KSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRh
IHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQpLCBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwg
dHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOwogfQogCiB2b2lkIFNX
U2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgwMmE0ODAxMTUxYS4uNWNhMjUyNjkxMTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bAogICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29y
a2VyJ3Mgc2NyaXB0IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRl
IGZyYWdtZW50cwogICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMg
YSBieXRlLWZvci1ieXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNl
J3Mgc291cmNlCiAgICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwg
am9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUg
JiYgcmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNh
dGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0
ZUluZm8oKSkpIHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYg
bmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9
PSBzY3JpcHRCdWZmZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRp
ZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlm
aWNhdGVJbmZvKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlm
aWNhdGUgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0
cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Ig
bm9uIGNsYXNzaWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdz
IFtbRUNNQVNjcmlwdENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDJiOGZmNjg1ZTA0OS4uMTIwMDUxNjk4YmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCB2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSkKK3ZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYgc2NyaXB0KQogewogICAg
IGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgd29ya2VyLT5zZXRTY3Jp
cHRSZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUocmVzcG9uc2VVUkwpLCBX
VEZNb3ZlKG1pbWVUeXBlKSB9KTsKKyAgICAgICAgd29ya2VyLT5zZXRTY3JpcHRSZXNvdXJjZShX
VEZNb3ZlKHNjcmlwdFVSTCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDQ2NTlmOWY5ZmE2Yy4uOWJlMzQ0NDkxZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCBjbGllbnRJZFJlcXVl
c3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFp
bShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxFeGNlcHRpb25EYXRhPiYmKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNr
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKaW5kZXggM2JhMzZhM2Y5NWE1Li5kNTk3ZThlNDJjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldv
cmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9
CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRl
bnRTZWN1cml0eVBvbGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNv
dXJjZU1hcCkKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlw
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXAp
CiAgICAgOiBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRp
b25LZXkocmVnaXN0cmF0aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQ
dHIocmVnaXN0cmF0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAzNzhmYmE2NTdlOGIuLmQyN2Y3M2Yy
MWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2
ZXIqIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdldCgpOyB9CiAgICAgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpc3RyYXRpb25LZXk7IH0KICAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5zY3JpcHRVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CisgICAgU2hhcmVkQnVmZmVyJiBzY3JpcHQoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdDsgfQogICAgIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICBXb3Jr
ZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudHlwZTsgfQogCkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCk7CiAKIHBy
aXZhdGU6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcm
JiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsK
KyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCiAgICAg
dm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIoYm9vbCBzdWNjZXNzKTsKIApAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3Jl
Z2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiBtX3JlZ2lz
dHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7Ci0gICAgU3RyaW5nIG1fc2Ny
aXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5m
byBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXJQb2xp
Y3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmM2I3NWE1ZWJhM2YuLmQ4ZDk0MzQwODQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBGaW5kQ2xpZW50QnlJZGVu
dGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwo
dWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYwotICAgIFNldFNjcmlw
dFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVS
TCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVU
eXBlKQorICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBhYjdh
YmMyNTc2NWEuLjJlYTI4NDAwOTY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNzAyLDcgKzcw
Miw3IEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGdsb2JhbFNpemVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxl
U3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxv
d1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1
cnNpdmVseShmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03
NDksMTggKzc0OSwxOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGly
ZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAv
LyBJZiBjYWNoZSBzYWx0IGlzIGluaXRpYWxpemVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNo
LCBzb21lIGNhY2hlIGZpbGVzIGhhdmUgcHJvYmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkg
Y29ycnVwdGVkLgogICAgICAgICAgICAgQVNTRVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBj
YWNoZXNSb290UGF0aCgqZm9sZGVyT3JpZ2luKSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3Rv
cnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAg
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAg
ICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBw
YXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxT
aXplRmlsZUxvY2spOwotICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDE5NDRhNWM3OTJkOC4uNDQwOWU3YjQ5NmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVz
Rm9yT3JpZ2luRnJvbURpc2soY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNr
Z3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxi
YWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHAKaW5kZXggN2EwZWM1ZTE0ZjMzLi43YTk5NjE0ZjIzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcApAQCAtNjIsMjMgKzYyLDYgQEAgdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIEQKICAg
ICB9CiB9CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhdGgsIFsmcGF0aF0oY29uc3QgU3RyaW5n
JiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewotICAgICAgICBTdHJpbmcgZW50cnlQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOwot
ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6
OkZpbGU6Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVj
dG9yeToKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGVudHJ5UGF0aCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGZvbGxvdyBzeW1s
aW5rcy4KLSAgICAgICAgfQotICAgIH0pOwotICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KHBhdGgpOwotfQotCiBGaWxlVGltZXMgZmlsZVRpbWVzKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKICNpZiBIQVZFKFNUQVRfQklSVEhUSU1FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAppbmRl
eCA3YTVmOGNjNGZlMzguLmMwYjRlODFiNDczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAg
LTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBlbnVtIGNsYXNzIERpcmVj
dG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmlsZSB9Owogdm9pZCB0cmF2ZXJzZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+Jik7CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQogc3RydWN0IEZpbGVUaW1lcyB7CiAg
ICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBlLi5kYjRjMDU0OWM2YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hh
bm5lbC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KQEAgLTEx
OTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQogICAgICAg
ICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtD
YWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9u
LCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgICAg
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKKyAgICAgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZlcnNpb25QYXRoKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
aW5kZXggNDJmMzc5YmExYmJmLi5lMTQxYmYzMWQ3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
VwogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJj
ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQm
IHNjcmlwdCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwgc2NyaXB0LnNjcmlwdCwgc2NyaXB0LnJlc3Bv
bnNlVVJMLCBzY3JpcHQubWltZVR5cGUgfSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpT
ZXRTY3JpcHRSZXNvdXJjZSB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHNjcmlwdCB9
LCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6d29ya2VyVGVy
bWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzZj
YWYyYWQ0MzcyLi5lMTY0NjM0YTM4YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0xNTEsNCArMTUxLDI5IEBAIFRFU1RfRihGaWxlU3lzdGVt
VGVzdCwgb3BlbkV4aXN0aW5nRmlsZUFuZEZhaWxJZkZpbGVFeGlzdHMpCiAgICAgRVhQRUNUX0ZB
TFNFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSk7CiB9CiAKK1RFU1RfRihGaWxl
U3lzdGVtVGVzdCwgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkpCit7CisgICAgYXV0byBjcmVhdGVU
ZXN0VGlsZSA9IFtdKGNvbnN0IFN0cmluZyYgcGF0aCkgeworICAgICAgICBhdXRvIGZpbGVIYW5k
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OldyaXRlKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
aWxlSGFuZGxlKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUs
IEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgfTsKKyAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKKyAgICBhdXRvIHRlbXBvcmFy
eVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKHRlbXBvcmFyeUZpbGUpOworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IHRlbXBvcmFyeVRl
c3RGb2xkZXIgaXMgJXMiLCB0ZW1wb3JhcnlUZXN0Rm9sZGVyLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVy
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAi
c3ViZm9sZGVyIiB9KSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAg
IGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
b3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAi
c3ViZm9sZGVyIiwgImZpbGUzLnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3Vi
Zm9sZGVyIiwgImZpbGU0LnR4dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVz
dEZvbGRlcikpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBv
cmFyeVRlc3RGb2xkZXIpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRh
Yzk2ZmE3YzcuLmU5ZmViODQxZWQ4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTE5NTYs
NyArMTk1Niw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFN1c3BlbmROZXR3b3JrUHJvY2VzcykK
ICAgICBhdXRvIHBhdGggPSBzdG9yZS5fY29uZmlndXJhdGlvbi5fc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeS5wYXRoOwogCiAgICAgTlNVUkwqIGRpcmVjdG9yeSA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNdOwotICAgIE5TVVJMICpzd0RCUGF0
aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl07CisgICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVj
dG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucy02LnNxbGl0ZTMiXTsKIAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd0RCUGF0aC5wYXRoXSk7CiAKQEAgLTE5ODMs
NyArMTk4Myw3IEBAIFRFU1QoV2ViS2l0LCBTZXJ2aWNlV29ya2VyRGF0YWJhc2VXaXRoUmVjb3Jk
c1RhYmxlQnV0VW5leHBlY3RlZFNjaGVtYSkKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7CiAKICAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN3
UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
Om5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJM
OnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGgg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMt
Ni5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKIAogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsK
</data>
<flag name="commit-queue"
          id="444049"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424396</attachid>
            <date>2021-03-26 13:20:38 -0700</date>
            <delta_ts>2021-03-26 14:03:03 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>223808_ServiceWorkerScriptStorage_wip.patch</filename>
            <type>text/plain</type>
            <size>60983</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlLi4zODY4Yzg4MjdmMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCkBAIC00MDgsNSArNDA4LDE5IEBAIFN0cmluZyBjcmVhdGVUZW1wb3Jh
cnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYpCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShD
T0NPQSkgJiYgIU9TKFdJTkRPV1MpCitib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGVudHJpZXMgPSBsaXN0RGlyZWN0b3J5KHBhdGgs
ICIqIl9zKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgeworICAgICAgICBpZiAo
ZmlsZUlzRGlyZWN0b3J5KGVudHJ5LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisg
ICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeShlbnRyeSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGRlbGV0ZUZpbGUoZW50cnkpOworICAgIH0KKyAgICByZXR1cm4gZGVsZXRl
RW1wdHlEaXJlY3RvcnkocGF0aCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5
c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzExNWQ2
NWQ0Zi4uOTA4MTc1NThkMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xOTAsMTQgKzE5MCwxNCBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJp
bmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeSgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
TlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxl
dGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKwog
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKIAogV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0
cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzVhMmYzMzVkZGEuLmVhYWM0NDQ4YTk3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTI2ODEsNiArMjY4MSw3IEBAIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAord29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBmMzY4NWY5NTZiNmUuLjYyYjBkZDcwMDY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI2Miw2ICsxMjYyLDcgQEAK
IAkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwQ0JGMzQxRDRC
Q0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oICovOyB9OwogCQk0NjBFMzA3
NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25T
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1
RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcy
RDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEg
LyogU1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNTIx
QUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2lu
ZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRUI2MjExQjg3ODlDQjAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJNDY1MzA3RDAxREI2RUU0ODAwRTQx
MzdDIC8qIEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURBQTEwNEYwMEIwRDhCOSAvKiBKU1VJRXZlbnRJbml0Lmgg
Ki87IH07CkBAIC04MjI3LDYgKzgyMjgsOCBAQAogCQk0NjBDQkYzMzFENEJDQ0ZFMDA5MkU4OEUg
LyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMz
REI4NSAvKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjczQ0FDMjYwRTU5REYwMDZG
QUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Mjcz
Q0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNl
cnZlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzUyMUFBMjA4MTA5
MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXaW5kb3dQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFB
QzIwODEwOTBFMDBDMjg5MjIgLyogV2luZG93UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2luZG93UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA3MDMsNiArMjA3MDYsOCBAQAogCQkJCTUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1
OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oICovLAogCQkJCTQxNTFFNUI5MUZCQTRDNzYwMEU0N0Uy
RCAvKiBTV09yaWdpblN0b3JlLmNwcCAqLywKIAkJCQk0MTUxRTVCNzFGQkE0Qzc1MDBFNDdFMkQg
LyogU1dPcmlnaW5TdG9yZS5oICovLAorCQkJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBT
V1NjcmlwdFN0b3JhZ2UuY3BwICovLAorCQkJCTQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBT
V1NjcmlwdFN0b3JhZ2UuaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dT
ZXJ2ZXIuY3BwICovLAogCQkJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5o
ICovLAogCQkJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNw
cCAqLywKQEAgLTMxOTMxLDYgKzMxOTM2LDcgQEAKIAkJCQk5NDlDNzcwQjFENkU0OUVEMDBDMERF
NEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0OUM3NzA5MUQ2
RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJTZWxlY3Rvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NDAxRDZDRTNDMjAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4
NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQxODI3OEYx
RDhDQUY5MjAwNDkyNzY0IC8qIENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAppbmRleCAyMWIzMGVlMjk0NzIuLjRhM2U3
ZTk3ODFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmln
dXJhdGlvbj4+IFNlcnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbiht
X3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygp
KQogICAgICAgICAuc2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNv
bnRleHREYXRhKCkuc2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAg
ICAgICAgLnNldENvbnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1
MWJjNGFhOTgzYzguLmViOTU2ODZlOTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0zNjcsMyArMzY3LDY5IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgUGVyc2lzdGVuY2UgeworCitzdGF0aWMg
dm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiBidWZmZXIpCit7CisgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZl
ciA/IGJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICBlbmNvZGVyIDw8IGJ1ZmZlclNpemU7CisgICAg
aWYgKCFidWZmZXJTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiAqYnVmZmVyKQorICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVtZW50LnNlZ21lbnQtPmRhdGEo
KSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKK30KKworc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBi
dWZmZXJTaXplOworICAgIGRlY29kZXIgPj4gYnVmZmVyU2l6ZTsKKyAgICBpZiAoIWJ1ZmZlclNp
emUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghKmJ1ZmZlclNpemUpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hU
b0NvbnRhaW48dWludDhfdD4oKmJ1ZmZlclNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBkYXRhLmdyb3coKmJ1ZmZlclNpemUpOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwor
fQorCitPcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gQ29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIENvZGVyPFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7Cit9CisKK09wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiBDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDIzYmY1YThlZGI0Yy4u
NGJmYWQzMTlkMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIFVTRShDRikKQEAgLTI1MCwzICsyNTEsMTkgQEAgcHJpdmF0ZToK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgUGVyc2lzdGVu
Y2UgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5k
ZXggNGQ0NzRmMTZlNTg4Li5hNGJlMTAwNDBiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
QEAgLTYwLDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6
OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3Vy
Y2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3Bl
KS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2Ny
aXB0UmVzb3VyY2UtPnNjcmlwdCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0
QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAgICAgIG1f
cmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBt
X3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2Vw
dGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEph
dmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVz
cG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2Uo
dXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9T
Y3JpcHRCdWZmZXIoc2NyaXB0KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUg
fSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5jcHAKaW5kZXggMTZkZjJkODI0OWY4Li40ODgxNDFhZmFmNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgICAgIGpvYkRh
dGFJZGVudGlmaWVyLAogICAgICAgICByZWdpc3RyYXRpb24uaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLAotICAgICAgICBzY3JpcHQuaXNvbGF0ZWRDb3B5
KCksCisgICAgICAgIHNjcmlwdC0+Y29weSgpLAogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uaXNv
bGF0ZWRDb3B5KCksCiAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS5pc29sYXRlZENvcHko
KSwKICAgICAgICAgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCkBAIC00OCw2ICs0OCwy
MCBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpp
c29sYXRlZENvcHkoKSBjb25zdAogICAgIH07CiB9CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0
cmluZyhTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgZm9yIChhdXRvIGl0ID0gYnVmZmVyLmJlZ2luKCk7IGl0ICE9IGJ1ZmZlci5lbmQoKTsg
aXQrKykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChpdC0+c2VnbWVu
dC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKKyAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKaW5kZXggM2FkNWQ0YTEyNjk1Li44NDU0MWQ0NjJh
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzksMTMgKzQwLDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5n
KFNoYXJlZEJ1ZmZlciYpOworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIo
Y29uc3QgU3RyaW5nJik7CisKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAg
IHN0cnVjdCBJbXBvcnRlZFNjcmlwdCB7Ci0gICAgICAgIFN0cmluZyBzY3JpcHQ7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICAgICAgVVJMIHJlc3BvbnNlVVJMOwog
ICAgICAgICBTdHJpbmcgbWltZVR5cGU7CiAKLSAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJlc3BvbnNl
VVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAg
IEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5j
b3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHko
KSB9OyB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgewpAQCAtNTQsNyArNTgsNyBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNjcmlwdDsKKyAg
ICAgICAgICAgIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CiAgICAgICAg
ICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQogICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MCw3ICs4NCw3IEBAIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFN0cmluZyBzY3JpcHQ7CisgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAg
ICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBv
bGljeTsKICAgICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CkBAIC0xMjAsOCArMTI0LDkgQEAgT3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgU3RyaW5nIHNjcmlwdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdCkpCisgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+IHNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdCkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0xNTcsNyArMTYyLDcgQEAg
T3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZp
ZXIpLAogICAgICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAogICAgICAgICBXVEZNb3ZlKCpz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciksCi0gICAgICAgIFdURk1vdmUoc2NyaXB0KSwKKyAgICAg
ICAgV1RGTW92ZSgqc2NyaXB0KSwKICAgICAgICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwK
ICAgICAgICAgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpLAogICAgICAgICBXVEZNb3Zl
KHJlZmVycmVyUG9saWN5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZDcwZjRm
NWU2OTNmLi5hNjg0YzcyMGY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03
NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MK
IAogU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGlu
Z3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94
eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFBy
b3ZpZGVyKQotICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5n
KCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3Jl
YXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0
Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0
LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rp
b25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFi
bGVkKCkpCisgICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmco
KSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVh
dGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5
LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRj
aFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVy
VG9TdHJpbmcoZGF0YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6
Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2lu
KCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGlt
ZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnNoYXJlZCgpKQogICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBo
ZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCmluZGV4IGNlZThjYzhjMDhiZS4uZmMzOGNjYjcyNGEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMzQsOCArMzQsMTAgQEAKICNpbmNsdWRlICJTUUxpdGVG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FM
aXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3JhZ2UuaCIKICNpbmNsdWRl
ICJTV1NlcnZlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
QEAgLTQ5LDcgKzUxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3Qg
dWludDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDU7CitzdGF0aWMgY29uc3QgdWludDY0X3Qgc2NoZW1h
VmVyc2lvbiA9IDY7CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNv
bnN0IFN0cmluZyYgdGFibGVOYW1lKQogewpAQCAtNjEsNyArNjMsNiBAQCBzdGF0aWMgY29uc3Qg
U3RyaW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICAg
ICAgIiwgbGFzdFVwZGF0ZUNoZWNrVGltZSBET1VCTEUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCIKICAgICAgICAgIiwgdXBkYXRlVmlhQ2FjaGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMIgogICAgICAgICAiLCBzY3JpcHRVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgotICAgICAgICAiLCBzY3JpcHQgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAg
ICAgICAiLCB3b3JrZXJUeXBlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAg
ICAgIiwgY29udGVudFNlY3VyaXR5UG9saWN5IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJ
TCIKICAgICAgICAgIiwgcmVmZXJyZXJQb2xpY3kgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMIgpAQCAtMTI0LDkgKzEyNSw5IEBAIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjp+UmVnaXN0cmF0
aW9uRGF0YWJhc2UoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAvLyBU
aGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUgZGVzdHJveWVkIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVh
ZC4KLSAgICBpZiAobV9kYXRhYmFzZSkKLSAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtk
YXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSldIHsgfSk7CisgICAgLy8gVGhlIGRhdGFiYXNl
ICYgc2NyaXB0U3RvcmFnZSBuZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiB0aGUgYmFja2dyb3VuZCB0
aHJlYWQuCisgICAgaWYgKG1fZGF0YWJhc2UgfHwgbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2RhdGFiYXNlKSwgc2Ny
aXB0U3RvcmFnZSA9IFdURk1vdmUobV9zY3JpcHRTdG9yYWdlKV0geyB9KTsKIH0KIAogdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6cG9zdFRhc2tUb1dvcmtRdWV1ZShGdW5jdGlvbjx2b2lkKCk+
JiYgdGFzaykKQEAgLTE4NSw2ICsxODYsMTkgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6
b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgZnVsbEZpbGVuYW1lKQogICAgIHJldHVy
biB0cnVlOwogfQogCitTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VE
aXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRzKG1fZGF0YWJhc2VEaXJlY3RvcnksIHsgIlNjcmlwdHMiLCAiVjEiIH0pOwor
fQorCitTV1NjcmlwdFN0b3JhZ2UmIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdl
KCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fc2NyaXB0U3Rv
cmFnZSkKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbWFrZVVuaXF1ZTxTV1NjcmlwdFN0b3Jh
Z2U+KHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgcmV0dXJuICptX3NjcmlwdFN0b3Jh
Z2U7Cit9CisKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHNJZk5lY2Vz
c2FyeSgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0zMzMsOCArMzQ3LDEw
IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiB7CiAgICAgcG9zdFRhc2tUb1dvcmtRdWV1ZShb
dGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgbV9kYXRhYmFzZSA9IG51bGxwdHI7CisgICAgICAgIG1fc2NyaXB0
U3RvcmFnZSA9IG51bGxwdHI7CiAKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0
YWJhc2VGaWxlKG1fZGF0YWJhc2VGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgICAgIFNR
TGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkoZGF0YWJhc2VEaXJl
Y3RvcnlJc29sYXRlZENvcHkoKSk7CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0zNDgsMTEgKzM2NCwxMiBAQCBib29sIFJlZ2lzdHJh
dGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+JgogICAgICAgICBpZiAoIW1fZGF0YWJhc2UpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9y
YWdlKCk7CiAKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7
CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1f
ZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPywgPywgPykiX3MpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0
YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPykiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHBy
ZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjYsMTQgKzM4MywyMCBA
QCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U2VydmljZVdvcmtlciwgIkZhaWxlZCB0byByZW1vdmUgcmVnaXN0cmF0aW9uIGRhdGEgZnJvbSBy
ZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KKyAgICAgICAgc2NyaXB0U3RvcmFnZS5jbGVhcihyZWdpc3RyYXRpb24pOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgZGF0YSA6IHVwZGF0ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgY3NwRW5jb2RlcjsKICAgICAgICAgZGF0YS5jb250ZW50
U2VjdXJpdHlQb2xpY3kuZW5jb2RlKGNzcEVuY29kZXIpOwogCisgICAgICAgIC8vIFdlIGRvbid0
IGFjdHVhbGx5IGVuY29kZSB0aGUgc2NyaXB0IHNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlLiBUaGV5
IHdpbGwgYmUgc3RvcmVkIHNlcGFyYXRlbHkKKyAgICAgICAgLy8gaW4gdGhlIFNjcmlwdFN0b3Jh
Z2UuCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyOwotICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIgPDwgZGF0YS5zY3JpcHRS
ZXNvdXJjZU1hcDsKKyAgICAgICAgYXV0byBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRz
ID0gZGF0YS5zY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgZm9yIChhdXRvJiBpbXBvcnRlZFNj
cmlwdCA6IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMudmFsdWVzKCkpCisgICAgICAg
ICAgICBpbXBvcnRlZFNjcmlwdC5zY3JpcHQgPSBudWxscHRyOworICAgICAgICBzY3JpcHRSZXNv
dXJjZU1hcEVuY29kZXIgPDwgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKIAogICAg
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNlcnRpZmljYXRlSW5mb0VuY29kZXI7CiAg
ICAgICAgIGNlcnRpZmljYXRlSW5mb0VuY29kZXIgPDwgZGF0YS5jZXJ0aWZpY2F0ZUluZm87CkBA
IC0zODUsMjEgKzQwOCwyNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFu
Z2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAg
fHwgc3FsLmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNx
bC5iaW5kVGV4dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKGRhdGEucmVnaXN0cmF0aW9uLnVw
ZGF0ZVZpYUNhY2hlKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQo
NywgZGF0YS5zY3JpcHRVUkwuc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwg
c3FsLmJpbmRUZXh0KDgsIGRhdGEuc2NyaXB0KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IHNxbC5iaW5kVGV4dCg5LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0g
U1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTAsIGNzcEVuY29kZXIuYnVm
ZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAg
IHx8IHNxbC5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5i
dWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTMsIGNlcnRpZmljYXRlSW5mb0VuY29k
ZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCB3b3JrZXJUeXBlVG9TdHJpbmco
ZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJs
b2IoOSwgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDEwLCBkYXRhLnJlZmVycmVyUG9s
aWN5KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMSwgc2NyaXB0
UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVm
ZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMiwg
Y2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5i
dWZmZXJTaXplKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtl
ciwgIkZhaWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUg
KCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAg
IC8vIFNhdmUgc2NyaXB0cyB0byBkaXNrLgorICAgICAgICBib29sIHN1Y2Nlc3MgPSBzY3JpcHRT
dG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5zY3JpcHRVUkwsIGRhdGEu
c2NyaXB0KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKKyAgICAg
ICAgZm9yIChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAg
ICAgc3VjY2VzcyA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBw
YWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c3VjY2Vzcywgc3VjY2Vzcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5j
b21taXQoKTsKLQotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2Vy
IHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBh
bmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUo
KSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1
IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9u
cyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6
ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQzNiw3IEBAIFN0cmluZyBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgq
bV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJl
cGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0
byBwcmVwYXJlIHN0YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3Jk
cyB0YWJsZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ0NCw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAK
ICAgICBmb3IgKDsgcmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJh
c2UiKTsKICAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpm
cm9tRGF0YWJhc2VLZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdp
blVSTCA9IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRv
IHNjb3BlUGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs0NTMsNzcgQEAg
U3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0
byBsYXN0VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRD
b2x1bW5Eb3VibGUoNCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9V
cGRhdGVWaWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0
VVJMID0gVVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8g
c2NyaXB0ID0gc3FsLmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9
IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8g
d29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAg
ICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0
YSk7CisgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5
UG9saWN5RGF0YSk7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rl
cihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YS5zaXplKCkpOwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRT
ZWN1cml0eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNv
bnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9s
aWN5KQorICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9s
aWN5Iik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTAp
OworICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAg
c3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAg
ICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRh
KTsKICAgICAgICAgT3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAogICAgICAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNvdXJj
ZU1hcERhdGEuZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKTsKICAgICAgICAg
aWYgKHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpIHsKICAgICAgICAgICAgIHNjcmlwdFJl
c291cmNlTWFwRGVjb2RlciA+PiBzY3JpcHRSZXNvdXJjZU1hcDsKLSAgICAgICAgICAgIGlmICgh
c2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwKSB7
CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIHNjcmlwdFJl
c291cmNlTWFwIik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBWZWN0b3I8dWludDhfdD4gY2VydGlmaWNhdGVJbmZvRGF0YTsK
LSAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMiwgY2VydGlmaWNhdGVJbmZvRGF0
YSk7CisgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTEsIGNlcnRpZmljYXRlSW5m
b0RhdGEpOwogICAgICAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5m
bzsKIAogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNlcnRpZmljYXRlSW5mb0Rl
Y29kZXIoY2VydGlmaWNhdGVJbmZvRGF0YS5kYXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGEuc2l6
ZSgpKTsKICAgICAgICAgY2VydGlmaWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87
Ci0gICAgICAgIGlmICghY2VydGlmaWNhdGVJbmZvKQorICAgICAgICBpZiAoIWNlcnRpZmljYXRl
SW5mbykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRp
ZmljYXRlSW5mbyIpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAogICAgICAg
ICAvLyBWYWxpZGF0ZSB0aGUgaW5wdXQgZm9yIHRoaXMgcmVnaXN0cmF0aW9uLgogICAgICAgICAv
LyBJZiBhbnkgcGFydCBvZiB0aGlzIGlucHV0IGlzIGludmFsaWQsIGxldCdzIHNraXAgdGhpcyBy
ZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgcmV0dXJuIGFuIGVycm9y
IHNraXBwaW5nICphbGwqIHJlZ2lzdHJhdGlvbnM/Ci0gICAgICAgIGlmICgha2V5IHx8ICFvcmln
aW5VUkwuaXNWYWxpZCgpIHx8ICF0b3BPcmlnaW4gfHwgIXVwZGF0ZVZpYUNhY2hlIHx8ICFzY3Jp
cHRVUkwuaXNWYWxpZCgpIHx8ICF3b3JrZXJUeXBlIHx8ICFzY29wZVVSTC5pc1ZhbGlkKCkpCisg
ICAgICAgIGlmICgha2V5IHx8ICFvcmlnaW5VUkwuaXNWYWxpZCgpIHx8ICF0b3BPcmlnaW4gfHwg
IXVwZGF0ZVZpYUNhY2hlIHx8ICFzY3JpcHRVUkwuaXNWYWxpZCgpIHx8ICF3b3JrZXJUeXBlIHx8
ICFzY29wZVVSTC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVk
IHRvIGRlY29kZSBwYXJ0IG9mIHRoZSByZWdpc3RyYXRpb24iKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgc2NyaXB0U3RvcmFnZSA9IHRoaXMtPnNj
cmlwdFN0b3JhZ2UoKTsKKyAgICAgICAgYXV0byBzY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJp
ZXZlKCprZXksIHNjcmlwdFVSTCk7CisgICAgICAgIEFTU0VSVChzY3JpcHQpOworICAgICAgICBp
ZiAoIXNjcmlwdCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtl
ciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbGVkIHRv
IHJldHJpZXZlIG1haW4gc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6ICpzY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAg
ICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UucmV0cmlldmUoKmtleSwgcGFp
ci5rZXkpOworICAgICAgICAgICAgQVNTRVJUKGltcG9ydGVkU2NyaXB0KTsKKyAgICAgICAgICAg
IGlmICghaW1wb3J0ZWRTY3JpcHQpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OlNjcmlwdFN0b3JhZ2U6OnN0
b3JlOiBGYWlsZWQgdG8gcmV0cmlldmUgaW1wb3J0ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2si
LCBwYWlyLmtleS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhaXIudmFsdWUuc2NyaXB0ID0gaW1w
b3J0ZWRTY3JpcHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
d29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwog
ICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2Vy
RGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBT
ZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdU
Rk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9Owot
ICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNl
Y3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJM
KSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OworICAg
ICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpu
dWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250
ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3Jp
cHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZSgqc2NyaXB0UmVzb3VyY2VNYXApIH07
CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9uVG9TdG9yZShXVEZN
b3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKaW5kZXggZDZhZWQ2YjQw
ZTYwLi43YWViMjc3MTdkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKQEAgLTM4LDYgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZWdpc3RyYXRpb25TdG9yZTsKIGNs
YXNzIFNRTGl0ZURhdGFiYXNlOworY2xhc3MgU1dTY3JpcHRTdG9yYWdlOwogc3RydWN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTsKIAogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJl
Y3RvcnkpOwpAQCAtNjEsNiArNjIsOCBAQCBwcml2YXRlOgogICAgIAogICAgIFN0cmluZyBkYXRh
YmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEaXJl
Y3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KIAorICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3Rv
cmFnZSgpOworCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyeSB7IE5vLCBZZXMgfTsKICAgICB2
b2lkIHNjaGVkdWxlUHVzaENoYW5nZXMoVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4m
JiwgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+JiYsIFNob3VsZFJldHJ5LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtRdWV1
ZShGdW5jdGlvbjx2b2lkKCk+JiYpOwpAQCAtNzIsNiArNzUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBkb1B1c2hDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JiwgY29uc3QgVmVjdG9yPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Jik7CiAgICAgdm9pZCBkb0NsZWFyT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJik7CisgICAgU3RyaW5nIHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdDsKIAogICAgIC8vIFJlcGxpZXMgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgYWRk
UmVnaXN0cmF0aW9uVG9TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7CkBAIC04MCw2
ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAg
ICBXZWFrUHRyPFJlZ2lzdHJhdGlvblN0b3JlPiBtX3N0b3JlOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTV1NjcmlwdFN0b3JhZ2U+IG1fc2NyaXB0U3RvcmFnZTsKICAgICBTdHJpbmcgbV9kYXRhYmFz
ZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9kYXRhYmFzZUZpbGVQYXRoOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVEYXRhYmFzZT4gbV9kYXRhYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI4Mzk5MzQyNDJjYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3JhZ2UuaCIKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRl
IDx3dGYvU0hBMS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcgaGFz
aFVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBTSEExIHNoYTE7CisgICAgc2hhMS5hZGRCeXRl
cyh1cmwuc3RyaW5nKCkudXRmOCgpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzaGEx
LmNvbXB1dGVIZXhEaWdlc3QoKSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9y
YWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQorICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5
KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworfQorCitTdHJpbmcgU1dTY3JpcHRT
dG9yYWdlOjpyZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fZGlyZWN0b3J5LCB7IHJlZ2lzdHJhdGlvbktl
eS50b3BPcmlnaW4oKS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgaGFzaFVSTChyZWdpc3RyYXRpb25L
ZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnNjcmlwdFBhdGgo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25z
dCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkp
LCBoYXNoVVJMKHNjcmlwdFVSTCkpOworfQorCitib29sIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25z
dCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpCit7CisgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3Jp
cHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKKyAgICBGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShzY3JpcHRQYXRoKSk7CisK
KyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShzY3JpcHRQYXRoLCBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihT
ZXJ2aWNlV29ya2VyLCAiU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMs
IGludmFsaWQgaGFuZGxlIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIEZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShmaWxlSGFu
ZGxlLCAwKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYmVnaW4oKTsgaXQgIT0gc2NyaXB0
LmVuZCgpOyArK2l0KQorICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxl
LCBpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0
VVJMKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQ
YXRoID0gdGhpcy0+c2NyaXB0UGF0aChyZWdpc3RyYXRpb25LZXksIHNjcmlwdFVSTCk7CisKKyAg
ICAvLyBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSgpIHVzZXMgbW1hcCgp
IHdoZW5ldmVyIHBvc3NpYmxlIHRvIHNhdmUgbWVtb3J5LgorICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoKTsKK30KKwordm9pZCBTV1Nj
cmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMt
PnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkpOworICAgIGJvb2wgcmVzdWx0
ID0gRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocmVnaXN0cmF0aW9uRGlyZWN0
b3J5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vydmlj
ZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6Y2xlYXI6IEZhaWx1cmUgdG8gY2xlYXIgc2NyaXB0
cyBmb3IgcmVnaXN0cmF0aW9uICVzIiwgcmVnaXN0cmF0aW9uS2V5LnRvRGF0YWJhc2VLZXkoKS51
dGY4KCkuZGF0YSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4zMzI3ZDFjYzc0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CisKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KTsKKworICAgIGJvb2wgc3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNj
cmlwdCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmV0cmlldmUoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKKyAgICB2b2lkIGNs
ZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKworcHJpdmF0ZToKKyAg
ICBTdHJpbmcgcmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmKSBjb25zdDsKKyAgICBTdHJpbmcgc2NyaXB0UGF0aChjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRVUkwpIGNvbnN0OworCisgICAg
U3RyaW5nIG1fZGlyZWN0b3J5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAwZWYwMDhmYjU2MDcuLjQyMjlj
Yjc1YjI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVD
bGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNl
cgogCiB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJl
Z2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiB7Ci0g
ICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRh
dGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVz
b3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHN0cmluZ1RvU2NyaXB0QnVmZmVyKHNjcmlw
dCksIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGlj
eSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAK
IHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggODAyYTQ4MDExNTFhLi41Y2Ey
NTI2OTExNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQg
U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQmIHJlc3VsCiAgICAgLy8gSWYgbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBu
ZXdlc3RXb3JrZXIncyBzY3JpcHQgdXJsIGVxdWFscyBqb2IncyBzY3JpcHQgdXJsIHdpdGggdGhl
IGV4Y2x1ZGUgZnJhZ21lbnRzCiAgICAgLy8gZmxhZyBzZXQsIGFuZCBzY3JpcHQncyBzb3VyY2Ug
dGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUgbWF0Y2ggd2l0aCBuZXdlc3RXb3JrZXIncyBzY3JpcHQg
cmVzb3VyY2UncyBzb3VyY2UKICAgICAvLyB0ZXh0LCB0aGVuOgotICAgIGlmIChuZXdlc3RXb3Jr
ZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlw
dFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29y
a2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IG5ld2VzdFdvcmtlci0+c2NyaXB0KCkgJiYgZG9D
ZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNl
cnRpZmljYXRlSW5mbygpKSkgeworICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0
VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQu
c2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG5ld2VzdFdvcmtlci0+c2NyaXB0KCkpICYm
IGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2Vy
LT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCwgc2NyaXB0IGFu
ZCBjZXJ0aWZpY2F0ZSBhcmUgbWF0Y2hpbmcgZm9yIHJlZ2lzdHJhdGlvbklEPSVsbHUiLCB0aGlz
LCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgLy8gRklY
TUU6IGZvciBub24gY2xhc3NpYyBzY3JpcHRzLCBjaGVjayB0aGUgc2NyaXB04oCZcyBtb2R1bGUg
cmVjb3JkJ3MgW1tFQ01BU2NyaXB0Q29kZV1dLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKaW5kZXggMmI4ZmY2ODVlMDQ5Li4xMjAwNTE2OThiZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBA
IHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29yCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAot
dm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRV
UkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBl
KQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3Jp
cHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQp
CiB7CiAgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtl
ckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXIt
PnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25z
ZVVSTCksIFdURk1vdmUobWltZVR5cGUpIH0pOworICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJl
c291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKaW5kZXggNDY1OWY5ZjlmYTZjLi45YmUzNDQ0OTFmMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVu
dElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRV
UkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAzYmEzNmEzZjk1YTUuLmQ1OTdlOGU0MmM5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU1dTZXJ2ZXJXb3JrZXIqIFNX
U2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklk
ZW50aWYKIH0KIAogLy8gRklYTUU6IFVzZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIHNjcmlwdCBh
bmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1TV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIo
U1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5
LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNj
cmlwdFJlc291cmNlTWFwKQorU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNv
dXJjZU1hcCkKICAgICA6IG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZlcikpCiAgICAgLCBtX3Jl
Z2lzdHJhdGlvbktleShyZWdpc3RyYXRpb24ua2V5KCkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbiht
YWtlV2Vha1B0cihyZWdpc3RyYXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDM3OGZiYTY1N2U4Yi4u
ZDI3ZjczZjIxZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAg
ICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXIuZ2V0KCk7IH0KICAgICBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkoKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsgfQotICAgIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KKyAgICBTaGFyZWRCdWZmZXImIHNjcmlw
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQog
ICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS50eXBlOyB9CiAKQEAg
LTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2so
KTsKIAogcHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVn
aXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRp
ZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYs
IFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+JiYpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRp
b24mLCBjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJ
bmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5n
JiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBI
YXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7
CiAKICAgICB2b2lkIGNhbGxXaGVuQWN0aXZhdGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBA
IC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5IG1fcmVnaXN0cmF0aW9uS2V5OwogICAgIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+
IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJp
bmcgbV9zY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlm
aWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZl
cnJlclBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGYzYjc1YTVlYmEzZi4uZDhkOTQzNDA4
NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEZpbmRDbGll
bnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKICAgICBN
YXRjaEFsbCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xhaW0o
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
IC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCi0gICAg
U2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJp
bmcgbWltZVR5cGUpCisgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCiAgICAgUG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBT
dHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmlu
ZGV4IGFiN2FiYzI1NzY1YS4uMmVhMjg0MDA5NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC03
MDIsNyArNzAyLDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFt
ZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewogICAgICAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6U2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQotICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVj
dG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
KTsKQEAgLTc0OSwxOCArNzQ5LDE4IEBAIHZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdp
bkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZm9sZGVyUGF0CiAKICAgICAg
ICAgICAgIC8vIElmIGNhY2hlIHNhbHQgaXMgaW5pdGlhbGl6ZWQgYW5kIHRoZSBwYXRocyBkbyBu
b3QgbWF0Y2gsIHNvbWUgY2FjaGUgZmlsZXMgaGF2ZSBwcm9iYWJseSBiZSByZW1vdmVkIG9yIHBh
cnRpYWxseSBjb3JydXB0ZWQuCiAgICAgICAgICAgICBBU1NFUlQoIW1fc2FsdCB8fCBmb2xkZXJQ
YXRoID09IGNhY2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmlnaW4pKTsKLSAgICAgICAgICAgIGRlbGV0
ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRlclBhdGgsIFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CisgICAg
ICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQ
YXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7
IH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRW5naW5lOjpkZWxldGVEaXJlY3Rv
cnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpk
ZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBh
dGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChb
cGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KGdsb2JhbFNpemVGaWxlTG9jayk7Ci0gICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5
KHBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShwYXRo
KTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXggMTk0NGE1Yzc5MmQ4Li40NDA5
ZTdiNDk2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xl
YXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlRGlyZWN0
b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0
aW9uQ2FsbGJhY2smJik7CiAgICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzMuLjdhOTk2MTRmMjMzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02MiwyMyArNjIsNiBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgRAogICAgIH0KIH0KIAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBT
dHJpbmcmIHBhdGgpCi17Ci0gICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25z
dCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmlu
ZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwg
bmFtZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIERpcmVjdG9yeUVu
dHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQ
YXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlw
ZTo6RGlyZWN0b3J5OgotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZW50
cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9s
bG93IHN5bWxpbmtzLgotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkocGF0aCk7Ci19Ci0KIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oCmluZGV4IDdhNWY4Y2M0ZmUzOC4uYzBiNGU4MWI0NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uaApAQCAtMzMsOCArMzMsNiBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGVudW0gY2xh
c3MgRGlyZWN0b3J5RW50cnlUeXBlIHsgRGlyZWN0b3J5LCBGaWxlIH07CiB2b2lkIHRyYXZlcnNl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlKT4mKTsKIAotdm9pZCBkZWxldGVE
aXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpOwotCiBzdHJ1Y3QgRmlsZVRp
bWVzIHsKICAgICBXYWxsVGltZSBjcmVhdGlvbjsKICAgICBXYWxsVGltZSBtb2RpZmljYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBlZGRjMGJlMjllMGUuLmRiNGMwNTQ5YzZiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
ICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5o
PgpAQCAtMTE5Myw3ICsxMTk0LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucygp
CiAgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0co
TmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hl
IHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9uUGF0aC51dGY4KCkuZGF0YSgpKTsKIAotICAg
ICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkob2xkVmVyc2lvblBhdGgpOworICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkob2xkVmVyc2lvblBh
dGgpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCA0MmYzNzliYTFiYmYuLmUxNDFiZjMxZDdjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFNjcmlw
dFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVz
b3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQuc2NyaXB0LCBzY3Jp
cHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwg
c2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3
b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApp
bmRleCA3NmNhZjJhZDQzNzIuLmUxNjQ2MzRhMzhhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTE1MSw0ICsxNTEsMjkgQEAgVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCBvcGVuRXhpc3RpbmdGaWxlQW5kRmFpbElmRmlsZUV4aXN0cykKICAgICBF
WFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKTsKIH0KIAorVEVT
VF9GKEZpbGVTeXN0ZW1UZXN0LCBkZWxldGVOb25FbXB0eURpcmVjdG9yeSkKK3sKKyAgICBhdXRv
IGNyZWF0ZVRlc3RUaWxlID0gW10oY29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIGF1dG8g
ZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVP
cGVuTW9kZTo6V3JpdGUpOworICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGZpbGVIYW5kbGUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmls
ZUhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICB9OworICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlOworICAgIGF1dG8g
dGVtcG9yYXJ5VGVzdEZvbGRlciA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJkZWxl
dGVOb25FbXB0eURpcmVjdG9yeVRlc3QiLCB0ZW1wb3JhcnlGaWxlKTsKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZSk7CisgICAgV1RGTG9nQWx3YXlzKCJDSFJJUzogdGVt
cG9yYXJ5VGVzdEZvbGRlciBpcyAlcyIsIHRlbXBvcmFyeVRlc3RGb2xkZXIudXRmOCgpLmRhdGEo
KSk7CisKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRlbXBvcmFyeVRl
c3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9s
ZGVyLCB7ICJzdWJmb2xkZXIiIH0pKSk7CisgICAgY3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRlc3RGb2xkZXIsICJmaWxlMS50eHQi
KSk7CisgICAgY3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHRlbXBvcmFyeVRlc3RGb2xkZXIsICJmaWxlMi50eHQiKSk7CisgICAgY3JlYXRlVGVzdFRp
bGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9s
ZGVyLCB7ICJzdWJmb2xkZXIiLCAiZmlsZTMudHh0IiB9KSk7CisgICAgY3JlYXRlVGVzdFRpbGUo
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVy
LCB7ICJzdWJmb2xkZXIiLCAiZmlsZTQudHh0IiB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsK
KyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1w
b3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHModGVtcG9yYXJ5VGVzdEZvbGRlcikpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmlu
ZGV4IDdmNGFjOTZmYTdjNy4uZTlmZWI4NDFlZDhlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpA
QCAtMTk1Niw3ICsxOTU2LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQ
cm9jZXNzKQogICAgIGF1dG8gcGF0aCA9IHN0b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LnBhdGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwg
KnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGgg
PSBbZGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApA
QCAtMTk4Myw3ICsxOTgzLDcgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdp
dGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQogICAgIEVYUEVDVF9GQUxTRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhd
KTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpu
aWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJ
dGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6
W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucy02LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424402</attachid>
            <date>2021-03-26 14:03:03 -0700</date>
            <delta_ts>2021-03-26 15:51:19 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>223808_ServiceWorkerScriptStorage_wip.patch</filename>
            <type>text/plain</type>
            <size>62508</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlLi4zODY4Yzg4MjdmMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCkBAIC00MDgsNSArNDA4LDE5IEBAIFN0cmluZyBjcmVhdGVUZW1wb3Jh
cnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYpCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShD
T0NPQSkgJiYgIU9TKFdJTkRPV1MpCitib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGVudHJpZXMgPSBsaXN0RGlyZWN0b3J5KHBhdGgs
ICIqIl9zKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgeworICAgICAgICBpZiAo
ZmlsZUlzRGlyZWN0b3J5KGVudHJ5LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisg
ICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeShlbnRyeSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGRlbGV0ZUZpbGUoZW50cnkpOworICAgIH0KKyAgICByZXR1cm4gZGVsZXRl
RW1wdHlEaXJlY3RvcnkocGF0aCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5
c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzExNWQ2
NWQ0Zi4uOTA4MTc1NThkMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xOTAsMTQgKzE5MCwxNCBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJp
bmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeSgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
TlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxl
dGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKwog
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKIAogV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0
cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzVhMmYzMzVkZGEuLmVhYWM0NDQ4YTk3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTI2ODEsNiArMjY4MSw3IEBAIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAord29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBmMzY4NWY5NTZiNmUuLjYyYjBkZDcwMDY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI2Miw2ICsxMjYyLDcgQEAK
IAkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwQ0JGMzQxRDRC
Q0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oICovOyB9OwogCQk0NjBFMzA3
NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25T
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1
RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcy
RDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEg
LyogU1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNTIx
QUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2lu
ZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRUI2MjExQjg3ODlDQjAw
OTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJNDY1MzA3RDAxREI2RUU0ODAwRTQx
MzdDIC8qIEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURBQTEwNEYwMEIwRDhCOSAvKiBKU1VJRXZlbnRJbml0Lmgg
Ki87IH07CkBAIC04MjI3LDYgKzgyMjgsOCBAQAogCQk0NjBDQkYzMzFENEJDQ0ZFMDA5MkU4OEUg
LyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEQxOTQ0MUZDRTIxREQwMEMz
REI4NSAvKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjczQ0FDMjYwRTU5REYwMDZG
QUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Mjcz
Q0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG93ZXJPYnNl
cnZlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzUyMUFBMjA4MTA5
MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXaW5kb3dQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFB
QzIwODEwOTBFMDBDMjg5MjIgLyogV2luZG93UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2luZG93UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA3MDMsNiArMjA3MDYsOCBAQAogCQkJCTUxQjkxNDBCMUZEMjc4MjUwMEVFMjg1
OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oICovLAogCQkJCTQxNTFFNUI5MUZCQTRDNzYwMEU0N0Uy
RCAvKiBTV09yaWdpblN0b3JlLmNwcCAqLywKIAkJCQk0MTUxRTVCNzFGQkE0Qzc1MDBFNDdFMkQg
LyogU1dPcmlnaW5TdG9yZS5oICovLAorCQkJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBT
V1NjcmlwdFN0b3JhZ2UuY3BwICovLAorCQkJCTQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBT
V1NjcmlwdFN0b3JhZ2UuaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dT
ZXJ2ZXIuY3BwICovLAogCQkJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5o
ICovLAogCQkJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNw
cCAqLywKQEAgLTMxOTMxLDYgKzMxOTM2LDcgQEAKIAkJCQk5NDlDNzcwQjFENkU0OUVEMDBDMERF
NEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0OUM3NzA5MUQ2
RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJTZWxlY3Rvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NDAxRDZDRTNDMjAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4
NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQxODI3OEYx
RDhDQUY5MjAwNDkyNzY0IC8qIENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAppbmRleCAyMWIzMGVlMjk0NzIuLjRhM2U3
ZTk3ODFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmln
dXJhdGlvbj4+IFNlcnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbiht
X3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygp
KQogICAgICAgICAuc2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNv
bnRleHREYXRhKCkuc2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAg
ICAgICAgLnNldENvbnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1
MWJjNGFhOTgzYzguLmE1ZmE3YmI5ODkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0zNjcsMyArMzY3LDgxIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgUGVyc2lzdGVuY2UgeworCitzdGF0aWMg
dm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiBidWZmZXIpCit7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAg
IGVuY29kZXIgPDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKKyAgICBlbmNvZGVyIDw8
IGJ1ZmZlclNpemU7CisgICAgaWYgKCFidWZmZXJTaXplKQorICAgICAgICByZXR1cm47CisKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqYnVmZmVyKQorICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVt
ZW50LnNlZ21lbnQtPmRhdGEoKSksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKK30KKworc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIE9w
dGlvbmFsPGJvb2w+IGlzTnVsbDsKKyAgICBkZWNvZGVyID4+IGlzTnVsbDsKKyAgICBpZiAoIWlz
TnVsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCppc051bGwpIHsKKyAgICAg
ICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
T3B0aW9uYWw8dWludDY0X3Q+IGJ1ZmZlclNpemU7CisgICAgZGVjb2RlciA+PiBidWZmZXJTaXpl
OworICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oKmJ1ZmZlclNp
emUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
KyAgICBkYXRhLmdyb3coKmJ1ZmZlclNpemUpOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhl
ZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitPcHRpb25hbDxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4gQ29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYnVmZmVyOworfQor
Cit2b2lkIENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7Cisg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK09wdGlv
bmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBQ
ZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCmluZGV4IDIzYmY1YThlZGI0Yy4uNGJmYWQzMTlkMGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
Q29kZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDRikK
QEAgLTI1MCwzICsyNTEsMTkgQEAgcHJpdmF0ZToKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhC
dWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNw
YWNlIFdURiB7CituYW1lc3BhY2UgUGVyc2lzdGVuY2UgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggNGQ0NzRmMTZlNTg4Li5hNGJlMTAwNDBi
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIK
KyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTYwLDcgKzYxLDcgQEAgT3B0aW9uYWw8
RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewog
ICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0g
ICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CisgICAg
ICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291
cmNlLT5zY3JpcHQpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJj
ZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRS
ZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAt
MTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjps
b2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1F
VHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJt
aW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAK
LSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxT
Y29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlw
ZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJH
bG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KCkpLCBtX3Jl
c3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggMTZkZjJkODI0OWY4
Li40ODgxNDFhZmFmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC0zNyw3ICszNyw3IEBA
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xh
dGVkQ29weSgpIGNvbnN0CiAgICAgICAgIGpvYkRhdGFJZGVudGlmaWVyLAogICAgICAgICByZWdp
c3RyYXRpb24uaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LAotICAgICAgICBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHNjcmlwdC0+Y29weSgp
LAogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGNvbnRl
bnRTZWN1cml0eVBvbGljeS5pc29sYXRlZENvcHkoKSwKICAgICAgICAgcmVmZXJyZXJQb2xpY3ku
aXNvbGF0ZWRDb3B5KCksCkBAIC00OCw2ICs0OCwyMCBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIH07
CiB9CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChhdXRvIGl0ID0gYnVmZmVy
LmJlZ2luKCk7IGl0ICE9IGJ1ZmZlci5lbmQoKTsgaXQrKykKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpmcm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6
ZSgpKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworUmVmPFNoYXJlZEJ1
ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAg
YXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgK
aW5kZXggM2FkNWQ0YTEyNjk1Li44NDU0MWQ0NjJhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgpAQCAtMzksMTMgKzQwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1ZmZlciYpOworUmVmPFNoYXJl
ZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CisKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIHN0cnVjdCBJbXBvcnRlZFNjcmlwdCB7Ci0g
ICAgICAgIFN0cmluZyBzY3JpcHQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNjcmlw
dDsKICAgICAgICAgVVJMIHJlc3BvbnNlVVJMOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7CiAK
LSAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBz
Y3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlw
ZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5jb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVk
Q29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CiAKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAg
ICAgewpAQCAtNTQsNyArNTgsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsK
IAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0
ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IHNjcmlwdDsKKyAgICAgICAgICAgIE9wdGlvbmFsPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBzY3JpcHQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAg
ICAgICAgICAgIGlmICghc2NyaXB0KQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CkBAIC04MCw3ICs4NCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewog
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50
aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgcmVnaXN0cmF0aW9uOwog
ICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAg
IFN0cmluZyBzY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gc2NyaXB0OwogICAgIENlcnRp
ZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgcmVmZXJyZXJQ
b2xpY3k7CkBAIC0xMjAsOCArMTI0LDkgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHRE
YXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBp
ZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCi0gICAgU3RyaW5nIHNjcmlwdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdCkp
CisgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNjcmlwdDsKKyAgICBkZWNvZGVyID4+
IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CkBAIC0xNTcsNyArMTYyLDcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRl
eHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAg
ICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpyZWdp
c3RyYXRpb24pLAogICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksCi0g
ICAgICAgIFdURk1vdmUoc2NyaXB0KSwKKyAgICAgICAgV1RGTW92ZSgqc2NyaXB0KSwKICAgICAg
ICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwKICAgICAgICAgV1RGTW92ZShjb250ZW50U2Vj
dXJpdHlQb2xpY3kpLAogICAgICAgICBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZDcwZjRmNWU2OTNmLi5hNjg0YzcyMGY2ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBG
SVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtlclRocmVhZDo6U2Vy
dmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFN0
cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMs
IFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVi
dWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Q
cm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29ya2VyVGhyZWFk
KHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVz
ZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGlu
ZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5v
dygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQs
IHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94
eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRT
dGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3Vy
aXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpT
Qzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCisgICAgOiBXb3JrZXJUaHJlYWQo
eyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3Bl
Y3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNl
ckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5l
KCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93
KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwg
c2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9TdHJpbmcoZGF0YS5zY3JpcHQpLCBsb2Fk
ZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNo
YXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24u
a2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94
eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkp
CiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0
UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpKQogICAgICwgbV9o
ZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhl
YXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGNlZThjYzhj
MDhiZS4uZmMzOGNjYjcyNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMzQs
OCArMzQsMTAgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
ICJTV1NjcmlwdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTV1NlcnZlci5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KQEAgLTQ5LDcgKzUxLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdWludDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDU7
CitzdGF0aWMgY29uc3QgdWludDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDY7CiAKIHN0YXRpYyBjb25z
dCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogewpA
QCAtNjEsNyArNjMsNiBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVtYShj
b25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICAgICAgIiwgbGFzdFVwZGF0ZUNoZWNrVGltZSBE
T1VCTEUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgdXBkYXRlVmlhQ2Fj
aGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCBzY3JpcHRVUkwg
VEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgotICAgICAgICAiLCBzY3JpcHQgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCB3b3JrZXJUeXBlIFRFWFQgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgY29udGVudFNlY3VyaXR5UG9saWN5
IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgcmVmZXJyZXJQb2xp
Y3kgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgpAQCAtMTI0LDkgKzEyNSw5IEBAIFJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjp+UmVnaXN0cmF0aW9uRGF0YWJhc2UoKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAvLyBUaGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUgZGVz
dHJveWVkIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KLSAgICBpZiAobV9kYXRhYmFzZSkKLSAg
ICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFz
ZSldIHsgfSk7CisgICAgLy8gVGhlIGRhdGFiYXNlICYgc2NyaXB0U3RvcmFnZSBuZWVkIHRvIGJl
IGRlc3Ryb3llZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgaWYgKG1fZGF0YWJhc2Ug
fHwgbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFi
YXNlID0gV1RGTW92ZShtX2RhdGFiYXNlKSwgc2NyaXB0U3RvcmFnZSA9IFdURk1vdmUobV9zY3Jp
cHRTdG9yYWdlKV0geyB9KTsKIH0KIAogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6cG9zdFRh
c2tUb1dvcmtRdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTE4NSw2ICsxODYsMTkg
QEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0
cmluZyYgZnVsbEZpbGVuYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCitTdHJpbmcgUmVnaXN0
cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fZGF0YWJhc2VEaXJl
Y3RvcnksIHsgIlNjcmlwdHMiLCAiVjEiIH0pOworfQorCitTV1NjcmlwdFN0b3JhZ2UmIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAoIW1fc2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV9zY3JpcHRTdG9y
YWdlID0gbWFrZVVuaXF1ZTxTV1NjcmlwdFN0b3JhZ2U+KHNjcmlwdFN0b3JhZ2VEaXJlY3Rvcnko
KSk7CisgICAgcmV0dXJuICptX3NjcmlwdFN0b3JhZ2U7Cit9CisKIHZvaWQgUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmltcG9ydFJlY29yZHNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CkBAIC0zMzMsOCArMzQ3LDEwIEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJh
c2U6OmNsZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
CiB7CiAgICAgcG9zdFRhc2tUb1dvcmtRdWV1ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9kYXRhYmFz
ZSA9IG51bGxwdHI7CisgICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG51bGxwdHI7CiAKICAgICAg
ICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2VGaWxlUGF0
aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHNjcmlwdFN0
b3JhZ2VEaXJlY3RvcnkoKSk7CiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGF0YWJhc2VEaXJlY3RvcnkoZGF0YWJhc2VEaXJlY3RvcnlJc29sYXRlZENvcHkoKSk7CiAKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0z
NDgsMTEgKzM2NCwxMiBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2Vz
KGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICBpZiAoIW1f
ZGF0YWJhc2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIGF1dG8mIHNj
cmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9yYWdlKCk7CiAKICAgICBTUUxpdGVUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsK
IAotICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNv
cmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwor
ICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRz
IFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgIGlm
IChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJl
Z2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNl
LT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zNjYsMTQgKzM4MywyMCBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+Jgog
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBy
ZW1vdmUgcmVnaXN0cmF0aW9uIGRhdGEgZnJvbSByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgc2NyaXB0U3RvcmFnZS5j
bGVhcihyZWdpc3RyYXRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZGF0YSA6IHVwZGF0
ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgY3Nw
RW5jb2RlcjsKICAgICAgICAgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3kuZW5jb2RlKGNzcEVu
Y29kZXIpOwogCisgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGVuY29kZSB0aGUgc2NyaXB0
IHNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlLiBUaGV5IHdpbGwgYmUgc3RvcmVkIHNlcGFyYXRlbHkK
KyAgICAgICAgLy8gaW4gdGhlIFNjcmlwdFN0b3JhZ2UuCiAgICAgICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyOwotICAgICAgICBzY3JpcHRSZXNv
dXJjZU1hcEVuY29kZXIgPDwgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgYXV0byBz
Y3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzID0gZGF0YS5zY3JpcHRSZXNvdXJjZU1hcDsK
KyAgICAgICAgZm9yIChhdXRvJiBpbXBvcnRlZFNjcmlwdCA6IHNjcmlwdFJlc291cmNlTWFwV2l0
aG91dFNjcmlwdHMudmFsdWVzKCkpCisgICAgICAgICAgICBpbXBvcnRlZFNjcmlwdC5zY3JpcHQg
PSBudWxscHRyOworICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIgPDwgc2NyaXB0UmVz
b3VyY2VNYXBXaXRob3V0U2NyaXB0czsKIAogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyIGNlcnRpZmljYXRlSW5mb0VuY29kZXI7CiAgICAgICAgIGNlcnRpZmljYXRlSW5mb0VuY29k
ZXIgPDwgZGF0YS5jZXJ0aWZpY2F0ZUluZm87CkBAIC0zODUsMjEgKzQwOCwyNyBAQCBib29sIFJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgfHwgc3FsLmJpbmREb3VibGUoNSwgZGF0YS5y
ZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg2LCB1cGRhdGVWaWFDYWNo
ZVRvU3RyaW5nKGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoNywgZGF0YS5zY3JpcHRVUkwuc3RyaW5nKCkp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDgsIGRhdGEuc2NyaXB0
KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg5LCB3b3JrZXJUeXBl
VG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBz
cWwuYmluZEJsb2IoMTAsIGNzcEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMSwgZGF0YS5y
ZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2Io
MTIsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmlu
ZEJsb2IoMTMsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5m
b0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5i
aW5kVGV4dCg4LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRF
X09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoOSwgY3NwRW5jb2Rlci5idWZmZXIoKSwg
Y3NwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3Fs
LmJpbmRUZXh0KDEwLCBkYXRhLnJlZmVycmVyUG9saWN5KSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHNxbC5iaW5kQmxvYigxMSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigp
LCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMiwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZm
ZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgc3FsLnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBzdG9yZSByZWdpc3Ry
YXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFNhdmUgc2NyaXB0cyB0byBkaXNrLgor
ICAgICAgICBib29sIHN1Y2Nlc3MgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0
aW9uLmtleSwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0KTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGF0YS5z
Y3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgc3VjY2VzcyA9IHNjcmlwdFN0b3JhZ2Uu
c3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0
KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKLQotICAgIExPRyhTZXJ2aWNl
V29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1
IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9u
cyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6
ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29y
a2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9u
cyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNp
emUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNDA3LDYgKzQzNiw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKKyAgICBSRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6
Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00g
UmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byByZXRy
aWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJsZSAoIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwpAQCAtNDE0LDYg
KzQ0NCw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAg
ICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBmb3IgKDsgcmVzdWx0ID09IFNRTElU
RV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBJbXBvcnRpbmcg
YSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgYXV0byBrZXkgPSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkoc3FsLmdldENvbHVt
blRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9IFVSTCB7IFVSTCgpLCBzcWwuZ2V0
Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3BlUGF0aCA9IHNxbC5nZXRDb2x1bW5U
ZXh0KDIpOwpAQCAtNDIyLDUyICs0NTMsNzcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0VXBkYXRlQ2hlY2tUaW1lID0gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5Eb3VibGUoNCkpOwogICAgICAgICBh
dXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVWaWFDYWNoZShzcWwuZ2V0Q29sdW1u
VGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsgVVJMKCksIHNxbC5nZXRD
b2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0ID0gc3FsLmdldENvbHVtblRleHQo
Nyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0
Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2Vy
VHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNv
bnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0
b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CisgICAgICAgIHNxbC5nZXRDb2x1bW5C
bG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CiAgICAgICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRh
LmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkpOwogICAgICAgICBPcHRp
b25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRTZWN1cml0
eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICAg
ICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICAgICAgaWYgKCFjb250
ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihT
ZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxl
ZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJlZmVycmVy
UG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAgICAgICBhdXRvIHJlZmVycmVyUG9s
aWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNj
cmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3Rvcigx
MSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKICAgICAgICAgT3B0aW9uYWw8SGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+PiBzY3JpcHRS
ZXNvdXJjZU1hcDsKIAogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJl
c291cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNvdXJjZU1hcERhdGEuZGF0YSgpLCBzY3JpcHRSZXNv
dXJjZU1hcERhdGEuc2l6ZSgpKTsKICAgICAgICAgaWYgKHNjcmlwdFJlc291cmNlTWFwRGF0YS5z
aXplKCkpIHsKICAgICAgICAgICAgIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlciA+PiBzY3JpcHRS
ZXNvdXJjZU1hcDsKLSAgICAgICAgICAgIGlmICghc2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAg
ICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNv
cmRzOiBGYWlsZWQgdG8gZGVjb2RlIHNjcmlwdFJlc291cmNlTWFwIik7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBWZWN0b3I8
dWludDhfdD4gY2VydGlmaWNhdGVJbmZvRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVtbkJsb2JB
c1ZlY3RvcigxMiwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CisgICAgICAgIHNxbC5nZXRDb2x1bW5C
bG9iQXNWZWN0b3IoMTEsIGNlcnRpZmljYXRlSW5mb0RhdGEpOwogICAgICAgICBPcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKIAogICAgICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGNlcnRpZmljYXRlSW5mb0RlY29kZXIoY2VydGlmaWNhdGVJbmZvRGF0YS5k
YXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGEuc2l6ZSgpKTsKICAgICAgICAgY2VydGlmaWNhdGVJ
bmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgICAgIGlmICghY2VydGlmaWNhdGVJ
bmZvKQorICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRS
ZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRpZmljYXRlSW5mbyIpOwogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5wdXQgZm9y
IHRoaXMgcmVnaXN0cmF0aW9uLgogICAgICAgICAvLyBJZiBhbnkgcGFydCBvZiB0aGlzIGlucHV0
IGlzIGludmFsaWQsIGxldCdzIHNraXAgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIEZJ
WE1FOiBTaG91bGQgd2UgcmV0dXJuIGFuIGVycm9yIHNraXBwaW5nICphbGwqIHJlZ2lzdHJhdGlv
bnM/Ci0gICAgICAgIGlmICgha2V5IHx8ICFvcmlnaW5VUkwuaXNWYWxpZCgpIHx8ICF0b3BPcmln
aW4gfHwgIXVwZGF0ZVZpYUNhY2hlIHx8ICFzY3JpcHRVUkwuaXNWYWxpZCgpIHx8ICF3b3JrZXJU
eXBlIHx8ICFzY29wZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIGlmICgha2V5IHx8ICFvcmlnaW5V
UkwuaXNWYWxpZCgpIHx8ICF0b3BPcmlnaW4gfHwgIXVwZGF0ZVZpYUNhY2hlIHx8ICFzY3JpcHRV
UkwuaXNWYWxpZCgpIHx8ICF3b3JrZXJUeXBlIHx8ICFzY29wZVVSTC5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBwYXJ0IG9mIHRoZSByZWdp
c3RyYXRpb24iKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byYgc2NyaXB0U3RvcmFnZSA9IHRoaXMtPnNjcmlwdFN0b3JhZ2UoKTsKKyAgICAgICAgYXV0
byBzY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKCprZXksIHNjcmlwdFVSTCk7CisgICAg
ICAgIEFTU0VSVChzY3JpcHQpOworICAgICAgICBpZiAoIXNjcmlwdCkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpT
Y3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbGVkIHRvIHJldHJpZXZlIG1haW4gc2NyaXB0IGZvciAl
cyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6ICpz
Y3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNj
cmlwdFN0b3JhZ2UucmV0cmlldmUoKmtleSwgcGFpci5rZXkpOworICAgICAgICAgICAgQVNTRVJU
KGltcG9ydGVkU2NyaXB0KTsKKyAgICAgICAgICAgIGlmICghaW1wb3J0ZWRTY3JpcHQpIHsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OlNjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsZWQgdG8gcmV0cmlldmUgaW1w
b3J0ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHBhaXIudmFsdWUuc2NyaXB0ID0gaW1wb3J0ZWRTY3JpcHQucmVsZWFzZU5vbk51bGwo
KTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsg
d29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRl
ZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0byBy
ZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtl
eSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlh
Q2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0g
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJh
dGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlm
aWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZl
cnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1v
dmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlv
biksIHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpj
ZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3Zl
KHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwg
V1RGTW92ZSgqc2NyaXB0UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHRE
YXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+YWRkUmVnaXN0cmF0aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmgKaW5kZXggZDZhZWQ2YjQwZTYwLi43YWViMjc3MTdkZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZWdpc3RyYXRpb25TdG9yZTsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOworY2xhc3Mg
U1dTY3JpcHRTdG9yYWdlOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIAogV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpOwpAQCAtNjEsNiArNjIsOCBAQCBw
cml2YXRlOgogICAgIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KIAor
ICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOworCiAgICAgZW51bSBjbGFzcyBT
aG91bGRSZXRyeSB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHNjaGVkdWxlUHVzaENoYW5nZXMoVmVj
dG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mJiwgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk+JiYsIFNob3VsZFJldHJ5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtRdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYpOwpAQCAt
NzIsNiArNzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5
KCk7CiAgICAgYm9vbCBkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+JiwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Jik7
CiAgICAgdm9pZCBkb0NsZWFyT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJik7CisgICAgU3Ry
aW5nIHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIFJlcGxpZXMgdG8g
dGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uVG9TdG9yZShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJik7CkBAIC04MCw2ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBXZWFrUHRyPFJlZ2lzdHJhdGlvblN0b3Jl
PiBtX3N0b3JlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTV1NjcmlwdFN0b3JhZ2U+IG1fc2NyaXB0
U3RvcmFnZTsKICAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9k
YXRhYmFzZUZpbGVQYXRoOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZT4gbV9k
YXRhYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmI4Mzk5MzQyNDJjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTV1Njcmlw
dFN0b3JhZ2UuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcgaGFzaFVSTChjb25zdCBVUkwmIHVybCkKK3sKKyAg
ICBTSEExIHNoYTE7CisgICAgc2hhMS5hZGRCeXRlcyh1cmwuc3RyaW5nKCkudXRmOCgpKTsKKyAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzaGExLmNvbXB1dGVIZXhEaWdlc3QoKSk7Cit9CisK
K1NXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
KQorICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpyZWdpc3RyYXRpb25EaXJlY3Rv
cnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KSBj
b25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KG1fZGlyZWN0b3J5LCB7IHJlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKS5kYXRhYmFzZUlkZW50
aWZpZXIoKSwgaGFzaFVSTChyZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmlu
ZyBTV1NjcmlwdFN0b3JhZ2U6OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJh
dGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkpLCBoYXNoVVJMKHNjcmlwdFVSTCkpOworfQor
Citib29sIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hh
cmVkQnVmZmVyJiBzY3JpcHQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2Ny
aXB0VVJMKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShzY3JpcHRQYXRoKSk7CisKKyAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxl
U3lzdGVtOjpvcGVuRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlKTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU2NyaXB0U3RvcmFn
ZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMsIGludmFsaWQgaGFuZGxlIiwgc2NyaXB0UGF0
aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEZp
bGVTeXN0ZW06OnRydW5jYXRlRmlsZShmaWxlSGFuZGxlLCAwKTsKKyAgICBmb3IgKGF1dG8gaXQg
PSBzY3JpcHQuYmVnaW4oKTsgaXQgIT0gc2NyaXB0LmVuZCgpOyArK2l0KQorICAgICAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+
c2VnbWVudC0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRT
dG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMKQoreworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0aChyZWdp
c3RyYXRpb25LZXksIHNjcmlwdFVSTCk7CisKKyAgICAvLyBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSgpIHVzZXMgbW1hcCgpIHdoZW5ldmVyIHBvc3NpYmxlIHRvIHNhdmUg
bWVtb3J5LgorICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzY3JpcHRQYXRoKTsKK30KKwordm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKK3sKKyAgICBhdXRv
IHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdp
c3RyYXRpb25LZXkpOworICAgIGJvb2wgcmVzdWx0ID0gRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkocmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6
Y2xlYXI6IEZhaWx1cmUgdG8gY2xlYXIgc2NyaXB0cyBmb3IgcmVnaXN0cmF0aW9uICVzIiwgcmVn
aXN0cmF0aW9uS2V5LnRvRGF0YWJhc2VLZXkoKS51dGY4KCkuZGF0YSgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMzI3ZDFj
Yzc0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIFNXU2NyaXB0U3Rv
cmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKKworICAgIGJvb2wg
c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0
IFVSTCYgc2NyaXB0VVJMKTsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmKTsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgcmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSBjb25zdDsKKyAgICBTdHJp
bmcgc2NyaXB0UGF0aChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwpIGNvbnN0OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcAppbmRleCAwZWYwMDhmYjU2MDcuLjQyMjljYjc1YjI1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTYzMyw3ICs2
MzMsNyBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogCiB2b2lkIFNXU2VydmVyOjp1cGRhdGVX
b3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRp
ZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
dHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24u
ZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwg
dHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3Rh
bGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmll
ciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRl
KCksIHN0cmluZ1RvU2NyaXB0QnVmZmVyKHNjcmlwdCksIGNlcnRpZmljYXRlSW5mbywgY29udGVu
dFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxD
b250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKaW5kZXggODAyYTQ4MDExNTFhLi41Y2EyNTI2OTExNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0
Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsCiAgICAgLy8g
SWYgbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgdXJsIGVx
dWFscyBqb2IncyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzCiAgICAgLy8g
ZmxhZyBzZXQsIGFuZCBzY3JpcHQncyBzb3VyY2UgdGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUgbWF0
Y2ggd2l0aCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgcmVzb3VyY2UncyBzb3VyY2UKICAgICAvLyB0
ZXh0LCB0aGVuOgotICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBu
ZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09
IG5ld2VzdFdvcmtlci0+c2NyaXB0KCkgJiYgZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2Vy
dGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNlcnRpZmljYXRlSW5mbygpKSkgeworICAgIGlm
IChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RX
b3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUo
KSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRvU3Ry
aW5nKG5ld2VzdFdvcmtlci0+c2NyaXB0KCkpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0
LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKICAg
ICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6
c2NyaXB0RmV0Y2hGaW5pc2hlZCwgc2NyaXB0IGFuZCBjZXJ0aWZpY2F0ZSBhcmUgbWF0Y2hpbmcg
Zm9yIHJlZ2lzdHJhdGlvbklEPSVsbHUiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKICAgICAgICAgLy8gRklYTUU6IGZvciBub24gY2xhc3NpYyBzY3JpcHRz
LCBjaGVjayB0aGUgc2NyaXB04oCZcyBtb2R1bGUgcmVjb3JkJ3MgW1tFQ01BU2NyaXB0Q29kZV1d
LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMmI4ZmY2
ODVlMDQ5Li4xMjAwNTE2OThiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29yCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYg
cmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9pZCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtlciA9
IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUo
c2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IFdU
Rk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUobWltZVR5cGUpIH0p
OworICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwg
V1RGTW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNDY1OWY5ZjlmYTZj
Li45YmUzNDQ0OTFmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApA
QCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xp
ZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9w
dGlvbnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYp
PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYg
cmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApp
bmRleCAzYmEzNmEzZjk1YTUuLmQ1OTdlOGU0MmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgU1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtl
ckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWYKIH0KIAogLy8gRklYTUU6IFVzZSBy
LXZhbHVlIHJlZmVyZW5jZXMgZm9yIHNjcmlwdCBhbmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1T
V1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQorU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBTaGFyZWRCdWZmZXImIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBT
dHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKICAgICA6IG1fc2VydmVyKG1h
a2VXZWFrUHRyKHNlcnZlcikpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb24u
a2V5KCkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihtYWtlV2Vha1B0cihyZWdpc3RyYXRpb24pKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oCmluZGV4IDM3OGZiYTY1N2U4Yi4uZDI3ZjczZjIxZjNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1
cm4gbV9zZXJ2ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsg
fQogICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlw
dFVSTDsgfQotICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3Jp
cHQ7IH0KKyAgICBTaGFyZWRCdWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0
OyB9CiAgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7
IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS50eXBlOyB9CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIAogcHJpdmF0ZToKLSAgICBTV1NlcnZl
cldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOworICAgIFNXU2VydmVyV29ya2Vy
KFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKICAgICB2b2lkIGNhbGxXaGVuQWN0aXZh
dGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToK
ICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwogICAg
IFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZp
Y2VXb3JrZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZv
OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CmluZGV4IGYzYjc1YTVlYmEzZi4uZDhkOTQzNDA4NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
IE5vdFJlZkNvdW50ZWQgewogICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllcikKICAgICBNYXRjaEFsbCh1aW50NjRfdCBtYXRjaEFsbFJl
cXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCi0gICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5n
IHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpCisgICAgU2V0U2NyaXB0
UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJM
IHNjcmlwdFVSTCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCBzY3JpcHQpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1
Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERp
ZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGFiN2FiYzI1NzY1YS4uMmVhMjg0MDA5
NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBFbmdpbmU6
OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGUKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2Nr
KTsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkocGF0aCwgIioiKSkgewogICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVj
dG9yeShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8p
KQotICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1lKTsK
KyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShmaWxl
bmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTc0OSwxOCArNzQ5LDE4IEBAIHZv
aWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZm9sZGVyUGF0CiAKICAgICAgICAgICAgIC8vIElmIGNhY2hlIHNhbHQgaXMg
aW5pdGlhbGl6ZWQgYW5kIHRoZSBwYXRocyBkbyBub3QgbWF0Y2gsIHNvbWUgY2FjaGUgZmlsZXMg
aGF2ZSBwcm9iYWJseSBiZSByZW1vdmVkIG9yIHBhcnRpYWxseSBjb3JydXB0ZWQuCiAgICAgICAg
ICAgICBBU1NFUlQoIW1fc2FsdCB8fCBmb2xkZXJQYXRoID09IGNhY2hlc1Jvb3RQYXRoKCpmb2xk
ZXJPcmlnaW4pKTsKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25CYWNr
Z3JvdW5kVGhyZWFkKGZvbGRlclBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNh
bGxiYWNrQWdncmVnYXRvcildIHsgfSk7CisgICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVj
dG9yeU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
V1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CiB9
CiAKLXZvaWQgRW5naW5lOjpkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRo
cmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFj
a2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7Ci0gICAg
ICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KHBhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShwYXRoKTsKIAogICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmgKaW5kZXggMTk0NGE1Yzc5MmQ4Li40NDA5ZTdiNDk2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApA
QCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbENhY2hlc0Zyb21E
aXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zv
ck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRU
aHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBj
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgU3RyaW5n
IHJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVl
MTRmMzMuLjdhOTk2MTRmMjMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02Miwy
MyArNjIsNiBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRAogICAgIH0KIH0KIAotdm9pZCBkZWxl
dGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgdHJhdmVy
c2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVu
dHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7Ci0gICAgICAgIHN3aXRjaCAodHlw
ZSkgewotICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5OgotICAgICAgICAgICAg
ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgotICAgICAgICB9Ci0g
ICAgfSk7Ci0gICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Ci19Ci0K
IEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RB
VF9CSVJUSFRJTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IDdhNWY4Y2M0ZmUzOC4uYzBi
NGU4MWI0NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaApAQCAtMzMsOCArMzMsNiBAQCBuYW1l
c3BhY2UgTmV0d29ya0NhY2hlIHsKIGVudW0gY2xhc3MgRGlyZWN0b3J5RW50cnlUeXBlIHsgRGly
ZWN0b3J5LCBGaWxlIH07CiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5
RW50cnlUeXBlKT4mKTsKIAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBT
dHJpbmcmIHBhdGgpOwotCiBzdHJ1Y3QgRmlsZVRpbWVzIHsKICAgICBXYWxsVGltZSBjcmVhdGlv
bjsKICAgICBXYWxsVGltZSBtb2RpZmljYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBl
ZGRjMGJlMjllMGUuLmRiNGMwNTQ5YzZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTE5Myw3ICsxMTk0LDcgQEAgdm9p
ZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucygpCiAgICAgICAgICAgICBhdXRvIG9sZFZlcnNp
b25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwg
c3ViZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJz
aW9uUGF0aC51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkob2xkVmVyc2lvblBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
Tm9uRW1wdHlEaXJlY3Rvcnkob2xkVmVyc2lvblBhdGgpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDI4MGM5ODQzYzY3ZS4uODU2MWU5NGMwOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90
IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051
bGwgPSAhYnVmZmVyOworICAgIGVuY29kZXIgPDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisg
ICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUo
KTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZlclNpemU7CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAg
ICAgICByZXR1cm47CkBAIC0xNDQsMTIgKzE0OSwyNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFy
ZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAK
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25h
bDxib29sPiBpc051bGw7CisgICAgZGVjb2RlciA+PiBpc051bGw7CisgICAgaWYgKCFpc051bGwp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2
NF90IGJ1ZmZlclNpemUgPSAwOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAo
IWJ1ZmZlclNpemUpIHsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhf
dD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
NDJmMzc5YmExYmJmLi5lMTQxYmYzMWQ3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlVwogCiB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmIHNjcmlw
dCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHVybCwgc2NyaXB0LnNjcmlwdCwgc2NyaXB0LnJlc3BvbnNlVVJM
LCBzY3JpcHQubWltZVR5cGUgfSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTZXRTY3Jp
cHRSZXNvdXJjZSB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHNjcmlwdCB9LCAwKTsK
IH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRl
ZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzZjYWYyYWQ0
MzcyLi5lMTY0NjM0YTM4YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCkBAIC0xNTEsNCArMTUxLDI5IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
b3BlbkV4aXN0aW5nRmlsZUFuZEZhaWxJZkZpbGVFeGlzdHMpCiAgICAgRVhQRUNUX0ZBTFNFKEZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSk7CiB9CiAKK1RFU1RfRihGaWxlU3lzdGVt
VGVzdCwgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkpCit7CisgICAgYXV0byBjcmVhdGVUZXN0VGls
ZSA9IFtdKGNvbnN0IFN0cmluZyYgcGF0aCkgeworICAgICAgICBhdXRvIGZpbGVIYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRl
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFu
ZGxlKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIEZpbGVT
eXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgfTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKKyAgICBhdXRvIHRlbXBvcmFyeVRlc3RG
b2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRl
bXBvcmFyeUZpbGUpOworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IHRlbXBvcmFyeVRlc3RGb2xk
ZXIgaXMgJXMiLCB0ZW1wb3JhcnlUZXN0Rm9sZGVyLnV0ZjgoKS5kYXRhKCkpOworCisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Cisg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9s
ZGVyIiB9KSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAgIGNyZWF0
ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlU
ZXN0Rm9sZGVyLCAiZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9s
ZGVyIiwgImZpbGUzLnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVy
IiwgImZpbGU0LnR4dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRl
cikpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRl
c3RGb2xkZXIpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3
YzcuLmU5ZmViODQxZWQ4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTE5NTYsNyArMTk1
Niw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFN1c3BlbmROZXR3b3JrUHJvY2VzcykKICAgICBh
dXRvIHBhdGggPSBzdG9yZS5fY29uZmlndXJhdGlvbi5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeS5wYXRoOwogCiAgICAgTlNVUkwqIGRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNdOwotICAgIE5TVVJMICpzd0RCUGF0aCA9IFtk
aXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMtNS5zcWxpdGUzIl07CisgICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02
LnNxbGl0ZTMiXTsKIAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd0RCUGF0aC5wYXRoXSk7CiAKQEAgLTE5ODMsNyArMTk4
Myw3IEBAIFRFU1QoV2ViS2l0LCBTZXJ2aWNlV29ya2VyRGF0YWJhc2VXaXRoUmVjb3Jkc1RhYmxl
QnV0VW5leHBlY3RlZFNjaGVtYSkKICAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7CiAKICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3
aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07
Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEg
dG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxp
dGUzIl0gZXJyb3I6bmlsXTsKIAogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424411</attachid>
            <date>2021-03-26 15:51:22 -0700</date>
            <delta_ts>2021-03-26 17:09:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210326155121.patch</filename>
            <type>text/plain</type>
            <size>74465</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBlNDRhN2Q5NjEyZmY2YzcyNzc5NjNm
YzNmNWY2M2EyMWQ3NjYyNTAuLjQ5NzEyMDY0MWZhOGI2NjE0YzFhZTBkNGI0ZDI1ZTcyOWMzMjAz
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRk
IGFuIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KCkgb24gYWxsIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCisgICAgICAgIFdlIHByZXZpb3VzbHkgb25s
eSBoYWQgaW1wbGVtZXRhdGlvbnMgZm9yIENvY29hIGFuZCBXaW5kb3dzLgorCiAyMDIxLTAzLTI1
ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRW1iaWdn
ZW4gbWF4aW11bSBIYXNoVGFibGUgc2l6ZSB3aGVuIG5vdCB1c2luZyBBTkdMRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGUxZDNmOGM3M2U1MmEzZWM4MTNmYjNlN2JhYjQzMGJkYmI0NDg3ZGUuLjc2MWJkYjNhYzMx
OWI0Zjg5ZDE3N2E3YmY3ZDMxOGM1ZTNiZmUwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDQg
QEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdv
cmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB3b3VsZCBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRlIGRhdGFi
YXNlLgorICAgICAgICBXaGVuIHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMsIHdlIHdv
dWxkIGxvYWQgYWxsIHRob3NlIHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAgICAgaW50
byBtZW1vcnkuIFRoaXMgd291bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkgaW4gdGhl
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhlIGFw
cHJvYWNoIGlzIHRoaXMgcGF0Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2VwYXJhdGUK
KyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVuLCB3aGVu
IGxvYWRpbmcgdGhlbSwgd2UgY2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBhbmQgZ3Jl
YXRseSByZWR1Y2UgbWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MpIGFs
c28ga2VlcHMgYQorICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2aWNlIHdvcmtlciBz
Y3JpcHRzIGZvciB0aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcuIE1vcmUKKyAgICAg
ICAgd29yayB3aWxsIGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ugc2hvdWxkIGJlIGFi
bGUgdG8gZXh0ZW5kIHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRoZSBzZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRob3NlIHNj
cmlwdHMuIFRoaXMgd291bGQKKyAgICAgICAgcmVkdWNlIG1lbW9yeSB1c2FnZSBvbiB0aGUgV2Vi
Q29udGVudC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3ZWxsLiBJIGFtIGRvaW5nIHRo
aXMKKyAgICAgICAgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNlIHBhdGNoIHNpemUgYW5kIGZh
Y2lsaXRhdGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlcmUgc2hvdWxkIGJl
IG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2VkCisgICAgICAg
IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gc2VydmljZSB3b3JrZXJz
IGFyZSB1c2VkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IFNXU2NyaXB0U3RvcmFn
ZSBjbGFzcyB0byB0aGUgcHJvamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQWdlbnQ6OmdldEluaXRpYWxpemF0aW9uSW5mbyk6CisgICAgICAgIENvbnZlcnQgdGhlIHNj
cmlwdCB0eXBlIGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAqIHdvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9u
IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJz
YSwgaW4gdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0
cmluZ1RvU2NyaXB0QnVmZmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywg
c28gdGhhdCB0aGV5IGNhbiBob2xkCisgICAgICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0g
QWRkIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkgLyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxp
dHkgZnVuY3Rpb25zIHRvCisgICAgICAgICAgY29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVu
IFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9t
IHNjcmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEg
YW5kIGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAg
IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNpZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVh
ZCwgdGhvc2Ugc2NyaXB0cworICAgICAgICBhcmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZp
bGVzeXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFnZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1w
b3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNvZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IElt
cG9ydGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRh
CisgICAgICAgIG1lbWJlcnMgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCwgZXhjZXB0IGZvciB0aGUgYWN0dWFsCisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5v
dyBzYXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAg
ICAgIGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ug
d2Ugbm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAgICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJj
ZXMgaW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJh
dGVseSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0
U291cmNlcyk6CisgICAgICAgIFV0aWxpdHkgZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAg
b2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRv
IGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0
aG91dCB0aGUgc2NyaXB0CisgICAgICAgIHNvdXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNR
TGl0ZSBkYXRhYmFzZS4KKworICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2Vz
RnJvbURpc2spOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hN
YXAgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBm
cm9tIGEgSGFzTWFwIG9mIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhl
IFNRTGl0ZURhdGFiYXNlLiBUaGUKKyAgICAgICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUg
ZmV0Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAg
ICAgICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNr
Z3JvdW5kIHF1ZXVlIGZvciB0aHJlYWQtc2FmZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAg
IFJldHVybnMgdGhlIHBhdGggb24gdGhlIGZpbGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIg
c2NyaXB0cyBhcmUgc3RvcmVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRh
YmFzZTo6c2NyaXB0U3RvcmFnZSk6CisgICAgICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkg
YSBTV1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVybiBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFy
IGFsbCB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRo
ZSBkYXRhYmFzZSwKKyAgICAgICAgbm93IHRoYXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHku
CisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2Vz
KToKKyAgICAgICAgLSBTdG9wIHN0b3JpbmcgdGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxp
dGUgZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAg
ZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0g
SW1wcm92ZSBsb2dnaW5nCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRoZSBzY3JpcHQgc291cmNlcyBmcm9t
IHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0aGF0IHRoZXkgYXJlIG5vIGxvbmdl
cgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRhdGFiYXNlLgorICAgICAgICAtIElt
cHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8g
ZGVhbCB3aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29y
a2VyIHNjcmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4g
V2hlbgorICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEg
U2hhcmVkQnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEgd2hlbmV2
ZXIgcG9zc2libGUuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAg
ICBDb252ZXJ0IHNjcmlwdCBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAg
IENvbnZlcnQgc2NyaXB0IGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0
UmVzb3VyY2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgIFRha2UgaW4gYSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0IGZvciBjb252ZW5pZW5jZSwgaW5zdGVhZCBvZiB0YWtpbmcK
KyAgICAgICAgYWxsIGl0cyBkYXRhIG1lbWJlcnMgYXMgc2VwYXJhdGUgcGFyYW1ldGVycy4KKwor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgVXNlIFNoYXJlZEJ1
ZmZlciB0eXBlIGZvciBzY3JpcHQgaW5zdGVhZCBvZiBTdHJpbmcgdHlwZSwgc28gdGhhdCB3ZSBj
YW4gaG9sZCBvbiB0aGUKKyAgICAgICAgbW1hcCdkIGRhdGEgYW5kIHJlZHVjZSBtZW1vcnkgdXNh
Z2UuCisKIDIwMjEtMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRyZXNzIHNvbWUgYWxpZ25tZW50IGlzc3VlcyBmb3VuZCBieSBVQlNhbiBpbiBjb250
ZW50ZXh0ZW5zaW9ucyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYyOTRjNmIyZjhiNmIwZjkyNGIyNjM4NTc5
ZThmZGNlYzY0MWM3ZGUuLjFhYjZlYjNmYjQ4ZWY5Y2NmODI5ZmQ0ZDAwMGU5OWI0OGNhYzY1MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28g
bXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2Mzcw
OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjoKKyAgICAgICAgUGFzcyBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgc3RydWN0IGluIHRoZSBTZXRTY3JpcHRSZXNvdXJjZSBJUEMKKyAgICAg
ICAgZm9yIGNvbnZlbmllbmNlLiBXZSB1c2VkIHRvIHBhc3MgdGhlIEltcG9ydGVkU2NyaXB0IGRh
dGEgbWVtYmVycyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnlPbkJhY2tncm91bmRUaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
dG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucyk6CisgICAgICAgIERyb3AgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoKSBpbXBsZW1lbnRhdGlvbiBhbmQgdXNlIHRoZSBleGlzdGluZworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIGluIHd0ZiBpbnN0ZWFkLgor
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIFVwZGF0ZSBTaGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8g
ZGlzdGluZ3Vpc2ggYSBudWxsIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25l
LiBXZSBub3cgdXNlIFNoYXJlZEJ1ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQg
c291cmNlcworICAgICAgICBhbmQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNl
cyB0byBiZSBlbXB0eSAoYW5kIHRoZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0
ZXN0cykuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291
cmNlIElQQworICAgICAgICBmb3IgY29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1w
b3J0ZWRTY3JpcHQgZGF0YSBtZW1iZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMjUgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERhdGUgcGlj
a2VyIHZpZXcganVtcHMgdG8gY2VudGVyIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gTW9iaWxlU2Fm
YXJpIGFuZCBhbm90aGVyIGFwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmZWJlNDVmZThiNWU4
ZmYxYmZmMWU1MzY4ZWE1MTIxMzZhMWZmMGJlLi4zODY4Yzg4MjdmMTc1OWQwZGI2MzMwNzAyZWIw
MzRhYWRiYTc1MDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNDA4LDUgKzQwOCwxOSBAQCBT
dHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmKQogfQogI2VuZGlm
CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFPUyhXSU5ET1dTKQorYm9vbCBkZWxldGVOb25F
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBlbnRyaWVzID0g
bGlzdERpcmVjdG9yeShwYXRoLCAiKiJfcyk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJp
ZXMpIHsKKyAgICAgICAgaWYgKGZpbGVJc0RpcmVjdG9yeShlbnRyeSwgU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQorICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoZW50
cnkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGVGaWxlKGVudHJ5KTsKKyAgICB9
CisgICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdmNmI5YzMyMTQ3MjM4NGVmNGM0Li45MDgx
NzU1OGQzMzkwMTRjMThiMGI5MjI1NDU5OTAzMGJkOTcwNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0xOTAsMTQgKzE5MCwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVuYW1lRm9y
RGlzcGxheShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICNl
bmRpZgogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKTsKKwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25z
dCBTdHJpbmcmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlN
YXBGb3JQYXRoKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzVhMmYzMzVkZGE1
NTczMjg0M2RhYjAwYTYzMTg5ODRiODQ0YTZjLi5lYWFjNDQ0OGE5NzA0M2I1ZWQ4ZTA0MjlmMTU5
ZjA3YzFmMTI1MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4MSw2ICsyNjgxLDcgQEAgd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGYzNjg1Zjk1NmI2ZWIwMjYxZjQ5ZDUyMjQ1MWJjZDY5ODg3
M2YwZDUuLjQ3ZGEwM2Q0ODM3Y2JmOWQyODg0ZmQyMmVhNDEwMTdmNGEzZDc3ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NjIsNiArMTI2Miw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAq
LzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYy
NjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkw
QjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMw
N0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyog
SlNVSUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODIyNyw2ICs4MjI4LDggQEAKIAkJNDYwQ0JGMzMx
RDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNE
T01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBE
MTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3
M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcx
QyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzAzLDYgKzIwNzA2LDggQEAKIAkJCQk1MUI5MTQw
QjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVC
OTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1Qjcx
RkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1
OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTI3OCw2ICszNTI4Myw3IEBACiAJCQkJNDY2NThE
QzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEg
LyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhF
NSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2
ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4
MjUzNjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNl
cnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAu
c2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCku
c2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENv
bnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggNGQ0
NzRmMTZlNTg4ZGQwMGZiMzlkNTYwZjY0MTNjNjJhOTM4NmVmMi4uYTRiZTEwMDQwYmUyODU5MjEw
YjcyY2VkMjMxODJhZjA2NDdhNzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlRleHRS
ZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNjAs
NyArNjEsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKGlzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlw
dFJlc291cmNlKHVybCkpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRSZXNv
dXJjZS0+c2NyaXB0KTsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRCdWZmZXJU
b1N0cmluZygqc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCkpOwogICAgICAgICAgICAgbV9yZXNwb25z
ZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVzcG9u
c2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CkBAIC0xMDEsNyArMTAyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRN
SU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlw
dCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVS
TCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzdHJpbmdUb1NjcmlwdEJ1
ZmZlcihzY3JpcHQoKSksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAg
ICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cAppbmRleCAxNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5OWI1ZWRmLi4xZWE1OTAx
YmQ5ZDJmZDljNzkzYjJkNWFlMGUyNzBlODNjOGU3MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JEYXRhSWRlbnRp
ZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAorICAg
ICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsNiArNDgsMjAgQEAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7ICsraXQpCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEo
KSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NWI2OWVlMTY1ZWU0ODBhOTYxYjEw
ZjFkYmRjN2UuLjg0NTQxZDQ2MmE4YjcwYTRiMzNkM2EyMzY3MGFiYjI0NjBlNTkyYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzksMTMgKzQwLDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1
ZmZlciYpOworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CisKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIHN0cnVjdCBJ
bXBvcnRlZFNjcmlwdCB7Ci0gICAgICAgIFN0cmluZyBzY3JpcHQ7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICAgICAgVVJMIHJlc3BvbnNlVVJMOwogICAgICAgICBT
dHJpbmcgbWltZVR5cGU7CiAKLSAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4geyBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xh
dGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEltcG9ydGVk
U2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5jb3B5KCksIHJl
c3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CiAK
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICAgICAgewpAQCAtNTQsNyArNTgsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNjcmlwdDsKKyAgICAgICAgICAg
IE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CiAgICAgICAgICAgICBkZWNv
ZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MCw3ICs4NCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEgewogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOwotICAgIFN0cmluZyBzY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
c2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAg
ICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CkBAIC0xMjAsOCArMTI0LDkgQEAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWMKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgU3RyaW5nIHNjcmlwdDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHNjcmlwdCkpCisgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNjcmlw
dDsKKyAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0xNTcsNyArMTYyLDcgQEAgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAogICAg
ICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAogICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29y
a2VySWRlbnRpZmllciksCi0gICAgICAgIFdURk1vdmUoc2NyaXB0KSwKKyAgICAgICAgV1RGTW92
ZSgqc2NyaXB0KSwKICAgICAgICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwKICAgICAgICAg
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpLAogICAgICAgICBXVEZNb3ZlKHJlZmVycmVy
UG9saWN5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZDcwZjRmNWU2OTNmMjc3
ZjY1NTgzZTdhNGUwNzYxNDUzYzU0ZWZhZC4uYTY4NGM3MjBmNjgzZjNkMTBmM2EwOWQ0MjUyNzRl
NmVlYmUyNjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVz
JiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJE
ZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0g
ICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZp
Y2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwg
TW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RD
cmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0YS5zY3JpcHQsIGxvYWRlclBy
b3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVk
KCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXku
dG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKKyAg
ICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vydmlj
ZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBN
b25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENy
ZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBzY3JpcHRCdWZmZXJUb1N0cmluZyhk
YXRhLnNjcmlwdCksIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBk
YXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwg
aWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNy
ZWF0ZUFsbEVuYWJsZWQoKSkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVkQ29weSgpKQogICAg
ICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hh
cmVkKCkpCiAgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpLT5zaG91bGRVc2VTaG9ydFRpbWVvdXQoKSA/IGhlYXJ0QmVhdFRp
bWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKaW5kZXggY2VlOGNjOGMwOGJlMGIxYjdmNTQxMTBhNmNiMzE3NDZlOTg5NGIxNC4uZDVmMTFk
MzMxYWZlZGI3MTlhZGI2ZjgwMTI2NTEyMDJlYjFkZTgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRh
YmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rp
b24uaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTV1NlcnZlci5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC00OSw3ICs1MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1Oworc3RhdGljIGNvbnN0IHVpbnQ2
NF90IHNjaGVtYVZlcnNpb24gPSA2OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJs
ZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYxLDcgKzYyLDYgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5h
bWUpCiAgICAgICAgICIsIGxhc3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCIKICAgICAgICAgIiwgd29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCiAgICAgICAgICIsIGNvbnRlbnRTZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCIKQEAgLTEwNyw2ICsxMDcsNTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNs
ZWFuT2xkRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgICAg
IFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGRhdGFiYXNlRmlsZW5hbWVGcm9t
VmVyc2lvbih2ZXJzaW9uKSkpOwogfQogCitzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVz
IHsKKyAgICBVUkwgcmVzcG9uc2VVUkw7CisgICAgU3RyaW5nIG1pbWVUeXBlOworCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7CisgICAg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVk
U2NyaXB0QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBPcHRpb25hbDxVUkw+IHJlc3BvbnNlVVJMOworICAgICAgICBkZWNvZGVyID4+IHJlc3BvbnNl
VVJMOworICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAgICAgICBk
ZWNvZGVyID4+IG1pbWVUeXBlOworICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdU
Rk1vdmUoKnJlc3BvbnNlVVJMKSwKKyAgICAgICAgICAgIFdURk1vdmUoKm1pbWVUeXBlKQorICAg
ICAgICB9fTsKKyAgICB9Cit9OworCitzdGF0aWMgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0
QXR0cmlidXRlcz4gc3RyaXBTY3JpcHRTb3VyY2VzKGNvbnN0IEhhc2hNYXA8VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYgbWFwKQoreworICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IG1hcFdpdGhvdXRTY3JpcHRzOworICAgIGZv
ciAoYXV0byYgcGFpciA6IG1hcCkKKyAgICAgICAgbWFwV2l0aG91dFNjcmlwdHMuYWRkKHBhaXIu
a2V5LCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgeyBwYWlyLnZhbHVlLnJlc3BvbnNlVVJMLCBw
YWlyLnZhbHVlLm1pbWVUeXBlIH0pOworICAgIHJldHVybiBtYXBXaXRob3V0U2NyaXB0czsKK30K
Kworc3RhdGljIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhTV1NjcmlwdFN0b3JhZ2UmIHNj
cmlwdFN0b3JhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4mJiBtYXApCit7
CisgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+IGltcG9ydGVkU2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApIHsKKyAgICAg
ICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UucmV0cmlldmUocmVnaXN0cmF0
aW9uS2V5LCBwYWlyLmtleSk7CisgICAgICAgIGlmICghaW1wb3J0ZWRTY3JpcHQpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRh
YmFzZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2s6IEZhaWxlZCB0byByZXRyaWV2ZSBp
bXBvcnRlZCBzY3JpcHQgZm9yICVzIGZyb20gZGlzayIsIHBhaXIua2V5LnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaW1w
b3J0ZWRTY3JpcHRzLmFkZChwYWlyLmtleSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdCB7IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpLCBXVEZNb3ZlKHBhaXIudmFsdWUu
cmVzcG9uc2VVUkwpLCBXVEZNb3ZlKHBhaXIudmFsdWUubWltZVR5cGUpIH0pOworICAgIH0KKyAg
ICByZXR1cm4gaW1wb3J0ZWRTY3JpcHRzOworfQorCiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2UoUmVnaXN0cmF0aW9uU3RvcmUmIHN0b3JlLCBTdHJpbmcmJiBkYXRh
YmFzZURpcmVjdG9yeSkKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTZXJ2
aWNlV29ya2VyIEkvTyBUaHJlYWQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCkpCiAgICAgLCBt
X3N0b3JlKG1ha2VXZWFrUHRyKHN0b3JlKSkKQEAgLTEyNCw5ICsxNzQsOSBAQCBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFiYXNlIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBv
biB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgaWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1f
d29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpXSB7IH0p
OworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlwdFN0b3JhZ2UgbmVlZCB0byBiZSBkZXN0cm95
ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgIGlmIChtX2RhdGFiYXNlIHx8IG1fc2Ny
aXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdU
Rk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3JhZ2UgPSBXVEZNb3ZlKG1fc2NyaXB0U3RvcmFn
ZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnBvc3RUYXNrVG9Xb3Jr
UXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCkBAIC0xODUsNiArMjM1LDE5IEBAIGJvb2wg
UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1
bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU3RyaW5nIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7
ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dTY3JpcHRTdG9yYWdlJiBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG1h
a2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkpOworICAg
IHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwpAQCAtMzMzLDggKzM5NiwxMCBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVh
ckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogewogICAg
IHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxs
cHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlRmlsZVBhdGgpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShzY3JpcHRTdG9yYWdlRGly
ZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNl
RGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMzUyLDEyICs0
MTcsMTMgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBW
ZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAg
IFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZB
TFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOworICAgIFNR
TGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVF
UyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgIGlmIChzcWwu
cHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2
aWNlV29ya2VyLCAiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJlZ2lzdHJh
dGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgYXV0byYgc2NyaXB0U3RvcmFnZSA9IHRoaXMtPnNjcmlwdFN0b3Jh
Z2UoKTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IHJlbW92ZWRSZWdpc3RyYXRpb25z
KSB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJERUxFVEUgRlJP
TSBSZWNvcmRzIFdIRVJFIGtleSA9ID8iKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCkBAIC0zNjYsMTQgKzQzMiwxNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+Jgog
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBy
ZW1vdmUgcmVnaXN0cmF0aW9uIGRhdGEgZnJvbSByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgc2NyaXB0U3RvcmFnZS5j
bGVhcihyZWdpc3RyYXRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZGF0YSA6IHVwZGF0
ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgY3Nw
RW5jb2RlcjsKICAgICAgICAgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3kuZW5jb2RlKGNzcEVu
Y29kZXIpOwogCisgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGVuY29kZSB0aGUgc2NyaXB0
IHNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlLiBUaGV5IHdpbGwgYmUgc3RvcmVkIHNlcGFyYXRlbHkg
aW4gdGhlIFNjcmlwdFN0b3JhZ2UuCisgICAgICAgIC8vIEFzIGEgcmVzdWx0LCB3ZSBuZWVkIHRv
IHN0cmlwIHRoZSBzY3JpcHQgc291cmNlcyBoZXJlIGJlZm9yZSBlbmNvZGluZyB0aGUgc2NyaXB0
UmVzb3VyY2VNYXAuCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgc2NyaXB0UmVz
b3VyY2VNYXBFbmNvZGVyOwotICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIgPDwgZGF0
YS5zY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8
IHN0cmlwU2NyaXB0U291cmNlcyhkYXRhLnNjcmlwdFJlc291cmNlTWFwKTsKIAogICAgICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNlcnRpZmljYXRlSW5mb0VuY29kZXI7CiAgICAgICAg
IGNlcnRpZmljYXRlSW5mb0VuY29kZXIgPDwgZGF0YS5jZXJ0aWZpY2F0ZUluZm87CkBAIC0zODUs
MjEgKzQ1NCwyNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgfHwgc3Fs
LmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5iaW5k
VGV4dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZp
YUNhY2hlKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoNywgZGF0
YS5zY3JpcHRVUkwuc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJp
bmRUZXh0KDgsIGRhdGEuc2NyaXB0KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5i
aW5kVGV4dCg5LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTAsIGNzcEVuY29kZXIuYnVmZmVyKCks
IGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNx
bC5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIo
KSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTMsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVm
ZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53
b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoOSwg
Y3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9P
SworICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDEwLCBkYXRhLnJlZmVycmVyUG9saWN5KSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMSwgc2NyaXB0UmVzb3Vy
Y2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMiwgY2VydGlm
aWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXJT
aXplKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZh
aWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFNh
dmUgc2NyaXB0cyB0byBkaXNrLgorICAgICAgICBib29sIHN1Y2Nlc3MgPSBzY3JpcHRTdG9yYWdl
LnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKKyAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgc3Vj
Y2VzcyA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtl
eSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vz
cywgc3VjY2Vzcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQo
KTsKLQotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lz
dHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1
IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVt
b3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVk
L3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVw
ZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQ4Miw3IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRh
YmFzZSwgIlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJs
ZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5MCw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBm
b3IgKDsgcmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0
YWJhc2VLZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9
IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3Bl
UGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs0OTksNjggQEAgU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0
VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5E
b3VibGUoNCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVW
aWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0g
VVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0
ID0gc3FsLmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmlu
Z1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2Vy
VHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7Cisg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YSk7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250
ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5z
aXplKCkpOwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0
eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAg
ICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAg
T3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFw
OwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBE
ZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0
YS5zaXplKCkpOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewot
ICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFw
OwotICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlv
bmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJj
ZU1hcFdpdGhvdXRTY3JpcHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVy
ID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJl
Y29yZHM6IEZhaWxlZCB0byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRT
dG9yYWdlKCksICprZXksIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMp
KTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9E
YXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUlu
Zm9EYXRhKTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNh
dGVJbmZvRGF0YSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJ
bmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0
YS5zaXplKCkpOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRl
SW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
Y2VydGlmaWNhdGVJbmZvIik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAg
ICAgIC8vIElmIGFueSBwYXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0
aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4g
ZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkKKyAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdp
biB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5
cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBG
YWlsZWQgdG8gZGVjb2RlIHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3Jh
Z2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsK
KyAgICAgICAgaWYgKCFzY3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6U2NyaXB0U3RvcmFnZTo6c3RvcmU6
IEZhaWxlZCB0byByZXRyaWV2ZSBtYWluIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgc2NyaXB0
VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KIAogICAgICAgICBhdXRvIHdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVy
ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAg
ICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklk
ZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3Jr
ZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0
aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBs
YXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShz
ZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3
b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5m
byksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xp
Y3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3Jp
cHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3Jr
ZXJJZGVudGlmaWVyLCBzY3JpcHQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNh
dGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJl
clBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUo
c2NyaXB0UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xh
dGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVn
aXN0cmF0aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmgKaW5kZXggZDZhZWQ2YjQwZTYwNDYyNmUzYTFmZmJjMzVlYmE0MzEyZThlYzdkYS4uNTcw
NzUyNjY5NjIxZGIzNDI4NzdhZjM0YzcxZTQ1Yjk4YjkwYTE5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
Z2lzdHJhdGlvblN0b3JlOwogY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTV1NjcmlwdFN0
b3JhZ2U7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CkBAIC03Miw2ICs3Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKTsKICAgICBib29sIGRvUHVzaENoYW5n
ZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mLCBjb25zdCBWZWN0b3I8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4mKTsKICAgICB2b2lkIGRvQ2xlYXJPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBTV1NjcmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3Jh
Z2UoKTsKKyAgICBTdHJpbmcgc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAg
Ly8gUmVwbGllcyB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25U
b1N0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKQEAgLTgwLDYgKzgzLDcgQEAgcHJp
dmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFdlYWtQdHI8UmVn
aXN0cmF0aW9uU3RvcmU+IG1fc3RvcmU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNXU2NyaXB0U3Rv
cmFnZT4gbV9zY3JpcHRTdG9yYWdlOwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5Owog
ICAgIFN0cmluZyBtX2RhdGFiYXNlRmlsZVBhdGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0
ZURhdGFiYXNlPiBtX2RhdGFiYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjODhj
M2M4MGRhZjJhYzFkM2Q5MzNjNDNjZDhmMGZmMzEwNmM5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
QEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1NIQTEuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGhhc2hVUkwoY29uc3QgVVJM
JiB1cmwpCit7CisgICAgU0hBMSBzaGExOworICAgIHNoYTEuYWRkQnl0ZXModXJsLnN0cmluZygp
LnV0ZjgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc2hhMS5jb21wdXRlSGV4RGln
ZXN0KCkpOworfQorCitTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSkKKyAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKK3sKKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0
cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lz
dHJhdGlvbktleSkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhtX2RpcmVjdG9yeSwgeyByZWdpc3RyYXRpb25LZXkudG9wT3JpZ2luKCku
ZGF0YWJhc2VJZGVudGlmaWVyKCksIGhhc2hVUkwocmVnaXN0cmF0aW9uS2V5LnNjb3BlKCkpIH0p
OworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRV
UkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KSwgaGFzaFVSTChzY3Jp
cHRVUkwpKTsKK30KKworYm9vbCBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0aChyZWdpc3Ry
YXRpb25LZXksIHNjcmlwdFVSTCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOworCisgICAgYXV0byBmaWxl
SGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZp
bGVIYW5kbGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJT
Y3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbHVyZSB0byBzdG9yZSAlcywgaW52YWxpZCBoYW5kbGUi
LCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZpbGVIYW5kbGUsIDApOworICAgIGZv
ciAoYXV0byBpdCA9IHNjcmlwdC5iZWdpbigpOyBpdCAhPSBzY3JpcHQuZW5kKCk7ICsraXQpCisg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIGl0LT5zZWdtZW50LT5k
YXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwpCit7CisgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3Jp
cHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKKworICAgIC8vIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKCkgdXNlcyBtbWFwKCkgd2hlbmV2ZXIgcG9zc2li
bGUgdG8gc2F2ZSBtZW1vcnkuCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgpOworfQorCit2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xl
YXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQor
eworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+cmVnaXN0cmF0aW9uRGly
ZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7CisgICAgYm9vbCByZXN1bHQgPSBGaWxlU3lzdGVtOjpk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdpc3RyYXRpb25EaXJlY3RvcnkpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6
OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJlZ2lzdHJhdGlvbiAlcyIsIHJl
Z2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzMjdkMWNjNzQzODYxOGE1NDM4Y2RhNGM3MmFlNDA5YzFi
M2M2MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIFNXU2NyaXB0U3Rv
cmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKKworICAgIGJvb2wg
c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0
IFVSTCYgc2NyaXB0VVJMKTsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmKTsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgcmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSBjb25zdDsKKyAgICBTdHJp
bmcgc2NyaXB0UGF0aChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwpIGNvbnN0OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcAppbmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5N2Q2NGYxZDY1ODY5NGIzLi40MjI5
Y2I3NWIyNTBiNzEzMTQ4MzE4N2IxMWE2ZmI1YmQ4MWZjZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjMzLDcgKzYz
Myw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdv
cmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlm
aWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0
eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5k
YXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRp
ZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0
eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFs
bENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVy
LCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSwgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3Zl
KHNjcmlwdFJlc291cmNlTWFwKSB9KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENv
bnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcAppbmRleCA4MDJhNDgwMTE1MWE3MjhmYmM1YTJhNjkxMjRkYjk2M2M3NzJjYjBhLi41Y2Ey
NTI2OTExNDUzZGIwOGYxZjhmMjgzMmRiYzQwNDVlNjRhYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNo
RmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bAogICAgIC8vIElm
IG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHVybCBlcXVh
bHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRlIGZyYWdtZW50cwogICAgIC8vIGZs
YWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMgYSBieXRlLWZvci1ieXRlIG1hdGNo
IHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNlJ3Mgc291cmNlCiAgICAgLy8gdGV4
dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3
ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBu
ZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRp
ZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKKyAgICBpZiAo
bmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29y
a2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkg
PT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBzY3JpcHRCdWZmZXJUb1N0cmlu
ZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRpZmljYXRlc01hdGNoKHJlc3VsdC5j
ZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJbmZvKCkpKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnNj
cmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNhdGUgYXJlIG1hdGNoaW5nIGZv
ciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9uIGNsYXNzaWMgc2NyaXB0cywg
Y2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtbRUNNQVNjcmlwdENvZGVdXS4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDJiOGZmNjg1
ZTA0OTc5ZmNkYzczZTczMjBkZjNmNGRhNjRjNzYyZGYuLjEyMDA1MTY5OGJmOTM5ODE4ZTRkNDNl
ODVjNjk1NzMwMGJhN2RjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29yCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVz
cG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNX
U2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2Ny
aXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUobWltZVR5cGUpIH0pOwor
ICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgV1RG
TW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRp
ZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNDY1OWY5ZjlmYTZjNmJh
YThkZTk2OGQzOTE1ZmUzM2M0ZTMxMjY2OC4uOWJlMzQ0NDkxZjA2MTNmYWUxNDBlNzk4NTFiNzEw
YTNiMzJiMmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRC
eUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0LCBVUkwmJiByZXNw
b25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4
IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlhNjY3MDUuLmQ1OTdlOGU0MmM5NDFl
ZjhmNGFhNjFkNGMyZDlhY2FmNjQ1ZjllMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJ
ZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1
ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRlbnRTZWN1cml0eVBvbGljeQotU1dTZXJ2
ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK1NXU2VydmVyV29ya2Vy
OjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYg
cmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQs
IGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgOiBtX3NlcnZlcihtYWtlV2Vh
a1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0aW9uLmtleSgp
KQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQdHIocmVnaXN0cmF0aW9uKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaAppbmRleCAzNzhmYmE2NTdlOGJiZjQ4NDFlNTZjYmY4NjU2MWY4ZWNjMzExMDIwLi5kMjdm
NzNmMjFmM2YyNGI3MjI3MDlmYWZhYmI2ZDRjMmNhNTI3ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9z
ZXJ2ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAg
IGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsg
fQotICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0K
KyAgICBTaGFyZWRCdWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAg
ICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVy
biBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS50eXBlOyB9CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIAogcHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtl
cihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJU
eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2Vy
dmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKICAgICB2b2lkIGNhbGxXaGVuQWN0aXZhdGVkSGFu
ZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwogICAgIFdlYWtQ
dHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3Jr
ZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRlbnRTZWN1cml0eVBv
bGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IGYzYjc1YTVlYmEzZmQ3M2Y1MjY4NDQ2MTIzOTc4NWU1NDQ2OTM3YTIuLmQ4ZDk0MzQwODQ1ZGQ4
NWIzNmRjODkyOWFiMWU2MjcxODg5MzI4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyAr
MzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVm
Q291bnRlZCB7CiAgICAgRmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKQogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+IHJlc3VsdCkgQXN5bmMKLSAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0
LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSkKKyAgICBTZXRTY3JpcHRSZXNvdXJj
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0
VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNj
cmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhl
YXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYWI3YWJjMjU3NjVhZDQyOGYyYTE1N2M2MTc5NGQy
MjU4NjE3YmI0Ny4uMmVhMjg0MDA5NjQ0OTBmZGJiZTU3MGEwOGIyZmMwYzI4YTM3MjFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcApAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgRW5naW5lOjpjbGVhckFs
bENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7CiAgICAg
ICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgs
ICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmls
ZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAg
ICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxlbmFtZSk7CisgICAgICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoZmlsZW5hbWUpOwog
ICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03NDksMTggKzc0OSwxOCBAQCB2b2lkIEVuZ2lu
ZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAvLyBJZiBjYWNoZSBzYWx0IGlzIGluaXRpYWxp
emVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNoLCBzb21lIGNhY2hlIGZpbGVzIGhhdmUgcHJv
YmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkgY29ycnVwdGVkLgogICAgICAgICAgICAgQVNT
RVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBjYWNoZXNSb290UGF0aCgqZm9sZGVyT3JpZ2lu
KSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRo
cmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0Fn
Z3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJh
Y2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUo
Y2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lk
IEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRU
aHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOwotICAgICAgICBkZWxl
dGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
Tm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmlu
ZGV4IDE5NDRhNWM3OTJkOGQ3OTllMjlkYWJjODQ2NjY3YjY2ODYyYmI3ZjkuLjQ0MDllN2I0OTZh
YjhjZjY0NmM5YTBmZmFlZGY1NzM0YzBmZjFlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtMTEwLDcg
KzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBw
YXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgU3RyaW5nIHJlcHJlc2Vu
dGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzNkZTA0
MmNkZjQ0YjBmYmE0MjNjYzlkZDdhZmM1Li43YTk5NjE0ZjIzMzViMTUwYzljYWIyMjJjOTM1ZDBi
YmVmNjljODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTYyLDIzICs2Miw2IEBA
IHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiAgICAgfQogfQogCi12b2lkIGRlbGV0ZURpcmVjdG9y
eVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICB0cmF2ZXJzZURpcmVjdG9y
eShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5
cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBkZWxldGVEaXJl
Y3RvcnlSZWN1cnNpdmVseShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCi0gICAgICAgIH0KLSAgICB9KTsKLSAg
ICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQogRmlsZVRpbWVz
IGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElN
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2E1ZjhjYzRmZTM4YTk1NjFjZTFjOGI2MWMx
MGM3NDc5Y2E4NzQyZi4uYzBiNGU4MWI0NzM3NWEwN2ZmOTliZWI0MjEwZGEwMTU4MjJjNzM1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdv
cmtDYWNoZSB7CiBlbnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmls
ZSB9Owogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+
Jik7CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRo
KTsKLQogc3RydWN0IEZpbGVUaW1lcyB7CiAgICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2Fs
bFRpbWUgbW9kaWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBl
MmM2ZDIwMjVhOTZiMjVlYzFlNTZjNDhhZjhkNi4uZGI0YzA1NDljNmJiZWI4MDNiNjZmMGUzMTQ1
MTliZTU4MjkyNWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5j
bHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTE5Myw3ICsxMTk0LDcgQEAgdm9pZCBTdG9yYWdlOjpk
ZWxldGVPbGRWZXJzaW9ucygpCiAgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFtZSk7
CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vzcykg
ZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9uUGF0aC51dGY4
KCkuZGF0YSgpKTsKIAotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkob2xk
VmVyc2lvblBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3Rvcnkob2xkVmVyc2lvblBhdGgpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDI4MGM5ODQz
YzY3ZTlkNTg1YTAzODU3NDg1M2IyOTA2YTMzMTA5YmEuLjg1NjFlOTRjMDlhMWE5YjQ5YTBmMGIy
ZjgwMmNhNjk4NmNjZmE4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMTIyLDcgKzEyMiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7
CisgICAgZW5jb2RlciA8PCBpc051bGw7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKICAgICBpZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0NCwxMiArMTQ5LDI0IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIAogc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogeworICAgIE9wdGlvbmFsPGJvb2w+IGlzTnVs
bDsKKyAgICBkZWNvZGVyID4+IGlzTnVsbDsKKyAgICBpZiAoIWlzTnVsbCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCppc051bGwpIHsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdWludDY0X3QgYnVmZmVyU2l6
ZSA9IDA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKCFidWZmZXJTaXplKQorICAgIGlmICghYnVmZmVyU2l6ZSkg
eworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBpZiAo
IWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXpl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA0MmYzNzliYTFiYmZl
MGQ2Y2FjZGQ5OTRjZDBkOWZhODA4NWI1MmNlLi5lMTQxYmYzMWQ3Y2Q3Y2NhNTJmNDA0YWRmZWJj
NzRhN2IxMTZiMWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0y
OTAsNyArMjkwLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2tpcFdh
aXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVcKIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTZXRTY3JpcHRSZXNvdXJjZSB7IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCB1cmwsIHNjcmlwdC5zY3JpcHQsIHNjcmlwdC5yZXNwb25zZVVSTCwgc2NyaXB0Lm1pbWVU
eXBlIH0sIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQgfSwgMCk7CiB9CiAKIHZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmY3N2Y3MGRmZGU4NTU4M2UzYmUxYWZh
NTQzMTM5MjgxYmZiOGQ5My4uNDE0ZDQyMzRkZWZlZTg2NWJhNmFlZWE3Yjg0ZGVhYzk3M2I0ZTM3
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIxLTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGlu
IHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzgwOAorICAgICAgICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UgZm9yIEZpbGVTeXN0ZW06OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KCkuIEl0IGlzIG5vdCBhIG5ldyBBUEkgYnV0IGl0CisgICAgICAgIGhh
ZCBubyB0ZXN0cywgaXQgdXNlZCBtb3JlIGluIHRoaXMgcGF0Y2ggYW5kIHdlIG5vdyBoYXZlIGFu
IGltcGxlbWVudGF0aW9uIG9uIGFsbCBzdXBwb3J0ZWQKKyAgICAgICAgcGxhdGZvcm1zLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW06CisgICAgICAgIFR3ZWFrIHNlcnZpY2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQgdGhleSBl
eHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2UgaW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisgICAgICAg
IHNpbmNlIEkgdXBkYXRlZCB0aGUgZGF0YWJhc2Ugc2NoZW1lIGFuZCBidW1wZWQgdGhlIHZlcnNp
b24uCisKIDIwMjEtMDMtMjUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUENNOiBSZW5hbWUgYXR0cmlidXRlT24gdG8gYXR0cmlidXRpb25EZXN0aW5hdGlv
biBhbmQgY2hhbmdlIHRoZSBJREwgZGF0YSB0eXBlIG9mIGF0dHJpYnV0aW9uU291cmNlSWQgdG8g
dW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcAppbmRleCA3NmNhZjJhZDQzNzI2NjNkMmJlMzExYmNmYjYzYTA0ZDBjMGQwMWY2Li44ZjY1
MWQzZWFlMzQzMjk3NTFhYzM2MWRkN2UwNjRjYjYzN2UzNzUyIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMTUxLDQgKzE1MSwyOSBAQCBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRGYWlsSWZGaWxlRXhpc3RzKQog
ICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpOwogfQog
CitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KQoreworICAg
IGF1dG8gY3JlYXRlVGVzdFRpbGUgPSBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAg
YXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERh
dGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIH07
CisKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKKyAg
ICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGUpOworCisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiB9KSkpOwor
ICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAi
ZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGUz
LnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGU0LnR4
dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3YzczYTg0MjJhNGM0
ZThmZjdlNjEwNWU5ZTg4MGRmLi5lOWZlYjg0MWVkOGU3ZmY4ZDQxNTVlMDE2NTUwNjRmODYxMTk5
MjcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZXNzKQogICAgIGF1dG8gcGF0aCA9IHN0
b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LnBh
dGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRo
IGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNx
bGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdOwog
CiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgVEVTVChX
ZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVk
U2NoZW1hKQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlh
dGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRo
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
LTUuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXSBlcnJvcjpu
aWxdOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424421</attachid>
            <date>2021-03-26 17:09:48 -0700</date>
            <delta_ts>2021-03-26 19:13:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210326170947.patch</filename>
            <type>text/plain</type>
            <size>76987</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBlNDRhN2Q5NjEyZmY2YzcyNzc5NjNm
YzNmNWY2M2EyMWQ3NjYyNTAuLjQ5NzEyMDY0MWZhOGI2NjE0YzFhZTBkNGI0ZDI1ZTcyOWMzMjAz
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRk
IGFuIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KCkgb24gYWxsIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCisgICAgICAgIFdlIHByZXZpb3VzbHkgb25s
eSBoYWQgaW1wbGVtZXRhdGlvbnMgZm9yIENvY29hIGFuZCBXaW5kb3dzLgorCiAyMDIxLTAzLTI1
ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRW1iaWdn
ZW4gbWF4aW11bSBIYXNoVGFibGUgc2l6ZSB3aGVuIG5vdCB1c2luZyBBTkdMRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGUxZDNmOGM3M2U1MmEzZWM4MTNmYjNlN2JhYjQzMGJkYmI0NDg3ZGUuLjc2MWJkYjNhYzMx
OWI0Zjg5ZDE3N2E3YmY3ZDMxOGM1ZTNiZmUwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDQg
QEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdv
cmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB3b3VsZCBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRlIGRhdGFi
YXNlLgorICAgICAgICBXaGVuIHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMsIHdlIHdv
dWxkIGxvYWQgYWxsIHRob3NlIHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAgICAgaW50
byBtZW1vcnkuIFRoaXMgd291bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkgaW4gdGhl
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhlIGFw
cHJvYWNoIGlzIHRoaXMgcGF0Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2VwYXJhdGUK
KyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVuLCB3aGVu
IGxvYWRpbmcgdGhlbSwgd2UgY2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBhbmQgZ3Jl
YXRseSByZWR1Y2UgbWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MpIGFs
c28ga2VlcHMgYQorICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2aWNlIHdvcmtlciBz
Y3JpcHRzIGZvciB0aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcuIE1vcmUKKyAgICAg
ICAgd29yayB3aWxsIGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ugc2hvdWxkIGJlIGFi
bGUgdG8gZXh0ZW5kIHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRoZSBzZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRob3NlIHNj
cmlwdHMuIFRoaXMgd291bGQKKyAgICAgICAgcmVkdWNlIG1lbW9yeSB1c2FnZSBvbiB0aGUgV2Vi
Q29udGVudC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3ZWxsLiBJIGFtIGRvaW5nIHRo
aXMKKyAgICAgICAgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNlIHBhdGNoIHNpemUgYW5kIGZh
Y2lsaXRhdGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlcmUgc2hvdWxkIGJl
IG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2VkCisgICAgICAg
IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gc2VydmljZSB3b3JrZXJz
IGFyZSB1c2VkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IFNXU2NyaXB0U3RvcmFn
ZSBjbGFzcyB0byB0aGUgcHJvamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQWdlbnQ6OmdldEluaXRpYWxpemF0aW9uSW5mbyk6CisgICAgICAgIENvbnZlcnQgdGhlIHNj
cmlwdCB0eXBlIGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAqIHdvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9u
IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJz
YSwgaW4gdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0
cmluZ1RvU2NyaXB0QnVmZmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywg
c28gdGhhdCB0aGV5IGNhbiBob2xkCisgICAgICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0g
QWRkIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkgLyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxp
dHkgZnVuY3Rpb25zIHRvCisgICAgICAgICAgY29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVu
IFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9t
IHNjcmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEg
YW5kIGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAg
IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNpZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVh
ZCwgdGhvc2Ugc2NyaXB0cworICAgICAgICBhcmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZp
bGVzeXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFnZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1w
b3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNvZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IElt
cG9ydGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRh
CisgICAgICAgIG1lbWJlcnMgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCwgZXhjZXB0IGZvciB0aGUgYWN0dWFsCisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5v
dyBzYXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAg
ICAgIGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ug
d2Ugbm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAgICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJj
ZXMgaW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJh
dGVseSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0
U291cmNlcyk6CisgICAgICAgIFV0aWxpdHkgZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAg
b2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRv
IGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0
aG91dCB0aGUgc2NyaXB0CisgICAgICAgIHNvdXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNR
TGl0ZSBkYXRhYmFzZS4KKworICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2Vz
RnJvbURpc2spOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hN
YXAgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBm
cm9tIGEgSGFzTWFwIG9mIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhl
IFNRTGl0ZURhdGFiYXNlLiBUaGUKKyAgICAgICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUg
ZmV0Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAg
ICAgICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNr
Z3JvdW5kIHF1ZXVlIGZvciB0aHJlYWQtc2FmZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAg
IFJldHVybnMgdGhlIHBhdGggb24gdGhlIGZpbGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIg
c2NyaXB0cyBhcmUgc3RvcmVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRh
YmFzZTo6c2NyaXB0U3RvcmFnZSk6CisgICAgICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkg
YSBTV1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVybiBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFy
IGFsbCB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRo
ZSBkYXRhYmFzZSwKKyAgICAgICAgbm93IHRoYXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHku
CisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2Vz
KToKKyAgICAgICAgLSBTdG9wIHN0b3JpbmcgdGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxp
dGUgZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAg
ZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0g
SW1wcm92ZSBsb2dnaW5nCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRoZSBzY3JpcHQgc291cmNlcyBmcm9t
IHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0aGF0IHRoZXkgYXJlIG5vIGxvbmdl
cgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRhdGFiYXNlLgorICAgICAgICAtIElt
cHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8g
ZGVhbCB3aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29y
a2VyIHNjcmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4g
V2hlbgorICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEg
U2hhcmVkQnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEgd2hlbmV2
ZXIgcG9zc2libGUuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAg
ICBDb252ZXJ0IHNjcmlwdCBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAg
IENvbnZlcnQgc2NyaXB0IGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0
UmVzb3VyY2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgIFRha2UgaW4gYSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0IGZvciBjb252ZW5pZW5jZSwgaW5zdGVhZCBvZiB0YWtpbmcK
KyAgICAgICAgYWxsIGl0cyBkYXRhIG1lbWJlcnMgYXMgc2VwYXJhdGUgcGFyYW1ldGVycy4KKwor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgVXNlIFNoYXJlZEJ1
ZmZlciB0eXBlIGZvciBzY3JpcHQgaW5zdGVhZCBvZiBTdHJpbmcgdHlwZSwgc28gdGhhdCB3ZSBj
YW4gaG9sZCBvbiB0aGUKKyAgICAgICAgbW1hcCdkIGRhdGEgYW5kIHJlZHVjZSBtZW1vcnkgdXNh
Z2UuCisKIDIwMjEtMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRyZXNzIHNvbWUgYWxpZ25tZW50IGlzc3VlcyBmb3VuZCBieSBVQlNhbiBpbiBjb250
ZW50ZXh0ZW5zaW9ucyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYyOTRjNmIyZjhiNmIwZjkyNGIyNjM4NTc5
ZThmZGNlYzY0MWM3ZGUuLjFhYjZlYjNmYjQ4ZWY5Y2NmODI5ZmQ0ZDAwMGU5OWI0OGNhYzY1MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28g
bXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2Mzcw
OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjoKKyAgICAgICAgUGFzcyBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgc3RydWN0IGluIHRoZSBTZXRTY3JpcHRSZXNvdXJjZSBJUEMKKyAgICAg
ICAgZm9yIGNvbnZlbmllbmNlLiBXZSB1c2VkIHRvIHBhc3MgdGhlIEltcG9ydGVkU2NyaXB0IGRh
dGEgbWVtYmVycyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnlPbkJhY2tncm91bmRUaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
dG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucyk6CisgICAgICAgIERyb3AgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoKSBpbXBsZW1lbnRhdGlvbiBhbmQgdXNlIHRoZSBleGlzdGluZworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIGluIHd0ZiBpbnN0ZWFkLgor
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIFVwZGF0ZSBTaGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8g
ZGlzdGluZ3Vpc2ggYSBudWxsIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25l
LiBXZSBub3cgdXNlIFNoYXJlZEJ1ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQg
c291cmNlcworICAgICAgICBhbmQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNl
cyB0byBiZSBlbXB0eSAoYW5kIHRoZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0
ZXN0cykuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291
cmNlIElQQworICAgICAgICBmb3IgY29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1w
b3J0ZWRTY3JpcHQgZGF0YSBtZW1iZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMjUgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERhdGUgcGlj
a2VyIHZpZXcganVtcHMgdG8gY2VudGVyIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gTW9iaWxlU2Fm
YXJpIGFuZCBhbm90aGVyIGFwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmZWJlNDVmZThiNWU4
ZmYxYmZmMWU1MzY4ZWE1MTIxMzZhMWZmMGJlLi4zODY4Yzg4MjdmMTc1OWQwZGI2MzMwNzAyZWIw
MzRhYWRiYTc1MDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNDA4LDUgKzQwOCwxOSBAQCBT
dHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmKQogfQogI2VuZGlm
CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFPUyhXSU5ET1dTKQorYm9vbCBkZWxldGVOb25F
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBlbnRyaWVzID0g
bGlzdERpcmVjdG9yeShwYXRoLCAiKiJfcyk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJp
ZXMpIHsKKyAgICAgICAgaWYgKGZpbGVJc0RpcmVjdG9yeShlbnRyeSwgU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQorICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoZW50
cnkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGVGaWxlKGVudHJ5KTsKKyAgICB9
CisgICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdmNmI5YzMyMTQ3MjM4NGVmNGM0Li45MDgx
NzU1OGQzMzkwMTRjMThiMGI5MjI1NDU5OTAzMGJkOTcwNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0xOTAsMTQgKzE5MCwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVuYW1lRm9y
RGlzcGxheShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICNl
bmRpZgogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKTsKKwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25z
dCBTdHJpbmcmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlN
YXBGb3JQYXRoKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzVhMmYzMzVkZGE1
NTczMjg0M2RhYjAwYTYzMTg5ODRiODQ0YTZjLi5lYWFjNDQ0OGE5NzA0M2I1ZWQ4ZTA0MjlmMTU5
ZjA3YzFmMTI1MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4MSw2ICsyNjgxLDcgQEAgd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGYzNjg1Zjk1NmI2ZWIwMjYxZjQ5ZDUyMjQ1MWJjZDY5ODg3
M2YwZDUuLjQ3ZGEwM2Q0ODM3Y2JmOWQyODg0ZmQyMmVhNDEwMTdmNGEzZDc3ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NjIsNiArMTI2Miw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAq
LzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYy
NjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkw
QjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMw
N0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyog
SlNVSUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODIyNyw2ICs4MjI4LDggQEAKIAkJNDYwQ0JGMzMx
RDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNE
T01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBE
MTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3
M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcx
QyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzAzLDYgKzIwNzA2LDggQEAKIAkJCQk1MUI5MTQw
QjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVC
OTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1Qjcx
RkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1
OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTI3OCw2ICszNTI4Myw3IEBACiAJCQkJNDY2NThE
QzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEg
LyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhF
NSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2
ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4
MjUzNjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNl
cnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAu
c2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCku
c2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENv
bnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggNGQ0
NzRmMTZlNTg4ZGQwMGZiMzlkNTYwZjY0MTNjNjJhOTM4NmVmMi4uYTRiZTEwMDQwYmUyODU5MjEw
YjcyY2VkMjMxODJhZjA2NDdhNzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlRleHRS
ZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNjAs
NyArNjEsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKGlzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlw
dFJlc291cmNlKHVybCkpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRSZXNv
dXJjZS0+c2NyaXB0KTsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRCdWZmZXJU
b1N0cmluZygqc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCkpOwogICAgICAgICAgICAgbV9yZXNwb25z
ZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVzcG9u
c2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CkBAIC0xMDEsNyArMTAyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRN
SU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlw
dCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVS
TCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzdHJpbmdUb1NjcmlwdEJ1
ZmZlcihzY3JpcHQoKSksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAg
ICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cAppbmRleCAxNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5OWI1ZWRmLi4xZWE1OTAx
YmQ5ZDJmZDljNzkzYjJkNWFlMGUyNzBlODNjOGU3MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JEYXRhSWRlbnRp
ZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAorICAg
ICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsNiArNDgsMjAgQEAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7ICsraXQpCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEo
KSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NWI2OWVlMTY1ZWU0ODBhOTYxYjEw
ZjFkYmRjN2UuLjg0NTQxZDQ2MmE4YjcwYTRiMzNkM2EyMzY3MGFiYjI0NjBlNTkyYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzksMTMgKzQwLDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1
ZmZlciYpOworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CisKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIHN0cnVjdCBJ
bXBvcnRlZFNjcmlwdCB7Ci0gICAgICAgIFN0cmluZyBzY3JpcHQ7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICAgICAgVVJMIHJlc3BvbnNlVVJMOwogICAgICAgICBT
dHJpbmcgbWltZVR5cGU7CiAKLSAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4geyBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xh
dGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEltcG9ydGVk
U2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5jb3B5KCksIHJl
c3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CiAK
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICAgICAgewpAQCAtNTQsNyArNTgsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNjcmlwdDsKKyAgICAgICAgICAg
IE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CiAgICAgICAgICAgICBkZWNv
ZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MCw3ICs4NCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEgewogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOwotICAgIFN0cmluZyBzY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
c2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAg
ICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CkBAIC0xMjAsOCArMTI0LDkgQEAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWMKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgU3RyaW5nIHNjcmlwdDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHNjcmlwdCkpCisgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNjcmlw
dDsKKyAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0xNTcsNyArMTYyLDcgQEAgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAogICAg
ICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAogICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29y
a2VySWRlbnRpZmllciksCi0gICAgICAgIFdURk1vdmUoc2NyaXB0KSwKKyAgICAgICAgV1RGTW92
ZSgqc2NyaXB0KSwKICAgICAgICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwKICAgICAgICAg
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpLAogICAgICAgICBXVEZNb3ZlKHJlZmVycmVy
UG9saWN5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZDcwZjRmNWU2OTNmMjc3
ZjY1NTgzZTdhNGUwNzYxNDUzYzU0ZWZhZC4uYTY4NGM3MjBmNjgzZjNkMTBmM2EwOWQ0MjUyNzRl
NmVlYmUyNjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVz
JiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJE
ZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0g
ICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZp
Y2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwg
TW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RD
cmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0YS5zY3JpcHQsIGxvYWRlclBy
b3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVk
KCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXku
dG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKKyAg
ICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vydmlj
ZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBN
b25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENy
ZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBzY3JpcHRCdWZmZXJUb1N0cmluZyhk
YXRhLnNjcmlwdCksIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBk
YXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwg
aWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNy
ZWF0ZUFsbEVuYWJsZWQoKSkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVkQ29weSgpKQogICAg
ICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hh
cmVkKCkpCiAgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpLT5zaG91bGRVc2VTaG9ydFRpbWVvdXQoKSA/IGhlYXJ0QmVhdFRp
bWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKaW5kZXggY2VlOGNjOGMwOGJlMGIxYjdmNTQxMTBhNmNiMzE3NDZlOTg5NGIxNC4uZDVmMTFk
MzMxYWZlZGI3MTlhZGI2ZjgwMTI2NTEyMDJlYjFkZTgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRh
YmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rp
b24uaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTV1NlcnZlci5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC00OSw3ICs1MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1Oworc3RhdGljIGNvbnN0IHVpbnQ2
NF90IHNjaGVtYVZlcnNpb24gPSA2OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJs
ZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYxLDcgKzYyLDYgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5h
bWUpCiAgICAgICAgICIsIGxhc3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCIKICAgICAgICAgIiwgd29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCiAgICAgICAgICIsIGNvbnRlbnRTZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCIKQEAgLTEwNyw2ICsxMDcsNTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNs
ZWFuT2xkRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgICAg
IFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGRhdGFiYXNlRmlsZW5hbWVGcm9t
VmVyc2lvbih2ZXJzaW9uKSkpOwogfQogCitzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVz
IHsKKyAgICBVUkwgcmVzcG9uc2VVUkw7CisgICAgU3RyaW5nIG1pbWVUeXBlOworCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7CisgICAg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVk
U2NyaXB0QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBPcHRpb25hbDxVUkw+IHJlc3BvbnNlVVJMOworICAgICAgICBkZWNvZGVyID4+IHJlc3BvbnNl
VVJMOworICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAgICAgICBk
ZWNvZGVyID4+IG1pbWVUeXBlOworICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdU
Rk1vdmUoKnJlc3BvbnNlVVJMKSwKKyAgICAgICAgICAgIFdURk1vdmUoKm1pbWVUeXBlKQorICAg
ICAgICB9fTsKKyAgICB9Cit9OworCitzdGF0aWMgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0
QXR0cmlidXRlcz4gc3RyaXBTY3JpcHRTb3VyY2VzKGNvbnN0IEhhc2hNYXA8VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYgbWFwKQoreworICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IG1hcFdpdGhvdXRTY3JpcHRzOworICAgIGZv
ciAoYXV0byYgcGFpciA6IG1hcCkKKyAgICAgICAgbWFwV2l0aG91dFNjcmlwdHMuYWRkKHBhaXIu
a2V5LCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgeyBwYWlyLnZhbHVlLnJlc3BvbnNlVVJMLCBw
YWlyLnZhbHVlLm1pbWVUeXBlIH0pOworICAgIHJldHVybiBtYXBXaXRob3V0U2NyaXB0czsKK30K
Kworc3RhdGljIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhTV1NjcmlwdFN0b3JhZ2UmIHNj
cmlwdFN0b3JhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4mJiBtYXApCit7
CisgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+IGltcG9ydGVkU2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApIHsKKyAgICAg
ICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UucmV0cmlldmUocmVnaXN0cmF0
aW9uS2V5LCBwYWlyLmtleSk7CisgICAgICAgIGlmICghaW1wb3J0ZWRTY3JpcHQpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRh
YmFzZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2s6IEZhaWxlZCB0byByZXRyaWV2ZSBp
bXBvcnRlZCBzY3JpcHQgZm9yICVzIGZyb20gZGlzayIsIHBhaXIua2V5LnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaW1w
b3J0ZWRTY3JpcHRzLmFkZChwYWlyLmtleSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdCB7IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpLCBXVEZNb3ZlKHBhaXIudmFsdWUu
cmVzcG9uc2VVUkwpLCBXVEZNb3ZlKHBhaXIudmFsdWUubWltZVR5cGUpIH0pOworICAgIH0KKyAg
ICByZXR1cm4gaW1wb3J0ZWRTY3JpcHRzOworfQorCiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2UoUmVnaXN0cmF0aW9uU3RvcmUmIHN0b3JlLCBTdHJpbmcmJiBkYXRh
YmFzZURpcmVjdG9yeSkKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTZXJ2
aWNlV29ya2VyIEkvTyBUaHJlYWQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCkpCiAgICAgLCBt
X3N0b3JlKG1ha2VXZWFrUHRyKHN0b3JlKSkKQEAgLTEyNCw5ICsxNzQsOSBAQCBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFiYXNlIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBv
biB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgaWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1f
d29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpXSB7IH0p
OworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlwdFN0b3JhZ2UgbmVlZCB0byBiZSBkZXN0cm95
ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgIGlmIChtX2RhdGFiYXNlIHx8IG1fc2Ny
aXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdU
Rk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3JhZ2UgPSBXVEZNb3ZlKG1fc2NyaXB0U3RvcmFn
ZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnBvc3RUYXNrVG9Xb3Jr
UXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCkBAIC0xODUsNiArMjM1LDE5IEBAIGJvb2wg
UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1
bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU3RyaW5nIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7
ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dTY3JpcHRTdG9yYWdlJiBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG1h
a2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkpOworICAg
IHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwpAQCAtMzMzLDggKzM5NiwxMCBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVh
ckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogewogICAg
IHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxs
cHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlRmlsZVBhdGgpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShzY3JpcHRTdG9yYWdlRGly
ZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNl
RGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMzUyLDEyICs0
MTcsMTMgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBW
ZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAg
IFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZB
TFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOworICAgIFNR
TGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVF
UyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgIGlmIChzcWwu
cHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2
aWNlV29ya2VyLCAiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJlZ2lzdHJh
dGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgYXV0byYgc2NyaXB0U3RvcmFnZSA9IHRoaXMtPnNjcmlwdFN0b3Jh
Z2UoKTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IHJlbW92ZWRSZWdpc3RyYXRpb25z
KSB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJERUxFVEUgRlJP
TSBSZWNvcmRzIFdIRVJFIGtleSA9ID8iKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCkBAIC0zNjYsMTQgKzQzMiwxNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+Jgog
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBy
ZW1vdmUgcmVnaXN0cmF0aW9uIGRhdGEgZnJvbSByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgc2NyaXB0U3RvcmFnZS5j
bGVhcihyZWdpc3RyYXRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZGF0YSA6IHVwZGF0
ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgY3Nw
RW5jb2RlcjsKICAgICAgICAgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3kuZW5jb2RlKGNzcEVu
Y29kZXIpOwogCisgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGVuY29kZSB0aGUgc2NyaXB0
IHNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlLiBUaGV5IHdpbGwgYmUgc3RvcmVkIHNlcGFyYXRlbHkg
aW4gdGhlIFNjcmlwdFN0b3JhZ2UuCisgICAgICAgIC8vIEFzIGEgcmVzdWx0LCB3ZSBuZWVkIHRv
IHN0cmlwIHRoZSBzY3JpcHQgc291cmNlcyBoZXJlIGJlZm9yZSBlbmNvZGluZyB0aGUgc2NyaXB0
UmVzb3VyY2VNYXAuCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgc2NyaXB0UmVz
b3VyY2VNYXBFbmNvZGVyOwotICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIgPDwgZGF0
YS5zY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8
IHN0cmlwU2NyaXB0U291cmNlcyhkYXRhLnNjcmlwdFJlc291cmNlTWFwKTsKIAogICAgICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNlcnRpZmljYXRlSW5mb0VuY29kZXI7CiAgICAgICAg
IGNlcnRpZmljYXRlSW5mb0VuY29kZXIgPDwgZGF0YS5jZXJ0aWZpY2F0ZUluZm87CkBAIC0zODUs
MjEgKzQ1NCwyNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgfHwgc3Fs
LmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5iaW5k
VGV4dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZp
YUNhY2hlKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoNywgZGF0
YS5zY3JpcHRVUkwuc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJp
bmRUZXh0KDgsIGRhdGEuc2NyaXB0KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5i
aW5kVGV4dCg5LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTAsIGNzcEVuY29kZXIuYnVmZmVyKCks
IGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNx
bC5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIo
KSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTMsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVm
ZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53
b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoOSwg
Y3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9P
SworICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDEwLCBkYXRhLnJlZmVycmVyUG9saWN5KSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMSwgc2NyaXB0UmVzb3Vy
Y2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMiwgY2VydGlm
aWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXJT
aXplKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZh
aWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFNh
dmUgc2NyaXB0cyB0byBkaXNrLgorICAgICAgICBib29sIHN1Y2Nlc3MgPSBzY3JpcHRTdG9yYWdl
LnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKKyAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgc3Vj
Y2VzcyA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtl
eSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vz
cywgc3VjY2Vzcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQo
KTsKLQotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lz
dHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1
IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVt
b3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVk
L3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVw
ZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQ4Miw3IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRh
YmFzZSwgIlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJs
ZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5MCw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBm
b3IgKDsgcmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0
YWJhc2VLZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9
IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3Bl
UGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs0OTksNjggQEAgU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0
VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5E
b3VibGUoNCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVW
aWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0g
VVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0
ID0gc3FsLmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmlu
Z1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2Vy
VHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7Cisg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YSk7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250
ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5z
aXplKCkpOwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0
eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAg
ICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAg
T3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFw
OwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBE
ZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0
YS5zaXplKCkpOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewot
ICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFw
OwotICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlv
bmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJj
ZU1hcFdpdGhvdXRTY3JpcHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVy
ID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJl
Y29yZHM6IEZhaWxlZCB0byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRT
dG9yYWdlKCksICprZXksIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMp
KTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9E
YXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUlu
Zm9EYXRhKTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNh
dGVJbmZvRGF0YSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJ
bmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0
YS5zaXplKCkpOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRl
SW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
Y2VydGlmaWNhdGVJbmZvIik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAg
ICAgIC8vIElmIGFueSBwYXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0
aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4g
ZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkKKyAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdp
biB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5
cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBG
YWlsZWQgdG8gZGVjb2RlIHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3Jh
Z2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsK
KyAgICAgICAgaWYgKCFzY3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6U2NyaXB0U3RvcmFnZTo6c3RvcmU6
IEZhaWxlZCB0byByZXRyaWV2ZSBtYWluIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgc2NyaXB0
VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KIAogICAgICAgICBhdXRvIHdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVy
ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAg
ICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklk
ZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3Jr
ZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0
aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBs
YXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShz
ZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3
b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5m
byksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xp
Y3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3Jp
cHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3Jr
ZXJJZGVudGlmaWVyLCBzY3JpcHQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNh
dGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJl
clBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUo
c2NyaXB0UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xh
dGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVn
aXN0cmF0aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmgKaW5kZXggZDZhZWQ2YjQwZTYwNDYyNmUzYTFmZmJjMzVlYmE0MzEyZThlYzdkYS4uNTcw
NzUyNjY5NjIxZGIzNDI4NzdhZjM0YzcxZTQ1Yjk4YjkwYTE5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
Z2lzdHJhdGlvblN0b3JlOwogY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTV1NjcmlwdFN0
b3JhZ2U7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CkBAIC03Miw2ICs3Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKTsKICAgICBib29sIGRvUHVzaENoYW5n
ZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mLCBjb25zdCBWZWN0b3I8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4mKTsKICAgICB2b2lkIGRvQ2xlYXJPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBTV1NjcmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3Jh
Z2UoKTsKKyAgICBTdHJpbmcgc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAg
Ly8gUmVwbGllcyB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25U
b1N0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKQEAgLTgwLDYgKzgzLDcgQEAgcHJp
dmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFdlYWtQdHI8UmVn
aXN0cmF0aW9uU3RvcmU+IG1fc3RvcmU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNXU2NyaXB0U3Rv
cmFnZT4gbV9zY3JpcHRTdG9yYWdlOwogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5Owog
ICAgIFN0cmluZyBtX2RhdGFiYXNlRmlsZVBhdGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0
ZURhdGFiYXNlPiBtX2RhdGFiYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjODhj
M2M4MGRhZjJhYzFkM2Q5MzNjNDNjZDhmMGZmMzEwNmM5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
QEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1NIQTEuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGhhc2hVUkwoY29uc3QgVVJM
JiB1cmwpCit7CisgICAgU0hBMSBzaGExOworICAgIHNoYTEuYWRkQnl0ZXModXJsLnN0cmluZygp
LnV0ZjgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc2hhMS5jb21wdXRlSGV4RGln
ZXN0KCkpOworfQorCitTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSkKKyAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKK3sKKyAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0
cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lz
dHJhdGlvbktleSkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhtX2RpcmVjdG9yeSwgeyByZWdpc3RyYXRpb25LZXkudG9wT3JpZ2luKCku
ZGF0YWJhc2VJZGVudGlmaWVyKCksIGhhc2hVUkwocmVnaXN0cmF0aW9uS2V5LnNjb3BlKCkpIH0p
OworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRV
UkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KSwgaGFzaFVSTChzY3Jp
cHRVUkwpKTsKK30KKworYm9vbCBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0aChyZWdpc3Ry
YXRpb25LZXksIHNjcmlwdFVSTCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOworCisgICAgYXV0byBmaWxl
SGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZp
bGVIYW5kbGUpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJT
Y3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbHVyZSB0byBzdG9yZSAlcywgaW52YWxpZCBoYW5kbGUi
LCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGZpbGVIYW5kbGUsIDApOworICAgIGZv
ciAoYXV0byBpdCA9IHNjcmlwdC5iZWdpbigpOyBpdCAhPSBzY3JpcHQuZW5kKCk7ICsraXQpCisg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIGl0LT5zZWdtZW50LT5k
YXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwpCit7CisgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3Jp
cHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKKworICAgIC8vIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKCkgdXNlcyBtbWFwKCkgd2hlbmV2ZXIgcG9zc2li
bGUgdG8gc2F2ZSBtZW1vcnkuCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgpOworfQorCit2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xl
YXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQor
eworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+cmVnaXN0cmF0aW9uRGly
ZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7CisgICAgYm9vbCByZXN1bHQgPSBGaWxlU3lzdGVtOjpk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdpc3RyYXRpb25EaXJlY3RvcnkpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6
OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJlZ2lzdHJhdGlvbiAlcyIsIHJl
Z2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzMjdkMWNjNzQzODYxOGE1NDM4Y2RhNGM3MmFlNDA5YzFi
M2M2MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIFNXU2NyaXB0U3Rv
cmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKKworICAgIGJvb2wg
c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0
IFVSTCYgc2NyaXB0VVJMKTsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmKTsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgcmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSBjb25zdDsKKyAgICBTdHJp
bmcgc2NyaXB0UGF0aChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwpIGNvbnN0OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcAppbmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5N2Q2NGYxZDY1ODY5NGIzLi40MjI5
Y2I3NWIyNTBiNzEzMTQ4MzE4N2IxMWE2ZmI1YmQ4MWZjZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjMzLDcgKzYz
Myw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdv
cmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlm
aWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0
eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5k
YXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRp
ZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0
eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFs
bENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVy
LCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSwgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3Zl
KHNjcmlwdFJlc291cmNlTWFwKSB9KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENv
bnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcAppbmRleCA4MDJhNDgwMTE1MWE3MjhmYmM1YTJhNjkxMjRkYjk2M2M3NzJjYjBhLi41Y2Ey
NTI2OTExNDUzZGIwOGYxZjhmMjgzMmRiYzQwNDVlNjRhYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNo
RmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bAogICAgIC8vIElm
IG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHVybCBlcXVh
bHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRlIGZyYWdtZW50cwogICAgIC8vIGZs
YWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMgYSBieXRlLWZvci1ieXRlIG1hdGNo
IHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNlJ3Mgc291cmNlCiAgICAgLy8gdGV4
dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3
ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBu
ZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRp
ZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKKyAgICBpZiAo
bmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29y
a2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkg
PT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBzY3JpcHRCdWZmZXJUb1N0cmlu
ZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRpZmljYXRlc01hdGNoKHJlc3VsdC5j
ZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJbmZvKCkpKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnNj
cmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNhdGUgYXJlIG1hdGNoaW5nIGZv
ciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9uIGNsYXNzaWMgc2NyaXB0cywg
Y2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtbRUNNQVNjcmlwdENvZGVdXS4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDJiOGZmNjg1
ZTA0OTc5ZmNkYzczZTczMjBkZjNmNGRhNjRjNzYyZGYuLjEyMDA1MTY5OGJmOTM5ODE4ZTRkNDNl
ODVjNjk1NzMwMGJhN2RjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29yCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVz
cG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNX
U2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2Ny
aXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUobWltZVR5cGUpIH0pOwor
ICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgV1RG
TW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRp
ZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNDY1OWY5ZjlmYTZjNmJh
YThkZTk2OGQzOTE1ZmUzM2M0ZTMxMjY2OC4uOWJlMzQ0NDkxZjA2MTNmYWUxNDBlNzk4NTFiNzEw
YTNiMzJiMmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRC
eUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0LCBVUkwmJiByZXNw
b25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4
IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlhNjY3MDUuLmQ1OTdlOGU0MmM5NDFl
ZjhmNGFhNjFkNGMyZDlhY2FmNjQ1ZjllMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJ
ZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1
ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRlbnRTZWN1cml0eVBvbGljeQotU1dTZXJ2
ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK1NXU2VydmVyV29ya2Vy
OjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYg
cmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQs
IGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgOiBtX3NlcnZlcihtYWtlV2Vh
a1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0aW9uLmtleSgp
KQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQdHIocmVnaXN0cmF0aW9uKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaAppbmRleCAzNzhmYmE2NTdlOGJiZjQ4NDFlNTZjYmY4NjU2MWY4ZWNjMzExMDIwLi5kMjdm
NzNmMjFmM2YyNGI3MjI3MDlmYWZhYmI2ZDRjMmNhNTI3ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9z
ZXJ2ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAg
IGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsg
fQotICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0K
KyAgICBTaGFyZWRCdWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAg
ICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVy
biBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS50eXBlOyB9CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIAogcHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtl
cihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJU
eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2Vy
dmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKICAgICB2b2lkIGNhbGxXaGVuQWN0aXZhdGVkSGFu
ZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwogICAgIFdlYWtQ
dHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3Jr
ZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRlbnRTZWN1cml0eVBv
bGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IGYzYjc1YTVlYmEzZmQ3M2Y1MjY4NDQ2MTIzOTc4NWU1NDQ2OTM3YTIuLmQ4ZDk0MzQwODQ1ZGQ4
NWIzNmRjODkyOWFiMWU2MjcxODg5MzI4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyAr
MzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVm
Q291bnRlZCB7CiAgICAgRmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKQogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+IHJlc3VsdCkgQXN5bmMKLSAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0
LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSkKKyAgICBTZXRTY3JpcHRSZXNvdXJj
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0
VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNj
cmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhl
YXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYWI3YWJjMjU3NjVhZDQyOGYyYTE1N2M2MTc5NGQy
MjU4NjE3YmI0Ny4uMmVhMjg0MDA5NjQ0OTBmZGJiZTU3MGEwOGIyZmMwYzI4YTM3MjFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcApAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgRW5naW5lOjpjbGVhckFs
bENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7CiAgICAg
ICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgs
ICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZmls
ZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAg
ICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxlbmFtZSk7CisgICAgICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoZmlsZW5hbWUpOwog
ICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03NDksMTggKzc0OSwxOCBAQCB2b2lkIEVuZ2lu
ZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAvLyBJZiBjYWNoZSBzYWx0IGlzIGluaXRpYWxp
emVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNoLCBzb21lIGNhY2hlIGZpbGVzIGhhdmUgcHJv
YmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkgY29ycnVwdGVkLgogICAgICAgICAgICAgQVNT
RVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBjYWNoZXNSb290UGF0aCgqZm9sZGVyT3JpZ2lu
KSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRo
cmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0Fn
Z3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJh
Y2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUo
Y2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lk
IEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRU
aHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOwotICAgICAgICBkZWxl
dGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
Tm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmlu
ZGV4IDE5NDRhNWM3OTJkOGQ3OTllMjlkYWJjODQ2NjY3YjY2ODYyYmI3ZjkuLjQ0MDllN2I0OTZh
YjhjZjY0NmM5YTBmZmFlZGY1NzM0YzBmZjFlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtMTEwLDcg
KzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBw
YXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgU3RyaW5nIHJlcHJlc2Vu
dGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzNkZTA0
MmNkZjQ0YjBmYmE0MjNjYzlkZDdhZmM1Li43YTk5NjE0ZjIzMzViMTUwYzljYWIyMjJjOTM1ZDBi
YmVmNjljODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTYyLDIzICs2Miw2IEBA
IHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiAgICAgfQogfQogCi12b2lkIGRlbGV0ZURpcmVjdG9y
eVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICB0cmF2ZXJzZURpcmVjdG9y
eShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5
cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBkZWxldGVEaXJl
Y3RvcnlSZWN1cnNpdmVseShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCi0gICAgICAgIH0KLSAgICB9KTsKLSAg
ICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQogRmlsZVRpbWVz
IGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElN
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2E1ZjhjYzRmZTM4YTk1NjFjZTFjOGI2MWMx
MGM3NDc5Y2E4NzQyZi4uYzBiNGU4MWI0NzM3NWEwN2ZmOTliZWI0MjEwZGEwMTU4MjJjNzM1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdv
cmtDYWNoZSB7CiBlbnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmls
ZSB9Owogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+
Jik7CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRo
KTsKLQogc3RydWN0IEZpbGVUaW1lcyB7CiAgICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2Fs
bFRpbWUgbW9kaWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBl
MmM2ZDIwMjVhOTZiMjVlYzFlNTZjNDhhZjhkNi4uZGI0YzA1NDljNmJiZWI4MDNiNjZmMGUzMTQ1
MTliZTU4MjkyNWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5j
bHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTE5Myw3ICsxMTk0LDcgQEAgdm9pZCBTdG9yYWdlOjpk
ZWxldGVPbGRWZXJzaW9ucygpCiAgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFtZSk7
CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vzcykg
ZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9uUGF0aC51dGY4
KCkuZGF0YSgpKTsKIAotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkob2xk
VmVyc2lvblBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3Rvcnkob2xkVmVyc2lvblBhdGgpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDI4MGM5ODQz
YzY3ZTlkNTg1YTAzODU3NDg1M2IyOTA2YTMzMTA5YmEuLjg1NjFlOTRjMDlhMWE5YjQ5YTBmMGIy
ZjgwMmNhNjk4NmNjZmE4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMTIyLDcgKzEyMiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7
CisgICAgZW5jb2RlciA8PCBpc051bGw7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKICAgICBpZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0NCwxMiArMTQ5LDI0IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIAogc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogeworICAgIE9wdGlvbmFsPGJvb2w+IGlzTnVs
bDsKKyAgICBkZWNvZGVyID4+IGlzTnVsbDsKKyAgICBpZiAoIWlzTnVsbCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCppc051bGwpIHsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdWludDY0X3QgYnVmZmVyU2l6
ZSA9IDA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKCFidWZmZXJTaXplKQorICAgIGlmICghYnVmZmVyU2l6ZSkg
eworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBpZiAo
IWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXpl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA0MmYzNzliYTFiYmZl
MGQ2Y2FjZGQ5OTRjZDBkOWZhODA4NWI1MmNlLi5lMTQxYmYzMWQ3Y2Q3Y2NhNTJmNDA0YWRmZWJj
NzRhN2IxMTZiMWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0y
OTAsNyArMjkwLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2tpcFdh
aXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVcKIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpTZXRTY3JpcHRSZXNvdXJjZSB7IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCB1cmwsIHNjcmlwdC5zY3JpcHQsIHNjcmlwdC5yZXNwb25zZVVSTCwgc2NyaXB0Lm1pbWVU
eXBlIH0sIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQgfSwgMCk7CiB9CiAKIHZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmY3N2Y3MGRmZGU4NTU4M2UzYmUxYWZh
NTQzMTM5MjgxYmZiOGQ5My4uNDE0ZDQyMzRkZWZlZTg2NWJhNmFlZWE3Yjg0ZGVhYzk3M2I0ZTM3
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIxLTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGlu
IHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzgwOAorICAgICAgICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UgZm9yIEZpbGVTeXN0ZW06OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KCkuIEl0IGlzIG5vdCBhIG5ldyBBUEkgYnV0IGl0CisgICAgICAgIGhh
ZCBubyB0ZXN0cywgaXQgdXNlZCBtb3JlIGluIHRoaXMgcGF0Y2ggYW5kIHdlIG5vdyBoYXZlIGFu
IGltcGxlbWVudGF0aW9uIG9uIGFsbCBzdXBwb3J0ZWQKKyAgICAgICAgcGxhdGZvcm1zLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW06CisgICAgICAgIFR3ZWFrIHNlcnZpY2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQgdGhleSBl
eHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2UgaW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisgICAgICAg
IHNpbmNlIEkgdXBkYXRlZCB0aGUgZGF0YWJhc2Ugc2NoZW1lIGFuZCBidW1wZWQgdGhlIHZlcnNp
b24uCisKIDIwMjEtMDMtMjUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUENNOiBSZW5hbWUgYXR0cmlidXRlT24gdG8gYXR0cmlidXRpb25EZXN0aW5hdGlv
biBhbmQgY2hhbmdlIHRoZSBJREwgZGF0YSB0eXBlIG9mIGF0dHJpYnV0aW9uU291cmNlSWQgdG8g
dW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcAppbmRleCA3NmNhZjJhZDQzNzI2NjNkMmJlMzExYmNmYjYzYTA0ZDBjMGQwMWY2Li44ZjY1
MWQzZWFlMzQzMjk3NTFhYzM2MWRkN2UwNjRjYjYzN2UzNzUyIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMTUxLDQgKzE1MSwyOSBAQCBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRGYWlsSWZGaWxlRXhpc3RzKQog
ICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpOwogfQog
CitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KQoreworICAg
IGF1dG8gY3JlYXRlVGVzdFRpbGUgPSBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAg
YXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERh
dGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIH07
CisKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKKyAg
ICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGUpOworCisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiB9KSkpOwor
ICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAi
ZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGUz
LnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGU0LnR4
dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3YzczYTg0MjJhNGM0
ZThmZjdlNjEwNWU5ZTg4MGRmLi5lOWZlYjg0MWVkOGU3ZmY4ZDQxNTVlMDE2NTUwNjRmODYxMTk5
MjcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZXNzKQogICAgIGF1dG8gcGF0aCA9IHN0
b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LnBh
dGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRo
IGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNx
bGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdOwog
CiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgVEVTVChX
ZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVk
U2NoZW1hKQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlh
dGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRo
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
LTUuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXSBlcnJvcjpu
aWxdOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0
ZTMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMwppbmRleCAwYTA1ZGM0NmUzYTJjY2ViMzRlZjlh
NzY4Y2QwOWViM2Q4YWYyNDE1Li4wMWNlMmM3ODUwYTA1NTM5YmY4ZWEwZDJjZGUyMWZhODg1YzZh
ZWMzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDExNzUKemNtWm96en1UPldYQGF5TUdY
bnp5Q2xHXlo3Nyg3T1Y9VChkcGw1JUI3c3pBY2xWUlpWPTlBKDEjUGV4bTtjQmpXCnpVUUA9KTtg
O2lHWlQ9O1JOamEmLWcqaSNfQzhAYXVAbkNNZUElKn4oYkM5Y0poXnM8fnFteiVUZilhK2psN2E+
bwp6ciY0eG1yNG5hfFllYX5HcEZhP1hgdUhlPmBnc1AxeTZPTldeTlRYbUd4TmFtXiN9elpuZDBS
OWc0RUM7QTJodW4KenNnbkV4ZX1xMCVaOD9kPkM3fWY9aTZ5RGQ4TDckSEEoXj9VTn1Na0twJiVF
Kz48NWBxM1JWLUFuZHFGRG9CPm80Cno7IyFhN0xXbCMzRzdDenV5UCFQM0NfQSslcV9QMDQ2SFF9
c2VxS3B4VVAqOWphJW9YIU5vN0VPUEcmTU4yJUxRVQp6b2x1LW1sJHdAV1JGcWwtUlM8KDNOQytu
Y3I1NUx4N0EyP3BDS2d+WkJ7e1hJQnJgMkQ4UiVvcnl0STVZNjxuR08KejQyK1NYYGpnTXxPSzQo
NTVTQlApMmRXcEZZe35uV050YjJ2WD9+cjBfR1RreWM1IUtHI3hgcWtJdFdUbCZNIShTCnpoRWl4
cjA0aHBhI0deKGFURDtkSU07ZEorOXhlS2NsYWI+Y0VtaEpZO189NDJHdWFVaiVIcz9JeiFKYmBX
MSRvMAp6VypeQmRZJDZ+YkFiPUdKdFV4eD9XPGlDbXtGX2hlbj01ZEV2QHI0c0Z6XldnMT07dzc0
bDZNNzdue3FRdnI3ansKenRNSk0rSGhXQ29DQENfek02ellgWiNoUUIkdCh0cnBtSyN7bExFNTxC
ajt2VWdXZGQtUyR5Oy04I0BTciMyR2RfClFuKFhKXiU7TktoZDE5ZD4wRW1yQ2c4JT5rCgpkZWx0
YSAzMjcKemNtWm96enxecFNhZX1sVTY5V1NTRC1nb348M3RAfXByRD9LMHgkbSQxfTB1cDIzfU1D
bGJhUDRqYEZheTNOb0AhCnp3Jlo9eD1IfT8+cW9Ya1NCY0N3NGZ7VEJzbGFLNDxMUzg4VzlmaV9A
bCpFJE11Kl5pfiNOPj9CJCY3cmB7MUNPcAp6JHdpcTNDODBxK0FUYl9mRl8zQCZNNCZ2c0NfQSsl
cV9QMDRRdm84Rm9TIz5jbnBZQj5ucHwzeFN5Q0MwcE9jd2YKenNvPjx9Pyp6NThDXmFwJHMzXjR2
QV9Gb2AySEVfZSlaK1pvcVUyUUghfihjM0YmJX5FKVN7Qml3OUk2bmIzT0NZCnleNUlnPG56fkdy
PEBqYGpuU21qfjBTWG1mQVpGekJWY18pSCp5ek4kKisrNTwrb2w5JmZ6OFlZZjhfeW1OPzVpNAoK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggZjYxNmE3NGI0MTdm
NjFlOWFhM2RkMjVjOGJlODZjOWUyYTJmZDI4YS4uZWViMmFkMzgyNjUyYWU1N2I4YzJmMDk3OWJm
ZTY3NTk2YTk4MDU4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0K
QEAgLTMwMCw3ICszMDAsNyBAQCBURVNUKFdlYktpdCwgQ3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJz
dXNDb21wbGV0aW9uSGFuZGxlcnMpCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd1BhdGgucGF0aF0pOwogCiAgICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpzd1BhdGgg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwx
IHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3Fs
aXRlMyJdIGVycm9yOm5pbF07CiAKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzd1BhdGg7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424431</attachid>
            <date>2021-03-26 19:14:00 -0700</date>
            <delta_ts>2021-03-26 21:13:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210326191359.patch</filename>
            <type>text/plain</type>
            <size>93502</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBlNDRhN2Q5NjEyZmY2YzcyNzc5NjNm
YzNmNWY2M2EyMWQ3NjYyNTAuLjQ5NzEyMDY0MWZhOGI2NjE0YzFhZTBkNGI0ZDI1ZTcyOWMzMjAz
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRk
IGFuIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KCkgb24gYWxsIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCisgICAgICAgIFdlIHByZXZpb3VzbHkgb25s
eSBoYWQgaW1wbGVtZXRhdGlvbnMgZm9yIENvY29hIGFuZCBXaW5kb3dzLgorCiAyMDIxLTAzLTI1
ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRW1iaWdn
ZW4gbWF4aW11bSBIYXNoVGFibGUgc2l6ZSB3aGVuIG5vdCB1c2luZyBBTkdMRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGUxZDNmOGM3M2U1MmEzZWM4MTNmYjNlN2JhYjQzMGJkYmI0NDg3ZGUuLjc2MWJkYjNhYzMx
OWI0Zjg5ZDE3N2E3YmY3ZDMxOGM1ZTNiZmUwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDQg
QEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdv
cmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB3b3VsZCBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRlIGRhdGFi
YXNlLgorICAgICAgICBXaGVuIHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMsIHdlIHdv
dWxkIGxvYWQgYWxsIHRob3NlIHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAgICAgaW50
byBtZW1vcnkuIFRoaXMgd291bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkgaW4gdGhl
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhlIGFw
cHJvYWNoIGlzIHRoaXMgcGF0Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2VwYXJhdGUK
KyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVuLCB3aGVu
IGxvYWRpbmcgdGhlbSwgd2UgY2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBhbmQgZ3Jl
YXRseSByZWR1Y2UgbWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MpIGFs
c28ga2VlcHMgYQorICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2aWNlIHdvcmtlciBz
Y3JpcHRzIGZvciB0aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcuIE1vcmUKKyAgICAg
ICAgd29yayB3aWxsIGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ugc2hvdWxkIGJlIGFi
bGUgdG8gZXh0ZW5kIHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRoZSBzZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRob3NlIHNj
cmlwdHMuIFRoaXMgd291bGQKKyAgICAgICAgcmVkdWNlIG1lbW9yeSB1c2FnZSBvbiB0aGUgV2Vi
Q29udGVudC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3ZWxsLiBJIGFtIGRvaW5nIHRo
aXMKKyAgICAgICAgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNlIHBhdGNoIHNpemUgYW5kIGZh
Y2lsaXRhdGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlcmUgc2hvdWxkIGJl
IG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2VkCisgICAgICAg
IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gc2VydmljZSB3b3JrZXJz
IGFyZSB1c2VkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IFNXU2NyaXB0U3RvcmFn
ZSBjbGFzcyB0byB0aGUgcHJvamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQWdlbnQ6OmdldEluaXRpYWxpemF0aW9uSW5mbyk6CisgICAgICAgIENvbnZlcnQgdGhlIHNj
cmlwdCB0eXBlIGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAqIHdvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9u
IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJz
YSwgaW4gdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0
cmluZ1RvU2NyaXB0QnVmZmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywg
c28gdGhhdCB0aGV5IGNhbiBob2xkCisgICAgICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0g
QWRkIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkgLyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxp
dHkgZnVuY3Rpb25zIHRvCisgICAgICAgICAgY29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVu
IFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9t
IHNjcmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEg
YW5kIGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAg
IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNpZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVh
ZCwgdGhvc2Ugc2NyaXB0cworICAgICAgICBhcmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZp
bGVzeXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFnZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1w
b3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNvZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IElt
cG9ydGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRh
CisgICAgICAgIG1lbWJlcnMgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCwgZXhjZXB0IGZvciB0aGUgYWN0dWFsCisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5v
dyBzYXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAg
ICAgIGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ug
d2Ugbm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAgICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJj
ZXMgaW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJh
dGVseSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0
U291cmNlcyk6CisgICAgICAgIFV0aWxpdHkgZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAg
b2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRv
IGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0
aG91dCB0aGUgc2NyaXB0CisgICAgICAgIHNvdXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNR
TGl0ZSBkYXRhYmFzZS4KKworICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2Vz
RnJvbURpc2spOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hN
YXAgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBm
cm9tIGEgSGFzTWFwIG9mIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhl
IFNRTGl0ZURhdGFiYXNlLiBUaGUKKyAgICAgICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUg
ZmV0Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAg
ICAgICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNr
Z3JvdW5kIHF1ZXVlIGZvciB0aHJlYWQtc2FmZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAg
IFJldHVybnMgdGhlIHBhdGggb24gdGhlIGZpbGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIg
c2NyaXB0cyBhcmUgc3RvcmVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRh
YmFzZTo6c2NyaXB0U3RvcmFnZSk6CisgICAgICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkg
YSBTV1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVybiBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFy
IGFsbCB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRo
ZSBkYXRhYmFzZSwKKyAgICAgICAgbm93IHRoYXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHku
CisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2Vz
KToKKyAgICAgICAgLSBTdG9wIHN0b3JpbmcgdGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxp
dGUgZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAg
ZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0g
SW1wcm92ZSBsb2dnaW5nCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRoZSBzY3JpcHQgc291cmNlcyBmcm9t
IHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0aGF0IHRoZXkgYXJlIG5vIGxvbmdl
cgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRhdGFiYXNlLgorICAgICAgICAtIElt
cHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8g
ZGVhbCB3aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29y
a2VyIHNjcmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4g
V2hlbgorICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEg
U2hhcmVkQnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEgd2hlbmV2
ZXIgcG9zc2libGUuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAg
ICBDb252ZXJ0IHNjcmlwdCBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAg
IENvbnZlcnQgc2NyaXB0IGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0
UmVzb3VyY2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgIFRha2UgaW4gYSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0IGZvciBjb252ZW5pZW5jZSwgaW5zdGVhZCBvZiB0YWtpbmcK
KyAgICAgICAgYWxsIGl0cyBkYXRhIG1lbWJlcnMgYXMgc2VwYXJhdGUgcGFyYW1ldGVycy4KKwor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgVXNlIFNoYXJlZEJ1
ZmZlciB0eXBlIGZvciBzY3JpcHQgaW5zdGVhZCBvZiBTdHJpbmcgdHlwZSwgc28gdGhhdCB3ZSBj
YW4gaG9sZCBvbiB0aGUKKyAgICAgICAgbW1hcCdkIGRhdGEgYW5kIHJlZHVjZSBtZW1vcnkgdXNh
Z2UuCisKIDIwMjEtMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRyZXNzIHNvbWUgYWxpZ25tZW50IGlzc3VlcyBmb3VuZCBieSBVQlNhbiBpbiBjb250
ZW50ZXh0ZW5zaW9ucyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYyOTRjNmIyZjhiNmIwZjkyNGIyNjM4NTc5
ZThmZGNlYzY0MWM3ZGUuLjFhYjZlYjNmYjQ4ZWY5Y2NmODI5ZmQ0ZDAwMGU5OWI0OGNhYzY1MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28g
bXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2Mzcw
OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbjoKKyAgICAgICAgUGFzcyBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgc3RydWN0IGluIHRoZSBTZXRTY3JpcHRSZXNvdXJjZSBJUEMKKyAgICAg
ICAgZm9yIGNvbnZlbmllbmNlLiBXZSB1c2VkIHRvIHBhc3MgdGhlIEltcG9ydGVkU2NyaXB0IGRh
dGEgbWVtYmVycyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
bmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnlPbkJhY2tncm91bmRUaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
dG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucyk6CisgICAgICAgIERyb3AgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoKSBpbXBsZW1lbnRhdGlvbiBhbmQgdXNlIHRoZSBleGlzdGluZworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIGluIHd0ZiBpbnN0ZWFkLgor
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIFVwZGF0ZSBTaGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8g
ZGlzdGluZ3Vpc2ggYSBudWxsIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25l
LiBXZSBub3cgdXNlIFNoYXJlZEJ1ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQg
c291cmNlcworICAgICAgICBhbmQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNl
cyB0byBiZSBlbXB0eSAoYW5kIHRoZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0
ZXN0cykuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291
cmNlIElQQworICAgICAgICBmb3IgY29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1w
b3J0ZWRTY3JpcHQgZGF0YSBtZW1iZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMjUgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERhdGUgcGlj
a2VyIHZpZXcganVtcHMgdG8gY2VudGVyIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gTW9iaWxlU2Fm
YXJpIGFuZCBhbm90aGVyIGFwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmZWJlNDVmZThiNWU4
ZmYxYmZmMWU1MzY4ZWE1MTIxMzZhMWZmMGJlLi4zODY4Yzg4MjdmMTc1OWQwZGI2MzMwNzAyZWIw
MzRhYWRiYTc1MDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNDA4LDUgKzQwOCwxOSBAQCBT
dHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmKQogfQogI2VuZGlm
CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFPUyhXSU5ET1dTKQorYm9vbCBkZWxldGVOb25F
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBlbnRyaWVzID0g
bGlzdERpcmVjdG9yeShwYXRoLCAiKiJfcyk7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJp
ZXMpIHsKKyAgICAgICAgaWYgKGZpbGVJc0RpcmVjdG9yeShlbnRyeSwgU2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQorICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoZW50
cnkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGVGaWxlKGVudHJ5KTsKKyAgICB9
CisgICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdmNmI5YzMyMTQ3MjM4NGVmNGM0Li45MDgx
NzU1OGQzMzkwMTRjMThiMGI5MjI1NDU5OTAzMGJkOTcwNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBA
IC0xOTAsMTQgKzE5MCwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbGVuYW1lRm9y
RGlzcGxheShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgbG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5nICpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICNl
bmRpZgogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKTsKKwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFsUGF0aChjb25z
dCBTdHJpbmcmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTYWZlVG9Vc2VNZW1vcnlN
YXBGb3JQYXRoKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzVhMmYzMzVkZGE1
NTczMjg0M2RhYjAwYTYzMTg5ODRiODQ0YTZjLi5lYWFjNDQ0OGE5NzA0M2I1ZWQ4ZTA0MjlmMTU5
ZjA3YzFmMTI1MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4MSw2ICsyNjgxLDcgQEAgd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGYzNjg1Zjk1NmI2ZWIwMjYxZjQ5ZDUyMjQ1MWJjZDY5ODg3
M2YwZDUuLjQ3ZGEwM2Q0ODM3Y2JmOWQyODg0ZmQyMmVhNDEwMTdmNGEzZDc3ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NjIsNiArMTI2Miw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAq
LzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYy
NjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkw
QjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMw
N0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyog
SlNVSUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODIyNyw2ICs4MjI4LDggQEAKIAkJNDYwQ0JGMzMx
RDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNE
T01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBE
MTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3
M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcx
QyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzAzLDYgKzIwNzA2LDggQEAKIAkJCQk1MUI5MTQw
QjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVC
OTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1Qjcx
RkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1
OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTI3OCw2ICszNTI4Myw3IEBACiAJCQkJNDY2NThE
QzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEg
LyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhF
NSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2
ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4
MjUzNjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNl
cnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAu
c2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCku
c2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENv
bnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggNGQ0
NzRmMTZlNTg4ZGQwMGZiMzlkNTYwZjY0MTNjNjJhOTM4NmVmMi4uYTRiZTEwMDQwYmUyODU5MjEw
YjcyY2VkMjMxODJhZjA2NDdhNzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlRleHRS
ZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNjAs
NyArNjEsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKGlzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlw
dFJlc291cmNlKHVybCkpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRSZXNv
dXJjZS0+c2NyaXB0KTsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRCdWZmZXJU
b1N0cmluZygqc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCkpOwogICAgICAgICAgICAgbV9yZXNwb25z
ZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVzcG9u
c2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CkBAIC0xMDEsNyArMTAyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRN
SU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlw
dCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVS
TCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzdHJpbmdUb1NjcmlwdEJ1
ZmZlcihzY3JpcHQoKSksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAg
ICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cAppbmRleCAxNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5OWI1ZWRmLi4xZWE1OTAx
YmQ5ZDJmZDljNzkzYjJkNWFlMGUyNzBlODNjOGU3MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JEYXRhSWRlbnRp
ZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAorICAg
ICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsNiArNDgsMjAgQEAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7ICsraXQpCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEo
KSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NWI2OWVlMTY1ZWU0ODBhOTYxYjEw
ZjFkYmRjN2UuLjg0NTQxZDQ2MmE4YjcwYTRiMzNkM2EyMzY3MGFiYjI0NjBlNTkyYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzksMTMgKzQwLDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1
ZmZlciYpOworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29uc3QgU3Ry
aW5nJik7CisKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIHN0cnVjdCBJ
bXBvcnRlZFNjcmlwdCB7Ci0gICAgICAgIFN0cmluZyBzY3JpcHQ7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICAgICAgVVJMIHJlc3BvbnNlVVJMOwogICAgICAgICBT
dHJpbmcgbWltZVR5cGU7CiAKLSAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgeyByZXR1cm4geyBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xh
dGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIEltcG9ydGVk
U2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5jb3B5KCksIHJl
c3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CiAK
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICAgICAgewpAQCAtNTQsNyArNTgsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNjcmlwdDsKKyAgICAgICAgICAg
IE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CiAgICAgICAgICAgICBkZWNv
ZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MCw3ICs4NCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEgewogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOwotICAgIFN0cmluZyBzY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
c2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAg
ICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CkBAIC0xMjAsOCArMTI0LDkgQEAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWMKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgU3RyaW5nIHNjcmlwdDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHNjcmlwdCkpCisgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNjcmlw
dDsKKyAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0xNTcsNyArMTYyLDcgQEAgT3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAogICAg
ICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAogICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29y
a2VySWRlbnRpZmllciksCi0gICAgICAgIFdURk1vdmUoc2NyaXB0KSwKKyAgICAgICAgV1RGTW92
ZSgqc2NyaXB0KSwKICAgICAgICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwKICAgICAgICAg
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpLAogICAgICAgICBXVEZNb3ZlKHJlZmVycmVy
UG9saWN5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZDcwZjRmNWU2OTNmMjc3
ZjY1NTgzZTdhNGUwNzYxNDUzYzU0ZWZhZC4uYTY4NGM3MjBmNjgzZjNkMTBmM2EwOWQ0MjUyNzRl
NmVlYmUyNjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVz
JiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJE
ZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0g
ICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZp
Y2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwg
TW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RD
cmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0YS5zY3JpcHQsIGxvYWRlclBy
b3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVk
KCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXku
dG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKKyAg
ICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vydmlj
ZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBN
b25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENy
ZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBzY3JpcHRCdWZmZXJUb1N0cmluZyhk
YXRhLnNjcmlwdCksIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBk
YXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwg
aWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNy
ZWF0ZUFsbEVuYWJsZWQoKSkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVkQ29weSgpKQogICAg
ICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hh
cmVkKCkpCiAgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpLT5zaG91bGRVc2VTaG9ydFRpbWVvdXQoKSA/IGhlYXJ0QmVhdFRp
bWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKaW5kZXggY2VlOGNjOGMwOGJlMGIxYjdmNTQxMTBhNmNiMzE3NDZlOTg5NGIxNC4uN2IyNzAw
ZjgzMzg3NjVmYTE0YjczODJmZTI4NTE0N2Y5NzI0MGQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRh
YmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rp
b24uaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTV1NlcnZlci5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CkBAIC00OSw3ICs1MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1Oworc3RhdGljIGNvbnN0IHVpbnQ2
NF90IHNjaGVtYVZlcnNpb24gPSA2OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29yZHNUYWJs
ZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYxLDcgKzYyLDYgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5h
bWUpCiAgICAgICAgICIsIGxhc3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCIKICAgICAgICAgIiwgd29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCiAgICAgICAgICIsIGNvbnRlbnRTZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCIKQEAgLTEwNyw2ICsxMDcsNTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNs
ZWFuT2xkRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgICAg
IFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGRhdGFiYXNlRmlsZW5hbWVGcm9t
VmVyc2lvbih2ZXJzaW9uKSkpOwogfQogCitzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVz
IHsKKyAgICBVUkwgcmVzcG9uc2VVUkw7CisgICAgU3RyaW5nIG1pbWVUeXBlOworCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7CisgICAg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVk
U2NyaXB0QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAg
ICBPcHRpb25hbDxVUkw+IHJlc3BvbnNlVVJMOworICAgICAgICBkZWNvZGVyID4+IHJlc3BvbnNl
VVJMOworICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAgICAgICBk
ZWNvZGVyID4+IG1pbWVUeXBlOworICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdU
Rk1vdmUoKnJlc3BvbnNlVVJMKSwKKyAgICAgICAgICAgIFdURk1vdmUoKm1pbWVUeXBlKQorICAg
ICAgICB9fTsKKyAgICB9Cit9OworCitzdGF0aWMgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0
QXR0cmlidXRlcz4gc3RyaXBTY3JpcHRTb3VyY2VzKGNvbnN0IEhhc2hNYXA8VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYgbWFwKQoreworICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IG1hcFdpdGhvdXRTY3JpcHRzOworICAgIGZv
ciAoYXV0byYgcGFpciA6IG1hcCkKKyAgICAgICAgbWFwV2l0aG91dFNjcmlwdHMuYWRkKHBhaXIu
a2V5LCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgeyBwYWlyLnZhbHVlLnJlc3BvbnNlVVJMLCBw
YWlyLnZhbHVlLm1pbWVUeXBlIH0pOworICAgIHJldHVybiBtYXBXaXRob3V0U2NyaXB0czsKK30K
Kworc3RhdGljIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhTV1NjcmlwdFN0b3JhZ2UmIHNj
cmlwdFN0b3JhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4mJiBtYXApCit7
CisgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+IGltcG9ydGVkU2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApIHsKKyAgICAg
ICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UucmV0cmlldmUocmVnaXN0cmF0
aW9uS2V5LCBwYWlyLmtleSk7CisgICAgICAgIGlmICghaW1wb3J0ZWRTY3JpcHQpIHsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRh
YmFzZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2s6IEZhaWxlZCB0byByZXRyaWV2ZSBp
bXBvcnRlZCBzY3JpcHQgZm9yICVzIGZyb20gZGlzayIsIHBhaXIua2V5LnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaW1w
b3J0ZWRTY3JpcHRzLmFkZChwYWlyLmtleSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdCB7IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpLCBXVEZNb3ZlKHBhaXIudmFsdWUu
cmVzcG9uc2VVUkwpLCBXVEZNb3ZlKHBhaXIudmFsdWUubWltZVR5cGUpIH0pOworICAgIH0KKyAg
ICByZXR1cm4gaW1wb3J0ZWRTY3JpcHRzOworfQorCiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2UoUmVnaXN0cmF0aW9uU3RvcmUmIHN0b3JlLCBTdHJpbmcmJiBkYXRh
YmFzZURpcmVjdG9yeSkKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJTZXJ2
aWNlV29ya2VyIEkvTyBUaHJlYWQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCkpCiAgICAgLCBt
X3N0b3JlKG1ha2VXZWFrUHRyKHN0b3JlKSkKQEAgLTEyNCw5ICsxNzQsOSBAQCBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFiYXNlIG5lZWRzIHRvIGJlIGRlc3Ryb3llZCBv
biB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgaWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1f
d29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpXSB7IH0p
OworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlwdFN0b3JhZ2UgbmVlZCB0byBiZSBkZXN0cm95
ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgIGlmIChtX2RhdGFiYXNlIHx8IG1fc2Ny
aXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdU
Rk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3JhZ2UgPSBXVEZNb3ZlKG1fc2NyaXB0U3RvcmFn
ZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnBvc3RUYXNrVG9Xb3Jr
UXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCkBAIC0xODUsNiArMjM1LDE5IEBAIGJvb2wg
UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1
bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU3RyaW5nIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RhdGFiYXNlRGlyZWN0b3J5LCB7
ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dTY3JpcHRTdG9yYWdlJiBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG1h
a2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkpOworICAg
IHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwpAQCAtMzMzLDggKzM5NiwxMCBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVh
ckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogewogICAg
IHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxs
cHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlRmlsZVBhdGgpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShzY3JpcHRTdG9yYWdlRGly
ZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNl
RGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMzUyLDEyICs0
MTcsMTMgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBW
ZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAg
IFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZB
TFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOworICAgIFNR
TGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVF
UyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgIGlmIChzcWwu
cHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2
aWNlV29ya2VyLCAiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJlZ2lzdHJh
dGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgYXV0byYgc2NyaXB0U3RvcmFnZSA9IHRoaXMtPnNjcmlwdFN0b3Jh
Z2UoKTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IHJlbW92ZWRSZWdpc3RyYXRpb25z
KSB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJERUxFVEUgRlJP
TSBSZWNvcmRzIFdIRVJFIGtleSA9ID8iKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCkBAIC0zNjYsMTQgKzQzMiwxNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+Jgog
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBy
ZW1vdmUgcmVnaXN0cmF0aW9uIGRhdGEgZnJvbSByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgc2NyaXB0U3RvcmFnZS5j
bGVhcihyZWdpc3RyYXRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZGF0YSA6IHVwZGF0
ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgY3Nw
RW5jb2RlcjsKICAgICAgICAgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3kuZW5jb2RlKGNzcEVu
Y29kZXIpOwogCisgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGVuY29kZSB0aGUgc2NyaXB0
IHNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlLiBUaGV5IHdpbGwgYmUgc3RvcmVkIHNlcGFyYXRlbHkg
aW4gdGhlIFNjcmlwdFN0b3JhZ2UuCisgICAgICAgIC8vIEFzIGEgcmVzdWx0LCB3ZSBuZWVkIHRv
IHN0cmlwIHRoZSBzY3JpcHQgc291cmNlcyBoZXJlIGJlZm9yZSBlbmNvZGluZyB0aGUgc2NyaXB0
UmVzb3VyY2VNYXAuCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgc2NyaXB0UmVz
b3VyY2VNYXBFbmNvZGVyOwotICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIgPDwgZGF0
YS5zY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8
IHN0cmlwU2NyaXB0U291cmNlcyhkYXRhLnNjcmlwdFJlc291cmNlTWFwKTsKIAogICAgICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNlcnRpZmljYXRlSW5mb0VuY29kZXI7CiAgICAgICAg
IGNlcnRpZmljYXRlSW5mb0VuY29kZXIgPDwgZGF0YS5jZXJ0aWZpY2F0ZUluZm87CkBAIC0zODUs
MjEgKzQ1NCwyNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAgfHwgc3Fs
LmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5iaW5k
VGV4dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZp
YUNhY2hlKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoNywgZGF0
YS5zY3JpcHRVUkwuc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJp
bmRUZXh0KDgsIGRhdGEuc2NyaXB0KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5i
aW5kVGV4dCg5LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTAsIGNzcEVuY29kZXIuYnVmZmVyKCks
IGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNx
bC5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIo
KSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTMsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVm
ZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53
b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoOSwg
Y3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9P
SworICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDEwLCBkYXRhLnJlZmVycmVyUG9saWN5KSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMSwgc2NyaXB0UmVzb3Vy
Y2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMiwgY2VydGlm
aWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXJT
aXplKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLnN0ZXAoKSAhPSBTUUxJVEVf
RE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZh
aWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFNh
dmUgc2NyaXB0cyB0byBkaXNrLgorICAgICAgICBib29sIHN1Y2Nlc3MgPSBzY3JpcHRTdG9yYWdl
LnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5zY3JpcHRVUkwsIGRhdGEuc2NyaXB0
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKKyAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgc3Vj
Y2VzcyA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtl
eSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vz
cywgc3VjY2Vzcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQo
KTsKLQotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lz
dHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1
IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVt
b3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVk
L3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVw
ZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQ4Miw3IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRh
YmFzZSwgIlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJs
ZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5MCw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBm
b3IgKDsgcmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0
YWJhc2VLZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9
IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3Bl
UGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs0OTksNjggQEAgU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0
VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5E
b3VibGUoNCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVW
aWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0g
VVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0
ID0gc3FsLmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmlu
Z1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2Vy
VHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7Cisg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YSk7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250
ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5z
aXplKCkpOwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0
eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAg
ICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAg
T3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFw
OwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBE
ZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0
YS5zaXplKCkpOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewot
ICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFw
OwotICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlv
bmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJj
ZU1hcFdpdGhvdXRTY3JpcHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVy
ID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJl
Y29yZHM6IEZhaWxlZCB0byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRT
dG9yYWdlKCksICprZXksIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMp
KTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9E
YXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUlu
Zm9EYXRhKTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNh
dGVJbmZvRGF0YSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJ
bmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0
YS5zaXplKCkpOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRl
SW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
Y2VydGlmaWNhdGVJbmZvIik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAg
ICAgIC8vIElmIGFueSBwYXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0
aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4g
ZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkKKyAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdp
biB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5
cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBG
YWlsZWQgdG8gZGVjb2RlIHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3Jh
Z2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsK
KyAgICAgICAgaWYgKCFzY3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVk
IHRvIHJldHJpZXZlIG1haW4gc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0
byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmll
ciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUs
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRh
dGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VX
b3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNv
bnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklk
ZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RG
TW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdU
Rk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291
cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50
aWZpZXIsIHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8p
LCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5
KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRp
b25Ub1N0b3JlKFdURk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaApp
bmRleCBkNmFlZDZiNDBlNjA0NjI2ZTNhMWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2
MjFkYjM0Mjg3N2FmMzRjNzFlNDViOThiOTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0
aW9uU3RvcmU7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsK
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlyZWN0b3J5KTsKQEAgLTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGltcG9ydFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiYpOworICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOwor
ICAgIFN0cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBs
aWVzIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRp
b25TdG9yZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBt
X3NjcmlwdFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM4OGMzYzgwZGFm
MmFjMWQzZDkzM2M0M2NkOGYwZmYzMTA2Yzk0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMCww
ICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
V1NjcmlwdFN0b3JhZ2UuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcgaGFzaFVSTChjb25zdCBVUkwmIHVybCkK
K3sKKyAgICBTSEExIHNoYTE7CisgICAgc2hhMS5hZGRCeXRlcyh1cmwuc3RyaW5nKCkudXRmOCgp
KTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzaGExLmNvbXB1dGVIZXhEaWdlc3QoKSk7
Cit9CisKK1NXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KQorICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpyZWdpc3RyYXRpb25E
aXJlY3RvcnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5KSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKG1fZGlyZWN0b3J5LCB7IHJlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKS5kYXRhYmFz
ZUlkZW50aWZpZXIoKSwgaGFzaFVSTChyZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisK
K1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29u
c3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Z2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkpLCBoYXNoVVJMKHNjcmlwdFVSTCkp
OworfQorCitib29sIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisKKyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktl
eSwgc2NyaXB0VVJMKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5
c3RlbTo6ZGlyZWN0b3J5TmFtZShzY3JpcHRQYXRoKSk7CisKKyAgICBhdXRvIGZpbGVIYW5kbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OldyaXRlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRs
ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNjcmlwdFN0
b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBpbnZhbGlkIGhhbmRsZSIsIHNjcmlw
dFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoZmlsZUhhbmRsZSwgMCk7CisgICAgZm9yIChhdXRv
IGl0ID0gc2NyaXB0LmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5lbmQoKTsgKytpdCkKKyAgICAgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgaXQtPnNlZ21lbnQtPmRhdGEoKSwg
aXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNXU2Ny
aXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgo
cmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworCisgICAgLy8gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoKSB1c2VzIG1tYXAoKSB3aGVuZXZlciBwb3NzaWJsZSB0byBz
YXZlIG1lbW9yeS4KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2NyaXB0UGF0aCk7Cit9CisKK3ZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCit7CisgICAg
YXV0byByZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5yZWdpc3RyYXRpb25EaXJlY3Rvcnko
cmVnaXN0cmF0aW9uS2V5KTsKKyAgICBib29sIHJlc3VsdCA9IEZpbGVTeXN0ZW06OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7CisgICAgUkVMRUFTRV9MT0df
RVJST1JfSUYoIXJlc3VsdCwgU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6Y2xlYXI6
IEZhaWx1cmUgdG8gY2xlYXIgc2NyaXB0cyBmb3IgcmVnaXN0cmF0aW9uICVzIiwgcmVnaXN0cmF0
aW9uS2V5LnRvRGF0YWJhc2VLZXkoKS51dGY4KCkuZGF0YSgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzMyN2QxY2M3NDM4NjE4YTU0MzhjZGE0YzcyYWU0MDljMWIzYzYxNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgU1dTY3JpcHRTdG9yYWdlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTV1Nj
cmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOworCisgICAgYm9vbCBzdG9yZShj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYpOworCitwcml2YXRlOgorICAgIFN0cmluZyByZWdpc3RyYXRpb25EaXJlY3RvcnkoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGNvbnN0OworICAgIFN0cmluZyBzY3Jp
cHRQYXRoKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNj
cmlwdFVSTCkgY29uc3Q7CisKKyAgICBTdHJpbmcgbV9kaXJlY3Rvcnk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmlu
ZGV4IDBlZjAwOGZiNTYwNzgxZDMwYWJkYjRhOTk3ZDY0ZjFkNjU4Njk0YjMuLjQyMjljYjc1YjI1
MGI3MTMxNDgzMTg3YjExYTZmYjViZDgxZmNlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAg
dm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKIAogdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNj
cmlwdFJlc291cmNlTWFwKQogewotICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJ
bmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZh
bHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4
dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lz
dHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJp
bmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQpLCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApIH0pOwogfQogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERh
dGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmlu
ZGV4IDgwMmE0ODAxMTUxYTcyOGZiYzVhMmE2OTEyNGRiOTYzYzc3MmNiMGEuLjVjYTI1MjY5MTE0
NTNkYjA4ZjFmOGYyODMyZGJjNDA0NWU2NGFhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hl
ZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsCiAgICAgLy8gSWYgbmV3ZXN0
V29ya2VyIGlzIG5vdCBudWxsLCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgdXJsIGVxdWFscyBqb2In
cyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzCiAgICAgLy8gZmxhZyBzZXQs
IGFuZCBzY3JpcHQncyBzb3VyY2UgdGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUgbWF0Y2ggd2l0aCBu
ZXdlc3RXb3JrZXIncyBzY3JpcHQgcmVzb3VyY2UncyBzb3VyY2UKICAgICAvLyB0ZXh0LCB0aGVu
OgotICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3Jr
ZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IG5ld2VzdFdv
cmtlci0+c2NyaXB0KCkgJiYgZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJ
bmZvLCBuZXdlc3RXb3JrZXItPmNlcnRpZmljYXRlSW5mbygpKSkgeworICAgIGlmIChuZXdlc3RX
b3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNj
cmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iu
d29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG5ld2Vz
dFdvcmtlci0+c2NyaXB0KCkpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRpZmlj
YXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKICAgICAgICAgUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0
Y2hGaW5pc2hlZCwgc2NyaXB0IGFuZCBjZXJ0aWZpY2F0ZSBhcmUgbWF0Y2hpbmcgZm9yIHJlZ2lz
dHJhdGlvbklEPSVsbHUiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKICAgICAgICAgLy8gRklYTUU6IGZvciBub24gY2xhc3NpYyBzY3JpcHRzLCBjaGVjayB0
aGUgc2NyaXB04oCZcyBtb2R1bGUgcmVjb3JkJ3MgW1tFQ01BU2NyaXB0Q29kZV1dLgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMmI4ZmY2ODVlMDQ5Nzlm
Y2RjNzNlNzMyMGRmM2Y0ZGE2NGM3NjJkZi4uMTIwMDUxNjk4YmY5Mzk4MThlNGQ0M2U4NWM2OTU3
MzAwYmE3ZGNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApA
QCAtMTE2LDEwICsxMTYsMTAgQEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNr
aXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3IKICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0
U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0LCBVUkwmJiByZXNwb25zZVVS
TCwgU3RyaW5nJiYgbWltZVR5cGUpCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
c2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdCYmIHNjcmlwdCkKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJX
b3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpCi0gICAgICAgIHdvcmtlci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92ZShzY3JpcHRVUkwp
LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgV1RGTW92ZShzY3Jp
cHQpLCBXVEZNb3ZlKHJlc3BvbnNlVVJMKSwgV1RGTW92ZShtaW1lVHlwZSkgfSk7CisgICAgICAg
IHdvcmtlci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92ZShzY3JpcHRVUkwpLCBXVEZNb3ZlKHNj
cmlwdCkpOwogfQogCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmFpbEhl
YXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA0NjU5ZjlmOWZhNmM2YmFhOGRlOTY4
ZDM5MTVmZTMzYzRlMzEyNjY4Li45YmUzNDQ0OTFmMDYxM2ZhZTE0MGU3OTg1MWI3MTBhM2IzMmIy
YjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRp
Zmllcih1aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJM
LCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRS
ZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAog
ICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggM2JhMzZh
M2Y5NWE1N2ViYTE3ODU4Y2U2MmRlZWU3OGFjOWE2NjcwNS4uZDU5N2U4ZTQyYzk0MWVmOGY0YWE2
MWQ0YzJkOWFjYWY2NDVmOWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
U1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZp
ZXIoU2VydmljZVdvcmtlcklkZW50aWYKIH0KIAogLy8gRklYTUU6IFVzZSByLXZhbHVlIHJlZmVy
ZW5jZXMgZm9yIHNjcmlwdCBhbmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1TV1NlcnZlcldvcmtl
cjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
IHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmlu
ZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQorU1dTZXJ2ZXJXb3JrZXI6OlNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZl
cnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKICAgICA6IG1fc2VydmVyKG1ha2VXZWFrUHRyKHNl
cnZlcikpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb24ua2V5KCkpCiAgICAg
LCBtX3JlZ2lzdHJhdGlvbihtYWtlV2Vha1B0cihyZWdpc3RyYXRpb24pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmlu
ZGV4IDM3OGZiYTY1N2U4YmJmNDg0MWU1NmNiZjg2NTYxZjhlY2MzMTEwMjAuLmQyN2Y3M2YyMWYz
ZjI0YjcyMjcwOWZhZmFiYjZkNGMyY2E1MjdmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgIFNXU2VydmVyKiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlci5n
ZXQoKTsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9CiAgICAgY29uc3Qg
VVJMJiBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2NyaXB0VVJMOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQorICAgIFNo
YXJlZEJ1ZmZlciYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBjb25z
dCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2Vy
dGlmaWNhdGVJbmZvOyB9CiAgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLnR5cGU7IH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZh
aWxIZWFydEJlYXRDaGVjaygpOwogCiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKFNXU2Vy
dmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBT
V1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBj
b25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0PiYmKTsKIAogICAgIHZvaWQgY2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVyKGJv
b2wgc3VjY2Vzcyk7CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgV2Vha1B0cjxTV1Nl
cnZlclJlZ2lzdHJhdGlvbj4gbV9yZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlckRhdGEg
bV9kYXRhOwotICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3Nj
cmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIG1fY29udGVudFNlY3VyaXR5UG9saWN5Owog
ICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZjNiNzVh
NWViYTNmZDczZjUyNjg0NDYxMjM5Nzg1ZTU0NDY5MzdhMi4uZDhkOTQzNDA4NDVkZDg1YjM2ZGM4
OTI5YWIxZTYyNzE4ODkzMjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVk
IHsKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlv
bnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVz
dWx0KSBBc3luYwotICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCBy
ZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKQorICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQog
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0
Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcAppbmRleCBhYjdhYmMyNTc2NWFkNDI4ZjJhMTU3YzYxNzk0ZDIyNTg2MTdi
YjQ3Li4yZWEyODQwMDk2NDQ5MGZkYmJlNTcwYTA4YjJmYzBjMjhhMzcyMWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVz
RnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKICAgICAgICAgZm9y
IChhdXRvJiBmaWxlbmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkg
ewogICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwg
RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQotICAgICAgICAgICAg
ICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAgICAg
IH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICB9KTsKQEAgLTc0OSwxOCArNzQ5LDE4IEBAIHZvaWQgRW5naW5lOjpjbGVh
ckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZm9s
ZGVyUGF0CiAKICAgICAgICAgICAgIC8vIElmIGNhY2hlIHNhbHQgaXMgaW5pdGlhbGl6ZWQgYW5k
IHRoZSBwYXRocyBkbyBub3QgbWF0Y2gsIHNvbWUgY2FjaGUgZmlsZXMgaGF2ZSBwcm9iYWJseSBi
ZSByZW1vdmVkIG9yIHBhcnRpYWxseSBjb3JydXB0ZWQuCiAgICAgICAgICAgICBBU1NFUlQoIW1f
c2FsdCB8fCBmb2xkZXJQYXRoID09IGNhY2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmlnaW4pKTsKLSAg
ICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGZv
bGRlclBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRv
cildIHsgfSk7CisgICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3Vu
ZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFj
a0FnZ3JlZ2F0b3IpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRW5naW5l
OjpkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJp
bmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChj
b25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1
ZXVlLT5kaXNwYXRjaChbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7Ci0gICAgICAgIGRlbGV0ZURpcmVj
dG9yeVJlY3Vyc2l2ZWx5KHBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeShwYXRoKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXggMTk0
NGE1Yzc5MmQ4ZDc5OWUyOWRhYmM4NDY2NjdiNjY4NjJiYjdmOS4uNDQwOWU3YjQ5NmFiOGNmNjQ2
YzlhMGZmYWVkZjU3MzRjMGZmMWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXNrKGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJp
bmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVO
b25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDdhMGVjNWUxNGYzM2RlMDQyY2RmNDRi
MGZiYTQyM2NjOWRkN2FmYzUuLjdhOTk2MTRmMjMzNWIxNTBjOWNhYjIyMmM5MzVkMGJiZWY2OWM4
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcApAQCAtNjIsMjMgKzYyLDYgQEAgdm9pZCB0
cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIEQKICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhdGgs
IFsmcGF0aF0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewot
ICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHBhdGgsIG5hbWUpOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGVudHJ5UGF0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJl
Y3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeToKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJl
Y3Vyc2l2ZWx5KGVudHJ5UGF0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgLy8gVGhp
cyBkb2Vzbid0IGZvbGxvdyBzeW1saW5rcy4KLSAgICAgICAgfQotICAgIH0pOwotICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwotfQotCiBGaWxlVGltZXMgZmlsZVRp
bWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICNpZiBIQVZFKFNUQVRfQklSVEhUSU1FKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaAppbmRleCA3YTVmOGNjNGZlMzhhOTU2MWNlMWM4YjYxYzEwYzc0Nzlj
YTg3NDJmLi5jMGI0ZTgxYjQ3Mzc1YTA3ZmY5OWJlYjQyMTBkYTAxNTgyMmM3MzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaApAQCAtMzMsOCArMzMsNiBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKIGVudW0gY2xhc3MgRGlyZWN0b3J5RW50cnlUeXBlIHsgRGlyZWN0b3J5LCBGaWxlIH07CiB2
b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlKT4mKTsKIAot
dm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpOwotCiBz
dHJ1Y3QgRmlsZVRpbWVzIHsKICAgICBXYWxsVGltZSBjcmVhdGlvbjsKICAgICBXYWxsVGltZSBt
b2RpZmljYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBlZGRjMGJlMjllMGUyYzZkMjAy
NWE5NmIyNWVjMWU1NmM0OGFmOGQ2Li5kYjRjMDU0OWM2YmJlYjgwM2I2NmYwZTMxNDUxOWJlNTgy
OTI1YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3
dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KICNpbmNsdWRlIDx3dGYvUmFu
ZG9tTnVtYmVyLmg+CkBAIC0xMTkzLDcgKzExOTQsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0ZU9s
ZFZlcnNpb25zKCkKICAgICAgICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKICAgICAg
ICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBkZWxldGlu
ZyBvbGQgY2FjaGUgdmVyc2lvbiwgcGF0aCAlcyIsIG9sZFZlcnNpb25QYXRoLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShvbGRWZXJzaW9u
UGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShv
bGRWZXJzaW9uUGF0aCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMjgwYzk4NDNjNjdlOWQ1
ODVhMDM4NTc0ODUzYjI5MDZhMzMxMDliYS4uODU2MWU5NGMwOWExYTliNDlhMGYwYjJmODAyY2E2
OTg2Y2NmYTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0xMjIsNyArMTIyLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKLSAgICB1aW50NjRfdCBidWZmZXJTaXplID0gYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiAwOworICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsKKyAgICBl
bmNvZGVyIDw8IGlzTnVsbDsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm47CisKKyAg
ICB1aW50NjRfdCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAgICAgZW5jb2RlciA8PCBi
dWZmZXJTaXplOwogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0
LDEyICsxNDksMjQgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogCiBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CisgICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAg
IGRlY29kZXIgPj4gaXNOdWxsOworICAgIGlmICghaXNOdWxsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoKmlzTnVsbCkgeworICAgICAgICBidWZmZXIgPSBudWxscHRyOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICB1aW50NjRfdCBidWZmZXJTaXplID0gMDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIWJ1ZmZlclNpemUpCisgICAgaWYgKCFidWZmZXJTaXplKSB7CisgICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIGlmICghZGVjb2Rl
ci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQyZjM3OWJhMWJiZmUwZDZjYWNk
ZDk5NGNkMGQ5ZmE4MDg1YjUyY2UuLmUxNDFiZjMxZDdjZDdjY2E1MmY0MDRhZGZlYmM3NGE3YjEx
NmIxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI5MCw3ICsy
OTAsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpza2lwV2FpdGluZyhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlVwogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmIHNjcmlwdCkKIHsKLSAgICBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVy
bCwgc2NyaXB0LnNjcmlwdCwgc2NyaXB0LnJlc3BvbnNlVVJMLCBzY3JpcHQubWltZVR5cGUgfSwg
MCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTZXRTY3JpcHRSZXNvdXJjZSB7IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCB1cmwsIHNjcmlwdCB9LCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2Zjc3ZjcwZGZkZTg1NTgzZTNiZTFhZmE1NDMxMzky
ODFiZmI4ZDkzLi4zODQ3MjRkZmM2M2FkM2ZjNGViOGM2NWY0YThhNTgzZTU5NDdkMzg0IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5l
dHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAg
ICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZSBmb3IgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkoKS4gSXQgaXMgbm90IGEgbmV3IEFQSSBidXQgaXQKKyAgICAgICAgaGFkIG5vIHRl
c3RzLCBpdCB1c2VkIG1vcmUgaW4gdGhpcyBwYXRjaCBhbmQgd2Ugbm93IGhhdmUgYW4gaW1wbGVt
ZW50YXRpb24gb24gYWxsIHN1cHBvcnRlZAorICAgICAgICBwbGF0Zm9ybXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbToK
KyAgICAgICAgLSBUd2VhayBzZXJ2aWNlIHdvcmtlciB0ZXN0cyBzbyB0aGF0IHRoZXkgZXhwZWN0
IGEgdmVyc2lvbiA2IGRhdGFiYXNlIGluc3RlYWQgb2YgdmVyc2lvbiA1LAorICAgICAgICAgIHNp
bmNlIEkgdXBkYXRlZCB0aGUgZGF0YWJhc2Ugc2NoZW1lIGFuZCBidW1wZWQgdGhlIHZlcnNpb24u
CisgICAgICAgIC0gVXBkYXRlIHRlc3QgdGhhdCB3YXMgcmVseWluZyBvbiBhIHByZS1iYWtlZCBz
ZXJ2aWNlIHdvcmtlciBkYXRhYmFzZSBmaWxlICh3aXRoIG9sZCBzY2hlbWEpIGFuZAorICAgICAg
ICAgIGhhdmUgaXQgZHluYW1pY2FsbHkgZ2VuZXJhdGUgdGhlIGRhdGFiYXNlIGluc3RlYWQgYnkg
bG9hZGluZyBhIHBhZ2UgdGhhdCByZWdpc3RlcnMgYSBzZXJ2aWNlCisgICAgICAgICAgd29ya2Vy
LgorCiAyMDIxLTAzLTI1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBDTTogUmVuYW1lIGF0dHJpYnV0ZU9uIHRvIGF0dHJpYnV0aW9uRGVzdGluYXRpb24g
YW5kIGNoYW5nZSB0aGUgSURMIGRhdGEgdHlwZSBvZiBhdHRyaWJ1dGlvblNvdXJjZUlkIHRvIHVu
c2lnbmVkIGxvbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQxNTM3N2VjM2UxNjQzZTdl
ZTY1Y2U2ODgyMTE0Yjk1NTYyMTFmYy4uNDUyODQ2NTJiMzcwMWI2MGU1MmYyNThkNDM0MzA0ZTQ3
OGJkZWVhZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2OSw3ICsyNjksNiBAQAogCQk0
NkE0NEE1NDI1QTc4MzAzMDBGNjFFMTYgLyogd2ViYXVkaW8tY3JlYXRlTWVkaWFFbGVtZW50U291
cmNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBNDRBNTMyNUE3ODJERDAwRjYxRTE2IC8qIHdlYmF1ZGlvLWNyZWF0ZU1lZGlhRWxl
bWVudFNvdXJjZS5odG1sICovOyB9OwogCQk0NkE0NkExQTI1NzU2NDU2MDBBMUIxMTggLyogU2Vz
c2lvblN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkE0NkExOTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gKi87IH07
CiAJCTQ2QTkxMTU5MjEwOEU2NzgwMDc4RDQwRCAvKiBDdXN0b21Vc2VyQWdlbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE5MTE1ODIxMDhFNjZC
MDA3OEQ0MEQgLyogQ3VzdG9tVXNlckFnZW50Lm1tICovOyB9OwotCQk0NkFFNUEzNzIwRjkwNjZE
MDBFMDg3M0UgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTZB
NzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00
LnNxbGl0ZTMgKi87IH07CiAJCTQ2QkJFQTFCMjVGOTgzNTcwMEQ0OTg3QSAvKiBXb3JrUXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNkEx
NTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCTQ2QzFFQTk4MjU3
NTg4MjAwMDVFNDA5RSAvKiBhbGVydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzFFQTk3MjU3NTg4MDUwMDVFNDA5RSAvKiBhbGVy
dC5odG1sICovOyB9OwogCQk0NkMzQUVCMzIzRDBFNTI5MDAxQjA2ODAgLyogYmVmb3JldW5sb2Fk
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDM0FFQjIyM0QwRTUwRjAwMUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sICovOyB9OwpA
QCAtMTY0Miw3ICsxNjQxLDYgQEAKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2lt
cGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhC
M0UxIC8qIHNpbXBsZTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5
MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJ
CTQ2QUU1QTM3MjBGOTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkQxRDRDMEQx
QzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNl
YmFyLXNjcm9sbGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5
RkM5RTQwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAt
MjAyNyw3ICsyMDI1LDYgQEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxp
dHlTdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2li
aWxpdHlTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJB
M0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2NTZB
NzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00
LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBwYXRoID0gIlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRl
MyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4
NyAvKiBHUFVQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIy
MTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZE
IC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdl
dFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMDQs
NyArNDAwMSw2IEBACiAJCQkJRjRFM0Q4MDcyMEY3MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50
LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAqLywKIAkJCQlGNEZDMDc3NjIwRjAxMDgxMDBD
QTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLywKIAkJCQlDOUI0QUQy
OTFFQ0E2RUE1MDBGNUZFQTAgLyogc2lsZW5jZS1sb25nLm00YSAqLywKLQkJCQk0NjU2QTc1NzIw
RjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxp
dGUzICovLAogCQkJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlp
bmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJCUY0Q0ZDREQ4MjQ5RkM5RDkwMDUyNzQ4
MiAvKiBTcGFjZU9ubHkub3RmICovLAogCQkJCTkzNjAyNzA1MjVBM0IyOEUwMDM2NzY3MCAvKiBz
cGVlY2hyZWNvZ25pdGlvbi1iYXNpYy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA3NmNhZjJhZDQzNzI2NjNkMmJlMzExYmNmYjYz
YTA0ZDBjMGQwMWY2Li44ZjY1MWQzZWFlMzQzMjk3NTFhYzM2MWRkN2UwNjRjYjYzN2UzNzUyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMTUx
LDQgKzE1MSwyOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRG
YWlsSWZGaWxlRXhpc3RzKQogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGhhbmRsZSkpOwogfQogCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KQoreworICAgIGF1dG8gY3JlYXRlVGVzdFRpbGUgPSBbXShjb25zdCBTdHJpbmcm
IHBhdGgpIHsKKyAgICAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgICAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworICAgIH07CisKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
dGVtcG9yYXJ5RmlsZTsKKyAgICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9y
YXJ5RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGUpOworCisg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVy
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAi
c3ViZm9sZGVyIiB9KSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAg
IGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
b3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAi
c3ViZm9sZGVyIiwgImZpbGUzLnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3Vi
Zm9sZGVyIiwgImZpbGU0LnR4dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVz
dEZvbGRlcikpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBv
cmFyeVRlc3RGb2xkZXIpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRh
Yzk2ZmE3YzczYTg0MjJhNGM0ZThmZjdlNjEwNWU5ZTg4MGRmLi4yMzc4OGVhZTE0MzY3YWUyZjFh
NDE2NGViNGM5ZmJhMTQzMDk0NDcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTk1Niw3
ICsxOTU2LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZXNzKQog
ICAgIGF1dG8gcGF0aCA9IHN0b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5LnBhdGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRo
ID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0
b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zLTYuc3FsaXRlMyJdOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMTk4Myw3
ICsxOTgzLDcgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRz
VGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKIAogICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQ
YXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6
dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02
LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwpAQCAtMjM1NSw2ICsyMzU1
LDc3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIENsZWFyRE9NQ2FjaGVBbHNvSW5jbHVkZXNTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucykKICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKIH0K
IAorVEVTVChTZXJ2aWNlV29ya2VycywgQ3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0
aW9uSGFuZGxlcnMpCit7CisgICAgTlNVUkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2Vi
S2l0L1NlcnZpY2VXb3JrZXJzLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOworICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBl
cnJvcjpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKKworICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKworICAgIGF1
dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9
IHN3UGF0aDsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOworCisgICAgYXV0byBtZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBTZXJ2aWNlV29ya2Vy
VENQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAor
ICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICB9
KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJd
LnBhdGhdICYmICsrdGltZW91dCA8IDIwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
bGVlcCgwLjEpOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdKTsKKworICAgIC8v
IEZldGNoIFNXIHJlY29yZHMKKyAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtb
TlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zXV0pOworICAgIHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsKKyAg
ICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRh
dGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOwor
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKKworICAgIC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNpbmcg
b3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBm
bGlnaHQuCisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0
YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRz
LmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBk
YXRhU3RvcmUgPSBuaWw7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29u
dGludWUpOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gRGVsZXRlIGFs
bCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3
aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisgICAgZGF0YVN0b3JlID0gYWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlYWR5VG9Db250aW51
ZSA9IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKKworICAgIC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5k
IHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCisgICAgLy8gTm93IHJlZmV0Y2gg
dGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCisgICAgZGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAg
ICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9D
b250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWFkeVRvQ29udGludWUpOworfQorCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2Fj
aGUpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucy00LnNxbGl0ZTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMDVk
YzQ2ZTNhMmNjZWIzNGVmOWE3NjhjZDA5ZWIzZDhhZjI0MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmxpdGVyYWwgMjA0ODAKemNtZUhPY359IXkqVXZfUDVNJmpRTWFQOXJBaH1fOExxZHB2dldT
MnZCNkxVd0dNYkg8Ml5jTF5xb1AqcGc4UFB1CnpYc3VoLXk2Kn1xUiZDdl9iPVNKclQxQmdNc28k
TjFBWHI9NEBBO25oZDtpR2JXYlNoQUo/SC1KejMwdzNYVXNAWAp6I3dpUmIpRFM5XkxjJG8xMz5K
JEtpeSNhSmc5VUZaYyQrVUtPbU5IQF9Ad2kjVGBZem05STx6SiR6YSg+RnpoMjcKemo8KGpvUWcx
PVBmYEExOTNqITdkRUNeVC11cG5TVHo9RDdVZiZWSDVDTzkjei1NemUrbGwyckBwdWA0WEc3VFhv
Cno4eV9zbTBJNGByaWUhcjhsQkd5dkFyZGVnKDw3UEVMNzdOdThvYVpUbGFhSmtNM1I9O0NwayV5
aVMhWENCX21tPgp6TiRGWUE3VWN0XntnY0hLWCl2TjhARkhCQE4pTiNaRGJyfU50TzNjYjU+Z3Ml
K0NTQDNpSVA7N1IqcTdiTTFqZU0KelhXfVhoaUJIUi0ybHRtbDJ9WDNyNzZXbHFnMzEoRnRLeUl7
MEBxVWlMfnMqanN+d2hWaH5YSEtzbkBwN1RjJU17CnpuM35HS1dJNig7XiErdFRUJjczamxHRWI7
WmghPDxoIUYldkc/TUBRKVkyMH00eyFpUllJS0FRT0ZefSpHTFReZQp6ZyV7Izcyei0qZFB9MiYx
VTxpeHJGN3skRmFKM3Y4S143fmFSaUJVUUQyKnxuLT8kOShNVTRxSSspcDwycDBiQkcKeig+OXBf
fDUre3owdX1AOzJ2YHVYQVllaGpmYEEycWV+R3tlVSMxZm8pZ2o4LURgVTJjUn5MS2x2RXZkSTZz
MEJlCnpSZFRoVTImV1hmMHMqZWMmbz5yITdZYlZ4MygzK0QzTGAxdUtkQWtuTG08OXoqdzZMSzVU
N0tLUnpwemEtfWdZNAp6M1drdityWXNib2E9RWt3eldPSFBCenl6TGh5Wl9GTztWXio9XnU7fj5l
TW17KlFmKDluaiNQeCNYfUhkUWMjTkcKelJGO347bD54OF9MMWdwYEp9SDI5aGRSSyZNQzJiUnBj
RjlLKVpTUWNZRVAzQjdeTmZCcmRHNTdWeD0tKmhfTkhPCnoqMXJoX3xLTmBsOGVlN3czUTdlZns3
NXhQPjZNczNNdkA8YE1ZVVF1QFErc0VEenBkLVE5PkMwaVVQdHlncHtITAp6OEtUcV9YI35UeE1J
WV5gMiFlK1pkU1FWXnI+NjlZQENQSHZSO2c4Yjc9KXZnKmcjWns1dkB7X1lFNVktcEBEIW0KemNI
TX0/KDcrelhSOVBUPXo7cWVCZDREbV9nJX5BTXtPdjNnN14mNSQ8PUpyNjF+ZzdGajFiQmNydTg1
b3V3b3J0Cnp0UkdJY3NUR050PVVYVD11TWJuPkttPThtcUl3YzgxNSU/YiFBUFVUa2c3bU9BPCh7
K3AoS1dBM0szRSNsVlBOaAp6M2B6bVpOXnp3VVFKXklsUWkzWFZuNlZqTmh5PDchQXt+NDZMVWhw
ZkRhNiY3K3wwZ2R4dFlsdDVrZkV9PzJ9JjcKel53cWN8amhPdUhAWlBnfiZqM043XnljbW42ezwl
SEZob2FVYXp2dzY+ZncqZkJyTUdjUWtHKGY4aVNSVDF8akx1CnokZG5wMk0oNEI7MDZHWmBjKWJZ
O3hVQ3VtR2AyKzVhKWlWUCpvSzd1MkFGfT1QNCFCUVk3IzxYPzZPeD1VU1EtQQp6KDZ+QmlJaHZa
YXZVZF5GJXJfcnc8OS0pRmFhJSRhK3tEa3d6Wm99cjlueElzc31YODVVZ25Dakttb0xLO28+ckQK
ejRKNHBCKTg7eVo2cXJgaGRyZXs5YkFSNE5PXm5TVmx0RHF0MCUwKi1BYzM5QDV8XjJrZTchalZw
TEZQKHpMK052Cno8QzdzV0FWK342cDk9LW9ESmQzezEwNEJ3czlMN2I1TSZ5aFhDeypZb2NQdnFq
NiFpRzNBaUUje1JpNmU5aWlWeAp6cmErLXlnXkVzN2lwaU53Q2d7VEZtMCQjM3NFPiFueUB5KlUy
bjhUMkcqcnxyeWp4ZnxLXlcqMyhKZUZ3YDArVjcKekgyZypGZmo4ZT5eND1TZU51WCp7aXhRWXgy
S2gzOWYlJC1NWWV0bFcqLUlQKV44JFJIO1Z+SWkySWdeP3Rtb1BXCnphaFg8RClffT1gd0w0KFo3
NjZDRjtuQWFuVlI9aHItWmFzY1VrZF5qMVN8K3g1VT9PJUxCTjg1MXB4fko3NmRFXgp6U1AteHZA
TCFFVUIlOEdUVXBTbExuNUBRRFI9YVVyKC1yUyNlOWZ9Zl4qbndObE5WR3daeSF3YkBOaDhzQ1Bk
TDcKekRtKitRRGhINkQ3JGdCKHUyb1BRSHB8bkIhRXljR0A0M2dUcW59Tm1gYzIkKlp7YVk8JTR6
dyRrTjN1TVdGXkh8Cnp6cDlNTjNFNmVuWFNUJVFgIVMzXmFqMEBLN2xsVEUkY1N6PFErdXYkKllk
Pmo3eHFsMW9mVSZeZlptbz18MkRadgp6MTtAT1hQSjRMQmtBM09ZaUZ4KVI4eH5KaTRRZmNkX3BW
fip4MW1ZTC1FUiUtZTgxUDZtcStqQmhvNXVpaFB+M2MKekJ0MWc8dytXUXBScmhzVEokQnhTIzdV
PFdaTz9EfCMmd3ozI2FsTis1QUpYbyl1dFY+Q3dad3k8bnNrVEVaRUJrCnpAOX1jJT5fSV9zc3A5
X3BqYjFPSngxTCVRUUBkTURJcl5uZjRRVl4qbDtgSG9ufTJoZzg4QFRJRmU+Zl5PRTklbAp6PX1x
OWM8bS19N05yVEpzMlIjVG9hQkJSdXkqaiYqUXp5RmpYTGIwNmRSNl42PDt5bzwoTl88YS18Y2c3
ITYjbiMKeitUSE5qe2QjXn4oNmtAPGhwdlYlP3BkNGhgMVI0RSlpPiloWWAofmQrQGJsUnlyTG1D
WHpjaWtuVWtpNVN1SzNWCnp6cCRjeHA5NWxHVUA3QEZUS1pjUjlEYDBEUi1WWWYkXmkpOTElQWgz
YFg8SG5ufkpKMXpBWl5BR2ljdS0wbGlCNgp6Q1c8cyUmVVhfRExJdSZgS3AreEBNVFNLUEw7eG5D
NTZaeWVeWC1sTz4oakohQWI9RFpuN0BOSWVBXl4+R09pdkQKejlwPCQyM0EofHVGPzR1OE9yTD58
Rz9xQj8/TTx4MkkhWW4hbXFrOy1HTVh2X0ZIKW4+e2NvZ207a1FYM1EwViFGCnp1P0tsRmg4RUk8
dTYmMCRCYE8+S3JfeGw3VEJfMWdgVjN2Y0ZpYnwjdzl2VTBoZThMUTFqPEdjKDhXZlBqbTRRNQp6
OVMxPmAxNXFVfGhvQUomI3FOQSgzSC1iVmVvdiM2aikyaClreyVMVztsKzB8KUFmZj1JZ0xDODlm
N05LRHIyUUwKei0hM0J+SVo7RFdZOHByVDc3LWlURlBFVyo7O1MrVjlYJCQzPF5icHgjfGV7e3VM
SXdANWYrZ3Z1O0hgOUxzPXt2CnoyQXpydVczaXlhdW92SWFEMmcxREwmN1cpTEo5Jm8zPVN2RCRD
dHNlRiopcW1PYiFwR0k3fndua0ltLVRlb34mdQp6RVBvbHRWRkQlT1pVIV9GQl42PzI1JlRNd1Ft
OUNmJlViRkFpcFB0ZnFkcH0qXmRue0FBMVJBfk9VVEA8c2NsQjAKelNPZzR3SGxOP0BuPFRqQT80
RUU4KjVTWmw0UzwyYFFOP0M0UyUyUSpBOGNOcjcxPUBjIU9yNHZVMDdLZXFQRDw9CnomaFQ5TGtR
WXZTSWd1b19Pdzxteik1VWYhai17b2cweShVclNxbyR1bH1IRmU9cWszMFVzRFN4VT9gR143YnlA
aQp6TiRRfGBSRThtQEhIYipXcHVNfDJec2hvPzAqcUc8JSFZeitRTWQ/fTArMGlTd1VvI09JTU15
dnhiUCUhYE4wMWUKenJOJldfOCpycnl0ekdPaFAmTHdyV2BWPFI/VjU/N2ZLIVJPZj8hJkRmeWY9
U0hPYmg5N1FacF8yWmVgaipHfG09CnpWSCZsVzB8Uz14U2hRTig2d35XTFh4VlFzI14/VFd6U0w8
KChlQD5xMThhJU1WZENwSWtGRCRXREE7fWE8I0ZrUQp6QTU3JSt0fmQwMkV0dEdBPEApMV9gIVJG
dnIqKzs/dT1IcmZvSkJRYEs0LUk1Pj4oNnk/K3AwOHI9VmxgWWhWQSEKejR5MSY/clgod0dLd156
Zz90T09UPlJzSFJIZn5HeXJBJWRzPUgzKEJ7Wi1tTktnanZubEYmKWYhR1ZpTWNYe3tSCnpDdWgt
X0ZfU2ooM3gwP1Z3JShUVGdZJmRyUT90aEBzJExHLXBTR3N2JEB4eG14IXpHZSp9WiFOKW41eFoj
Y3QxNwp6QH4rbDRzMEB3UklsNGh8e3FlUSNRQHpYNzhJUGxAJiNuelc9Q0ZSWVhXY3Zab20qQyoh
az9UQDl5JjQ4cyQ+JEcKeih5JDBqelJjZnBxKStHaXM0fk9MQyExIztXM2liRz01aG8zVFZQLXgx
fDEtWEtBa3hwei1gUCZrMDs8bTZTVSNMCnooYCN4SzReT3h9SWRudEhWSkIlcHpOY18qWUlpVi11
NkUqM2ZHflY4NWU5ek9YNDdLZXlgTGgzVH5pSU5HMXhYbQp6WjRLX2BhdjBucDhvd0UmN28/JUJp
Uk9jMSgxdkYyeit9R1RhTSYhWER3Q3xmOUN7QCtaU0FITTMrUU9fNGplVTUKemc3QikpRG9fcj9v
UmsmQGlEaVRgdGk9dXhrX3QzNU0xaDd0SWlOLWxEVCkrOG5tQE0rfDBrYElYfEBQUTNNMyRrCnpZ
Zj4oNmx+NX5vMXAjS15TV0d1PmI0MjtXLTYpancmajI9RFpxWm1pLTI3bmRJQ0NReVcrKCtaKDha
aHcleU4mJAp6MGNtOFV3dU5YUXJIUDdGRTtiSnZyRlQ1cGY+M0RRQCRgbkxfan1XSkh8PShiNyRR
TGRLMFBLRThoSTk9d15rWH4KenEoUlQ/U3NXSU9leUhHJEdtOTd7ajZOJX05X243ck04S0JuJEBz
SHxHTilpTXdmQWsoXzZjakF6Un5gbk5gU0dFCno7KWxXeFpaSl43VytWVjl0MFV2PzwoOylaZFJG
b0g3aGZNKlFAeUhlIXB3PXU+NUNAQkoxd3s3VVNndCZFWDF3WQp6JnR3MGlqJmxkKGJiQjwjKlgh
NiRCS19gfEZ3TF5DdGxJUkdUZWBucz1vcD0oUXRRRTRUP1dxV3ktZkp6Z3t1NXwKelhGdTd4e3J5
R3tKdj1UfmViV0prcEo9fUFfWmoqMjByNCFQJl5mdyNTPil2bD97MyZrey1OViUpMUc+d2NNUFg4
CnpLYmR1U15NU0gxOEpBY3tRT3VKb3ZsMFZzLUZoeWNmVW5yYmM0d2FLZEJiaTB0OHBIM14tJW56
NElGT3pAKHNgNQp6R1dDbEdzPHVhc245aT5tZEVDcVkqbyg/WmFTUUdMSTZLQWFjSD9rdW59JjxI
X1AmPyZTdShPTj1SeDRsNlo2KHkKemlPfmY5ek09Y28pV2BGX0ZScXB5djRlbS01PU0xIWxJbT53
dWJ6S1BSYWw/dCp6P3ptQDdEVip7Yn14LWk2ZD5aCnprMktlSj1DP09TIT4qXmpaPTctMXVYYTNz
QWZaczw9cjtLQkpJe0dybWlKcUFFQWElYHUtTWhsJDdYdiZacj9HUwp6NW5zJWptNn4qV3xJR3Q9
KzYjTn4qNyRPPmNWNCspTX0ze1NBaFAyMUNqTyZTY0t6MXR1MD0yaipOcz1GU04xNHoKelNhSWNE
KkckJjlGNztgPE44YUhpaXNqZSFNZUZCMGl1JEdeODVATXpoQVM0PEJBMHhKVVlzcEYpdHpaRzM5
VSg3Cno7bz8qaDZURGUlbkRHPVpeSUpjN1VELV9jMXJKPExDZF87RFoxMlhxe25xfEdlQ31OSWxg
fCZveElPPXdXYjtLdgp6bDxsRCYlOU1mLW5mM2ZIVF58T2EzKztwdlpNJnJnaWd4Rns/bFI9eygp
XzJ0N0NjPEo8TVcjS0d3bEN4VkF0KTUKenp4XzVMOGpLPWxBPlhZWXY0VWdaWXlrJCZNeVRaJEdA
aEhCOCtVNmk9UlIjdj9HSzlFS0Q2ITk0YDJoem1aI0xlCnpLUjFJd0Fsdyk1LTBXb0RNSVJvUyh0
KmVUamZRR0dHZXV6ezBBckctTGxUfnUoYW9+fDUydHUqQytGN2QhaD5ENwp6XihzI09nfnZRT2NU
LXM+S2c/fT9UPG9JbkUtemhMVmpXV3B2TD8zTWt2NitjJmc+M1oxMi1SSmJeWkZ9ezlvKjEKekZW
dm12TERhaWVLQXk0Qj44dGdwPiRnan5VJG5EM2NXJXp9KnN0cS05O0diSyYpIXp2VSRObCU9UmNs
NFYlMV5RCnp5clkrRUhYNm88OUEzOSNAc1cwaGxAbEVEO3M8cSZuKktLOGlKZ3NxWHdMSXBRen5v
cnFAVlBeZDhKMk8qbUEzWQp6eD9LVXM3cEBLSlkoTGBnczVeUForeG9gWHlkSnlGJjI4Q3wmZHc+
ZkZJM3A5KXp2S0NkQlN+RGB9aGNLYmNTIVkKelF7S0ZWR091PE9sITZ5XkBaZjtOVzhIRzl4ODR8
Zjs3UyM7eTxfeihLYUZlT2peWlBhUkV3U18zTER0WnN9JlUpCnohbnw5SkNucXhyRG0qRTBaYz4z
WmZEMUp0e2txeFdLd180K2J8OGhEbGA+VDIwbEBEY3NgN3BgO3xgcDc1Qz53Ygp6VnliJFVjUUA7
RUxpeGRnV0x9MFg2dUVSRHkjJFNsVG5UIzdvZ3RoXjVEcjRRQFUwa097SHReNntvQkZFWX0qIVoK
ejdhTD0wYXJWbzczQ3kkZXtYQWAwazdlP3ArN0VXMShkX2oyZTltT3s5bzRubUgkSTk3ZVcjQipw
RHo0amMpVk5YCnpUR3tpe1lVVEleUSZ4e0g5eld6IWM8UDMyYGlqOGdBIUNPOUl0e3NAdWxhK1c7
UFQqa2BMfjBNJWJzIU80bkgkXgp6UF9JQUVoPHROQnFRQGA0digpZio+WDctTylEdDVySj5PMF5t
YkNoKnxDOXk5bzAhJC0jQ0FXUGkoSXpQVGIrPEoKeklgM2xRcnxnU3dyekJPKV9sdHt0YylyNF5N
JFhJNXRiNldyb3xRTHo/SnNwPjdDSUJKMkZ8K2haWGNNeTFeZXRxCnpyQHFVIVRHSGp3Z3hhOWpE
fE1eWmhQWFgwKUJBNkZjeU5pR15ARyhEJk09b0YwYjwmeEY8MjZDZGhEJiR6eF9PXwp6TjlvcXNm
LXpRTkRmNipBSHxGYTh1dGh+QFB5c1JWQztXe3dCUmpVZV9JZGxHbn1OYU1EQnNIWFEzRml3d2Il
ZW4KekNRTzNHMkMmIXclfWolcUQlV0JJU1pufWA0YmJHbHdiJWRfOHtsN2hAKz54aCNSam4wMFJR
SlV6YHVPfD1OUTtXCnpxMnVCWjM9eXB9Sk4/KEBgVkYmLVR7UFdKfDgjdkgtX3F1JGxhJj9ZS2t2
SyVrcz1Ye1dFbjUkQERHRXpydEUpTQp6biUwIW87cDRaLUpGbX5+eCpaWXt5N0pvWHZBdkk7QEot
clUrX209SD9DXyMkcDcofSlkfVp2JHheMGBMcFBYT3cKem0zVk9YR25aJGQ/fEYlZXVJWU9gI248
cW4/fWBsUD13Qkw9UksrdHRsV2txSUdRWU5Ge0w4ZTBedH4/K3tkXzY5Cno7dWlPfCV9am4+Zkg+
Pip2N0VfbUtQJGMkdWBoK04/WHxhaWJwSWl4QkNqdkxJbnFWQ0BYTkktaEhET0krZko4PAp6PkFk
LTNhaT4lYW9qNnc5ZjJCVG1eM2BeSXYoRXxjNEU0P2t7JXJtVVBwKF55Zjs8X3thbWlnKWQ/eDQ5
dFY/PEYKejgmTU8lSytiS2EmNEZXX3BYaj95cyVBTlQ+Ui01Uih6WCMjenZab3BVYy18ZysqZGVz
JmlEaCVlQWBiUD5lPTU4CnphWHYySXJNNjN0LXJsZCM8dTN6aCVlUTZkcG0xbiVWcHN0LWJZZTdm
X2tZeDBaeXFsQUNfJUcwR0YrOExnV2xWZAp6Sk1aI14jWT1sbUQmKlFeY2Y4YXc7YnFzTiklIWRg
T0pXX2Y0fTlKKkB9ZChxRSNnKD44fGp3SGleLXlYK2heWEIKejFXKV5CI0NNbCZXJDI1fi18amVA
YEQ1MF5nPGEmb2VPYEZ7PmYpI3F0SEwrcGkjcGQ9al80R21tRTZpbzVUV2ZKCno0Pn5rS208b1FZ
NjFqRCp6azNzTjNwPSpZKTJwaTIlV3cwaGheQm1FR2RZQ00lXmszPD9zd2smUSpIQj9JYDkyNwp6
UVdtYEB6R24xS2VuR3N0ZEFSLWtzVzxtS1deYj1BYWh7cD1HIWcke2NVUlVCaHhvSUk9K2QqRFRF
QyQpS0I/VEAKeiYpcnRJYEI7MDI7OzZPJWZ6IUQhOSgzSEhhOS1TVkB4SUQ4VnsjWUNQVytzKCtT
azlSRHlvNUREOWdPPyl5dys9CkxtKnU3Uklgc1Y/LWJ5Kl8KCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IGY2MTZhNzRiNDE3ZjYxZTlhYTNkZDI1YzhiZTg2Yzll
MmEyZmQyOGEuLjYwYjcyMmMzYzk0OWM3Yjg1ZTY0ZDJmM2RhNmJmMzU3YmM4MGJhZGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0yOTAsNjAgKzI5MCw2IEBA
IFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNXaXRoUHJld2FybWluZykK
ICAgICBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1By
ZXdhcm1pbmc6Olllcyk7CiB9CiAKLVRFU1QoV2ViS2l0LCBDdXN0b21EYXRhU3RvcmVQYXRoc1Zl
cnN1c0NvbXBsZXRpb25IYW5kbGVycykKLXsKLSAgICAvLyBDb3B5IHRoZSBiYWtlZCBkYXRhYmFz
ZSBmaWxlcyB0byB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5Ci0gICAgTlNVUkwgKnVybDEgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiU2ltcGxlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNCIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0KLSAgICBOU1VSTCAqc3dQYXRoID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdl
YktpdEFQSS9XZWJLaXQvU2VydmljZVdvcmtlcnMvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5Q
YXRoXV07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRV
Ukw6c3dQYXRoIGVycm9yOm5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd1BhdGgucGF0aF0pOwotCi0gICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpzd1BhdGgg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwx
IHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKLQotICAgIGF1dG8gd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsK
LSAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKLQotICAgIC8vIEZldGNoIFNXIHJlY29yZHMKLSAgICBhdXRvIHdlYnNpdGVEYXRhVHlw
ZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRh
VHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXV0pOwotICAgIHN0YXRpYyBib29sIHJlYWR5
VG9Db250aW51ZTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNp
dGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURh
dGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJl
Y29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMg
dGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUg
cmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxX
S1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1RfRVEo
MVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsK
LSAgICB9XTsKLSAgICBkYXRhU3RvcmUgPSBuaWw7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWFkeVRvQ29udGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwotCi0g
ICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0
aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgZGF0YVN0
b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkYXRh
U3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNp
bmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAg
IHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJl
ZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCi0gICAg
Ly8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCi0gICAg
ZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAg
IFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0g
ICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwotfQotCiBURVNUKFdlYktpdCwgQ3VzdG9t
RGF0YVN0b3JlRGVzdHJveVdoaWxlRmV0Y2hpbmdOZXR3b3JrUHJvY2Vzc0RhdGEpCiB7CiAgICAg
TlNVUkwgKmNvb2tpZVN0b3JhZ2VGaWxlID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xp
YnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRl
RGF0YS9Db29raWVTdG9yYWdlL0Nvb2tpZS5GaWxlIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5Q
YXRoXSBpc0RpcmVjdG9yeTpOT107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424440</attachid>
            <date>2021-03-26 21:13:47 -0700</date>
            <delta_ts>2021-03-29 14:18:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210326211346.patch</filename>
            <type>text/plain</type>
            <size>101061</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBlNDRhN2Q5NjEyZmY2YzcyNzc5NjNm
YzNmNWY2M2EyMWQ3NjYyNTAuLjQ5NzEyMDY0MWZhOGI2NjE0YzFhZTBkNGI0ZDI1ZTcyOWMzMjAz
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRk
IGFuIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KCkgb24gYWxsIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCisgICAgICAgIFdlIHByZXZpb3VzbHkgb25s
eSBoYWQgaW1wbGVtZXRhdGlvbnMgZm9yIENvY29hIGFuZCBXaW5kb3dzLgorCiAyMDIxLTAzLTI1
ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRW1iaWdn
ZW4gbWF4aW11bSBIYXNoVGFibGUgc2l6ZSB3aGVuIG5vdCB1c2luZyBBTkdMRQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGUxZDNmOGM3M2U1MmEzZWM4MTNmYjNlN2JhYjQzMGJkYmI0NDg3ZGUuLmFiM2MwZjhmMjE4
YTcyYzA0ZGJiODMwNzFkODc3ZjJiMWY1ZGUwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjMg
QEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdv
cmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdvcmsgcHJv
Y2VzcyB3b3VsZCBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRlIGRhdGFi
YXNlLgorICAgICAgICBXaGVuIHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMsIHdlIHdv
dWxkIGxvYWQgYWxsIHRob3NlIHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAgICAgaW50
byBtZW1vcnkuIFRoaXMgd291bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkgaW4gdGhl
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhlIGFw
cHJvYWNoIGlzIHRoaXMgcGF0Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2VwYXJhdGUK
KyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVuLCB3aGVu
IGxvYWRpbmcgdGhlbSwgd2UgY2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBhbmQgZ3Jl
YXRseSByZWR1Y2UgbWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MpIGFs
c28ga2VlcHMgYQorICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2aWNlIHdvcmtlciBz
Y3JpcHRzIGZvciB0aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcuIE1vcmUKKyAgICAg
ICAgd29yayB3aWxsIGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ugc2hvdWxkIGJlIGFi
bGUgdG8gZXh0ZW5kIHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRoZSBzZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRob3NlIHNj
cmlwdHMuIFRoaXMgd291bGQKKyAgICAgICAgcmVkdWNlIG1lbW9yeSB1c2FnZSBvbiB0aGUgV2Vi
Q29udGVudC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3ZWxsLiBJIGFtIGRvaW5nIHRo
aXMKKyAgICAgICAgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNlIHBhdGNoIHNpemUgYW5kIGZh
Y2lsaXRhdGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlcmUgc2hvdWxkIGJl
IG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2VkCisgICAgICAg
IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gc2VydmljZSB3b3JrZXJz
IGFyZSB1c2VkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IFNXU2NyaXB0U3RvcmFn
ZSBjbGFzcyB0byB0aGUgcHJvamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQWdlbnQ6OmdldEluaXRpYWxpemF0aW9uSW5mbyk6CisgICAgICAgIENvbnZlcnQgdGhlIHNj
cmlwdCB0eXBlIGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICBGaXggYXNzZXJ0aW9ucyB0aGF0IHdlcmUgaGl0dGlu
ZyB3aGVuIGNvbXBhcmluZyB0byBlbXB0eSBTaGFyZWRCdWZmZXJzIChvZmZzZXQgd291bGQgYmUg
MAorICAgICAgICBhbmQgc2l6ZSB3b3VsZCBiZSAwKS4gVGhpcyB3YXMgY2F1Z2h0IGJ5IEFQSSB0
ZXN0cyBzaW5jZSB3ZSBoYXZlIHNvbWUgc2VydmljZSB3b3JrZXIgQVBJCisgICAgICAgIHRlc3Rz
IHRoYXQgdXNlIGVtcHR5IHdvcmtlciBzY3JpcHRzLgorCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIEFkZCBzb21lIGNvbnZlcnNpb24gZnJvbSBT
dHJpbmcgdG8gU2hhcmVkQnVmZmVyIHRvIHRoZSBzY3JpcHQsIGFuZCB2aWNlLXZlcnNhLCBpbiB0
aGUKKyAgICAgICAgc2VydmljZSB3b3JrZXIgY2FzZS4KKworICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyaXB0QnVmZmVyVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nVG9T
Y3JpcHRCdWZmZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0OjpkZWNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgorICAgICAgICAt
IFN0b3JlIHNjcmlwdHMgYXMgU2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgU3RyaW5nLCBzbyB0aGF0
IHRoZXkgY2FuIGhvbGQKKyAgICAgICAgICBtbWFwJ2QgZGF0YS4KKyAgICAgICAgLSBBZGQgc2Ny
aXB0QnVmZmVyVG9TdHJpbmcoKSAvIHN0cmluZ1RvU2NyaXB0QnVmZmVyKCkgdXRpbGl0eSBmdW5j
dGlvbnMgdG8KKyAgICAgICAgICBjb252ZXJ0IHNjcmlwdCBzb3VyY2VzIGJldHdlZW4gU3RyaW5n
IGFuZCBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJU
aHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAgICBDb252ZXJ0IGZyb20gc2NyaXB0
IGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKworICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVj
b3Jkc1RhYmxlU2NoZW1hKToKKyAgICAgICAgVXBkYXRlIGRhdGFiYXNlIHNjaGVtYSBhbmQgYnVt
cCB2ZXJzaW9uIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBzdG9yZSB0aGUKKyAgICAgICAgc2Vydmlj
ZSB3b3JrZXIgc2NyaXB0IGluc2lkZSB0aGUgU1FMaXRlIGRhdGFiYXNlLiBJbnN0ZWFkLCB0aG9z
ZSBzY3JpcHRzCisgICAgICAgIGFyZSBzdG9yZWQgc2VwYXJhdGVseSBvbiB0aGUgZmlsZXN5c3Rl
bSB2aWEgU1dTY3JpcHRTdG9yYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpJbXBvcnRlZFNjcmlw
dEF0dHJpYnV0ZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbXBvcnRlZFNj
cmlwdEF0dHJpYnV0ZXM6OmRlY29kZSk6CisgICAgICAgIEludHJvZHVjZSBuZXcgSW1wb3J0ZWRT
Y3JpcHRBdHRyaWJ1dGVzIHN0cnVjdCB3aGljaCBjb250YWlucyBhbGwgdGhlIGRhdGEKKyAgICAg
ICAgbWVtYmVycyBvZiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0LCBl
eGNlcHQgZm9yIHRoZSBhY3R1YWwKKyAgICAgICAgc2NyaXB0IHNvdXJjZS4gV2Ugbm93IHNhdmUg
YSBIYXNoTWFwIG9mIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyBpbiB0aGUKKyAgICAgICAgZGF0
YWJhc2FlIGluc3RlYWQgb2YgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdCBzaW5jZSB3ZSBubyBs
b25nZXIgd2FudCB0bworICAgICAgICBzdG9yZSBpbXBvcnRlZCBzY3JpcHQgc291cmNlcyBpbiB0
aGUgZGF0YWJhc2UsIGJ1dCByYXRoZXIgc3RvcmUgdGhlbQorICAgICAgICBzZXBhcmF0ZWx5IG9u
IHRoZSBmaWxlIHN5c3RlbS4KKworICAgICAgICAoV2ViQ29yZTo6c3RyaXBTY3JpcHRTb3VyY2Vz
KToKKyAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjb252ZXJ0IGEgSGFzaE1hcCBvZiBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0CisgICAgICAgIGludG8gYSBIYXNo
TWFwIG9mIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyAoaWRlbnRpY2FsIGJ1dCB3aXRob3V0IHRo
ZSBzY3JpcHQKKyAgICAgICAgc291cmNlKSwgcmVhZHkgdG8gc2F2ZSBpbiB0aGUgU1FMaXRlIGRh
dGFiYXNlLgorCisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlz
ayk6CisgICAgICAgIFV0aWxpdHkgZnVuY3Rpb24gdG8gY29uc3RydWN0IGEgSGFzaE1hcCBvZiBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0CisgICAgICAgIGZyb20gYSBI
YXNNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzLCBjb21pbmcgZnJvbSB0aGUgU1FMaXRl
RGF0YWJhc2UuIFRoZQorICAgICAgICBtaXNzaW5nIHNjcmlwdCBzb3VyY2VzIGFyZSBmZXRjaGVk
IGZyb20gdGhlIGRpc2sgdmlhIFNXU2NyaXB0U3RvcmFnZS4KKworICAgICAgICAoV2ViQ29yZTo6
UmVnaXN0cmF0aW9uRGF0YWJhc2U6On5SZWdpc3RyYXRpb25EYXRhYmFzZSk6CisgICAgICAgIE1h
a2Ugc3VyZSB3ZSBkZXN0cm95IHRoZSBTV1NjcmlwdFN0b3JhZ2Ugb24gdGhlIGJhY2tncm91bmQg
cXVldWUgZm9yIHRocmVhZC1zYWZldHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgUmV0dXJu
cyB0aGUgcGF0aCBvbiB0aGUgZmlsZXN5c3RlbSB3aGVyZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRz
IGFyZSBzdG9yZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpz
Y3JpcHRTdG9yYWdlKToKKyAgICAgICAgQ29uc3RydWN0cyAoaWYgbmVjZXNzYXJ5KSBhIFNXU2Ny
aXB0U3RvcmFnZSBhbmQgcmV0dXJuIGl0LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRp
b25EYXRhYmFzZTo6Y2xlYXJBbGwpOgorICAgICAgICBNYWtlIHN1cmUgd2UgY2xlYXIgYWxsIHRo
ZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIG9uIGRpc2sgaW4gYWRkaXRpb24gdG8gdGhlIGRhdGFi
YXNlLAorICAgICAgICBub3cgdGhhdCB0aGV5IGFyZSBzdG9yZWQgc2VwYXJhdGVseS4KKworICAg
ICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMpOgorICAg
ICAgICAtIFN0b3Agc3RvcmluZyB0aGUgc2NyaXB0IHNvdXJjZXMgaW4gdGhlIFNRTGl0ZSBkYXRh
YmFzZSwgYW5kIGluc3RlYWQgc3RvcmUgdGhlbSBhcyBzZXBhcmF0ZQorICAgICAgICBmaWxlcyBv
biB0aGUgZmlsZSBzeXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFnZS4KKyAgICAgICAgLSBJbXByb3Zl
IGxvZ2dpbmcKKyAgICAgICAgLSBXaGVuIGRvbmUgc3RvcmluZyB0aGUgc2NyaXB0cyB0byBkaXNr
LCBzZW5kIHRoZXNlIG5ldyBtbWFwJ2QgdmVyc2lvbnMgYmFjayB0byB0aGUKKyAgICAgICAgICBT
V1NlcnZlcldvcmtlciBvbiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRoYXQgaXQgY2FuIHJlcGxhY2Ug
aXQncyBoZWF2eSBzY3JpcHQgc291cmNlcyB3aXRoCisgICAgICAgICAgdGhlc2Ugb25lcy4gVGhp
cyBoZWxwcyByZWR1Y2UgbWVtb3J5IHVzYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkcyk6CisgICAgICAgIC0gTG9hZCB0aGUgc2NyaXB0
IHNvdXJjZXMgZnJvbSB0aGUgZGlzayB2aWEgU1dTY3JpcHRTdG9yYWdlLCBub3cgdGhhdCB0aGV5
IGFyZSBubyBsb25nZXIKKyAgICAgICAgICBzdG9yZWQgaW4gdGhlIFNRTGl0ZSBkYXRhYmFzZS4K
KyAgICAgICAgLSBJbXByb3ZlIGxvZ2dpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oOgorICAgICAgICBQYXNzIHNj
cmlwdHMgdGhhdCB3ZXJlIHNhdmVkIHRvIGRpc2sgZnJvbSB0aGUgc3RvcmUgdG8gdGhlIFNXU2Vy
dmVyV29ya2VyIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIHJlcGxhY2UgaXRzIHNjcmlwdHMgc291
cmNlcyB3aXRoIHRob3NlIG5ldyBtbWFwJ2QgdmVyc2lvbiwgaW4gb3JkZXIgdG8gc2F2ZSBtZW1v
cnkuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aGFzaFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpT
V1NjcmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnNjcmlwdFBhdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTY3JpcHRTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6
Y2xlYXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
Lmg6IEFkZGVkLgorICAgICAgICBBZGQgU1dTY3JpcHRTdG9yYWdlIHRvIGRlYWwgd2l0aCB0aGUg
c3RvcmFnZSAvIHJldHJpZXZhbCBvZiBTZXJ2aWNlCisgICAgICAgIFdvcmtlciBzY3JpcHRzIHRv
IC8gZnJvbSBkaXNrLCBhcyBmaWxlcyBvbiB0aGUgZmlsZSBzeXN0ZW0uIFdoZW4KKyAgICAgICAg
Z29pbmcgYSByZXRyaWV2YWwsIHdlIHJldHVybiBhIHNjcmlwdCBhcyBhIFNoYXJlZEJ1ZmZlciB3
aGljaCBjb250YWlucworICAgICAgICBtbWFwJ2QoKSBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2spOgorICAgICAg
ICBQYXNzIHNjcmlwdHMgdGhhdCB3ZXJlIHNhdmVkIHRvIGRpc2sgZnJvbSB0aGUgc3RvcmUgdG8g
dGhlIFNXU2VydmVyV29ya2VyIHNvIHRoYXQgaXQKKyAgICAgICAgY2FuIHJlcGxhY2UgaXRzIHNj
cmlwdHMgc291cmNlcyB3aXRoIHRob3NlIG5ldyBtbWFwJ2QgdmVyc2lvbiwgaW4gb3JkZXIgdG8g
c2F2ZSBtZW1vcnkuCisKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIp
OgorICAgICAgICBDb252ZXJ0IHNjcmlwdCBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIuCisK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6
CisgICAgICAgIENvbnZlcnQgc2NyaXB0IGZyb20gU2hhcmVkQnVmZmVyIHRvIFN0cmluZy4KKwor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
c2V0U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgIFRha2UgaW4gYSBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IGZvciBjb252ZW5pZW5jZSwgaW5zdGVhZCBv
ZiB0YWtpbmcKKyAgICAgICAgYWxsIGl0cyBkYXRhIG1lbWJlcnMgYXMgc2VwYXJhdGUgcGFyYW1l
dGVycy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgVXNl
IFNoYXJlZEJ1ZmZlciB0eXBlIGZvciBzY3JpcHQgaW5zdGVhZCBvZiBTdHJpbmcgdHlwZSwgc28g
dGhhdCB3ZSBjYW4gaG9sZCBvbiB0aGUKKyAgICAgICAgbW1hcCdkIGRhdGEgYW5kIHJlZHVjZSBt
ZW1vcnkgdXNhZ2UuCisKIDIwMjEtMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGRyZXNzIHNvbWUgYWxpZ25tZW50IGlzc3VlcyBmb3VuZCBieSBVQlNh
biBpbiBjb250ZW50ZXh0ZW5zaW9ucyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYyOTRjNmIyZjhiNmIwZjky
NGIyNjM4NTc5ZThmZGNlYzY0MWM3ZGUuLjFhYjZlYjNmYjQ4ZWY5Y2NmODI5ZmQ0ZDAwMGU5OWI0
OGNhYzY1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRz
IHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFy
Oi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgUGFzcyBhIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc3RydWN0IGluIHRoZSBTZXRTY3JpcHRSZXNvdXJjZSBJ
UEMKKyAgICAgICAgZm9yIGNvbnZlbmllbmNlLiBXZSB1c2VkIHRvIHBhc3MgdGhlIEltcG9ydGVk
U2NyaXB0IGRhdGEgbWVtYmVycyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3Jp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucyk6CisgICAgICAgIERyb3AgZGVsZXRl
RGlyZWN0b3J5UmVjdXJzaXZlbHkoKSBpbXBsZW1lbnRhdGlvbiBhbmQgdXNlIHRoZSBleGlzdGlu
ZworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIGluIHd0ZiBp
bnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmRlY29kZVNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIFVwZGF0ZSBTaGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQg
Y29kZXIgdG8gZGlzdGluZ3Vpc2ggYSBudWxsIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4g
ZW1wdHkgb25lLiBXZSBub3cgdXNlIFNoYXJlZEJ1ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtl
ciBzY3JpcHQgc291cmNlcworICAgICAgICBhbmQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3Jp
cHQgc291cmNlcyB0byBiZSBlbXB0eSAoYW5kIHRoZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAg
b3VyIEFQSSB0ZXN0cykuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICBQYXNzIGEgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNj
cmlwdFJlc291cmNlIElQQworICAgICAgICBmb3IgY29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFz
cyB0aGUgSW1wb3J0ZWRTY3JpcHQgZGF0YSBtZW1iZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMt
MjUgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IERhdGUgcGlja2VyIHZpZXcganVtcHMgdG8gY2VudGVyIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4g
TW9iaWxlU2FmYXJpIGFuZCBhbm90aGVyIGFwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmZWJl
NDVmZThiNWU4ZmYxYmZmMWU1MzY4ZWE1MTIxMzZhMWZmMGJlLi4zODY4Yzg4MjdmMTc1OWQwZGI2
MzMwNzAyZWIwMzRhYWRiYTc1MDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNDA4LDUgKzQw
OCwxOSBAQCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmKQog
fQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFPUyhXSU5ET1dTKQorYm9vbCBk
ZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBl
bnRyaWVzID0gbGlzdERpcmVjdG9yeShwYXRoLCAiKiJfcyk7CisgICAgZm9yIChhdXRvJiBlbnRy
eSA6IGVudHJpZXMpIHsKKyAgICAgICAgaWYgKGZpbGVJc0RpcmVjdG9yeShlbnRyeSwgU2hvdWxk
Rm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoZW50cnkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGVGaWxlKGVudHJ5
KTsKKyAgICB9CisgICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdmNmI5YzMyMTQ3MjM4NGVm
NGM0Li45MDgxNzU1OGQzMzkwMTRjMThiMGI5MjI1NDU5OTAzMGJkOTcwNGVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZp
bGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwotV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogV1RGX0VYUE9SVF9QUklWQVRFIE5TU3RyaW5n
ICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7Ci1X
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKTsKICNlbmRpZgogCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZWFs
UGF0aChjb25zdCBTdHJpbmcmKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNTYWZlVG9V
c2VNZW1vcnlNYXBGb3JQYXRoKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzVh
MmYzMzVkZGE1NTczMjg0M2RhYjAwYTYzMTg5ODRiODQ0YTZjLi5lYWFjNDQ0OGE5NzA0M2I1ZWQ4
ZTA0MjlmMTU5ZjA3YzFmMTI1MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4MSw2ICsyNjgxLDcg
QEAgd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXT3JpZ2luU3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYzNjg1Zjk1NmI2ZWIwMjYxZjQ5ZDUyMjQ1
MWJjZDY5ODg3M2YwZDUuLjQ3ZGEwM2Q0ODM3Y2JmOWQyODg0ZmQyMmVhNDEwMTdmNGEzZDc3Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyNjIsNiArMTI2Miw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBK
U0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMuaCAqLzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVu
dGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VP
cmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8q
IERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0
YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZB
QTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIx
QUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8q
IFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07
CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBC
MEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODIyNyw2ICs4MjI4LDggQEAKIAkJ
NDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4
OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0
U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3
MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzAzLDYgKzIwNzA2LDggQEAKIAkJ
CQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJ
CQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJ
NDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3
M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3
M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUy
RUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1
MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4
RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTI3OCw2ICszNTI4Myw3IEBACiAJ
CQkJNDY2NThEQzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09y
aWdpblN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEg
LyogU1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVC
MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJF
OTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2
NDU5NzFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
U2VydmljZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2Fi
MjA0NTZlNTk4MjUzNjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBk
N2MzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
U2VydmljZVdvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJh
dGlvbj4+IFNlcnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQog
ICAgICAgICAuc2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRl
eHREYXRhKCkuc2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAg
ICAgLnNldENvbnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJj
NGFhOTgzYzg3M2NmMTNkNTQzZGQxYzc2NjRjY2Y2NjVkYWE5Li5hZjgyYzhjMDZkMmI2MzYxZWEy
NmQ0YWYwOGFiNGIxZjdlNjQ1ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8IHRoaXNTZWdtZW50LnNp
emUoKSk7Ci0gICAgICAgIEFTU0VSVChvdGhlck9mZnNldCA8IG90aGVyU2VnbWVudC5zaXplKCkp
OworICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8PSB0aGlzU2VnbWVudC5zaXplKCkpOworICAg
ICAgICBBU1NFUlQob3RoZXJPZmZzZXQgPD0gb3RoZXJTZWdtZW50LnNpemUoKSk7CiAKICAgICAg
ICAgc2l6ZV90IHRoaXNSZW1haW5pbmcgPSB0aGlzU2VnbWVudC5zaXplKCkgLSB0aGlzT2Zmc2V0
OwogICAgICAgICBzaXplX3Qgb3RoZXJSZW1haW5pbmcgPSBvdGhlclNlZ21lbnQuc2l6ZSgpIC0g
b3RoZXJPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKaW5kZXggNGQ0NzRmMTZlNTg4ZGQwMGZiMzlkNTYwZjY0MTNjNjJhOTM4NmVmMi4uYTRi
ZTEwMDQwYmUyODU5MjEwYjcyY2VkMjMxODJhZjA2NDdhNzgyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgpAQCAtNjAsNyArNjEsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlw
dExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAg
aWYgKGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3Jp
cHRSZXNvdXJjZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xv
YmFsU2NvcGUpLnNjcmlwdFJlc291cmNlKHVybCkpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LmFw
cGVuZChzY3JpcHRSZXNvdXJjZS0+c2NyaXB0KTsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVu
ZChzY3JpcHRCdWZmZXJUb1N0cmluZygqc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCkpOwogICAgICAg
ICAgICAgbV9yZXNwb25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAg
ICAgICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMDEsNyArMTAyLDcgQEAgT3B0aW9u
YWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBw
b3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJj
ZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQo
KSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRS
ZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBz
dHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQoKSksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VN
SU1FVHlwZSB9KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmNwcAppbmRleCAxNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5
OWI1ZWRmLi4xZWE1OTAxYmQ5ZDJmZDljNzkzYjJkNWFlMGUyNzBlODNjOGU3MjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmNwcApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAg
ICBqb2JEYXRhSWRlbnRpZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgp
LAogICAgICAgICBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xh
dGVkQ29weSgpLAorICAgICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJ
bmZvLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0
ZWRDb3B5KCksCiAgICAgICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgs
NiArNDgsMjAgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVm
ZmVyVG9TdHJpbmcoU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworICAgIGZvciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIu
ZW5kKCk7ICsraXQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQt
PnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4
KCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxl
bmd0aCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NWI2OWVl
MTY1ZWU0ODBhOTYxYjEwZjFkYmRjN2UuLjg0NTQxZDQ2MmE4YjcwYTRiMzNkM2EyMzY3MGFiYjI0
NjBlNTkyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzksMTMg
KzQwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRv
U3RyaW5nKFNoYXJlZEJ1ZmZlciYpOworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRC
dWZmZXIoY29uc3QgU3RyaW5nJik7CisKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
ewogICAgIHN0cnVjdCBJbXBvcnRlZFNjcmlwdCB7Ci0gICAgICAgIFN0cmluZyBzY3JpcHQ7Cisg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICAgICAgVVJMIHJlc3BvbnNl
VVJMOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7CiAKLSAgICAgICAgSW1wb3J0ZWRTY3JpcHQg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJl
c3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9Cisg
ICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2Ny
aXB0LT5jb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRl
ZENvcHkoKSB9OyB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgewpAQCAtNTQsNyArNTgsNyBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNjcmlw
dDsKKyAgICAgICAgICAgIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CiAg
ICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MCw3ICs4NCw3IEBAIHN0
cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFN0cmluZyBzY3JpcHQ7CisgICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUlu
Zm87CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1
cml0eVBvbGljeTsKICAgICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CkBAIC0xMjAsOCArMTI0LDkg
QEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgU3RyaW5nIHNjcmlwdDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdCkpCisgICAgT3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IHNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlw
dCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0xNTcsNyArMTYy
LDcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlk
ZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAogICAgICAgICBXVEZN
b3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksCi0gICAgICAgIFdURk1vdmUoc2NyaXB0KSwK
KyAgICAgICAgV1RGTW92ZSgqc2NyaXB0KSwKICAgICAgICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJ
bmZvKSwKICAgICAgICAgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpLAogICAgICAgICBX
VEZNb3ZlKHJlZmVycmVyUG9saWN5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXgg
ZDcwZjRmNWU2OTNmMjc3ZjY1NTgzZTdhNGUwNzYxNDUzYzU0ZWZhZC4uYTY4NGM3MjBmNjgzZjNk
MTBmM2EwOWQ0MjUyNzRlNmVlYmUyNjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAK
QEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBm
bGFncwogCiBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBT
ZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRl
clByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlT
dHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5
OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5
UG9saWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBl
LCBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0YS5z
Y3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJl
Z2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29u
bmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFs
bEVuYWJsZWQoKSkKKyAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0
cmluZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6
OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQ
b2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUs
IEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBzY3JpcHRC
dWZmZXJUb1N0cmluZyhkYXRhLnNjcmlwdCksIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBE
dW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0
TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlP
cmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpS
dW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xh
dGVkQ29weSgpKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2hhcmVkKCkpCiAgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5zaG91bGRVc2VTaG9ydFRpbWVvdXQo
KSA/IGhlYXJ0QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKaW5kZXggY2VlOGNjOGMwOGJlMGIxYjdmNTQxMTBhNmNiMzE3NDZl
OTg5NGIxNC4uZDg4NWEyMzcwZjMwNTI1OTcxMTE3YWI5ODM5M2VlMTU0MDg0NzkxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTUUxp
dGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAi
U1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3JhZ2UuaCIKICNpbmNs
dWRlICJTV1NlcnZlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC00OSw3ICs1MCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1Oworc3Rh
dGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA2OwogCiBzdGF0aWMgY29uc3QgU3Ry
aW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYx
LDcgKzYyLDYgQEAgc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3Qg
U3RyaW5nJiB0YWJsZU5hbWUpCiAgICAgICAgICIsIGxhc3RVcGRhdGVDaGVja1RpbWUgRE9VQkxF
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgc2NyaXB0VVJMIFRFWFQg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgd29ya2VyVHlwZSBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIGNvbnRlbnRTZWN1cml0eVBvbGljeSBCTE9C
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHJlZmVycmVyUG9saWN5IFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKQEAgLTEwNyw2ICsxMDcsNTYgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGNsZWFuT2xkRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJl
Y3RvcnkpCiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGRhdGFi
YXNlRmlsZW5hbWVGcm9tVmVyc2lvbih2ZXJzaW9uKSkpOwogfQogCitzdHJ1Y3QgSW1wb3J0ZWRT
Y3JpcHRBdHRyaWJ1dGVzIHsKKyAgICBVUkwgcmVzcG9uc2VVUkw7CisgICAgU3RyaW5nIG1pbWVU
eXBlOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcmVzcG9uc2VVUkwgPDwg
bWltZVR5cGU7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CisgICAgeworICAgICAgICBPcHRpb25hbDxVUkw+IHJlc3BvbnNlVVJMOworICAgICAgICBkZWNv
ZGVyID4+IHJlc3BvbnNlVVJMOworICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVU
eXBlOworICAgICAgICBkZWNvZGVyID4+IG1pbWVUeXBlOworICAgICAgICBpZiAoIW1pbWVUeXBl
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sK
KyAgICAgICAgICAgIFdURk1vdmUoKnJlc3BvbnNlVVJMKSwKKyAgICAgICAgICAgIFdURk1vdmUo
Km1pbWVUeXBlKQorICAgICAgICB9fTsKKyAgICB9Cit9OworCitzdGF0aWMgSGFzaE1hcDxVUkws
IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4gc3RyaXBTY3JpcHRTb3VyY2VzKGNvbnN0IEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYgbWFwKQor
eworICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IG1hcFdpdGhvdXRT
Y3JpcHRzOworICAgIGZvciAoYXV0byYgcGFpciA6IG1hcCkKKyAgICAgICAgbWFwV2l0aG91dFNj
cmlwdHMuYWRkKHBhaXIua2V5LCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgeyBwYWlyLnZhbHVl
LnJlc3BvbnNlVVJMLCBwYWlyLnZhbHVlLm1pbWVUeXBlIH0pOworICAgIHJldHVybiBtYXBXaXRo
b3V0U2NyaXB0czsKK30KKworc3RhdGljIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0PiBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhTV1Nj
cmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3JhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSwgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmli
dXRlcz4mJiBtYXApCit7CisgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQ+IGltcG9ydGVkU2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIg
OiBtYXApIHsKKyAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UucmV0
cmlldmUocmVnaXN0cmF0aW9uS2V5LCBwYWlyLmtleSk7CisgICAgICAgIGlmICghaW1wb3J0ZWRT
Y3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2s6IEZhaWxl
ZCB0byByZXRyaWV2ZSBpbXBvcnRlZCBzY3JpcHQgZm9yICVzIGZyb20gZGlzayIsIHBhaXIua2V5
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChwYWlyLmtleSwgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpLCBXVEZN
b3ZlKHBhaXIudmFsdWUucmVzcG9uc2VVUkwpLCBXVEZNb3ZlKHBhaXIudmFsdWUubWltZVR5cGUp
IH0pOworICAgIH0KKyAgICByZXR1cm4gaW1wb3J0ZWRTY3JpcHRzOworfQorCiBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2UoUmVnaXN0cmF0aW9uU3RvcmUmIHN0b3Jl
LCBTdHJpbmcmJiBkYXRhYmFzZURpcmVjdG9yeSkKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJTZXJ2aWNlV29ya2VyIEkvTyBUaHJlYWQiLCBXb3JrUXVldWU6OlR5cGU6OlNl
cmlhbCkpCiAgICAgLCBtX3N0b3JlKG1ha2VXZWFrUHRyKHN0b3JlKSkKQEAgLTEyNCw5ICsxNzQs
OSBAQCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFiYXNlIG5lZWRzIHRv
IGJlIGRlc3Ryb3llZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgaWYgKG1fZGF0YWJh
c2UpCi0gICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3ZlKG1f
ZGF0YWJhc2UpXSB7IH0pOworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlwdFN0b3JhZ2UgbmVl
ZCB0byBiZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgIGlmIChtX2Rh
dGFiYXNlIHx8IG1fc2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtkYXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3JhZ2UgPSBXVEZNb3Zl
KG1fc2NyaXB0U3RvcmFnZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OnBvc3RUYXNrVG9Xb3JrUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCkBAIC0xODUsNiAr
MjM1LDE5IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShj
b25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RhdGFi
YXNlRGlyZWN0b3J5LCB7ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dTY3JpcHRTdG9yYWdl
JiBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7CisgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fc2Ny
aXB0U3RvcmFnZSA9IG1ha2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3JpcHRTdG9yYWdlRGly
ZWN0b3J5KCkpOworICAgIHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQorCiB2b2lkIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMzMzLDggKzM5NiwxMCBAQCB2b2lkIFJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZQogewogICAgIHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIG1f
ZGF0YWJhc2UgPSBudWxscHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBudWxscHRyOwog
CiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNl
RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShz
Y3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkp
OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtMzUyLDEyICs0MTcsMTMgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNo
Q2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICBTUUxp
dGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24u
YmVnaW4oKTsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQg
SU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywg
PykiX3MpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5U
TyBSZWNvcmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3Mp
OwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRv
IHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgYXV0byYgc2NyaXB0U3RvcmFnZSA9IHRo
aXMtPnNjcmlwdFN0b3JhZ2UoKTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IHJlbW92
ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJh
c2UsICJERUxFVEUgRlJPTSBSZWNvcmRzIFdIRVJFIGtleSA9ID8iKTsKICAgICAgICAgaWYgKHNx
bC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0zNjYsMTQgKzQzMiwxNyBAQCBib29sIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+JgogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtl
ciwgIkZhaWxlZCB0byByZW1vdmUgcmVnaXN0cmF0aW9uIGRhdGEgZnJvbSByZWNvcmRzIHRhYmxl
ICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAg
c2NyaXB0U3RvcmFnZS5jbGVhcihyZWdpc3RyYXRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0
byYgZGF0YSA6IHVwZGF0ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXIgY3NwRW5jb2RlcjsKICAgICAgICAgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xp
Y3kuZW5jb2RlKGNzcEVuY29kZXIpOwogCisgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGVu
Y29kZSB0aGUgc2NyaXB0IHNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlLiBUaGV5IHdpbGwgYmUgc3Rv
cmVkIHNlcGFyYXRlbHkgaW4gdGhlIFNjcmlwdFN0b3JhZ2UuCisgICAgICAgIC8vIEFzIGEgcmVz
dWx0LCB3ZSBuZWVkIHRvIHN0cmlwIHRoZSBzY3JpcHQgc291cmNlcyBoZXJlIGJlZm9yZSBlbmNv
ZGluZyB0aGUgc2NyaXB0UmVzb3VyY2VNYXAuCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVu
Y29kZXIgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyOwotICAgICAgICBzY3JpcHRSZXNvdXJjZU1h
cEVuY29kZXIgPDwgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc2NyaXB0UmVzb3Vy
Y2VNYXBFbmNvZGVyIDw8IHN0cmlwU2NyaXB0U291cmNlcyhkYXRhLnNjcmlwdFJlc291cmNlTWFw
KTsKIAogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNlcnRpZmljYXRlSW5mb0Vu
Y29kZXI7CiAgICAgICAgIGNlcnRpZmljYXRlSW5mb0VuY29kZXIgPDwgZGF0YS5jZXJ0aWZpY2F0
ZUluZm87CkBAIC0zODUsMjEgKzQ1NCwzNiBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpk
b1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAg
ICAgICAgICAgfHwgc3FsLmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0
ZVRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
ICAgIHx8IHNxbC5iaW5kVGV4dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKGRhdGEucmVnaXN0
cmF0aW9uLnVwZGF0ZVZpYUNhY2hlKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwu
YmluZFRleHQoNywgZGF0YS5zY3JpcHRVUkwuc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3FsLmJpbmRUZXh0KDgsIGRhdGEuc2NyaXB0KSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgICAgIHx8IHNxbC5iaW5kVGV4dCg5LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJU
eXBlKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTAsIGNzcEVu
Y29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIHNjcmlwdFJlc291cmNlTWFw
RW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTMsIGNlcnRpZmljYXRl
SW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCB3b3JrZXJUeXBl
VG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBz
cWwuYmluZEJsb2IoOSwgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXpl
KCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDEwLCBkYXRhLnJl
ZmVycmVyUG9saWN5KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigx
MSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVu
Y29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5k
QmxvYigxMiwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZv
RW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vy
dmljZVdvcmtlciwgIkZhaWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29y
ZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQor
CisgICAgICAgIC8vIFNhdmUgc2NyaXB0cyB0byBkaXNrLgorICAgICAgICBhdXRvIG1haW5TY3Jp
cHQgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5zY3Jp
cHRVUkwsIGRhdGEuc2NyaXB0KTsKKyAgICAgICAgQVNTRVJUKG1haW5TY3JpcHQpOworICAgICAg
ICBpZiAoIW1haW5TY3JpcHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEhh
c2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4gaW1wb3J0ZWRTY3JpcHRzOworICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBkYXRhLnNjcmlwdFJlc291cmNlTWFwKSB7CisgICAgICAgICAg
ICBhdXRvIGltcG9ydGVkU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShkYXRhLnJlZ2lzdHJh
dGlvbi5rZXksIHBhaXIua2V5LCAqcGFpci52YWx1ZS5zY3JpcHQpOworICAgICAgICAgICAgQVNT
RVJUKGltcG9ydGVkU2NyaXB0KTsKKyAgICAgICAgICAgIGlmIChpbXBvcnRlZFNjcmlwdCkKKyAg
ICAgICAgICAgICAgICBpbXBvcnRlZFNjcmlwdHMuYWRkKGNyb3NzVGhyZWFkQ29weShwYWlyLmtl
eSksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpKTsKKyAgICAgICAgfQorICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyID0gZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWFpblNjcmlw
dCA9IG1haW5TY3JpcHQucmVsZWFzZU5vbk51bGwoKSwgaW1wb3J0ZWRTY3JpcHRzID0gV1RGTW92
ZShpbXBvcnRlZFNjcmlwdHMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKG1fc3RvcmUp
CisgICAgICAgICAgICAgICAgbV9zdG9yZS0+ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0
ZWRTY3JpcHRzKSk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIHRyYW5zYWN0aW9uLmNvbW1p
dCgpOwotCi0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJVcGRhdGVkIFNlcnZpY2VXb3JrZXIgcmVn
aXN0cmF0aW9uIGRhdGFiYXNlICglenUgYWRkZWQvdXBkYXRlZCByZWdpc3RyYXRpb25zIGFuZCAl
enUgcmVtb3ZlZCByZWdpc3RyYXRpb25zIiwgdXBkYXRlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpLCBy
ZW1vdmVkUmVnaXN0cmF0aW9ucy5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJVcGRhdGVkIFNlcnZpY2VXb3JrZXIgcmVnaXN0cmF0aW9uIGRhdGFiYXNlICglenUgYWRk
ZWQvdXBkYXRlZCByZWdpc3RyYXRpb25zIGFuZCAlenUgcmVtb3ZlZCByZWdpc3RyYXRpb25zIiwg
dXBkYXRlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpLCByZW1vdmVkUmVnaXN0cmF0aW9ucy5zaXplKCkp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MDcsNiArNDkxLDcgQEAgU3RyaW5nIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKIAorICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkczoiKTsKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2Rh
dGFiYXNlLCAiU0VMRUNUICogRlJPTSBSZWNvcmRzOyJfcyk7CiAgICAgaWYgKHNxbC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiRmFpbGVkIHRvIHBy
ZXBhcmUgc3RhdGVtZW50IHRvIHJldHJpZXZlIHJlZ2lzdHJhdGlvbnMgZnJvbSByZWNvcmRzIHRh
YmxlICgiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3JNc2coKSk7CkBAIC00MTQsNiArNDk5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICBpbnQgcmVzdWx0ID0gc3FsLnN0ZXAoKTsKIAogICAg
IGZvciAoOyByZXN1bHQgPT0gU1FMSVRFX1JPVzsgcmVzdWx0ID0gc3FsLnN0ZXAoKSkgeworICAg
ICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6Omlt
cG9ydFJlY29yZHM6IEltcG9ydGluZyBhIHJlZ2lzdHJhdGlvbiBmcm9tIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICBhdXRvIGtleSA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmZyb21E
YXRhYmFzZUtleShzcWwuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAgIGF1dG8gb3JpZ2luVVJM
ID0gVVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDEpIH07CiAgICAgICAgIGF1dG8gc2Nv
cGVQYXRoID0gc3FsLmdldENvbHVtblRleHQoMik7CkBAIC00MjIsNTIgKzUwOCw2OCBAQCBTdHJp
bmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBhdXRvIGxh
c3RVcGRhdGVDaGVja1RpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3FsLmdldENvbHVt
bkRvdWJsZSg0KSk7CiAgICAgICAgIGF1dG8gdXBkYXRlVmlhQ2FjaGUgPSBzdHJpbmdUb1VwZGF0
ZVZpYUNhY2hlKHNxbC5nZXRDb2x1bW5UZXh0KDUpKTsKICAgICAgICAgYXV0byBzY3JpcHRVUkwg
PSBVUkwgeyBVUkwoKSwgc3FsLmdldENvbHVtblRleHQoNikgfTsKLSAgICAgICAgYXV0byBzY3Jp
cHQgPSBzcWwuZ2V0Q29sdW1uVGV4dCg3KTsKLSAgICAgICAgYXV0byB3b3JrZXJUeXBlID0gc3Ry
aW5nVG9Xb3JrZXJUeXBlKHNxbC5nZXRDb2x1bW5UZXh0KDgpKTsKKyAgICAgICAgYXV0byB3b3Jr
ZXJUeXBlID0gc3RyaW5nVG9Xb3JrZXJUeXBlKHNxbC5nZXRDb2x1bW5UZXh0KDcpKTsKIAogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gY29udGVudFNlY3VyaXR5UG9saWN5RGF0YTsKLSAgICAgICAg
c3FsLmdldENvbHVtbkJsb2JBc1ZlY3Rvcig5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhKTsK
KyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3Rvcig4LCBjb250ZW50U2VjdXJpdHlQb2xp
Y3lEYXRhKTsKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjc3BEZWNvZGVyKGNv
bnRlbnRTZWN1cml0eVBvbGljeURhdGEuZGF0YSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRh
LnNpemUoKSk7CiAgICAgICAgIE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycz4gY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgICAgICBpZiAoY29udGVudFNlY3Vy
aXR5UG9saWN5RGF0YS5zaXplKCkpIHsKICAgICAgICAgICAgIGNzcERlY29kZXIgPj4gY29udGVu
dFNlY3VyaXR5UG9saWN5OwotICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kp
CisgICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkgeworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjb250ZW50U2VjdXJpdHlQb2xpY3ki
KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIGF1dG8gcmVmZXJyZXJQb2xpY3kgPSBzcWwuZ2V0Q29sdW1uVGV4dCgxMCk7Cisg
ICAgICAgIGF1dG8gcmVmZXJyZXJQb2xpY3kgPSBzcWwuZ2V0Q29sdW1uVGV4dCg5KTsKIAogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gc2NyaXB0UmVzb3VyY2VNYXBEYXRhOwotICAgICAgICBzcWwu
Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDExLCBzY3JpcHRSZXNvdXJjZU1hcERhdGEpOwotICAgICAg
ICBPcHRpb25hbDxIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdD4+IHNjcmlwdFJlc291cmNlTWFwOworICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFz
VmVjdG9yKDEwLCBzY3JpcHRSZXNvdXJjZU1hcERhdGEpOworICAgICAgICBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VN
YXA7CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1h
cERlY29kZXIoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLmRhdGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBE
YXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChzY3JpcHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKSB7
Ci0gICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VN
YXA7Ci0gICAgICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwKQorICAgICAgICAgICAgT3B0
aW9uYWw8SGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlwdFJlc291
cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29k
ZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKKyAgICAgICAgICAgIGlmICgh
c2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cykgeworICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRz
Iik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBzY3JpcHRSZXNvdXJjZU1hcCA9IHBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrKHNjcmlw
dFN0b3JhZ2UoKSwgKmtleSwgV1RGTW92ZSgqc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0
cykpOwogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNlcnRpZmljYXRlSW5m
b0RhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTIsIGNlcnRpZmljYXRl
SW5mb0RhdGEpOworICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDExLCBjZXJ0aWZp
Y2F0ZUluZm9EYXRhKTsKICAgICAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZp
Y2F0ZUluZm87CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0
ZUluZm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGEuZGF0YSgpLCBjZXJ0aWZpY2F0ZUluZm9E
YXRhLnNpemUoKSk7CiAgICAgICAgIGNlcnRpZmljYXRlSW5mb0RlY29kZXIgPj4gY2VydGlmaWNh
dGVJbmZvOwotICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgaWYgKCFjZXJ0
aWZpY2F0ZUluZm8pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3Jr
ZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29k
ZSBjZXJ0aWZpY2F0ZUluZm8iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAK
ICAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGlucHV0IGZvciB0aGlzIHJlZ2lzdHJhdGlvbi4KICAg
ICAgICAgLy8gSWYgYW55IHBhcnQgb2YgdGhpcyBpbnB1dCBpcyBpbnZhbGlkLCBsZXQncyBza2lw
IHRoaXMgcmVnaXN0cmF0aW9uLgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiBh
biBlcnJvciBza2lwcGluZyAqYWxsKiByZWdpc3RyYXRpb25zPwotICAgICAgICBpZiAoIWtleSB8
fCAhb3JpZ2luVVJMLmlzVmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVWaWFDYWNoZSB8
fCAhc2NyaXB0VVJMLmlzVmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVVUkwuaXNWYWxp
ZCgpKQorICAgICAgICBpZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlzVmFsaWQoKSB8fCAhdG9wT3Jp
Z2luIHx8ICF1cGRhdGVWaWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlzVmFsaWQoKSB8fCAhd29ya2Vy
VHlwZSB8fCAhc2NvcGVVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6
IEZhaWxlZCB0byBkZWNvZGUgcGFydCBvZiB0aGUgcmVnaXN0cmF0aW9uIik7CiAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2NyaXB0ID0gc2NyaXB0U3Rv
cmFnZSgpLnJldHJpZXZlKCprZXksIHNjcmlwdFVSTCk7CisgICAgICAgIEFTU0VSVChzY3JpcHQp
OworICAgICAgICBpZiAoIXNjcmlwdCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWls
ZWQgdG8gcmV0cmlldmUgbWFpbiBzY3JpcHQgZm9yICVzIGZyb20gZGlzayIsIHNjcmlwdFVSTC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CiAKICAgICAgICAgYXV0byB3b3JrZXJJZGVudGlmaWVyID0gU2VydmljZVdvcmtlcklkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBh
dXRvIHNlcnZpY2VXb3JrZXJEYXRhID0gU2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJZGVudGlm
aWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29ya2VyVHlw
ZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwgbGFzdFVw
ZGF0ZUNoZWNrVGltZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2Vydmlj
ZVdvcmtlckRhdGEpIH07Ci0gICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgeyBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2Vy
SWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBX
VEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwg
V1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZSgqc2NyaXB0UmVz
b3VyY2VNYXApIH07CisgICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgeyBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRl
bnRpZmllciwgc2NyaXB0LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5m
byksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xp
Y3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKHNjcmlw
dFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJh
dGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5o
CmluZGV4IGQ2YWVkNmI0MGU2MDQ2MjZlM2ExZmZiYzM1ZWJhNDMxMmU4ZWM3ZGEuLjU3MDc1MjY2
OTYyMWRiMzQyODc3YWYzNGM3MWU0NWI5OGI5MGExOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZWdpc3Ry
YXRpb25TdG9yZTsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOworY2xhc3MgU1dTY3JpcHRTdG9yYWdl
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIAogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VEaXJlY3RvcnkpOwpAQCAtNzIsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBkb1B1c2hDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JiwgY29uc3QgVmVjdG9yPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+Jik7CiAgICAgdm9pZCBkb0NsZWFyT3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJik7CisgICAgU1dTY3JpcHRTdG9yYWdlJiBzY3JpcHRTdG9yYWdlKCk7
CisgICAgU3RyaW5nIHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIFJl
cGxpZXMgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uVG9TdG9y
ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7CkBAIC04MCw2ICs4Myw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBXZWFrUHRyPFJlZ2lzdHJh
dGlvblN0b3JlPiBtX3N0b3JlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTV1NjcmlwdFN0b3JhZ2U+
IG1fc2NyaXB0U3RvcmFnZTsKICAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeTsKICAgICBT
dHJpbmcgbV9kYXRhYmFzZUZpbGVQYXRoOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRh
YmFzZT4gbV9kYXRhYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKaW5kZXggMGJhODg3MTlmMzRm
NGFjYWJhMjkxZmQyYTQzYjNlYjQwMTYxNDM4YS4uOTIxMTU2YWMxNjJjNDJiNGNiZDI0ZTIxNWQ3
YjIyYWZiMGUwNTc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKQEAgLTEyOCw2ICsxMjgsMTEg
QEAgdm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6YWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNlKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGQKICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRpb25G
cm9tU3RvcmUoV1RGTW92ZShkYXRhKSk7CiB9CiAKK3ZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OmRp
ZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8
VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgbV9z
ZXJ2ZXIuZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFdURk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7Cit9CisKIHZv
aWQgUmVnaXN0cmF0aW9uU3RvcmU6OmRhdGFiYXNlRmFpbGVkVG9PcGVuKCkKIHsKICAgICBtX3Nl
cnZlci5yZWdpc3RyYXRpb25TdG9yZURhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0
b3JlLmgKaW5kZXggNzU0M2VjMTNiM2RjZjcxMDhiNDIxMWQ2NmUwMWM4NzcwMDdjZTk3OC4uMjY4
NzhjZWViMGUyZjYwN2U3MDdlN2JiNDAxZmU0MjFjZDExZTlmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUu
aApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Gcm9t
RGF0YWJhc2UoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwogICAgIHZvaWQgZGF0YWJhc2VG
YWlsZWRUb09wZW4oKTsKICAgICB2b2lkIGRhdGFiYXNlT3BlbmVkQW5kUmVjb3Jkc0ltcG9ydGVk
KCk7CisgICAgdm9pZCBkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIFNXU2VydmVyJiBz
ZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlcjsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc0YjZhNTE5MjBjNWRhZjQ0ODc4NGU0MWVhMDM0MTFiMjI1YzA4ZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3Rm
L1NIQTEuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGhhc2hVUkwo
Y29uc3QgVVJMJiB1cmwpCit7CisgICAgU0hBMSBzaGExOworICAgIHNoYTEuYWRkQnl0ZXModXJs
LnN0cmluZygpLnV0ZjgoKSk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc2hhMS5jb21w
dXRlSGV4RGlnZXN0KCkpOworfQorCitTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZShj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKKyAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3RvcmFn
ZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzdHJhdGlvbktleSkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RpcmVjdG9yeSwgeyByZWdpc3RyYXRpb25LZXkudG9w
T3JpZ2luKCkuZGF0YWJhc2VJZGVudGlmaWVyKCksIGhhc2hVUkwocmVnaXN0cmF0aW9uS2V5LnNj
b3BlKCkpIH0pOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJM
JiBzY3JpcHRVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KSwgaGFz
aFVSTChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9y
YWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9
IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworICAgIEZpbGVT
eXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHNjcmlw
dFBhdGgpKTsKKworICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHNj
cmlwdFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgIGlmICghRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbHVyZSB0
byBzdG9yZSAlcywgaW52YWxpZCBoYW5kbGUiLCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjp0cnVuY2F0
ZUZpbGUoZmlsZUhhbmRsZSwgMCk7CisgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJlZ2luKCk7
IGl0ICE9IHNjcmlwdC5lbmQoKTsgKytpdCkKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZUhhbmRsZSwgaXQtPnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7
CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworCisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgpOworfQorCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3Jp
cHRVUkwpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHNjcmlw
dFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKKwor
ICAgIC8vIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKCkgdXNlcyBtbWFw
KCkgd2hlbmV2ZXIgcG9zc2libGUgdG8gc2F2ZSBtZW1vcnkuCisgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgpOworfQorCit2b2lkIFNX
U2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXN0cmF0aW9uS2V5KQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhp
cy0+cmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7CisgICAgYm9vbCByZXN1
bHQgPSBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNlcnZpY2VXb3JrZXIs
ICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJl
Z2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRh
dGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZGViZDg1NGUwY2Q0Y2Y0
MDQxZTZiNzE2M2I0NDU2MzIxMDU3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisK
K2NsYXNzIFNXU2NyaXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5KTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBzY3JpcHQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CisgICAg
dm9pZCBjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisKK3ByaXZh
dGU6CisgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25zdDsK
KworICAgIFN0cmluZyBtX2RpcmVjdG9yeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3
ODFkMzBhYmRiNGE5OTdkNjRmMWQ2NTg2OTRiMy4uZGNlMjAxNmZjMTUzODMwMGZmYWExMTc1OWVh
ZTMzNDA4YzRmOWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE3Niw2ICsxNzYsMTIgQEAgdm9pZCBTV1NlcnZlcjo6
YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEp
CiAgICAgfSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNr
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgaWYgKGF1dG8gd29ya2VyID0gd29ya2VyQnlJ
RChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soV1RGTW92ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsK
K30KKwogdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1Nl
cnZlclJlZ2lzdHJhdGlvbj4mJiByZWdpc3RyYXRpb24pCiB7CiAgICAgbV9vcmlnaW5TdG9yZS0+
YWRkKHJlZ2lzdHJhdGlvbi0+a2V5KCkudG9wT3JpZ2luKCkpOwpAQCAtNjMzLDcgKzYzOSw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBT
V1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBI
YXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBz
Y3JpcHRSZXNvdXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCks
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRl
SW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBm
YWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRl
eHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdp
c3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc3Ry
aW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlw
dFJlc291cmNlTWFwKSB9KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHRE
YXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYmExYjQxMzUwMzU0MGRj
ZTg4NWNkNDQ4YjNmN2MwNDI4ZGI4Y2IxNy4uNzk2YmU4NWUzZTU0NzcyNjg2ZTk1NDgwODQ1ZjA0
NTQ4YzVkOTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaApAQCAtMTkwLDYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29s
dmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAg
ICB2b2lkIGFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
Jik7CisgICAgdm9pZCBkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKICAgICB2b2lkIHJlZ2lzdHJh
dGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblN0b3JlRGF0
YWJhc2VGYWlsZWRUb09wZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggODAyYTQ4MDEx
NTFhNzI4ZmJjNWEyYTY5MTI0ZGI5NjNjNzcyY2IwYS4uNWNhMjUyNjkxMTQ1M2RiMDhmMWY4ZjI4
MzJkYmM0MDQ1ZTY0YWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZp
Y2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWwKICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbm90
IG51bGwsIG5ld2VzdFdvcmtlcidzIHNjcmlwdCB1cmwgZXF1YWxzIGpvYidzIHNjcmlwdCB1cmwg
d2l0aCB0aGUgZXhjbHVkZSBmcmFnbWVudHMKICAgICAvLyBmbGFnIHNldCwgYW5kIHNjcmlwdCdz
IHNvdXJjZSB0ZXh0IGlzIGEgYnl0ZS1mb3ItYnl0ZSBtYXRjaCB3aXRoIG5ld2VzdFdvcmtlcidz
IHNjcmlwdCByZXNvdXJjZSdzIHNvdXJjZQogICAgIC8vIHRleHQsIHRoZW46Ci0gICAgaWYgKG5l
d2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtl
ci0+c2NyaXB0VVJMKCksIGpvYi5zY3JpcHRVUkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09
IGpvYi53b3JrZXJUeXBlICYmIHJlc3VsdC5zY3JpcHQgPT0gbmV3ZXN0V29ya2VyLT5zY3JpcHQo
KSAmJiBkb0NlcnRpZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdv
cmtlci0+Y2VydGlmaWNhdGVJbmZvKCkpKSB7CisgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpv
Yi5zY3JpcHRVUkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYm
IHJlc3VsdC5zY3JpcHQgPT0gc2NyaXB0QnVmZmVyVG9TdHJpbmcobmV3ZXN0V29ya2VyLT5zY3Jp
cHQoKSkgJiYgZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdl
c3RXb3JrZXItPmNlcnRpZmljYXRlSW5mbygpKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkLCBz
Y3JpcHQgYW5kIGNlcnRpZmljYXRlIGFyZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0aW9uSUQ9JWxs
dSIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAg
ICAvLyBGSVhNRTogZm9yIG5vbiBjbGFzc2ljIHNjcmlwdHMsIGNoZWNrIHRoZSBzY3JpcHTigJlz
IG1vZHVsZSByZWNvcmQncyBbW0VDTUFTY3JpcHRDb2RlXV0uCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAyYjhmZjY4NWUwNDk3OWZjZGM3M2U3MzIwZGYz
ZjRkYTY0Yzc2MmRmLi4xMjAwNTE2OThiZjkzOTgxOGU0ZDQzZTg1YzY5NTczMDBiYTdkY2FmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTAgKzEx
NiwxMCBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKLXZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJj
ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYg
c2NyaXB0VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBt
aW1lVHlwZSkKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNv
dXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJM
JiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYg
c2NyaXB0KQogewogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3Rp
bmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAg
d29ya2VyLT5zZXRTY3JpcHRSZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUo
cmVzcG9uc2VVUkwpLCBXVEZNb3ZlKG1pbWVUeXBlKSB9KTsKKyAgICAgICAgd29ya2VyLT5zZXRT
Y3JpcHRSZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAK
IHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2so
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDQ2NTlmOWY5ZmE2YzZiYWE4ZGU5NjhkMzkxNWZlMzNjNGUz
MTI2NjguLjliZTM0NDQ5MWYwNjEzZmFlMTQwZTc5ODUxYjcxMGEzYjMyYjJiMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90
IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRj
aEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBz
Y3JpcHRVUkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1p
bWVUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWls
SGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdp
c3RyYWJsZURvbWFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAzYmEzNmEzZjk1YTU3ZWJhMTc4
NThjZTYyZGVlZTc4YWM5YTY2NzA1Li42MTNiYjcyYzU4OGQ4YTE3MGIxZTRiYjJiNzkwYzAzMDBi
ZTFmNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNDksNyArNDksNyBAQCBTV1NlcnZlcldvcmtl
ciogU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29y
a2VySWRlbnRpZgogfQogCiAvLyBGSVhNRTogVXNlIHItdmFsdWUgcmVmZXJlbmNlcyBmb3Igc2Ny
aXB0IGFuZCBjb250ZW50U2VjdXJpdHlQb2xpY3kKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldv
cmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9u
LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQ
b2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
JiYgc2NyaXB0UmVzb3VyY2VNYXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dT
ZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlw
dFJlc291cmNlTWFwKQogICAgIDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAs
IG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0
aW9uKG1ha2VXZWFrUHRyKHJlZ2lzdHJhdGlvbikpCkBAIC0yMzgsNiArMjM4LDIxIEBAIHZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OnNldFNjcmlwdFJlc291cmNlKFVSTCYmIHVybCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvCiAgICAgbV9zY3JpcHRSZXNvdXJjZU1hcC5zZXQoV1RGTW92ZSh1
cmwpLCBXVEZNb3ZlKHNjcmlwdCkpOwogfQogCit2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRTYXZl
U2NyaXB0c1RvRGlzayhSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJM
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8gVGhl
IHNjcmlwdHMgd2VyZSBzYXZlZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhl
IG1tYXAnZCB2ZXJzaW9uIHRvIHNhdmUgbWVtb3J5LgorICAgIEFTU0VSVChtYWluU2NyaXB0Lmdl
dCgpID09IG1fc2NyaXB0LmdldCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBz
Y3JpcHRzIGFyZSBpZGVudGljYWwuCisgICAgbV9zY3JpcHQgPSBXVEZNb3ZlKG1haW5TY3JpcHQp
OworICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgeworICAgICAgICBhdXRv
IGl0ID0gbV9zY3JpcHRSZXNvdXJjZU1hcC5maW5kKHBhaXIua2V5KTsKKyAgICAgICAgQVNTRVJU
KGl0ICE9IG1fc2NyaXB0UmVzb3VyY2VNYXAuZW5kKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9z
Y3JpcHRSZXNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBB
U1NFUlQoKml0LT52YWx1ZS5zY3JpcHQgPT0gKnBhaXIudmFsdWUpOyAvLyBEbyBhIG1lbWNtcCB0
byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KKyAgICAgICAgaXQtPnZhbHVl
LnNjcmlwdCA9IFdURk1vdmUocGFpci52YWx1ZSk7CisgICAgfQorfQorCiB2b2lkIFNXU2VydmVy
V29ya2VyOjpza2lwV2FpdGluZygpCiB7CiAgICAgbV9pc1NraXBXYWl0aW5nRmxhZ1NldCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKaW5kZXggMzc4ZmJhNjU3ZThiYmY0ODQxZTU2Y2JmODY1NjFmOGVjYzMx
MTAyMC4uYzQ1ZGFkYmNhYjgxOTc2Yjc2ZjBiZTUzMTRmM2I3MWY3N2I2YjI5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2ZXIqIHNlcnZlcigpIHsg
cmV0dXJuIG1fc2VydmVyLmdldCgpOyB9CiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25L
ZXk7IH0KICAgICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5z
Y3JpcHRVUkw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyaXB0OyB9CisgICAgU2hhcmVkQnVmZmVyJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3Nj
cmlwdDsgfQogICAgIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICBXb3JrZXJUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEudHlwZTsgfQogCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBm
aW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JikgY29uc3Q7CiAgICAgdm9pZCBtYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpOwogICAg
IHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoVVJMJiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQmJik7CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWY8U2hh
cmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCiAgICAgdm9pZCBza2lwV2FpdGluZygpOwogICAgIGJv
b2wgaXNTa2lwV2FpdGluZ0ZsYWdTZXQoKSBjb25zdCB7IHJldHVybiBtX2lzU2tpcFdhaXRpbmdG
bGFnU2V0OyB9CkBAIC0xMjcsNyArMTI4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEhl
YXJ0QmVhdENoZWNrKCk7CiAKIHByaXZhdGU6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXIm
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0PiYmKTsKKyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0
IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQ+JiYpOwogCiAgICAgdm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIoYm9vbCBz
dWNjZXNzKTsKIApAQCAtMTQwLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNXU2VydmVy
UmVnaXN0cmF0aW9uPiBtX3JlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2Rh
dGE7Ci0gICAgU3RyaW5nIG1fc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0
OwogICAgIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAg
U3RyaW5nIG1fcmVmZXJyZXJQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmM2I3NWE1ZWJh
M2ZkNzNmNTI2ODQ0NjEyMzk3ODVlNTQ0NjkzN2EyLi5kOGQ5NDM0MDg0NWRkODViMzZkYzg5Mjlh
YjFlNjI3MTg4OTMyODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVz
c2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewog
ICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllcikKICAgICBNYXRjaEFsbCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7
CiAgICAgQ2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQp
IEFzeW5jCi0gICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3Bv
bnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpCisgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCiAgICAg
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVj
ayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuY3BwCmluZGV4IGFiN2FiYzI1NzY1YWQ0MjhmMmExNTdjNjE3OTRkMjI1ODYxN2JiNDcu
LjJlYTI4NDAwOTY0NDkwZmRiYmU1NzBhMDhiMmZjMGMyOGEzNzIxZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9t
RGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOwogICAgICAgICBmb3IgKGF1
dG8mIGZpbGVuYW1lIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CiAg
ICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBGaWxl
U3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCi0gICAgICAgICAgICAgICAg
ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGZpbGVuYW1lKTsKICAgICAgICAgfQog
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgIH0pOwpAQCAtNzQ5LDE4ICs3NDksMTggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2Fj
aGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmb2xkZXJQ
YXQKIAogICAgICAgICAgICAgLy8gSWYgY2FjaGUgc2FsdCBpcyBpbml0aWFsaXplZCBhbmQgdGhl
IHBhdGhzIGRvIG5vdCBtYXRjaCwgc29tZSBjYWNoZSBmaWxlcyBoYXZlIHByb2JhYmx5IGJlIHJl
bW92ZWQgb3IgcGFydGlhbGx5IGNvcnJ1cHRlZC4KICAgICAgICAgICAgIEFTU0VSVCghbV9zYWx0
IHx8IGZvbGRlclBhdGggPT0gY2FjaGVzUm9vdFBhdGgoKmZvbGRlck9yaWdpbikpOwotICAgICAg
ICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVy
UGF0aCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0g
eyB9KTsKKyAgICAgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhy
ZWFkKGZvbGRlclBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdn
cmVnYXRvcildIHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBFbmdpbmU6OmRl
bGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYg
cGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX2lvUXVldWUt
PmRpc3BhdGNoKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKLSAgICAgICAgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkocGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KHBhdGgpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxOTQ0YTVj
NzkyZDhkNzk5ZTI5ZGFiYzg0NjY2N2I2Njg2MmJiN2Y5Li40NDA5ZTdiNDk2YWI4Y2Y2NDZjOWEw
ZmZhZWRmNTczNGMwZmYxZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpc2soY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRl
bGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYg
cGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU5vbkVt
cHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2EwZWM1ZTE0ZjMzZGUwNDJjZGY0NGIwZmJh
NDIzY2M5ZGQ3YWZjNS4uN2E5OTYxNGYyMzM1YjE1MGM5Y2FiMjIyYzkzNWQwYmJlZjY5YzgwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02MiwyMyArNjIsNiBAQCB2b2lkIHRyYXZl
cnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgRAogICAgIH0KIH0KIAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0aCwgWyZw
YXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAg
ICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aCwgbmFtZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIERp
cmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdG9y
eUVudHJ5VHlwZTo6RGlyZWN0b3J5OgotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBUaGlzIGRv
ZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Ci19Ci0KIEZpbGVUaW1lcyBmaWxlVGltZXMo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVT
eXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5oCmluZGV4IDdhNWY4Y2M0ZmUzOGE5NTYxY2UxYzhiNjFjMTBjNzQ3OWNhODc0
MmYuLmMwYjRlODFiNDczNzVhMDdmZjk5YmViNDIxMGRhMDE1ODIyYzczNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5oCkBAIC0zMyw4ICszMyw2IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewog
ZW51bSBjbGFzcyBEaXJlY3RvcnlFbnRyeVR5cGUgeyBEaXJlY3RvcnksIEZpbGUgfTsKIHZvaWQg
dHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYpOwogCi12b2lk
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KIHN0cnVj
dCBGaWxlVGltZXMgewogICAgIFdhbGxUaW1lIGNyZWF0aW9uOwogICAgIFdhbGxUaW1lIG1vZGlm
aWNhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGVkZGMwYmUyOWUwZTJjNmQyMDI1YTk2
YjI1ZWMxZTU2YzQ4YWY4ZDYuLmRiNGMwNTQ5YzZiYmViODAzYjY2ZjBlMzE0NTE5YmU1ODI5MjVi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9D
b25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21O
dW1iZXIuaD4KQEAgLTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVy
c2lvbnMoKQogICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAg
ICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9s
ZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRo
KTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZl
cnNpb25QYXRoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAyODBjOTg0M2M2N2U5ZDU4NWEw
Mzg1NzQ4NTNiMjkwNmEzMzEwOWJhLi44NTYxZTk0YzA5YTFhOWI0OWEwZjBiMmY4MDJjYTY5ODZj
Y2ZhODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3Rh
dGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVuY29k
ZXIgPDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHVp
bnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZl
clNpemU7CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTIg
KzE0OSwyNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAgZGVj
b2RlciA+PiBpc051bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1
ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDJmMzc5YmExYmJmZTBkNmNhY2RkOTk0
Y2QwZDlmYTgwODViNTJjZS4uZTE0MWJmMzFkN2NkN2NjYTUyZjQwNGFkZmViYzc0YTdiMTE2YjFl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjkwLDcgKzI5MCw3
IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBz
Y3JpcHQuc2NyaXB0LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsK
KyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZmNzdmNzBkZmRlODU1ODNlM2JlMWFmYTU0MzEzOTI4MWJm
YjhkOTMuLjVmZjBhOTQ2ZmM3MmMwNDVlNWNiNmUzZjcxNDc3OTRmZTViMTM5NDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29y
ayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUz
OiBSZW1vdmVkLgorICAgICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtl
ciByZWdpc3RyYXRpb24gZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRl
ZCBhbmQgaXQgaXMgYSBwYWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBpdAor
ICAgICAgICBoYWQgbm8gdGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3ZSBu
b3cgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBsYXRm
b3Jtcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vydmlj
ZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNlcnZp
Y2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2Ug
aW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBkYXRh
YmFzZSBzY2hlbWUgYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUgdGVz
dCB0aGF0IHdhcyByZWx5aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFiYXNl
IGZpbGUgKHdpdGggb2xkIHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWljYWxs
eSBnZW5lcmF0ZSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0IHJl
Z2lzdGVycyBhIHNlcnZpY2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjUgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBSZW5hbWUgYXR0
cmlidXRlT24gdG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbiBhbmQgY2hhbmdlIHRoZSBJREwgZGF0
YSB0eXBlIG9mIGF0dHJpYnV0aW9uU291cmNlSWQgdG8gdW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAxNDE1Mzc3ZWMzZTE2NDNlN2VlNjVjZTY4ODIxMTRiOTU1NjIxMWZj
Li40NTI4NDY1MmIzNzAxYjYwZTUyZjI1OGQ0MzQzMDRlNDc4YmRlZWFkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjY5LDcgKzI2OSw2IEBACiAJCTQ2QTQ0QTU0MjVBNzgzMDMwMEY2MUUx
NiAvKiB3ZWJhdWRpby1jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE0NEE1MzI1QTc4MkRE
MDBGNjFFMTYgLyogd2ViYXVkaW8tY3JlYXRlTWVkaWFFbGVtZW50U291cmNlLmh0bWwgKi87IH07
CiAJCTQ2QTQ2QTFBMjU3NTY0NTYwMEExQjExOCAvKiBTZXNzaW9uU3RvcmFnZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTQ2QTE5MjU3NTY0NTYw
MEExQjExOCAvKiBTZXNzaW9uU3RvcmFnZS5tbSAqLzsgfTsKIAkJNDZBOTExNTkyMTA4RTY3ODAw
NzhENDBEIC8qIEN1c3RvbVVzZXJBZ2VudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTkxMTU4MjEwOEU2NkIwMDc4RDQwRCAvKiBDdXN0b21Vc2Vy
QWdlbnQubW0gKi87IH07Ci0JCTQ2QUU1QTM3MjBGOTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8q
IFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKIAkJNDZC
QkVBMUIyNUY5ODM1NzAwRDQ5ODdBIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyog
V29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJNDZDMUVBOTgyNTc1ODgyMDAwNUU0MDlFIC8qIGFsZXJ0
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDMUVBOTcyNTc1ODgwNTAwNUU0MDlFIC8qIGFsZXJ0Lmh0bWwgKi87IH07CiAJCTQ2QzNB
RUIzMjNEMEU1MjkwMDFCMDY4MCAvKiBiZWZvcmV1bmxvYWQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzQUVCMjIzRDBFNTBGMDAx
QjA2ODAgLyogYmVmb3JldW5sb2FkLmh0bWwgKi87IH07CkBAIC0xNjQyLDcgKzE2NDEsNiBAQAog
CQkJCUJDOTA5Nzg0MTI1NTcxQ0YwMDA4Mzc1NiAvKiBzaW1wbGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQk1MUU1QzcwMjE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMi5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxRTVDNzAzMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1w
bGUzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCi0JCQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4
NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlGNEY0MDVCRDFENEMwRDFDMDA3QTk3MDcgLyogc2tpbm55LWF1
dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDMDFBMjNGMjEyNjYxNTY3MDBDOUVENTUgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRDRkNEREEyNDlGQzlFNDAwNTI3NDgyIC8qIFNwYWNl
T25seS5vdGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yMDI3LDcgKzIwMjUsNiBAQAogCQk0
NjNGNDcyMjI1NUI0OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vz
c0RpZFRlcm1pbmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cm9jZXNzRGlkVGVybWluYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0
Qzc2NEMyMzBERjgzMjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQu
c3FsaXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGZpbGU7IHBhdGggPSAiQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8q
IFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiU2ltcGxl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90
aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibm90aWZ5LXJlc291cmNlTG9hZE9ic2VydmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDAwNCw3ICs0MDAxLDYgQEAKIAkJCQlGNEUz
RDgwNzIwRjcwOEU0MDA3QjU4QzUgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUtYXJ0aWNs
ZS5odG1sICovLAogCQkJCUY0RkMwNzc2MjBGMDEwODEwMENBMDQzQyAvKiBzaWduaWZpY2FudC10
ZXh0LW1pbGVzdG9uZS5odG1sICovLAogCQkJCUM5QjRBRDI5MUVDQTZFQTUwMEY1RkVBMCAvKiBz
aWxlbmNlLWxvbmcubTRhICovLAotCQkJCTQ2NTZBNzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1w
bGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8sCiAJCQkJRjRGNDA1QkIx
RDRDMENGODAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0
bWwgKi8sCiAJCQkJRjRDRkNERDgyNDlGQzlEOTAwNTI3NDgyIC8qIFNwYWNlT25seS5vdGYgKi8s
CiAJCQkJOTM2MDI3MDUyNUEzQjI4RTAwMzY3NjcwIC8qIHNwZWVjaHJlY29nbml0aW9uLWJhc2lj
Lmh0bWwgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDc2Y2FmMmFkNDM3MjY2M2QyYmUzMTFiY2ZiNjNhMDRkMGMwZDAxZjYuLjhmNjUxZDNl
YWUzNDMyOTc1MWFjMzYxZGQ3ZTA2NGNiNjM3ZTM3NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC0xNTEsNCArMTUxLDI5IEBAIFRFU1RfRihG
aWxlU3lzdGVtVGVzdCwgb3BlbkV4aXN0aW5nRmlsZUFuZEZhaWxJZkZpbGVFeGlzdHMpCiAgICAg
RVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSk7CiB9CiAKK1RF
U1RfRihGaWxlU3lzdGVtVGVzdCwgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkpCit7CisgICAgYXV0
byBjcmVhdGVUZXN0VGlsZSA9IFtdKGNvbnN0IFN0cmluZyYgcGF0aCkgeworICAgICAgICBhdXRv
IGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OldyaXRlKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlSGFuZGxlKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZp
bGVIYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgfTsKKwor
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlOworICAgIGF1
dG8gdGVtcG9yYXJ5VGVzdEZvbGRlciA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJk
ZWxldGVOb25FbXB0eURpcmVjdG9yeVRlc3QiLCB0ZW1wb3JhcnlGaWxlKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZSk7CisKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiIH0pKSk7CisgICAg
Y3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBv
cmFyeVRlc3RGb2xkZXIsICJmaWxlMS50eHQiKSk7CisgICAgY3JlYXRlVGVzdFRpbGUoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRlc3RGb2xkZXIsICJmaWxl
Mi50eHQiKSk7CisgICAgY3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiLCAiZmlsZTMudHh0
IiB9KSk7CisgICAgY3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiLCAiZmlsZTQudHh0IiB9
KSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHRl
bXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpk
ZWxldGVOb25FbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNU
X0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5VGVzdEZvbGRlcikpOworfQor
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDdmNGFjOTZmYTdjNzNhODQyMmE0YzRlOGZm
N2U2MTA1ZTllODgwZGYuLjIzNzg4ZWFlMTQzNjdhZTJmMWE0MTY0ZWI0YzlmYmExNDMwOTQ0NzEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vydmlj
ZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBURVNUKFNlcnZp
Y2VXb3JrZXJzLCBTdXNwZW5kTmV0d29ya1Byb2Nlc3MpCiAgICAgYXV0byBwYXRoID0gc3RvcmUu
X2NvbmZpZ3VyYXRpb24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsK
IAogICAgIE5TVVJMKiBkaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNE
aXJlY3Rvcnk6WUVTXTsKLSAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRl
MyJdOworICAgIE5TVVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl07CiAKICAg
ICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNB
dFBhdGg6c3dEQlBhdGgucGF0aF0pOwogCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBURVNUKFdlYktp
dCwgU2VydmljZVdvcmtlckRhdGFiYXNlV2l0aFJlY29yZHNUYWJsZUJ1dFVuZXhwZWN0ZWRTY2hl
bWEpCiAgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmls
ZUV4aXN0c0F0UGF0aDpzd1BhdGgucGF0aF0pOwogCiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpzd1BhdGggd2l0aEludGVybWVkaWF0ZURp
cmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5z
cWxpdGUzIl0gZXJyb3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdIGVycm9yOm5pbF07
CiAKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkgPSBzd1BhdGg7CkBAIC0yMzU1LDYgKzIzNTUsNzcgQEAgVEVTVChTZXJ2aWNlV29y
a2VycywgQ2xlYXJET01DYWNoZUFsc29JbmNsdWRlc1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
KQogICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwogfQogCitURVNUKFNlcnZpY2VXb3JrZXJz
LCBDdXN0b21EYXRhU3RvcmVQYXRoc1ZlcnN1c0NvbXBsZXRpb25IYW5kbGVycykKK3sKKyAgICBO
U1VSTCAqc3dQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVz
L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJLaXQvU2VydmljZVdvcmtlcnMvIiBz
dHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXV07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6c3dQYXRoIGVycm9yOm5pbF07CisgICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpz
d1BhdGgucGF0aF0pOworCisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVh
dGVEaXJlY3RvcnlBdFVSTDpzd1BhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBh
dHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworCisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOworICAgIGF1dG8gZGF0
YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFT
dG9yZS5nZXQoKV07CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQo
KSBuYW1lOkAic3ciXTsKKworICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKKyAg
ICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9LAorICAgIH0pOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHVuc2lnbmVkIHRp
bWVvdXQgPSAwOworICAgIHdoaWxlICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0ucGF0aF0gJiYgKyt0aW1lb3V0IDwg
MjApCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQRUNU
X1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOltz
d1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnMtNi5zcWxpdGUzIl0ucGF0aF0pOworCisgICAgLy8gRmV0Y2ggU1cgcmVjb3JkcworICAg
IGF1dG8gd2Vic2l0ZURhdGFUeXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhB
cnJheTpAW1dLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNdXSk7Cisg
ICAgc3RhdGljIGJvb2wgcmVhZHlUb0NvbnRpbnVlOworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRh
UmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAg
RVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRv
Q29udGludWUpOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gRmV0Y2gg
cmVjb3JkcyBhZ2FpbiwgdGhpcyB0aW1lIHJlbGVhc2luZyBvdXIgcmVmZXJlbmNlIHRvIHRoZSBk
YXRhIHN0b3JlIHdoaWxlIHRoZSByZXF1ZXN0IGlzIGluIGZsaWdodC4KKyAgICBbZGF0YVN0b3Jl
IGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7
CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOworICAgICAgICByZWFk
eVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIGRhdGFTdG9yZSA9IG5pbDsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgcmVhZHlUb0Nv
bnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBEZWxldGUgYWxsIFNXIHJlY29yZHMsIHJlbGVhc2lu
ZyBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIHN0b3JlIHdoaWxlIHRoZSByZXF1ZXN0IGlzIGlu
IGZsaWdodC4KKyAgICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5
cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhh
bmRsZXI6XigpIHsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBkYXRhU3RvcmUgPSBuaWw7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRv
Q29udGludWUpOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gVGhlIHJl
Y29yZHMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkLCBhbmQgdGhlIGNhbGxiYWNrIHNob3VsZCBo
YXZlIGJlZW4gbWFkZS4KKyAgICAvLyBOb3cgcmVmZXRjaCB0aGUgcmVjb3JkcyB0byB2ZXJpZnkg
dGhleSBhcmUgZ29uZS4KKyAgICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3
ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNp
dGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMFUsIGRh
dGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cit9CisK
IFRFU1QoU2VydmljZVdvcmtlcnMsIFdlYlByb2Nlc3NDYWNoZSkKIHsKICAgICBbV0tXZWJzaXRl
RGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEwNWRjNDZlM2EyY2NlYjM0ZWY5YTc2OGNk
MDllYjNkOGFmMjQxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMDQ4MAp6Y21l
SE9jfn0heSpVdl9QNU0malFNYVA5ckFofV84THFkcHZ2V1MydkI2TFV3R01iSDwyXmNMXnFvUCpw
ZzhQUHUKelhzdWgteTYqfXFSJkN2X2I9U0pyVDFCZ01zbyROMUFYcj00QEE7bmhkO2lHYldiU2hB
Sj9ILUp6MzB3M1hVc0BYCnojd2lSYilEUzleTGMkbzEzPkokS2l5I2FKZzlVRlpjJCtVS09tTkhA
X0B3aSNUYFl6bTlJPHpKJHphKD5GemgyNwp6ajwoam9RZzE9UGZgQTE5M2ohN2RFQ15ULXVwblNU
ej1EN1VmJlZINUNPOSN6LU16ZStsbDJyQHB1YDRYRzdUWG8Kejh5X3NtMEk0YHJpZSFyOGxCR3l2
QXJkZWcoPDdQRUw3N051OG9hWlRsYWFKa00zUj07Q3BrJXlpUyFYQ0JfbW0+CnpOJEZZQTdVY3Re
e2djSEtYKXZOOEBGSEJATilOI1pEYnJ9TnRPM2NiNT5ncyUrQ1NAM2lJUDs3UipxN2JNMWplTQp6
WFd9WGhpQkhSLTJsdG1sMn1YM3I3NldscWczMShGdEt5SXswQHFVaUx+cypqc353aFZoflhIS3Nu
QHA3VGMlTXsKem4zfkdLV0k2KDteISt0VFQmNzNqbEdFYjtaaCE8PGghRiV2Rz9NQFEpWTIwfTR7
IWlSWUlLQVFPRl59KkdMVF5lCnpnJXsjNzJ6LSpkUH0yJjFVPGl4ckY3eyRGYUozdjhLXjd+YVJp
QlVRRDIqfG4tPyQ5KE1VNHFJKylwPDJwMGJCRwp6KD45cF98NSt7ejB1fUA7MnZgdVhBWWVoamZg
QTJxZX5He2VVIzFmbylnajgtRGBVMmNSfkxLbHZFdmRJNnMwQmUKelJkVGhVMiZXWGYwcyplYyZv
PnIhN1liVngzKDMrRDNMYDF1S2RBa25MbTw5eip3NkxLNVQ3S0tSenB6YS19Z1k0CnozV2t2K3JZ
c2JvYT1Fa3d6V09IUEJ6eXpMaHlaX0ZPO1ZeKj1edTt+PmVNbXsqUWYoOW5qI1B4I1h9SGRRYyNO
Rwp6UkY7fjtsPng4X0wxZ3BgSn1IMjloZFJLJk1DMmJScGNGOUspWlNRY1lFUDNCN15OZkJyZEc1
N1Z4PS0qaF9OSE8KeioxcmhffEtOYGw4ZWU3dzNRN2Vmezc1eFA+Nk1zM012QDxgTVlVUXVAUStz
RUR6cGQtUTk+QzBpVVB0eWdwe0hMCno4S1RxX1gjflR4TUlZXmAyIWUrWmRTUVZecj42OVlAQ1BI
dlI7ZzhiNz0pdmcqZyNaezV2QHtfWUU1WS1wQEQhbQp6Y0hNfT8oNyt6WFI5UFQ9ejtxZUJkNERt
X2clfkFNe092M2c3XiY1JDw9SnI2MX5nN0ZqMWJCY3J1ODVvdXdvcnQKenRSR0ljc1RHTnQ9VVhU
PXVNYm4+S209OG1xSXdjODE1JT9iIUFQVVRrZzdtT0E8KHsrcChLV0EzSzNFI2xWUE5oCnozYHpt
Wk5eendVUUpeSWxRaTNYVm42VmpOaHk8NyFBe340NkxVaHBmRGE2JjcrfDBnZHh0WWx0NWtmRX0/
Mn0mNwp6XndxY3xqaE91SEBaUGd+JmozTjdeeWNtbjZ7PCVIRmhvYVVhenZ3Nj5mdypmQnJNR2NR
a0coZjhpU1JUMXxqTHUKeiRkbnAyTSg0QjswNkdaYGMpYlk7eFVDdW1HYDIrNWEpaVZQKm9LN3Uy
QUZ9PVA0IUJRWTcjPFg/Nk94PVVTUS1BCnooNn5CaUlodlphdlVkXkYlcl9ydzw5LSlGYWElJGEr
e0Rrd3pab31yOW54SXNzfVg4NVVnbkNqS21vTEs7bz5yRAp6NEo0cEIpODt5WjZxcmBoZHJlezli
QVI0Tk9eblNWbHREcXQwJTAqLUFjMzlANXxeMmtlNyFqVnBMRlAoekwrTnYKejxDN3NXQVYrfjZw
OT0tb0RKZDN7MTA0QndzOUw3YjVNJnloWEN7KllvY1B2cWo2IWlHM0FpRSN7Umk2ZTlpaVZ4Cnpy
YSsteWdeRXM3aXBpTndDZ3tURm0wJCMzc0U+IW55QHkqVTJuOFQyRypyfHJ5anhmfEteVyozKEpl
RndgMCtWNwp6SDJnKkZmajhlPl40PVNlTnVYKntpeFFZeDJLaDM5ZiUkLU1ZZXRsVyotSVApXjgk
Ukg7Vn5JaTJJZ14/dG1vUFcKemFoWDxEKV99PWB3TDQoWjc2NkNGO25BYW5WUj1oci1aYXNjVWtk
XmoxU3wreDVVP08lTEJOODUxcHh+Sjc2ZEVeCnpTUC14dkBMIUVVQiU4R1RVcFNsTG41QFFEUj1h
VXIoLXJTI2U5Zn1mXipud05sTlZHd1p5IXdiQE5oOHNDUGRMNwp6RG0qK1FEaEg2RDckZ0IodTJv
UFFIcHxuQiFFeWNHQDQzZ1Rxbn1ObWBjMiQqWnthWTwlNHp3JGtOM3VNV0ZeSHwKenpwOU1OM0U2
ZW5YU1QlUWAhUzNeYWowQEs3bGxURSRjU3o8USt1diQqWWQ+ajd4cWwxb2ZVJl5mWm1vPXwyRFp2
CnoxO0BPWFBKNExCa0EzT1lpRngpUjh4fkppNFFmY2RfcFZ+KngxbVlMLUVSJS1lODFQNm1xK2pC
aG81dWloUH4zYwp6QnQxZzx3K1dRcFJyaHNUSiRCeFMjN1U8V1pPP0R8IyZ3ejMjYWxOKzVBSlhv
KXV0Vj5Dd1p3eTxuc2tURVpFQmsKekA5fWMlPl9JX3NzcDlfcGpiMU9KeDFMJVFRQGRNRElyXm5m
NFFWXipsO2BIb259MmhnODhAVElGZT5mXk9FOSVsCno9fXE5YzxtLX03TnJUSnMyUiNUb2FCQlJ1
eSpqJipRenlGalhMYjA2ZFI2XjY8O3lvPChOXzxhLXxjZzchNiNuIwp6K1RITmp7ZCNefig2a0A8
aHB2ViU/cGQ0aGAxUjRFKWk+KWhZYCh+ZCtAYmxSeXJMbUNYemNpa25Va2k1U3VLM1YKenpwJGN4
cDk1bEdVQDdARlRLWmNSOURgMERSLVZZZiReaSk5MSVBaDNgWDxIbm5+SkoxekFaXkFHaWN1LTBs
aUI2CnpDVzxzJSZVWF9ETEl1JmBLcCt4QE1UU0tQTDt4bkM1Nlp5ZV5YLWxPPihqSiFBYj1EWm43
QE5JZUFeXj5HT2l2RAp6OXA8JDIzQSh8dUY/NHU4T3JMPnxHP3FCPz9NPHgySSFZbiFtcWs7LUdN
WHZfRkgpbj57Y29nbTtrUVgzUTBWIUYKenU/S2xGaDhFSTx1NiYwJEJgTz5Lcl94bDdUQl8xZ2BW
M3ZjRmlifCN3OXZVMGhlOExRMWo8R2MoOFdmUGptNFE1Cno5UzE+YDE1cVV8aG9BSiYjcU5BKDNI
LWJWZW92IzZqKTJoKWt7JUxXO2wrMHwpQWZmPUlnTEM4OWY3TktEcjJRTAp6LSEzQn5JWjtEV1k4
cHJUNzctaVRGUEVXKjs7UytWOVgkJDM8XmJweCN8ZXt7dUxJd0A1ZitndnU7SGA5THM9e3YKejJB
enJ1VzNpeWF1b3ZJYUQyZzFETCY3VylMSjkmbzM9U3ZEJEN0c2VGKilxbU9iIXBHSTd+d25rSW0t
VGVvfiZ1CnpFUG9sdFZGRCVPWlUhX0ZCXjY/MjUmVE13UW05Q2YmVWJGQWlwUHRmcWRwfSpeZG57
QUExUkF+T1VUQDxzY2xCMAp6U09nNHdIbE4/QG48VGpBPzRFRTgqNVNabDRTPDJgUU4/QzRTJTJR
KkE4Y05yNzE9QGMhT3I0dlUwN0tlcVBEPD0KeiZoVDlMa1FZdlNJZ3VvX093PG16KTVVZiFqLXtv
ZzB5KFVyU3FvJHVsfUhGZT1xazMwVXNEU3hVP2BHXjdieUBpCnpOJFF8YFJFOG1ASEhiKldwdU18
Ml5zaG8/MCpxRzwlIVl6K1FNZD99MCswaVN3VW8jT0lNTXl2eGJQJSFgTjAxZQp6ck4mV184KnJy
eXR6R09oUCZMd3JXYFY8Uj9WNT83ZkshUk9mPyEmRGZ5Zj1TSE9iaDk3UVpwXzJaZWBqKkd8bT0K
elZIJmxXMHxTPXhTaFFOKDZ3fldMWHhWUXMjXj9UV3pTTDwoKGVAPnExOGElTVZkQ3BJa0ZEJFdE
QTt9YTwjRmtRCnpBNTclK3R+ZDAyRXR0R0E8QCkxX2AhUkZ2ciorOz91PUhyZm9KQlFgSzQtSTU+
Pig2eT8rcDA4cj1WbGBZaFZBIQp6NHkxJj9yWCh3R0t3XnpnP3RPT1Q+UnNIUkhmfkd5ckElZHM9
SDMoQntaLW1OS2dqdm5sRiYpZiFHVmlNY1h7e1IKekN1aC1fRl9TaigzeDA/VnclKFRUZ1kmZHJR
P3RoQHMkTEctcFNHc3YkQHh4bXghekdlKn1aIU4pbjV4WiNjdDE3CnpAfitsNHMwQHdSSWw0aHx7
cWVRI1FAelg3OElQbEAmI256Vz1DRlJZWFdjdlpvbSpDKiFrP1RAOXkmNDhzJD4kRwp6KHkkMGp6
UmNmcHEpK0dpczR+T0xDITEjO1czaWJHPTVobzNUVlAteDF8MS1YS0FreHB6LWBQJmswOzxtNlNV
I0wKeihgI3hLNF5PeH1JZG50SFZKQiVwek5jXypZSWlWLXU2RSozZkd+Vjg1ZTl6T1g0N0tleWBM
aDNUfmlJTkcxeFhtCnpaNEtfYGF2MG5wOG93RSY3bz8lQmlST2MxKDF2RjJ6K31HVGFNJiFYRHdD
fGY5Q3tAK1pTQUhNMytRT180amVVNQp6ZzdCKSlEb19yP29SayZAaURpVGB0aT11eGtfdDM1TTFo
N3RJaU4tbERUKSs4bm1ATSt8MGtgSVh8QFBRM00zJGsKellmPig2bH41fm8xcCNLXlNXR3U+YjQy
O1ctNilqdyZqMj1EWnFabWktMjduZElDQ1F5VysoK1ooOFpodyV5TiYkCnowY204VXd1TlhRckhQ
N0ZFO2JKdnJGVDVwZj4zRFFAJGBuTF9qfVdKSHw9KGI3JFFMZEswUEtFOGhJOT13XmtYfgp6cShS
VD9Tc1dJT2V5SEckR205N3tqNk4lfTlfbjdyTThLQm4kQHNIfEdOKWlNd2ZBayhfNmNqQXpSfmBu
TmBTR0UKejspbFd4WlpKXjdXK1ZWOXQwVXY/PCg7KVpkUkZvSDdoZk0qUUB5SGUhcHc9dT41Q0BC
SjF3ezdVU2d0JkVYMXdZCnomdHcwaWombGQoYmJCPCMqWCE2JEJLX2B8RndMXkN0bElSR1RlYG5z
PW9wPShRdFFFNFQ/V3FXeS1mSnpne3U1fAp6WEZ1N3h7cnlHe0p2PVR+ZWJXSmtwSj19QV9aaioy
MHI0IVAmXmZ3I1M+KXZsP3szJmt7LU5WJSkxRz53Y01QWDgKektiZHVTXk1TSDE4SkFje1FPdUpv
dmwwVnMtRmh5Y2ZVbnJiYzR3YUtkQmJpMHQ4cEgzXi0lbno0SUZPekAoc2A1CnpHV0NsR3M8dWFz
bjlpPm1kRUNxWSpvKD9aYVNRR0xJNktBYWNIP2t1bn0mPEhfUCY/JlN1KE9OPVJ4NGw2WjYoeQp6
aU9+Zjl6TT1jbylXYEZfRlJxcHl2NGVtLTU9TTEhbEltPnd1YnpLUFJhbD90Kno/em1AN0RWKnti
fXgtaTZkPloKemsyS2VKPUM/T1MhPipealo9Ny0xdVhhM3NBZlpzPD1yO0tCSkl7R3JtaUpxQUVB
YSVgdS1NaGwkN1h2JlpyP0dTCno1bnMlam02fipXfElHdD0rNiNOfio3JE8+Y1Y0KylNfTN7U0Fo
UDIxQ2pPJlNjS3oxdHUwPTJqKk5zPUZTTjE0egp6U2FJY0QqRyQmOUY3O2A8TjhhSGlpc2plIU1l
RkIwaXUkR144NUBNemhBUzQ8QkEweEpVWXNwRil0elpHMzlVKDcKejtvPypoNlREZSVuREc9Wl5J
SmM3VUQtX2Mxcko8TENkXztEWjEyWHF7bnF8R2VDfU5JbGB8Jm94SU89d1diO0t2CnpsPGxEJiU5
TWYtbmYzZkhUXnxPYTMrO3B2Wk0mcmdpZ3hGez9sUj17KClfMnQ3Q2M8SjxNVyNLR3dsQ3hWQXQp
NQp6enhfNUw4aks9bEE+WFlZdjRVZ1pZeWskJk15VFokR0BoSEI4K1U2aT1SUiN2P0dLOUVLRDYh
OTRgMmh6bVojTGUKektSMUl3QWx3KTUtMFdvRE1JUm9TKHQqZVRqZlFHR0dldXp7MEFyRy1MbFR+
dShhb358NTJ0dSpDK0Y3ZCFoPkQ3CnpeKHMjT2d+dlFPY1Qtcz5LZz99P1Q8b0luRS16aExWaldX
cHZMPzNNa3Y2K2MmZz4zWjEyLVJKYl5aRn17OW8qMQp6RlZ2bXZMRGFpZUtBeTRCPjh0Z3A+JGdq
flUkbkQzY1clen0qc3RxLTk7R2JLJikhenZVJE5sJT1SY2w0ViUxXlEKenlyWStFSFg2bzw5QTM5
I0BzVzBobEBsRUQ7czxxJm4qS0s4aUpnc3FYd0xJcFF6fm9ycUBWUF5kOEoyTyptQTNZCnp4P0tV
czdwQEtKWShMYGdzNV5QWit4b2BYeWRKeUYmMjhDfCZkdz5mRkkzcDkpenZLQ2RCU35EYH1oY0ti
Y1MhWQp6UXtLRlZHT3U8T2whNnleQFpmO05XOEhHOXg4NHxmOzdTIzt5PF96KEthRmVPal5aUGFS
RXdTXzNMRHRac30mVSkKeiFufDlKQ25xeHJEbSpFMFpjPjNaZkQxSnR7a3F4V0t3XzQrYnw4aERs
YD5UMjBsQERjc2A3cGA7fGBwNzVDPndiCnpWeWIkVWNRQDtFTGl4ZGdXTH0wWDZ1RVJEeSMkU2xU
blQjN29ndGheNURyNFFAVTBrT3tIdF42e29CRkVZfSohWgp6N2FMPTBhclZvNzNDeSRle1hBYDBr
N2U/cCs3RVcxKGRfajJlOW1PezlvNG5tSCRJOTdlVyNCKnBEejRqYylWTlgKelRHe2l7WVVUSV5R
Jnh7SDl6V3ohYzxQMzJgaWo4Z0EhQ085SXR7c0B1bGErVztQVCprYEx+ME0lYnMhTzRuSCReCnpQ
X0lBRWg8dE5CcVFAYDR2KClmKj5YNy1PKUR0NXJKPk8wXm1iQ2gqfEM5eTlvMCEkLSNDQVdQaShJ
elBUYis8Sgp6SWAzbFFyfGdTd3J6Qk8pX2x0e3RjKXI0Xk0kWEk1dGI2V3JvfFFMej9Kc3A+N0NJ
QkoyRnwraFpYY015MV5ldHEKenJAcVUhVEdIandneGE5akR8TV5aaFBYWDApQkE2RmN5TmlHXkBH
KEQmTT1vRjBiPCZ4RjwyNkNkaEQmJHp4X09fCnpOOW9xc2YtelFORGY2KkFIfEZhOHV0aH5AUHlz
UlZDO1d7d0JSalVlX0lkbEdufU5hTURCc0hYUTNGaXd3YiVlbgp6Q1FPM0cyQyYhdyV9aiVxRCVX
QklTWm59YDRiYkdsd2IlZF84e2w3aEArPnhoI1JqbjAwUlFKVXpgdU98PU5RO1cKenEydUJaMz15
cH1KTj8oQGBWRiYtVHtQV0p8OCN2SC1fcXUkbGEmP1lLa3ZLJWtzPVh7V0VuNSRAREdFenJ0RSlN
CnpuJTAhbztwNFotSkZtfn54KlpZe3k3Sm9YdkF2STtASi1yVStfbT1IP0NfIyRwNyh9KWR9WnYk
eF4wYExwUFhPdwp6bTNWT1hHblokZD98RiVldUlZT2Ajbjxxbj99YGxQPXdCTD1SSyt0dGxXa3FJ
R1FZTkZ7TDhlMF50fj8re2RfNjkKejt1aU98JX1qbj5mSD4+KnY3RV9tS1AkYyR1YGgrTj9YfGFp
YnBJaXhCQ2p2TElucVZDQFhOSS1oSERPSStmSjg8Cno+QWQtM2FpPiVhb2o2dzlmMkJUbV4zYF5J
dihFfGM0RTQ/a3slcm1VUHAoXnlmOzxfe2FtaWcpZD94NDl0Vj88Rgp6OCZNTyVLK2JLYSY0Rldf
cFhqP3lzJUFOVD5SLTVSKHpYIyN6dlpvcFVjLXxnKypkZXMmaURoJWVBYGJQPmU9NTgKemFYdjJJ
ck02M3QtcmxkIzx1M3poJWVRNmRwbTFuJVZwc3QtYlllN2Zfa1l4MFp5cWxBQ18lRzBHRis4TGdX
bFZkCnpKTVojXiNZPWxtRCYqUV5jZjhhdzticXNOKSUhZGBPSldfZjR9OUoqQH1kKHFFI2coPjh8
andIaV4teVgraF5YQgp6MVcpXkIjQ01sJlckMjV+LXxqZUBgRDUwXmc8YSZvZU9gRns+ZikjcXRI
TCtwaSNwZD1qXzRHbW1FNmlvNVRXZkoKejQ+fmtLbTxvUVk2MWpEKnprM3NOM3A9KlkpMnBpMiVX
dzBoaF5CbUVHZFlDTSVeazM8P3N3ayZRKkhCP0lgOTI3CnpRV21gQHpHbjFLZW5Hc3RkQVIta3NX
PG1LV15iPUFhaHtwPUchZyR7Y1VSVUJoeG9JST0rZCpEVEVDJClLQj9UQAp6JilydElgQjswMjs7
Nk8lZnohRCE5KDNISGE5LVNWQHhJRDhWeyNZQ1BXK3MoK1NrOVJEeW81REQ5Z08/KXl3Kz0KTG0q
dTdSSWBzVj8tYnkqXwoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5k
ZXggZjYxNmE3NGI0MTdmNjFlOWFhM2RkMjVjOGJlODZjOWUyYTJmZDI4YS4uNjBiNzIyYzNjOTQ5
YzdiODVlNjRkMmYzZGE2YmYzNTdiYzgwYmFkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMubW0KQEAgLTI5MCw2MCArMjkwLDYgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRoc1dpdGhQcmV3YXJtaW5nKQogICAgIHJ1bldlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRocyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZzo6WWVzKTsKIH0KIAot
VEVTVChXZWJLaXQsIEN1c3RvbURhdGFTdG9yZVBhdGhzVmVyc3VzQ29tcGxldGlvbkhhbmRsZXJz
KQotewotICAgIC8vIENvcHkgdGhlIGJha2VkIGRhdGFiYXNlIGZpbGVzIHRvIHRoZSBkYXRhYmFz
ZSBkaXJlY3RvcnkKLSAgICBOU1VSTCAqdXJsMSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00IiB3aXRoRXh0
ZW5zaW9uOkAic3FsaXRlMyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKLQotICAgIE5TVVJMICpzd1BhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGli
cmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dlYktpdC9TZXJ2aWNl
V29ya2Vycy8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdXTsKLSAgICBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpzd1BhdGggZXJyb3I6bmlsXTsK
LSAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7Ci0KLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0
ZTMiXSBlcnJvcjpuaWxdOwotCi0gICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwotICAgIGF1dG8gZGF0YVN0b3JlID0g
YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotCi0gICAgLy8gRmV0Y2gg
U1cgcmVjb3JkcwotICAgIGF1dG8gd2Vic2l0ZURhdGFUeXBlcyA9IGFkb3B0TlMoW1tOU1NldCBh
bGxvY10gaW5pdFdpdGhBcnJheTpAW1dLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnNdXSk7Ci0gICAgc3RhdGljIGJvb2wgcmVhZHlUb0NvbnRpbnVlOwotICAgIFtkYXRh
U3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAg
IHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwot
Ci0gICAgLy8gRmV0Y2ggcmVjb3JkcyBhZ2FpbiwgdGhpcyB0aW1lIHJlbGVhc2luZyBvdXIgcmVm
ZXJlbmNlIHRvIHRoZSBkYXRhIHN0b3JlIHdoaWxlIHRoZSByZXF1ZXN0IGlzIGluIGZsaWdodC4K
LSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4g
KmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQp
OwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwotICAgIGRhdGFTdG9y
ZSA9IG5pbDsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7
Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBEZWxldGUgYWxsIFNXIHJl
Y29yZHMsIHJlbGVhc2luZyBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIHN0b3JlIHdoaWxlIHRo
ZSByZXF1ZXN0IGlzIGluIGZsaWdodC4KLSAgICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFz
dF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1
ZTsKLSAgICB9XTsKLSAgICBkYXRhU3RvcmUgPSBuaWw7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwot
Ci0gICAgLy8gVGhlIHJlY29yZHMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkLCBhbmQgdGhlIGNh
bGxiYWNrIHNob3VsZCBoYXZlIGJlZW4gbWFkZS4KLSAgICAvLyBOb3cgcmVmZXRjaCB0aGUgcmVj
b3JkcyB0byB2ZXJpZnkgdGhleSBhcmUgZ29uZS4KLSAgICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW2RhdGFTdG9yZSBmZXRjaERhdGFS
ZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBF
WFBFQ1RfRVEoMFUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVl
ID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9D
b250aW51ZSk7Ci19Ci0KIFRFU1QoV2ViS2l0LCBDdXN0b21EYXRhU3RvcmVEZXN0cm95V2hpbGVG
ZXRjaGluZ05ldHdvcmtQcm9jZXNzRGF0YSkKIHsKICAgICBOU1VSTCAqY29va2llU3RvcmFnZUZp
bGUgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0Nvb2tpZVN0b3JhZ2UvQ29v
a2llLkZpbGUiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5Ok5PXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424577</attachid>
            <date>2021-03-29 14:18:29 -0700</date>
            <delta_ts>2021-03-29 15:15:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210329141829.patch</filename>
            <type>text/plain</type>
            <size>105916</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0NWRiNmMwNjEzYjg3ZWEyY2FiMjRi
ZDNiNDNkMGZhNTdjZTlmNjQuLmY1Nzg5M2FjOWU3MjQ0N2RiNzc3NWE5OGUwN2RkZWI3MjIwZmFm
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgQWRk
IGFuIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KCkgb24gYWxsIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCisgICAgICAgIFdlIHByZXZpb3VzbHkgb25s
eSBoYWQgaW1wbGVtZXRhdGlvbnMgZm9yIENvY29hIGFuZCBXaW5kb3dzLgorCiAyMDIxLTAzLTI4
ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxl
IEFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIGZvciBXZWJLaXRMZWdh
Y3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMmJlOTY0ODEwMGUyMDI3YTIyZDk3YWMzMzhmZjZjODUwYzQwNGM0
Ni4uYTVkYWQwZDFhNDlmYjMzYTkyODhmNzQ1MmFhMWY3MGI4YzdhZjgzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2MyBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9y
eSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0
aGUgbmV0d29yayBwcm9jZXNzIHdvdWxkIHN0b3JlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgaW4g
YSBTUUxpdGUgZGF0YWJhc2UuCisgICAgICAgIFdoZW4gc3RhcnRpbmcgdG8gdXNlIHNlcnZpY2Ug
d29ya2Vycywgd2Ugd291bGQgbG9hZCBhbGwgdGhvc2Ugc2NyaXB0cyBmcm9tIHRoZSBkYXRhYmFz
ZQorICAgICAgICBpbnRvIG1lbW9yeS4gVGhpcyB3b3VsZCB1c2UgYSBkZWNlbnQgYW1vdW50IG9m
IG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhl
IGlzc3VlLCB0aGUgYXBwcm9hY2ggaXMgdGhpcyBwYXRjaCBpcyB0byBzdG9yZSB0aGUgc2NyaXB0
cyBhcyBzZXBhcmF0ZQorICAgICAgICBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkLiBU
aGlzIHdoZW4sIHdoZW4gbG9hZGluZyB0aGVtLCB3ZSBjYW4gc2ltcGx5IG1tYXAoKSB0aGVtCisg
ICAgICAgIGFuZCBncmVhdGx5IHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgTm90ZSB0
aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzICh3aGljaCBtYXkgYmUgdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcykgYWxzbyBrZWVwcyBhCisgICAgICAgIGNvcHkgb2YgdGhlIGltcG9ydGVkIHNl
cnZpY2Ugd29ya2VyIHNjcmlwdHMgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlcnMgaXQgaXMgcnVubmlu
Zy4gTW9yZQorICAgICAgICB3b3JrIHdpbGwgYmUgbmVlZGVkIGluIGEgZm9sbG93LXVwIGJ1dCB3
ZSBzaG91bGQgYmUgYWJsZSB0byBleHRlbmQgdGhlIGFwcHJvYWNoIHNvIHRoYXQKKyAgICAgICAg
dGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd291bGQgb25seSBoYXZlIGEgbW1hcCdkIHZlcnNp
b24gb2YgdGhvc2Ugc2NyaXB0cy4gVGhpcyB3b3VsZAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVz
YWdlIG9uIHRoZSBXZWJDb250ZW50L1NlcnZpY2VXb3JrZXIgcHJvY2VzcyBzaWRlIGFzIHdlbGwu
IEkgYW0gZG9pbmcgdGhpcworICAgICAgICBzZXBhcmF0ZWx5IHRob3VnaCB0byByZWR1Y2UgcGF0
Y2ggc2l6ZSBhbmQgZmFjaWxpdGF0ZSByZXZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0
aGVyZSBzaG91bGQgYmUgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UsIGp1c3QgYSBkZWNy
ZWFzZWQKKyAgICAgICAgbWVtb3J5IHVzYWdlIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBz
ZXJ2aWNlIHdvcmtlcnMgYXJlIHVzZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcg
U1dTY3JpcHRTdG9yYWdlIGNsYXNzIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJBZ2VudDo6Z2V0SW5pdGlhbGl6YXRpb25JbmZvKToKKyAgICAgICAg
Q29udmVydCB0aGUgc2NyaXB0IHR5cGUgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIEZpeCBhc3NlcnRpb25zIHRo
YXQgd2VyZSBoaXR0aW5nIHdoZW4gY29tcGFyaW5nIHRvIGVtcHR5IFNoYXJlZEJ1ZmZlcnMgKG9m
ZnNldCB3b3VsZCBiZSAwCisgICAgICAgIGFuZCBzaXplIHdvdWxkIGJlIDApLiBUaGlzIHdhcyBj
YXVnaHQgYnkgQVBJIHRlc3RzIHNpbmNlIHdlIGhhdmUgc29tZSBzZXJ2aWNlIHdvcmtlciBBUEkK
KyAgICAgICAgdGVzdHMgdGhhdCB1c2UgZW1wdHkgd29ya2VyIHNjcmlwdHMuCisKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgQWRkIHNvbWUgY29u
dmVyc2lvbiBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIgdG8gdGhlIHNjcmlwdCwgYW5kIHZp
Y2UtdmVyc2EsIGluIHRoZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjYXNlLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRCdWZmZXJUb1N0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpzdHJpbmdUb1NjcmlwdEJ1ZmZlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZSk6CisgICAgICAgIC0gU3RvcmUgc2NyaXB0cyBhcyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBT
dHJpbmcsIHNvIHRoYXQgdGhleSBjYW4gaG9sZAorICAgICAgICAgIG1tYXAnZCBkYXRhLgorICAg
ICAgICAtIEFkZCBzY3JpcHRCdWZmZXJUb1N0cmluZygpIC8gc3RyaW5nVG9TY3JpcHRCdWZmZXIo
KSB1dGlsaXR5IGZ1bmN0aW9ucyB0bworICAgICAgICAgIGNvbnZlcnQgc2NyaXB0IHNvdXJjZXMg
YmV0d2VlbiBTdHJpbmcgYW5kIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIENvbnZl
cnQgZnJvbSBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICBVcGRhdGUgZGF0YWJhc2Ug
c2NoZW1hIGFuZCBidW1wIHZlcnNpb24gbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIHN0b3JlIHRoZQor
ICAgICAgICBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaW5zaWRlIHRoZSBTUUxpdGUgZGF0YWJhc2Uu
IEluc3RlYWQsIHRob3NlIHNjcmlwdHMKKyAgICAgICAgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IG9u
IHRoZSBmaWxlc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6
OkltcG9ydGVkU2NyaXB0QXR0cmlidXRlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltcG9ydGVkU2NyaXB0QXR0cmlidXRlczo6ZGVjb2RlKToKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgc3RydWN0IHdoaWNoIGNvbnRhaW5zIGFsbCB0
aGUgZGF0YQorICAgICAgICBtZW1iZXJzIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQsIGV4Y2VwdCBmb3IgdGhlIGFjdHVhbAorICAgICAgICBzY3JpcHQgc291cmNl
LiBXZSBub3cgc2F2ZSBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIGluIHRo
ZQorICAgICAgICBkYXRhYmFzYWUgaW5zdGVhZCBvZiBIYXNoTWFwIG9mIEltcG9ydGVkU2NyaXB0
IHNpbmNlIHdlIG5vIGxvbmdlciB3YW50IHRvCisgICAgICAgIHN0b3JlIGltcG9ydGVkIHNjcmlw
dCBzb3VyY2VzIGluIHRoZSBkYXRhYmFzZSwgYnV0IHJhdGhlciBzdG9yZSB0aGVtCisgICAgICAg
IHNlcGFyYXRlbHkgb24gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIChXZWJDb3JlOjpzdHJp
cFNjcmlwdFNvdXJjZXMpOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBI
YXNoTWFwIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAg
ICAgaW50byBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIChpZGVudGljYWwg
YnV0IHdpdGhvdXQgdGhlIHNjcmlwdAorICAgICAgICBzb3VyY2UpLCByZWFkeSB0byBzYXZlIGlu
IHRoZSBTUUxpdGUgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlU2NyaXB0
U291cmNlc0Zyb21EaXNrKToKKyAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjb25zdHJ1Y3Qg
YSBIYXNoTWFwIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAg
ICAgICAgZnJvbSBhIEhhc01hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMsIGNvbWluZyBm
cm9tIHRoZSBTUUxpdGVEYXRhYmFzZS4gVGhlCisgICAgICAgIG1pc3Npbmcgc2NyaXB0IHNvdXJj
ZXMgYXJlIGZldGNoZWQgZnJvbSB0aGUgZGlzayB2aWEgU1dTY3JpcHRTdG9yYWdlLgorCisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNl
KToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGRlc3Ryb3kgdGhlIFNXU2NyaXB0U3RvcmFnZSBvbiB0
aGUgYmFja2dyb3VuZCBxdWV1ZSBmb3IgdGhyZWFkLXNhZmV0eS4KKworICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgor
ICAgICAgICBSZXR1cm5zIHRoZSBwYXRoIG9uIHRoZSBmaWxlc3lzdGVtIHdoZXJlIHNlcnZpY2Ug
d29ya2VyIHNjcmlwdHMgYXJlIHN0b3JlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0
aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UpOgorICAgICAgICBDb25zdHJ1Y3RzIChpZiBuZWNl
c3NhcnkpIGEgU1dTY3JpcHRTdG9yYWdlIGFuZCByZXR1cm4gaXQuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbCk6CisgICAgICAgIE1ha2Ugc3VyZSB3
ZSBjbGVhciBhbGwgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgb24gZGlzayBpbiBhZGRpdGlv
biB0byB0aGUgZGF0YWJhc2UsCisgICAgICAgIG5vdyB0aGF0IHRoZXkgYXJlIHN0b3JlZCBzZXBh
cmF0ZWx5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNo
Q2hhbmdlcyk6CisgICAgICAgIC0gU3RvcCBzdG9yaW5nIHRoZSBzY3JpcHQgc291cmNlcyBpbiB0
aGUgU1FMaXRlIGRhdGFiYXNlLCBhbmQgaW5zdGVhZCBzdG9yZSB0aGVtIGFzIHNlcGFyYXRlCisg
ICAgICAgIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbSB2aWEgU1dTY3JpcHRTdG9yYWdlLgorICAg
ICAgICAtIEltcHJvdmUgbG9nZ2luZworICAgICAgICAtIFdoZW4gZG9uZSBzdG9yaW5nIHRoZSBz
Y3JpcHRzIHRvIGRpc2ssIHNlbmQgdGhlc2UgbmV3IG1tYXAnZCB2ZXJzaW9ucyBiYWNrIHRvIHRo
ZQorICAgICAgICAgIFNXU2VydmVyV29ya2VyIG9uIHRoZSBtYWluIHRocmVhZCwgc28gdGhhdCBp
dCBjYW4gcmVwbGFjZSBpdCdzIGhlYXZ5IHNjcmlwdCBzb3VyY2VzIHdpdGgKKyAgICAgICAgICB0
aGVzZSBvbmVzLiBUaGlzIGhlbHBzIHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBM
b2FkIHRoZSBzY3JpcHQgc291cmNlcyBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2Us
IG5vdyB0aGF0IHRoZXkgYXJlIG5vIGxvbmdlcgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FM
aXRlIGRhdGFiYXNlLgorICAgICAgICAtIEltcHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmg6Cisg
ICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9y
ZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBp
dHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRl
ciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8g
ZGVhbCB3aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29y
a2VyIHNjcmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4g
V2hlbgorICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEg
U2hhcmVkQnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEgd2hlbmV2
ZXIgcG9zc2libGUuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1Rv
RGlzayk6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9t
IHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4g
cmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9u
LCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0IGZyb20gU3RyaW5nIHRvIFNo
YXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRG
ZXRjaEZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIg
dG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgVGFrZSBp
biBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgZm9yIGNvbnZlbmll
bmNlLCBpbnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRzIGRhdGEgbWVtYmVycyBhcyBz
ZXBhcmF0ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6U1dT
ZXJ2ZXJXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHQgY29uc3Qp
OgorICAgICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNjcmlwdCBpbnN0ZWFkIG9mIFN0
cmluZyB0eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQorICAgICAgICBtbWFwJ2QgZGF0
YSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0yOCAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmgvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGZyb20gdGhlIFhjb2RlIHByb2plY3QgYXMg
dGhleSBkb24ndCBleGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMGYxZWI4NmZiOTUwZmY1NmU4YTcyNjAzOGZl
MTAxM2Q1OGJkZGU2Li44NDVjMjYzY2M4ODkwNGVmMDUxYWY1YTE5ODExYmZlODY3ZmZmOWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIxLTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11
Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgwOAorICAgICAgICA8cmRhcjovLzc1NjM3MDkz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0U2NyaXB0UmVzb3VyY2UgSVBDCisgICAgICAg
IGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBwYXNzIHRoZSBJbXBvcnRlZFNjcmlwdCBkYXRh
IG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Rv
cmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAgICAgICBEcm9wIGRlbGV0ZURpcmVjdG9yeVJl
Y3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5kIHVzZSB0aGUgZXhpc3RpbmcKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoKSBpbiB3dGYgaW5zdGVhZC4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjplbmNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIp
OgorICAgICAgICBVcGRhdGUgU2hhcmVkQnVmZmVyJ3MgSVBDIGFyZ3VtZW50IGNvZGVyIHRvIGRp
c3Rpbmd1aXNoIGEgbnVsbCBTaGFyZWRCdWZmZXIKKyAgICAgICAgYW5kIGFuIGVtcHR5IG9uZS4g
V2Ugbm93IHVzZSBTaGFyZWRCdWZmZXIgdG8gc3RvcmUgc2VydmljZSB3b3JrZXIgc2NyaXB0IHNv
dXJjZXMKKyAgICAgICAgYW5kIGl0IGlzIHBvc3NpYmxlIGZvciB0aGUgc2NyaXB0IHNvdXJjZXMg
dG8gYmUgZW1wdHkgKGFuZCB0aGV5IGFyZSBpbiBzb21lIG9mCisgICAgICAgIG91ciBBUEkgdGVz
dHMpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OnNldFNjcmlwdFJlc291cmNlKToKKyAgICAgICAgUGFzcyBhIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc3RydWN0IGluIHRoZSBTZXRTY3JpcHRSZXNvdXJj
ZSBJUEMKKyAgICAgICAgZm9yIGNvbnZlbmllbmNlLiBXZSB1c2VkIHRvIHBhc3MgdGhlIEltcG9y
dGVkU2NyaXB0IGRhdGEgbWVtYmVycyBzZXBhcmF0ZWx5LgorCiAyMDIxLTAzLTI4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gRG9u
J3QgZXZlciByZXBsYXkgRGlzcGxheUxpc3QgaXRlbXMgb2YgYSBSZW1vdGVJbWFnZUJ1ZmZlciBp
biBXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGZlYmU0NWZlOGI1ZThmZjFiZmYx
ZTUzNjhlYTUxMjEzNmExZmYwYmUuLmFlMTAxOWFiYzliMDZlZGFkM2JkOTA5MTc4NDNhMmEwMTZj
ZTMxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC00MDgsNSArNDA4LDU2IEBAIFN0cmluZyBj
cmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYpCiB9CiAjZW5kaWYKIAorI2lm
ICFQTEFURk9STShDT0NPQSkgJiYgIU9TKFdJTkRPV1MpCitib29sIGRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRvIGVudHJpZXMgPSBsaXN0RGly
ZWN0b3J5KHBhdGgsICIqIl9zKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgewor
ICAgICAgICBpZiAoZmlsZUlzRGlyZWN0b3J5KGVudHJ5LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpObykpCisgICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeShlbnRyeSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZUZpbGUoZW50cnkpOworICAgIH0KKyAgICBy
ZXR1cm4gZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Cit9CisjZW5kaWYKKworTWFwcGVkRmls
ZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdWludDhfdCogYnl0ZXMs
IHNpemVfdCBieXRlc1NpemUpCit7CisgICAgY29uc3RleHByIGJvb2wgZmFpbElmRmlsZUV4aXN0
cyA9IHRydWU7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6RmlsZUFjY2Vz
c1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOworICAgIGlmICghRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoaGFu
ZGxlLCBieXRlc1NpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEZpbGVTeXN0ZW06Om1ha2VTYWZl
VG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQs
IHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICB2b2lkKiBt
YXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7CisgICAgdWludDhfdCog
bWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOworICAgIG1lbWNweShtYXBEYXRh
LCBieXRlcywgYnl0ZXNTaXplKTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAgRFdPUkQgb2xkUHJv
dGVjdGlvbjsKKyAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwgRklMRV9NQVBfUkVBRCwg
Jm9sZFByb3RlY3Rpb24pOworICAgIEZsdXNoVmlld09mRmlsZShtYXAsIG1fc2l6ZSk7CisjZWxz
ZQorICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCisgICAgbXByb3RlY3QobWFwLCBi
eXRlc1NpemUsIFBST1RfUkVBRCk7CisKKyAgICAvLyBGbHVzaCAoYXN5bmNocm9ub3VzbHkpIHRv
IGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KKyAgICBtc3luYyhtYXAsIGJ5
dGVzU2l6ZSwgTVNfQVNZTkMpOworI2VuZGlmCisKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKKyAgICByZXR1cm4gbWFwcGVkRmlsZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmls
ZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzEx
NWQ2NWQ0ZjhhMDI0ZDJlN2Y2YjljMzIxNDcyMzg0ZWY0YzQuLmUxY2M3Mzc0NDI0ODgxYzYzYjM2
NmY2ZDhjYTg5NDZhOGQ2ZjlkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE5MCwxNCArMTkwLDE0
IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0
cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25F
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiBXVEZfRVhQT1JUX1BSSVZBVEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRl
bGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKK1dURl9FWFBP
UlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwor
CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwogCiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3Qg
U3RyaW5nJik7CkBAIC0yNTIsNiArMjUyLDkgQEAgaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBw
ZWRGaWxlRGF0YTo6b3BlcmF0b3I9KE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCiAgICAgcmV0dXJu
ICp0aGlzOwogfQogCisvLyBXcml0ZSBieXRlcyB0byBwYXRoIGFuZCBhbmQgbW1hcCdzIHRoZSBm
aWxlIHJpZ2h0IGF3YXkgdG8gcmV0dXJuIGl0LgorV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZp
bGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBzaXplX3QgYnl0ZXNTaXplKTsKKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDdlMTgwNTVkM2MzNzE1NDc4NDA1
ZmYzOWE1NWNjOTkxODNjYjZlYzguLmQ5NGU5MjMyY2I2YjFlMzMxYWMxYzAwZTAxZDk0MjgwNTY3
NjE5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjg0LDYgKzI2ODQsNyBAQCB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25TdG9yZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9y
ZS5jcHAKK3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggY2UxM2ViYjM3ZWNmYWE0NTQ4MTBjNTVmOWQyNDNjNWVjZDEyMjczMy4u
ZWNiNzViNmVlZDJjODQyODRhNGFkOTA2NThhZWY5MGM0MGI4ZGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI2Miw2ICsx
MjYyLDcgQEAKIAkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVy
dGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYw
Q0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oICovOyB9Owog
CQk0NjBFMzA3NzIyMkY0RjAzMDA5QTA2MDYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rp
b25QZXJtaXNzaW9uU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVT
dGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZF
MDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NjI3M0NBRjI2MEU1OUVG
MDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDYzNTIxQUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM1MjFBQTIwODEwOTBCMDBDMjg5
MjIgLyogV2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzRUI2MjEx
Qjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJNDY1MzA3RDAxREI2
RUU0ODAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURBQTEwNEYwMEIwRDhCOSAvKiBKU1VJRXZl
bnRJbml0LmggKi87IH07CkBAIC04MjMwLDYgKzgyMzEsOCBAQAogCQk0NjBDQkYzMzFENEJDQ0ZF
MDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEQxOTQ0MUZD
RTIxREQwMEMzREI4NSAvKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MjczQ0FDMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBv
d2VyT2JzZXJ2ZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UG93ZXJPYnNlcnZlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzUy
MUFBMjA4MTA5MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXaW5kb3dQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjM1MjFBQzIwODEwOTBFMDBDMjg5MjIgLyogV2luZG93UHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2luZG93UHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3MDcsNiArMjA3MTAsOCBAQAogCQkJCTUxQjkxNDBCMUZEMjc4
MjUwMEVFMjg1OSAvKiBSZWdpc3RyYXRpb25TdG9yZS5oICovLAogCQkJCTQxNTFFNUI5MUZCQTRD
NzYwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmNwcCAqLywKIAkJCQk0MTUxRTVCNzFGQkE0Qzc1
MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5oICovLAorCQkJCTQ2MjczQ0FFMjYwRTU5REYwMDZG
QUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovLAorCQkJCTQ2MjczQ0FDMjYwRTU5REYwMDZG
QUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuY3BwICovLAogCQkJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBT
V1NlcnZlci5oICovLAogCQkJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpv
YlF1ZXVlLmNwcCAqLywKQEAgLTM1Mjg2LDYgKzM1MjkxLDcgQEAKIAkJCQk0NjY1OERDOTFGQTI0
Qjg3MDBGN0RENTQgLyogU1dDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzEx
QTlFQ0UyMTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE1MUU1QkIxRkJBNEM3QTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3Jh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MkYwMUY0NzUzNUIwMERDREMwQSAvKiBTV1Nl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNX
U2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjY0NTk3MUY0QTY4NkYwMEI1
NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcAppbmRleCAyMWIzMGVlMjk0NzI2YjIzYzI3YWIyMDQ1NmU1OTgyNTM2OTEz
ZDExLi40YTNlN2U5NzgxZmY2YTFjZjczODc3YzU1ZTBjOTY5MzA0MGQ3YzNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZp
Y2VXb3JrZXJBZ2VudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8UmVmPFByb3RvY29sOjpTZXJ2aWNlV29ya2VyOjpDb25maWd1cmF0aW9uPj4gU2VydmljZVdv
cmsKICAgICAgICAgLnNldFRhcmdldElkKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmlkZW50
aWZpZXIoKSkKICAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKG1fc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLnNlY3VyaXR5T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpCiAgICAgICAgIC5zZXRVcmwo
bV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHRV
Ukwuc3RyaW5nKCkpCi0gICAgICAgIC5zZXRDb250ZW50KG1fc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0KQorICAgICAgICAuc2V0Q29udGVudChz
Y3JpcHRCdWZmZXJUb1N0cmluZyhtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5j
b250ZXh0RGF0YSgpLnNjcmlwdCkpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDUxYmM0YWE5ODNjODczY2YxM2Q1
NDNkZDFjNzY2NGNjZjY2NWRhYTkuLmFmODJjOGMwNmQyYjYzNjFlYTI2ZDRhZjA4YWI0YjFmN2U2
NDVkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMjgx
LDggKzI4MSw4IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIEFTU0VSVCh0aGlzT2Zmc2V0IDwgdGhpc1NlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAg
QVNTRVJUKG90aGVyT2Zmc2V0IDwgb3RoZXJTZWdtZW50LnNpemUoKSk7CisgICAgICAgIEFTU0VS
VCh0aGlzT2Zmc2V0IDw9IHRoaXNTZWdtZW50LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChvdGhl
ck9mZnNldCA8PSBvdGhlclNlZ21lbnQuc2l6ZSgpKTsKIAogICAgICAgICBzaXplX3QgdGhpc1Jl
bWFpbmluZyA9IHRoaXNTZWdtZW50LnNpemUoKSAtIHRoaXNPZmZzZXQ7CiAgICAgICAgIHNpemVf
dCBvdGhlclJlbWFpbmluZyA9IG90aGVyU2VnbWVudC5zaXplKCkgLSBvdGhlck9mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMjNiZjVhOGVkYjRjMWUzMDI5
YjdjYjQ3NDllYWNkNTUwMWJhOTE5NC4uMjljNzE3MjI4NGY3NWZmMDk0ZWU3MGM2NzlhMmM2YWMz
MmI1Mzg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTY4LDYg
KzY4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KICAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KICAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7
IH0KKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KICAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwogCiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8Y2hhcj4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5k
ZXggNGQ0NzRmMTZlNTg4ZGQwMGZiMzlkNTYwZjY0MTNjNjJhOTM4NmVmMi4uYTRiZTEwMDQwYmUy
ODU5MjEwYjcyY2VkMjMxODJhZjA2NDdhNzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpA
QCAtNjAsNyArNjEsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6
bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKGlzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJj
ZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUp
LnNjcmlwdFJlc291cmNlKHVybCkpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3Jp
cHRSZXNvdXJjZS0+c2NyaXB0KTsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRC
dWZmZXJUb1N0cmluZygqc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCkpOwogICAgICAgICAgICAgbV9y
ZXNwb25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1f
cmVzcG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMDEsNyArMTAyLDcgQEAgT3B0aW9uYWw8RXhjZXB0
aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFT
Y3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2
YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNw
b25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOworICAgICAgICBkb3duY2FzdDxTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1
cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzdHJpbmdUb1Nj
cmlwdEJ1ZmZlcihzY3JpcHQoKSksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9
KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmNwcAppbmRleCAxNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5OWI1ZWRmLi4x
ZWE1OTAxYmQ5ZDJmZDljNzkzYjJkNWFlMGUyNzBlODNjOGU3MjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmNwcApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JEYXRh
SWRlbnRpZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAg
ICBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgp
LAorICAgICAgICBzY3JpcHQtPmNvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xh
dGVkQ29weSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCks
CiAgICAgICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsNiArNDgsMjAg
QEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKICAgICB9OwogfQogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJp
bmcoU2hhcmVkQnVmZmVyJiBidWZmZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGZvciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7ICsr
aXQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQt
PmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDNhZDVkNGExMjY5NWI2OWVlMTY1ZWU0ODBh
OTYxYjEwZjFkYmRjN2UuLjg0NTQxZDQ2MmE4YjcwYTRiMzNkM2EyMzY3MGFiYjI0NjBlNTkyYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzksMTMgKzQwLDE2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNo
YXJlZEJ1ZmZlciYpOworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29u
c3QgU3RyaW5nJik7CisKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIHN0
cnVjdCBJbXBvcnRlZFNjcmlwdCB7Ci0gICAgICAgIFN0cmluZyBzY3JpcHQ7CisgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICAgICAgVVJMIHJlc3BvbnNlVVJMOwogICAg
ICAgICBTdHJpbmcgbWltZVR5cGU7CiAKLSAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4geyBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJlc3BvbnNlVVJM
Lmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIElt
cG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5jb3B5
KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9
OyB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgewpAQCAtNTQsNyArNTgsNyBAQCBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsKIAogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNjcmlwdDsKKyAgICAg
ICAgICAgIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CiAgICAgICAgICAg
ICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MCw3ICs4NCw3IEBAIHN0cnVjdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFN0cmluZyBzY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGlj
eTsKICAgICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CkBAIC0xMjAsOCArMTI0LDkgQEAgT3B0aW9u
YWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRl
Y29kZShEZWNvZGVyJiBkZWMKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgU3RyaW5nIHNjcmlwdDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHNjcmlwdCkpCisgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IHNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0xNTcsNyArMTYyLDcgQEAgT3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIp
LAogICAgICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAogICAgICAgICBXVEZNb3ZlKCpzZXJ2
aWNlV29ya2VySWRlbnRpZmllciksCi0gICAgICAgIFdURk1vdmUoc2NyaXB0KSwKKyAgICAgICAg
V1RGTW92ZSgqc2NyaXB0KSwKICAgICAgICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwKICAg
ICAgICAgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpLAogICAgICAgICBXVEZNb3ZlKHJl
ZmVycmVyUG9saWN5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZDcwZjRmNWU2
OTNmMjc3ZjY1NTgzZTdhNGUwNzYxNDUzYzU0ZWZhZC4uYTY4NGM3MjBmNjgzZjNkMTBmM2EwOWQ0
MjUyNzRlNmVlYmUyNjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc0LDcg
Kzc0LDcgQEAgcHJpdmF0ZToKIC8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCiBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6
VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBX
b3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlk
ZXIpCi0gICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwg
InNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJ
ZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBm
YWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJl
cXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0YS5zY3JpcHQsIGxv
YWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lzdHJhdGlv
bi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblBy
b3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQo
KSkKKyAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAi
c2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlk
ZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9h
ZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZh
bHNlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVx
dWVzdENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBzY3JpcHRCdWZmZXJUb1N0
cmluZyhkYXRhLnNjcmlwdCksIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9y
bWFsLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5n
ZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxh
Z3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVkQ29weSgp
KQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6c2hhcmVkKCkpCiAgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5zaG91bGRVc2VTaG9ydFRpbWVvdXQoKSA/IGhlYXJ0
QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRh
YmFzZS5jcHAKaW5kZXggY2VlOGNjOGMwOGJlMGIxYjdmNTQxMTBhNmNiMzE3NDZlOTg5NGIxNC4u
ZDg4NWEyMzcwZjMwNTI1OTcxMTE3YWI5ODM5M2VlMTU0MDg0NzkxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJh
bnNhY3Rpb24uaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJTV1Nl
cnZlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CkBAIC00OSw3ICs1MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA1Oworc3RhdGljIGNvbnN0
IHVpbnQ2NF90IHNjaGVtYVZlcnNpb24gPSA2OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nIHJlY29y
ZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKQEAgLTYxLDcgKzYyLDYg
QEAgc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0
YWJsZU5hbWUpCiAgICAgICAgICIsIGxhc3RVcGRhdGVDaGVja1RpbWUgRE9VQkxFIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHVwZGF0ZVZpYUNhY2hlIFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAgIiwgc2NyaXB0VVJMIFRFWFQgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCIKLSAgICAgICAgIiwgc2NyaXB0IFRFWFQgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCIKICAgICAgICAgIiwgd29ya2VyVHlwZSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwiCiAgICAgICAgICIsIGNvbnRlbnRTZWN1cml0eVBvbGljeSBCTE9CIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHJlZmVycmVyUG9saWN5IFRFWFQgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCIKQEAgLTEwNyw2ICsxMDcsNTYgQEAgc3RhdGljIGlubGluZSB2
b2lkIGNsZWFuT2xkRGF0YWJhc2VzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCiAg
ICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGRhdGFiYXNlRmlsZW5h
bWVGcm9tVmVyc2lvbih2ZXJzaW9uKSkpOwogfQogCitzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHRBdHRy
aWJ1dGVzIHsKKyAgICBVUkwgcmVzcG9uc2VVUkw7CisgICAgU3RyaW5nIG1pbWVUeXBlOworCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7
CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPElt
cG9ydGVkU2NyaXB0QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxVUkw+IHJlc3BvbnNlVVJMOworICAgICAgICBkZWNvZGVyID4+IHJl
c3BvbnNlVVJMOworICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAg
ICAgICBkZWNvZGVyID4+IG1pbWVUeXBlOworICAgICAgICBpZiAoIW1pbWVUeXBlKQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAg
ICAgIFdURk1vdmUoKnJlc3BvbnNlVVJMKSwKKyAgICAgICAgICAgIFdURk1vdmUoKm1pbWVUeXBl
KQorICAgICAgICB9fTsKKyAgICB9Cit9OworCitzdGF0aWMgSGFzaE1hcDxVUkwsIEltcG9ydGVk
U2NyaXB0QXR0cmlidXRlcz4gc3RyaXBTY3JpcHRTb3VyY2VzKGNvbnN0IEhhc2hNYXA8VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYgbWFwKQoreworICAgIEhh
c2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IG1hcFdpdGhvdXRTY3JpcHRzOwor
ICAgIGZvciAoYXV0byYgcGFpciA6IG1hcCkKKyAgICAgICAgbWFwV2l0aG91dFNjcmlwdHMuYWRk
KHBhaXIua2V5LCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgeyBwYWlyLnZhbHVlLnJlc3BvbnNl
VVJMLCBwYWlyLnZhbHVlLm1pbWVUeXBlIH0pOworICAgIHJldHVybiBtYXBXaXRob3V0U2NyaXB0
czsKK30KKworc3RhdGljIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0PiBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhTV1NjcmlwdFN0b3Jh
Z2UmIHNjcmlwdFN0b3JhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSwgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4mJiBt
YXApCit7CisgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQ+IGltcG9ydGVkU2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApIHsK
KyAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UucmV0cmlldmUocmVn
aXN0cmF0aW9uS2V5LCBwYWlyLmtleSk7CisgICAgICAgIGlmICghaW1wb3J0ZWRTY3JpcHQpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRp
b25EYXRhYmFzZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2s6IEZhaWxlZCB0byByZXRy
aWV2ZSBpbXBvcnRlZCBzY3JpcHQgZm9yICVzIGZyb20gZGlzayIsIHBhaXIua2V5LnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChwYWlyLmtleSwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdCB7IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpLCBXVEZNb3ZlKHBhaXIu
dmFsdWUucmVzcG9uc2VVUkwpLCBXVEZNb3ZlKHBhaXIudmFsdWUubWltZVR5cGUpIH0pOworICAg
IH0KKyAgICByZXR1cm4gaW1wb3J0ZWRTY3JpcHRzOworfQorCiBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2UoUmVnaXN0cmF0aW9uU3RvcmUmIHN0b3JlLCBTdHJpbmcm
JiBkYXRhYmFzZURpcmVjdG9yeSkKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRl
KCJTZXJ2aWNlV29ya2VyIEkvTyBUaHJlYWQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCkpCiAg
ICAgLCBtX3N0b3JlKG1ha2VXZWFrUHRyKHN0b3JlKSkKQEAgLTEyNCw5ICsxNzQsOSBAQCBSZWdp
c3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgLy8gVGhlIGRhdGFiYXNlIG5lZWRzIHRvIGJlIGRlc3Ry
b3llZCBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgaWYgKG1fZGF0YWJhc2UpCi0gICAg
ICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2Up
XSB7IH0pOworICAgIC8vIFRoZSBkYXRhYmFzZSAmIHNjcmlwdFN0b3JhZ2UgbmVlZCB0byBiZSBk
ZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorICAgIGlmIChtX2RhdGFiYXNlIHx8
IG1fc2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtkYXRhYmFz
ZSA9IFdURk1vdmUobV9kYXRhYmFzZSksIHNjcmlwdFN0b3JhZ2UgPSBXVEZNb3ZlKG1fc2NyaXB0
U3RvcmFnZSldIHsgfSk7CiB9CiAKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnBvc3RUYXNr
VG9Xb3JrUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCkBAIC0xODUsNiArMjM1LDE5IEBA
IGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJp
bmcmIGZ1bGxGaWxlbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorU3RyaW5nIFJlZ2lzdHJh
dGlvbkRhdGFiYXNlOjpzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RhdGFiYXNlRGlyZWN0
b3J5LCB7ICJTY3JpcHRzIiwgIlYxIiB9KTsKK30KKworU1dTY3JpcHRTdG9yYWdlJiBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgaWYgKCFtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fc2NyaXB0U3RvcmFn
ZSA9IG1ha2VVbmlxdWU8U1dTY3JpcHRTdG9yYWdlPihzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkp
OworICAgIHJldHVybiAqbV9zY3JpcHRTdG9yYWdlOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjppbXBvcnRSZWNvcmRzSWZOZWNlc3NhcnkoKQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwpAQCAtMzMzLDggKzM5NiwxMCBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQog
ewogICAgIHBvc3RUYXNrVG9Xb3JrUXVldWUoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZGF0YWJhc2Ug
PSBudWxscHRyOworICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBudWxscHRyOwogCiAgICAgICAg
IFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlRmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShzY3JpcHRTdG9y
YWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURh
dGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkpOwogCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMzUy
LDEyICs0MTcsMTMgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhj
b25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICBTUUxpdGVUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbigqbV9kYXRhYmFzZSk7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsK
IAotICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNv
cmRzIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwor
ICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBSZWNvcmRz
IFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgIGlm
IChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHByZXBhcmUgc3RhdGVtZW50IHRvIHN0b3JlIHJl
Z2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNl
LT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgYXV0byYgc2NyaXB0U3RvcmFnZSA9IHRoaXMtPnNjcmlw
dFN0b3JhZ2UoKTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6IHJlbW92ZWRSZWdpc3Ry
YXRpb25zKSB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJERUxF
VEUgRlJPTSBSZWNvcmRzIFdIRVJFIGtleSA9ID8iKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCkBAIC0zNjYsMTQgKzQzMiwxNyBAQCBib29sIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE+JgogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxl
ZCB0byByZW1vdmUgcmVnaXN0cmF0aW9uIGRhdGEgZnJvbSByZWNvcmRzIHRhYmxlICglaSkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgc2NyaXB0U3Rv
cmFnZS5jbGVhcihyZWdpc3RyYXRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZGF0YSA6
IHVwZGF0ZWRSZWdpc3RyYXRpb25zKSB7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29k
ZXIgY3NwRW5jb2RlcjsKICAgICAgICAgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3kuZW5jb2Rl
KGNzcEVuY29kZXIpOwogCisgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGVuY29kZSB0aGUg
c2NyaXB0IHNvdXJjZXMgdG8gdGhlIGRhdGFiYXNlLiBUaGV5IHdpbGwgYmUgc3RvcmVkIHNlcGFy
YXRlbHkgaW4gdGhlIFNjcmlwdFN0b3JhZ2UuCisgICAgICAgIC8vIEFzIGEgcmVzdWx0LCB3ZSBu
ZWVkIHRvIHN0cmlwIHRoZSBzY3JpcHQgc291cmNlcyBoZXJlIGJlZm9yZSBlbmNvZGluZyB0aGUg
c2NyaXB0UmVzb3VyY2VNYXAuCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgc2Ny
aXB0UmVzb3VyY2VNYXBFbmNvZGVyOwotICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIg
PDwgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNv
ZGVyIDw8IHN0cmlwU2NyaXB0U291cmNlcyhkYXRhLnNjcmlwdFJlc291cmNlTWFwKTsKIAogICAg
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNlcnRpZmljYXRlSW5mb0VuY29kZXI7CiAg
ICAgICAgIGNlcnRpZmljYXRlSW5mb0VuY29kZXIgPDwgZGF0YS5jZXJ0aWZpY2F0ZUluZm87CkBA
IC0zODUsMjEgKzQ1NCwzNiBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFu
Z2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICAgICAg
fHwgc3FsLmJpbmREb3VibGUoNSwgZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNx
bC5iaW5kVGV4dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKGRhdGEucmVnaXN0cmF0aW9uLnVw
ZGF0ZVZpYUNhY2hlKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQo
NywgZGF0YS5zY3JpcHRVUkwuc3RyaW5nKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwg
c3FsLmJpbmRUZXh0KDgsIGRhdGEuc2NyaXB0KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IHNxbC5iaW5kVGV4dCg5LCB3b3JrZXJUeXBlVG9TdHJpbmcoZGF0YS53b3JrZXJUeXBlKSkgIT0g
U1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTAsIGNzcEVuY29kZXIuYnVm
ZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAg
IHx8IHNxbC5iaW5kVGV4dCgxMSwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09LCi0g
ICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5i
dWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTMsIGNlcnRpZmljYXRlSW5mb0VuY29k
ZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCB3b3JrZXJUeXBlVG9TdHJpbmco
ZGF0YS53b3JrZXJUeXBlKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJs
b2IoOSwgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDEwLCBkYXRhLnJlZmVycmVyUG9s
aWN5KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMSwgc2NyaXB0
UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVm
ZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMiwg
Y2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5i
dWZmZXJTaXplKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtl
ciwgIkZhaWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUg
KCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAg
IC8vIFNhdmUgc2NyaXB0cyB0byBkaXNrLgorICAgICAgICBhdXRvIG1haW5TY3JpcHQgPSBzY3Jp
cHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5zY3JpcHRVUkwsIGRh
dGEuc2NyaXB0KTsKKyAgICAgICAgQVNTRVJUKG1haW5TY3JpcHQpOworICAgICAgICBpZiAoIW1h
aW5TY3JpcHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEhhc2hNYXA8VVJM
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4gaW1wb3J0ZWRTY3JpcHRzOworICAgICAgICBmb3IgKGF1
dG8mIHBhaXIgOiBkYXRhLnNjcmlwdFJlc291cmNlTWFwKSB7CisgICAgICAgICAgICBhdXRvIGlt
cG9ydGVkU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXks
IHBhaXIua2V5LCAqcGFpci52YWx1ZS5zY3JpcHQpOworICAgICAgICAgICAgQVNTRVJUKGltcG9y
dGVkU2NyaXB0KTsKKyAgICAgICAgICAgIGlmIChpbXBvcnRlZFNjcmlwdCkKKyAgICAgICAgICAg
ICAgICBpbXBvcnRlZFNjcmlwdHMuYWRkKGNyb3NzVGhyZWFkQ29weShwYWlyLmtleSksIFdURk1v
dmUoaW1wb3J0ZWRTY3JpcHQpKTsKKyAgICAgICAgfQorICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyID0gZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWFpblNjcmlwdCA9IG1haW5T
Y3JpcHQucmVsZWFzZU5vbk51bGwoKSwgaW1wb3J0ZWRTY3JpcHRzID0gV1RGTW92ZShpbXBvcnRl
ZFNjcmlwdHMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKG1fc3RvcmUpCisgICAgICAg
ICAgICAgICAgbV9zdG9yZS0+ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdURk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRz
KSk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOwotCi0g
ICAgTE9HKFNlcnZpY2VXb3JrZXIsICJVcGRhdGVkIFNlcnZpY2VXb3JrZXIgcmVnaXN0cmF0aW9u
IGRhdGFiYXNlICglenUgYWRkZWQvdXBkYXRlZCByZWdpc3RyYXRpb25zIGFuZCAlenUgcmVtb3Zl
ZCByZWdpc3RyYXRpb25zIiwgdXBkYXRlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpLCByZW1vdmVkUmVn
aXN0cmF0aW9ucy5zaXplKCkpOworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJVcGRh
dGVkIFNlcnZpY2VXb3JrZXIgcmVnaXN0cmF0aW9uIGRhdGFiYXNlICglenUgYWRkZWQvdXBkYXRl
ZCByZWdpc3RyYXRpb25zIGFuZCAlenUgcmVtb3ZlZCByZWdpc3RyYXRpb25zIiwgdXBkYXRlZFJl
Z2lzdHJhdGlvbnMuc2l6ZSgpLCByZW1vdmVkUmVnaXN0cmF0aW9ucy5zaXplKCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC00MDcsNiArNDkxLDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
IAorICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3JkczoiKTsKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAi
U0VMRUNUICogRlJPTSBSZWNvcmRzOyJfcyk7CiAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiRmFpbGVkIHRvIHByZXBhcmUgc3Rh
dGVtZW50IHRvIHJldHJpZXZlIHJlZ2lzdHJhdGlvbnMgZnJvbSByZWNvcmRzIHRhYmxlICgiLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2co
KSk7CkBAIC00MTQsNiArNDk5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzKCkKICAgICBpbnQgcmVzdWx0ID0gc3FsLnN0ZXAoKTsKIAogICAgIGZvciAoOyBy
ZXN1bHQgPT0gU1FMSVRFX1JPVzsgcmVzdWx0ID0gc3FsLnN0ZXAoKSkgeworICAgICAgICBSRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29y
ZHM6IEltcG9ydGluZyBhIHJlZ2lzdHJhdGlvbiBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAg
ICBhdXRvIGtleSA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmZyb21EYXRhYmFzZUtl
eShzcWwuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAgIGF1dG8gb3JpZ2luVVJMID0gVVJMIHsg
VVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDEpIH07CiAgICAgICAgIGF1dG8gc2NvcGVQYXRoID0g
c3FsLmdldENvbHVtblRleHQoMik7CkBAIC00MjIsNTIgKzUwOCw2OCBAQCBTdHJpbmcgUmVnaXN0
cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBhdXRvIGxhc3RVcGRhdGVD
aGVja1RpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3FsLmdldENvbHVtbkRvdWJsZSg0
KSk7CiAgICAgICAgIGF1dG8gdXBkYXRlVmlhQ2FjaGUgPSBzdHJpbmdUb1VwZGF0ZVZpYUNhY2hl
KHNxbC5nZXRDb2x1bW5UZXh0KDUpKTsKICAgICAgICAgYXV0byBzY3JpcHRVUkwgPSBVUkwgeyBV
UkwoKSwgc3FsLmdldENvbHVtblRleHQoNikgfTsKLSAgICAgICAgYXV0byBzY3JpcHQgPSBzcWwu
Z2V0Q29sdW1uVGV4dCg3KTsKLSAgICAgICAgYXV0byB3b3JrZXJUeXBlID0gc3RyaW5nVG9Xb3Jr
ZXJUeXBlKHNxbC5nZXRDb2x1bW5UZXh0KDgpKTsKKyAgICAgICAgYXV0byB3b3JrZXJUeXBlID0g
c3RyaW5nVG9Xb3JrZXJUeXBlKHNxbC5nZXRDb2x1bW5UZXh0KDcpKTsKIAogICAgICAgICBWZWN0
b3I8dWludDhfdD4gY29udGVudFNlY3VyaXR5UG9saWN5RGF0YTsKLSAgICAgICAgc3FsLmdldENv
bHVtbkJsb2JBc1ZlY3Rvcig5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhKTsKKyAgICAgICAg
c3FsLmdldENvbHVtbkJsb2JBc1ZlY3Rvcig4LCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhKTsK
ICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjc3BEZWNvZGVyKGNvbnRlbnRTZWN1
cml0eVBvbGljeURhdGEuZGF0YSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhLnNpemUoKSk7
CiAgICAgICAgIE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4g
Y29udGVudFNlY3VyaXR5UG9saWN5OwogICAgICAgICBpZiAoY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YS5zaXplKCkpIHsKICAgICAgICAgICAgIGNzcERlY29kZXIgPj4gY29udGVudFNlY3VyaXR5
UG9saWN5OwotICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpCisgICAgICAg
ICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkgeworICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjb250ZW50U2VjdXJpdHlQb2xpY3kiKTsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IGF1dG8gcmVmZXJyZXJQb2xpY3kgPSBzcWwuZ2V0Q29sdW1uVGV4dCgxMCk7CisgICAgICAgIGF1
dG8gcmVmZXJyZXJQb2xpY3kgPSBzcWwuZ2V0Q29sdW1uVGV4dCg5KTsKIAogICAgICAgICBWZWN0
b3I8dWludDhfdD4gc2NyaXB0UmVzb3VyY2VNYXBEYXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1u
QmxvYkFzVmVjdG9yKDExLCBzY3JpcHRSZXNvdXJjZU1hcERhdGEpOwotICAgICAgICBPcHRpb25h
bDxIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4+
IHNjcmlwdFJlc291cmNlTWFwOworICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEw
LCBzY3JpcHRSZXNvdXJjZU1hcERhdGEpOworICAgICAgICBIYXNoTWFwPFVSTCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIo
c2NyaXB0UmVzb3VyY2VNYXBEYXRhLmRhdGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUo
KSk7CiAgICAgICAgIGlmIChzY3JpcHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKSB7Ci0gICAgICAg
ICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXA7Ci0gICAg
ICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwKQorICAgICAgICAgICAgT3B0aW9uYWw8SGFz
aE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlwdFJlc291cmNlTWFwV2l0
aG91dFNjcmlwdHM7CisgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIgPj4gc2Ny
aXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKKyAgICAgICAgICAgIGlmICghc2NyaXB0UmVz
b3VyY2VNYXBXaXRob3V0U2NyaXB0cykgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkczog
RmFpbGVkIHRvIGRlY29kZSBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzIik7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzY3JpcHRS
ZXNvdXJjZU1hcCA9IHBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrKHNjcmlwdFN0b3JhZ2Uo
KSwgKmtleSwgV1RGTW92ZSgqc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cykpOwogICAg
ICAgICB9CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNlcnRpZmljYXRlSW5mb0RhdGE7Ci0g
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTIsIGNlcnRpZmljYXRlSW5mb0RhdGEp
OworICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDExLCBjZXJ0aWZpY2F0ZUluZm9E
YXRhKTsKICAgICAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87
CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNv
ZGVyKGNlcnRpZmljYXRlSW5mb0RhdGEuZGF0YSgpLCBjZXJ0aWZpY2F0ZUluZm9EYXRhLnNpemUo
KSk7CiAgICAgICAgIGNlcnRpZmljYXRlSW5mb0RlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwot
ICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUlu
Zm8pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdp
c3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjZXJ0aWZp
Y2F0ZUluZm8iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAgICAg
Ly8gVmFsaWRhdGUgdGhlIGlucHV0IGZvciB0aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8g
SWYgYW55IHBhcnQgb2YgdGhpcyBpbnB1dCBpcyBpbnZhbGlkLCBsZXQncyBza2lwIHRoaXMgcmVn
aXN0cmF0aW9uLgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiBhbiBlcnJvciBz
a2lwcGluZyAqYWxsKiByZWdpc3RyYXRpb25zPwotICAgICAgICBpZiAoIWtleSB8fCAhb3JpZ2lu
VVJMLmlzVmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1cGRhdGVWaWFDYWNoZSB8fCAhc2NyaXB0
VVJMLmlzVmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAhc2NvcGVVUkwuaXNWYWxpZCgpKQorICAg
ICAgICBpZiAoIWtleSB8fCAhb3JpZ2luVVJMLmlzVmFsaWQoKSB8fCAhdG9wT3JpZ2luIHx8ICF1
cGRhdGVWaWFDYWNoZSB8fCAhc2NyaXB0VVJMLmlzVmFsaWQoKSB8fCAhd29ya2VyVHlwZSB8fCAh
c2NvcGVVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2
aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0
byBkZWNvZGUgcGFydCBvZiB0aGUgcmVnaXN0cmF0aW9uIik7CiAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2NyaXB0ID0gc2NyaXB0U3RvcmFnZSgpLnJl
dHJpZXZlKCprZXksIHNjcmlwdFVSTCk7CisgICAgICAgIEFTU0VSVChzY3JpcHQpOworICAgICAg
ICBpZiAoIXNjcmlwdCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdv
cmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gcmV0
cmlldmUgbWFpbiBzY3JpcHQgZm9yICVzIGZyb20gZGlzayIsIHNjcmlwdFVSTC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAg
ICAgYXV0byB3b3JrZXJJZGVudGlmaWVyID0gU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJEYXRhID0gU2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJZGVudGlmaWVyLCBzY3Jp
cHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29ya2VyVHlwZSwgcmVnaXN0
cmF0aW9uSWRlbnRpZmllciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwgbGFzdFVwZGF0ZUNoZWNr
VGltZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VydmljZVdvcmtlckRh
dGEpIH07Ci0gICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgeyBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmll
ciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpj
b250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShz
Y3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZSgqc2NyaXB0UmVzb3VyY2VNYXAp
IH07CisgICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
eyBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwg
c2NyaXB0LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1v
dmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZN
b3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNl
TWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3Rv
cmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCmluZGV4IGQ2
YWVkNmI0MGU2MDQ2MjZlM2ExZmZiYzM1ZWJhNDMxMmU4ZWM3ZGEuLjU3MDc1MjY2OTYyMWRiMzQy
ODc3YWYzNGM3MWU0NWI5OGI5MGExOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKQEAgLTM4
LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZWdpc3RyYXRpb25TdG9y
ZTsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOworY2xhc3MgU1dTY3JpcHRTdG9yYWdlOwogc3RydWN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIAogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnkpOwpAQCAtNzIsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0
UmVjb3Jkc0lmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3Rv
cjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JiwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk+Jik7CiAgICAgdm9pZCBkb0NsZWFyT3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJik7CisgICAgU1dTY3JpcHRTdG9yYWdlJiBzY3JpcHRTdG9yYWdlKCk7CisgICAgU3Ry
aW5nIHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIFJlcGxpZXMgdG8g
dGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uVG9TdG9yZShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJik7CkBAIC04MCw2ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAgICBXZWFrUHRyPFJlZ2lzdHJhdGlvblN0b3Jl
PiBtX3N0b3JlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTV1NjcmlwdFN0b3JhZ2U+IG1fc2NyaXB0
U3RvcmFnZTsKICAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9k
YXRhYmFzZUZpbGVQYXRoOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZT4gbV9k
YXRhYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKaW5kZXggMGJhODg3MTlmMzRmNGFjYWJhMjkx
ZmQyYTQzYjNlYjQwMTYxNDM4YS4uOTIxMTU2YWMxNjJjNDJiNGNiZDI0ZTIxNWQ3YjIyYWZiMGUw
NTc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKQEAgLTEyOCw2ICsxMjgsMTEgQEAgdm9pZCBS
ZWdpc3RyYXRpb25TdG9yZTo6YWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNlKFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYmIGQKICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUo
V1RGTW92ZShkYXRhKSk7CiB9CiAKK3ZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3Jr
ZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgbV9zZXJ2ZXIuZGlk
U2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUo
bWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7Cit9CisKIHZvaWQgUmVnaXN0
cmF0aW9uU3RvcmU6OmRhdGFiYXNlRmFpbGVkVG9PcGVuKCkKIHsKICAgICBtX3NlcnZlci5yZWdp
c3RyYXRpb25TdG9yZURhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKaW5k
ZXggNzU0M2VjMTNiM2RjZjcxMDhiNDIxMWQ2NmUwMWM4NzcwMDdjZTk3OC4uMjY4NzhjZWViMGUy
ZjYwN2U3MDdlN2JiNDAxZmU0MjFjZDExZTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaApAQCAtNjMs
NiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Gcm9tRGF0YWJhc2Uo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwogICAgIHZvaWQgZGF0YWJhc2VGYWlsZWRUb09w
ZW4oKTsKICAgICB2b2lkIGRhdGFiYXNlT3BlbmVkQW5kUmVjb3Jkc0ltcG9ydGVkKCk7CisgICAg
dm9pZCBkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIFNXU2VydmVyJiBzZXJ2ZXIoKSB7
IHJldHVybiBtX3NlcnZlcjsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NjU2
MDM0Njc3YjVmYmExYjA5MjliMDY1MGQ2MTBhOTAxMmI0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
QEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIHNoYTJIYXNoKGNvbnN0IFN0cmluZyYgaW5wdXQp
Cit7CisgICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGF1dG8gaW5wdXRVdGY4ID0gaW5w
dXQudXRmOCgpOworICAgIGNyeXB0by0+YWRkQnl0ZXMoaW5wdXRVdGY4LmRhdGEoKSwgaW5wdXRV
dGY4Lmxlbmd0aCgpKTsKKyAgICBhdXRvIGhhc2ggPSBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7Cisg
ICAgcmV0dXJuIFdURjo6YmFzZTY0VVJMRW5jb2RlKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7
Cit9CisKK3N0YXRpYyBTdHJpbmcgc2hhMkhhc2goY29uc3QgVVJMJiBpbnB1dCkKK3sKKyAgICBy
ZXR1cm4gc2hhMkhhc2goaW5wdXQuc3RyaW5nKCkpOworfQorCitTV1NjcmlwdFN0b3JhZ2U6OlNX
U2NyaXB0U3RvcmFnZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKKyAgICA6IG1fZGlyZWN0b3J5
KGRpcmVjdG9yeSkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5n
IFNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkgY29uc3QKK3sKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX2RpcmVjdG9yeSwgeyBzaGEy
SGFzaChyZWdpc3RyYXRpb25LZXkudG9wT3JpZ2luKCkudG9TdHJpbmcoKSksIHNoYTJIYXNoKHJl
Z2lzdHJhdGlvbktleS5zY29wZSgpKSB9KTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6
c2NyaXB0UGF0aChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlZ2lz
dHJhdGlvbktleSksIHNoYTJIYXNoKHNjcmlwdFVSTCkpOworfQorCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgc2NyaXB0KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisgICAg
YXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0aChyZWdpc3RyYXRpb25LZXksIHNjcmlw
dFVSTCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRlbGV0ZSB0
aGUgZmlsZSBiZWZvcmUgd3JpdGluZyBhcyB0aGVyZSBtYXkgYmUgY29kZSB1c2luZyBhIG1tYXAn
ZCB2ZXJzaW9uIG9mIHRoaXMgZmlsZS4KKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHNjcmlw
dFBhdGgpOworCisgICAgYXV0byBtYXBwZWRGaWxlID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHNj
cmlwdFBhdGgsIHNjcmlwdC5kYXRhQXNVSW50OFB0cigpLCBzY3JpcHQuc2l6ZSgpKTsKKyAgICBp
ZiAoIW1hcHBlZEZpbGUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtl
ciwgIlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0
ZW06Om1hcFRvRmlsZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGUpKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dT
Y3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+c2NyaXB0UGF0
aChyZWdpc3RyYXRpb25LZXksIHNjcmlwdFVSTCk7CisKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKHNjcmlwdFBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKKyAgICBpZiAo
IXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUobWFwcGVkRmlsZSkpOworfQorCit2b2lkIFNXU2NyaXB0U3Rv
cmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5KQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+cmVnaXN0
cmF0aW9uRGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7CisgICAgYm9vbCByZXN1bHQgPSBGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdpc3RyYXRpb25EaXJlY3RvcnkpOwor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNlcnZpY2VXb3JrZXIsICJTV1Njcmlw
dFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJlZ2lzdHJhdGlv
biAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRhdGEoKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZGViZDg1NGUwY2Q0Y2Y0MDQxZTZiNzE2
M2I0NDU2MzIxMDU3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIFNX
U2NyaXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKKwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzY3Jp
cHQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CisgICAgdm9pZCBjbGVh
cihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisKK3ByaXZhdGU6CisgICAg
U3RyaW5nIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25zdDsKKworICAgIFN0
cmluZyBtX2RpcmVjdG9yeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3ODFkMzBhYmRi
NGE5OTdkNjRmMWQ2NTg2OTRiMy4uZGNlMjAxNmZjMTUzODMwMGZmYWExMTc1OWVhZTMzNDA4YzRm
OWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKQEAgLTE3Niw2ICsxNzYsMTIgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0
cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgfSk7
CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBv
cnRlZFNjcmlwdHMpCit7CisgICAgaWYgKGF1dG8gd29ya2VyID0gd29ya2VyQnlJRChzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2so
V1RGTW92ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKwogdm9p
ZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4mJiByZWdpc3RyYXRpb24pCiB7CiAgICAgbV9vcmlnaW5TdG9yZS0+YWRkKHJlZ2lz
dHJhdGlvbi0+a2V5KCkudG9wT3JpZ2luKCkpOwpAQCAtNjMzLDcgKzYzOSw3IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNv
dXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29u
dGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RG
TW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24u
ZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc3RyaW5nVG9TY3Jp
cHRCdWZmZXIoc2NyaXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNl
TWFwKSB9KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYmExYjQxMzUwMzU0MGRjZTg4NWNkNDQ4
YjNmN2MwNDI4ZGI4Y2IxNy4uNzk2YmU4NWUzZTU0NzcyNjg2ZTk1NDgwODQ1ZjA0NTQ4YzVkOTUw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaApAQCAtMTkwLDYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVSZWdpc3Ry
YXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAgICB2b2lkIGFk
ZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7CisgICAg
dm9pZCBkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblN0b3Jl
SW1wb3J0Q29tcGxldGUoKTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblN0b3JlRGF0YWJhc2VGYWls
ZWRUb09wZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggODAyYTQ4MDExNTFhNzI4ZmJj
NWEyYTY5MTI0ZGI5NjNjNzcyY2IwYS4uNWNhMjUyNjkxMTQ1M2RiMDhmMWY4ZjI4MzJkYmM0MDQ1
ZTY0YWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCYgcmVzdWwKICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIG5l
d2VzdFdvcmtlcidzIHNjcmlwdCB1cmwgZXF1YWxzIGpvYidzIHNjcmlwdCB1cmwgd2l0aCB0aGUg
ZXhjbHVkZSBmcmFnbWVudHMKICAgICAvLyBmbGFnIHNldCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0
ZXh0IGlzIGEgYnl0ZS1mb3ItYnl0ZSBtYXRjaCB3aXRoIG5ld2VzdFdvcmtlcidzIHNjcmlwdCBy
ZXNvdXJjZSdzIHNvdXJjZQogICAgIC8vIHRleHQsIHRoZW46Ci0gICAgaWYgKG5ld2VzdFdvcmtl
ciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0
VVJMKCksIGpvYi5zY3JpcHRVUkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3Jr
ZXJUeXBlICYmIHJlc3VsdC5zY3JpcHQgPT0gbmV3ZXN0V29ya2VyLT5zY3JpcHQoKSAmJiBkb0Nl
cnRpZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2Vy
dGlmaWNhdGVJbmZvKCkpKSB7CisgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpvYi5zY3JpcHRV
UkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYmIHJlc3VsdC5z
Y3JpcHQgPT0gc2NyaXB0QnVmZmVyVG9TdHJpbmcobmV3ZXN0V29ya2VyLT5zY3JpcHQoKSkgJiYg
ZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXIt
PmNlcnRpZmljYXRlSW5mbygpKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkLCBzY3JpcHQgYW5k
IGNlcnRpZmljYXRlIGFyZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMs
IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICAvLyBGSVhN
RTogZm9yIG5vbiBjbGFzc2ljIHNjcmlwdHMsIGNoZWNrIHRoZSBzY3JpcHTigJlzIG1vZHVsZSBy
ZWNvcmQncyBbW0VDTUFTY3JpcHRDb2RlXV0uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCAyYjhmZjY4NWUwNDk3OWZjZGM3M2U3MzIwZGYzZjRkYTY0Yzc2
MmRmLi4xMjAwNTE2OThiZjkzOTgxOGU0ZDQzZTg1YzY5NTczMDBiYTdkY2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCB2
b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJM
LCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSkK
K3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0
VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYgc2NyaXB0KQog
ewogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJG
b3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgd29ya2VyLT5z
ZXRTY3JpcHRSZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUocmVzcG9uc2VV
UkwpLCBXVEZNb3ZlKG1pbWVUeXBlKSB9KTsKKyAgICAgICAgd29ya2VyLT5zZXRTY3JpcHRSZXNv
dXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAKIHZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IDQ2NTlmOWY5ZmE2YzZiYWE4ZGU5NjhkMzkxNWZlMzNjNGUzMTI2NjguLjli
ZTM0NDQ5MWYwNjEzZmFlMTQwZTc5ODUxYjcxMGEzYjMyYjJiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVudElk
UmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkws
IFN0cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRCZWF0
Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURv
bWFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAzYmEzNmEzZjk1YTU3ZWJhMTc4NThjZTYyZGVl
ZTc4YWM5YTY2NzA1Li42MTNiYjcyYzU4OGQ4YTE3MGIxZTRiYjJiNzkwYzAzMDBiZTFmNDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcApAQCAtNDksNyArNDksNyBAQCBTV1NlcnZlcldvcmtlciogU1dTZXJ2
ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRp
ZgogfQogCiAvLyBGSVhNRTogVXNlIHItdmFsdWUgcmVmZXJlbmNlcyBmb3Igc2NyaXB0IGFuZCBj
b250ZW50U2VjdXJpdHlQb2xpY3kKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1Nl
cnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdv
cmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0
UmVzb3VyY2VNYXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNl
cnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRp
ZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBl
IHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNl
TWFwKQogICAgIDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fcmVnaXN0
cmF0aW9uS2V5KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKG1ha2VX
ZWFrUHRyKHJlZ2lzdHJhdGlvbikpCkBAIC0yMzgsNiArMjM4LDIxIEBAIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OnNldFNjcmlwdFJlc291cmNlKFVSTCYmIHVybCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvCiAgICAgbV9zY3JpcHRSZXNvdXJjZU1hcC5zZXQoV1RGTW92ZSh1cmwpLCBXVEZN
b3ZlKHNjcmlwdCkpOwogfQogCit2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRTYXZlU2NyaXB0c1Rv
RGlzayhSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8gVGhlIHNjcmlwdHMg
d2VyZSBzYXZlZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAnZCB2
ZXJzaW9uIHRvIHNhdmUgbWVtb3J5LgorICAgIEFTU0VSVChtYWluU2NyaXB0LmdldCgpID09IG1f
c2NyaXB0LmdldCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFy
ZSBpZGVudGljYWwuCisgICAgbV9zY3JpcHQgPSBXVEZNb3ZlKG1haW5TY3JpcHQpOworICAgIGZv
ciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgeworICAgICAgICBhdXRvIGl0ID0gbV9z
Y3JpcHRSZXNvdXJjZU1hcC5maW5kKHBhaXIua2V5KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1f
c2NyaXB0UmVzb3VyY2VNYXAuZW5kKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9zY3JpcHRSZXNv
dXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoKml0
LT52YWx1ZS5zY3JpcHQgPT0gKnBhaXIudmFsdWUpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1
cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KKyAgICAgICAgaXQtPnZhbHVlLnNjcmlwdCA9
IFdURk1vdmUocGFpci52YWx1ZSk7CisgICAgfQorfQorCiB2b2lkIFNXU2VydmVyV29ya2VyOjpz
a2lwV2FpdGluZygpCiB7CiAgICAgbV9pc1NraXBXYWl0aW5nRmxhZ1NldCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmgKaW5kZXggMzc4ZmJhNjU3ZThiYmY0ODQxZTU2Y2JmODY1NjFmOGVjYzMxMTAyMC4uYzQ1
ZGFkYmNhYjgxOTc2Yjc2ZjBiZTUzMTRmM2I3MWY3N2I2YjI5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAt
ODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJuIG1f
c2VydmVyLmdldCgpOyB9CiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXN0cmF0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KICAg
ICBjb25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zY3JpcHRVUkw7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9
CisgICAgU2hhcmVkQnVmZmVyJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQog
ICAgIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1
cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICBXb3JrZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEudHlwZTsgfQogCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50
QnlJZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7
CiAgICAgdm9pZCBtYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25z
JiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpOwogICAgIHZvaWQgc2V0
U2NyaXB0UmVzb3VyY2UoVVJMJiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQmJik7CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWY8U2hhcmVkQnVmZmVy
PiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBv
cnRlZFNjcmlwdHMpOwogCiAgICAgdm9pZCBza2lwV2FpdGluZygpOwogICAgIGJvb2wgaXNTa2lw
V2FpdGluZ0ZsYWdTZXQoKSBjb25zdCB7IHJldHVybiBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0OyB9
CkBAIC0xMjcsNyArMTI4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENo
ZWNrKCk7CiAKIHByaXZhdGU6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiYmKTsKKyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmlj
YXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0
cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
JiYpOwogCiAgICAgdm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIoYm9vbCBzdWNjZXNzKTsK
IApAQCAtMTQwLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0
aW9uPiBtX3JlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7Ci0gICAg
U3RyaW5nIG1fc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0OwogICAgIENl
cnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIG1f
cmVmZXJyZXJQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmM2I3NWE1ZWJhM2ZkNzNmNTI2
ODQ0NjEyMzk3ODVlNTQ0NjkzN2EyLi5kOGQ5NDM0MDg0NWRkODViMzZkYzg5MjlhYjFlNjI3MTg4
OTMyODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4g
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEZpbmRD
bGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKICAg
ICBNYXRjaEFsbCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xh
aW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCi0g
ICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBT
dHJpbmcgbWltZVR5cGUpCisgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCiAgICAgUG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
LCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
CmluZGV4IGFiN2FiYzI1NzY1YWQ0MjhmMmExNTdjNjE3OTRkMjI1ODYxN2JiNDcuLjJlYTI4NDAw
OTY0NDkwZmRiYmU1NzBhMDhiMmZjMGMyOGEzNzIxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAg
LTcwMiw3ICs3MDIsNyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGZpbGVu
YW1lIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CiAgICAgICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBGaWxlU3lzdGVtOjpT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCi0gICAgICAgICAgICAgICAgZGVsZXRlRGly
ZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGZpbGVuYW1lKTsKICAgICAgICAgfQogICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IH0pOwpAQCAtNzQ5LDE4ICs3NDksMTggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3Jp
Z2luRnJvbURpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmb2xkZXJQYXQKIAogICAg
ICAgICAgICAgLy8gSWYgY2FjaGUgc2FsdCBpcyBpbml0aWFsaXplZCBhbmQgdGhlIHBhdGhzIGRv
IG5vdCBtYXRjaCwgc29tZSBjYWNoZSBmaWxlcyBoYXZlIHByb2JhYmx5IGJlIHJlbW92ZWQgb3Ig
cGFydGlhbGx5IGNvcnJ1cHRlZC4KICAgICAgICAgICAgIEFTU0VSVCghbV9zYWx0IHx8IGZvbGRl
clBhdGggPT0gY2FjaGVzUm9vdFBhdGgoKmZvbGRlck9yaWdpbikpOwotICAgICAgICAgICAgZGVs
ZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2Nh
bGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKKyAg
ICAgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRl
clBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcild
IHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBFbmdpbmU6OmRlbGV0ZURpcmVj
dG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBFbmdpbmU6
OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYg
cGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNo
KFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKLSAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZl
bHkocGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHBh
dGgpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxOTQ0YTVjNzkyZDhkNzk5
ZTI5ZGFiYzg0NjY2N2I2Njg2MmJiN2Y5Li40NDA5ZTdiNDk2YWI4Y2Y2NDZjOWEwZmZhZWRmNTcz
NGMwZmYxZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNs
ZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpc2soY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZURpcmVj
dG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU5vbkVtcHR5RGlyZWN0
b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5j
cHAKaW5kZXggNjZmNzZlYjJkNmZjN2Q5OGRjZThhZTA2MmNmYmFmMGZmNTAzNmI3OS4uZTZmYjBi
NGZiMWJiY2ExZDc1NTJmNzljNjJkZTk1OTEyOTBlY2NjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
ICNpZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtNDAsNDEgKzQxLDcg
QEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIERhdGEgRGF0YTo6bWFwVG9GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKLSAgICBjb25zdGV4cHIgYm9vbCBmYWlsSWZGaWxlRXhp
c3RzID0gdHJ1ZTsKLSAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNj
ZXNzUGVybWlzc2lvbjo6VXNlciwgZmFpbElmRmlsZUV4aXN0cyk7Ci0gICAgaWYgKCFGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkgfHwgIUZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZSho
YW5kbGUsIG1fc2l6ZSkpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7
Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotICAgIAotICAgIEZpbGVTeXN0ZW06Om1ha2VT
YWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOwotICAgIGJvb2wgc3VjY2VzczsKLSAgICBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFy
ZWQsIHN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykgewotICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICB2b2lk
KiBtYXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7Ci0gICAgdWludDhf
dCogbWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOwotICAgIGFwcGx5KFsmbWFw
RGF0YV0oY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBieXRlc1NpemUpIHsKLSAgICAgICAg
bWVtY3B5KG1hcERhdGEsIGJ5dGVzLCBieXRlc1NpemUpOwotICAgICAgICBtYXBEYXRhICs9IGJ5
dGVzU2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0KLSNpZiBPUyhXSU5ET1dT
KQotICAgIERXT1JEIG9sZFByb3RlY3Rpb247Ci0gICAgVmlydHVhbFByb3RlY3QobWFwLCBtX3Np
emUsIEZJTEVfTUFQX1JFQUQsICZvbGRQcm90ZWN0aW9uKTsKLSAgICBGbHVzaFZpZXdPZkZpbGUo
bWFwLCBtX3NpemUpOwotI2Vsc2UKLSAgICAvLyBEcm9wIHRoZSB3cml0ZSBwZXJtaXNzaW9uLgot
ICAgIG1wcm90ZWN0KG1hcCwgbV9zaXplLCBQUk9UX1JFQUQpOwotCi0gICAgLy8gRmx1c2ggKGFz
eW5jaHJvbm91c2x5KSB0byBmaWxlLCB0dXJuaW5nIHRoaXMgaW50byBjbGVhbiBtZW1vcnkuCi0g
ICAgbXN5bmMobWFwLCBtX3NpemUsIE1TX0FTWU5DKTsKLSNlbmRpZgotCisgICAgYXV0byBtYXBw
ZWRGaWxlID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHBhdGgsIGRhdGEoKSwgc2l6ZSgpKTsKICAg
ICByZXR1cm4gRGF0YTo6YWRvcHRNYXAoV1RGTW92ZShtYXBwZWRGaWxlKSwgaGFuZGxlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2EwZWM1ZTE0ZjMzZGUwNDJjZGY0NGIw
ZmJhNDIzY2M5ZGQ3YWZjNS4uN2E5OTYxNGYyMzM1YjE1MGM5Y2FiMjIyYzkzNWQwYmJlZjY5Yzgw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02MiwyMyArNjIsNiBAQCB2b2lkIHRy
YXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgRAogICAgIH0KIH0KIAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNp
dmVseShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0aCwg
WyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0g
ICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aCwgbmFtZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNl
IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVj
dG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5OgotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBUaGlz
IGRvZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Ci19Ci0KIEZpbGVUaW1lcyBmaWxlVGlt
ZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5oCmluZGV4IDdhNWY4Y2M0ZmUzOGE5NTYxY2UxYzhiNjFjMTBjNzQ3OWNh
ODc0MmYuLmMwYjRlODFiNDczNzVhMDdmZjk5YmViNDIxMGRhMDE1ODIyYzczNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5oCkBAIC0zMyw4ICszMyw2IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUg
ewogZW51bSBjbGFzcyBEaXJlY3RvcnlFbnRyeVR5cGUgeyBEaXJlY3RvcnksIEZpbGUgfTsKIHZv
aWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYpOwogCi12
b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KIHN0
cnVjdCBGaWxlVGltZXMgewogICAgIFdhbGxUaW1lIGNyZWF0aW9uOwogICAgIFdhbGxUaW1lIG1v
ZGlmaWNhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGVkZGMwYmUyOWUwZTJjNmQyMDI1
YTk2YjI1ZWMxZTU2YzQ4YWY4ZDYuLmRiNGMwNTQ5YzZiYmViODAzYjY2ZjBlMzE0NTE5YmU1ODI5
MjViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0
Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SYW5k
b21OdW1iZXIuaD4KQEAgLTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xk
VmVyc2lvbnMoKQogICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAg
ICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5n
IG9sZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25Q
YXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9s
ZFZlcnNpb25QYXRoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5ZTMxMjk3MTk2ZGExMTU1
ZjBiMjJjMzE4MGEwM2M4MzA0ODZlMzcyLi5mNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3
MDYwODk4OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAog
c3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVu
Y29kZXIgPDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKworICAg
IHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1
ZmZlclNpemU7CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQs
MTIgKzE0OSwyNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAg
ZGVjb2RlciA+PiBpc051bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVy
LmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNWU4ZjcwOTA2MWI0MmQxOGFjOTY5
MThlNTk4ZmQ4MjE0MGM0MjhjZC4uMWUwMWE1ZDRlN2E3YjgzMTRhMjMxNGFhODdmNGRkMmRkMzJl
YjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjg4LDcgKzI4
OCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJs
LCBzY3JpcHQuc2NyaXB0LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAw
KTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiYjRlMDFmYTBkNTEzZmQ4ODgwODE1NDlhMDM0MWY5
MWEzZmVmNmYuLmE1ODc0Mzc0Nzg3YzViYjdiZjhiZTY1MTg3Njg2ZDY3ZDgxM2IyZmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MCBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxp
dGUzOiBSZW1vdmVkLgorICAgICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdv
cmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5l
ZWRlZCBhbmQgaXQgaXMgYSBwYWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBp
dAorICAgICAgICBoYWQgbm8gdGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3
ZSBub3cgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBs
YXRmb3Jtcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNl
cnZpY2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJh
c2UgaW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBk
YXRhYmFzZSBzY2hlbWUgYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUg
dGVzdCB0aGF0IHdhcyByZWx5aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFi
YXNlIGZpbGUgKHdpdGggb2xkIHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWlj
YWxseSBnZW5lcmF0ZSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0
IHJlZ2lzdGVycyBhIHNlcnZpY2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjggIENh
bWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgQXNw
ZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgZm9yIFdlYktpdExlZ2FjeS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjZlNzA5M2I4ZjE1MGExODE4ZWYyZWJiMjNiNGI0
YThlZWNiODE1NS4uYzdhYzE0ODdhOTEwMmJhNTJiY2JkN2FkY2I3ZDc4Mzg1NDQ4MDgxYSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2OSw3ICsyNjksNiBAQAogCQk0NkE0NEE1NDI1QTc4
MzAzMDBGNjFFMTYgLyogd2ViYXVkaW8tY3JlYXRlTWVkaWFFbGVtZW50U291cmNlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDRB
NTMyNUE3ODJERDAwRjYxRTE2IC8qIHdlYmF1ZGlvLWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5o
dG1sICovOyB9OwogCQk0NkE0NkExQTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2Uu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE0NkEx
OTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gKi87IH07CiAJCTQ2QTkxMTU5
MjEwOEU2NzgwMDc4RDQwRCAvKiBDdXN0b21Vc2VyQWdlbnQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE5MTE1ODIxMDhFNjZCMDA3OEQ0MEQgLyog
Q3VzdG9tVXNlckFnZW50Lm1tICovOyB9OwotCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyog
U2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTZBNzU3MjBGOTA1NEYw
MDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi87
IH07CiAJCTQ2QkJFQTFCMjVGOTgzNTcwMEQ0OTg3QSAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNkExNTExQUFDMEIzMTAw
MkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCTQ2QzFFQTk4MjU3NTg4MjAwMDVFNDA5
RSAvKiBhbGVydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QzFFQTk3MjU3NTg4MDUwMDVFNDA5RSAvKiBhbGVydC5odG1sICovOyB9
OwogCQk0NkMzQUVCMzIzRDBFNTI5MDAxQjA2ODAgLyogYmVmb3JldW5sb2FkLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDM0FFQjIy
M0QwRTUwRjAwMUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sICovOyB9OwpAQCAtMTY1OCw3ICsx
NjU3LDYgQEAKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBs
ZTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIz
RTEgLyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJCTQ2QUU1QTM3MjBG
OTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0
ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8q
IHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGlu
Zy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5RkM5RTQwMDUyNzQ4
MiAvKiBTcGFjZU9ubHkub3RmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjA0Myw3ICsyMDQx
LDYgQEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VG
IC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQu
c3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2NTZBNzU3MjBGOTA1NEYw
MDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRo
ID0gIlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9j
ZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vz
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4
OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Np
b25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29r
aWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMzcsNyArNDAzNCw2IEBA
CiAJCQkJRjRFM0Q4MDcyMEY3MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0
b25lLWFydGljbGUuaHRtbCAqLywKIAkJCQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2ln
bmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLywKIAkJCQlDOUI0QUQyOTFFQ0E2RUE1MDBG
NUZFQTAgLyogc2lsZW5jZS1sb25nLm00YSAqLywKLQkJCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUy
MUYgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovLAogCQkJ
CUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0
aC1hdWRpby5odG1sICovLAogCQkJCUY0Q0ZDREQ4MjQ5RkM5RDkwMDUyNzQ4MiAvKiBTcGFjZU9u
bHkub3RmICovLAogCQkJCTkzNjAyNzA1MjVBM0IyOEUwMDM2NzY3MCAvKiBzcGVlY2hyZWNvZ25p
dGlvbi1iYXNpYy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcAppbmRleCA3NmNhZjJhZDQzNzI2NjNkMmJlMzExYmNmYjYzYTA0ZDBjMGQwMWY2
Li44ZjY1MWQzZWFlMzQzMjk3NTFhYzM2MWRkN2UwNjRjYjYzN2UzNzUyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMTUxLDQgKzE1MSwyOSBA
QCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRGYWlsSWZGaWxlRXhp
c3RzKQogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkp
OwogfQogCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KQor
eworICAgIGF1dG8gY3JlYXRlVGVzdFRpbGUgPSBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAg
ICAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVt
VGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwor
ICAgIH07CisKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5Rmls
ZTsKKyAgICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgiZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7Cisg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGUpOworCisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiB9
KSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAgIGNyZWF0ZVRlc3RU
aWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9s
ZGVyLCAiZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwg
ImZpbGUzLnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZp
bGU0LnR4dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOwor
ICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xk
ZXIpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3YzczYTg0
MjJhNGM0ZThmZjdlNjEwNWU5ZTg4MGRmLi4yMzc4OGVhZTE0MzY3YWUyZjFhNDE2NGViNGM5ZmJh
MTQzMDk0NDcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTk1Niw3ICsxOTU2LDcgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZXNzKQogICAgIGF1dG8gcGF0
aCA9IHN0b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LnBhdGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpwYXRoIGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9y
eSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cy01LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRl
MyJdOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMTk4Myw3ICsxOTgzLDcgQEAg
VEVTVChXZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4
cGVjdGVkU2NoZW1hKQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKIAogICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRl
cm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpb
c3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXSBl
cnJvcjpuaWxdOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwpAQCAtMjM1NSw2ICsyMzU1LDc3IEBAIFRFU1Qo
U2VydmljZVdvcmtlcnMsIENsZWFyRE9NQ2FjaGVBbHNvSW5jbHVkZXNTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucykKICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKIH0KIAorVEVTVChTZXJ2
aWNlV29ya2VycywgQ3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMp
Cit7CisgICAgTlNVUkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJy
YXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VX
b3JrZXJzLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOworICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOwor
ICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKKworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rv
cmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKworICAgIGF1dG8gd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKKyAg
ICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFT
dG9yZTpkYXRhU3RvcmUuZ2V0KCldOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0
TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNl
cnZlcih7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAorICAgICAgICB7ICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICB9KTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICB1
bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdICYmICsr
dGltZW91dCA8IDIwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOwor
ICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0
c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdKTsKKworICAgIC8vIEZldGNoIFNXIHJl
Y29yZHMKKyAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zXV0pOworICAgIHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsKKyAgICBbZGF0YVN0b3Jl
IGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7
CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOworICAgICAgICByZWFk
eVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAg
IC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5j
ZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisgICAg
W2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRh
UmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKKyAg
ICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBkYXRhU3RvcmUgPSBu
aWw7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAg
IHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRz
LCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVx
dWVzdCBpcyBpbiBmbGlnaHQuCisgICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vi
c2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNv
bXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Cisg
ICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAg
IC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFj
ayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCisgICAgLy8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMg
dG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCisgICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jk
c09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJy
YXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNU
X0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGlu
dWUpOworfQorCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2FjaGUpCiB7CiAgICAg
W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5z
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2lt
cGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00
LnNxbGl0ZTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMDVkYzQ2ZTNhMmNjZWIz
NGVmOWE3NjhjZDA5ZWIzZDhhZjI0MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwg
MjA0ODAKemNtZUhPY359IXkqVXZfUDVNJmpRTWFQOXJBaH1fOExxZHB2dldTMnZCNkxVd0dNYkg8
Ml5jTF5xb1AqcGc4UFB1CnpYc3VoLXk2Kn1xUiZDdl9iPVNKclQxQmdNc28kTjFBWHI9NEBBO25o
ZDtpR2JXYlNoQUo/SC1KejMwdzNYVXNAWAp6I3dpUmIpRFM5XkxjJG8xMz5KJEtpeSNhSmc5VUZa
YyQrVUtPbU5IQF9Ad2kjVGBZem05STx6SiR6YSg+RnpoMjcKemo8KGpvUWcxPVBmYEExOTNqITdk
RUNeVC11cG5TVHo9RDdVZiZWSDVDTzkjei1NemUrbGwyckBwdWA0WEc3VFhvCno4eV9zbTBJNGBy
aWUhcjhsQkd5dkFyZGVnKDw3UEVMNzdOdThvYVpUbGFhSmtNM1I9O0NwayV5aVMhWENCX21tPgp6
TiRGWUE3VWN0XntnY0hLWCl2TjhARkhCQE4pTiNaRGJyfU50TzNjYjU+Z3MlK0NTQDNpSVA7N1Iq
cTdiTTFqZU0KelhXfVhoaUJIUi0ybHRtbDJ9WDNyNzZXbHFnMzEoRnRLeUl7MEBxVWlMfnMqanN+
d2hWaH5YSEtzbkBwN1RjJU17CnpuM35HS1dJNig7XiErdFRUJjczamxHRWI7WmghPDxoIUYldkc/
TUBRKVkyMH00eyFpUllJS0FRT0ZefSpHTFReZQp6ZyV7Izcyei0qZFB9MiYxVTxpeHJGN3skRmFK
M3Y4S143fmFSaUJVUUQyKnxuLT8kOShNVTRxSSspcDwycDBiQkcKeig+OXBffDUre3owdX1AOzJ2
YHVYQVllaGpmYEEycWV+R3tlVSMxZm8pZ2o4LURgVTJjUn5MS2x2RXZkSTZzMEJlCnpSZFRoVTIm
V1hmMHMqZWMmbz5yITdZYlZ4MygzK0QzTGAxdUtkQWtuTG08OXoqdzZMSzVUN0tLUnpwemEtfWdZ
NAp6M1drdityWXNib2E9RWt3eldPSFBCenl6TGh5Wl9GTztWXio9XnU7fj5lTW17KlFmKDluaiNQ
eCNYfUhkUWMjTkcKelJGO347bD54OF9MMWdwYEp9SDI5aGRSSyZNQzJiUnBjRjlLKVpTUWNZRVAz
QjdeTmZCcmRHNTdWeD0tKmhfTkhPCnoqMXJoX3xLTmBsOGVlN3czUTdlZns3NXhQPjZNczNNdkA8
YE1ZVVF1QFErc0VEenBkLVE5PkMwaVVQdHlncHtITAp6OEtUcV9YI35UeE1JWV5gMiFlK1pkU1FW
XnI+NjlZQENQSHZSO2c4Yjc9KXZnKmcjWns1dkB7X1lFNVktcEBEIW0KemNITX0/KDcrelhSOVBU
PXo7cWVCZDREbV9nJX5BTXtPdjNnN14mNSQ8PUpyNjF+ZzdGajFiQmNydTg1b3V3b3J0Cnp0UkdJ
Y3NUR050PVVYVD11TWJuPkttPThtcUl3YzgxNSU/YiFBUFVUa2c3bU9BPCh7K3AoS1dBM0szRSNs
VlBOaAp6M2B6bVpOXnp3VVFKXklsUWkzWFZuNlZqTmh5PDchQXt+NDZMVWhwZkRhNiY3K3wwZ2R4
dFlsdDVrZkV9PzJ9JjcKel53cWN8amhPdUhAWlBnfiZqM043XnljbW42ezwlSEZob2FVYXp2dzY+
ZncqZkJyTUdjUWtHKGY4aVNSVDF8akx1CnokZG5wMk0oNEI7MDZHWmBjKWJZO3hVQ3VtR2AyKzVh
KWlWUCpvSzd1MkFGfT1QNCFCUVk3IzxYPzZPeD1VU1EtQQp6KDZ+QmlJaHZaYXZVZF5GJXJfcnc8
OS0pRmFhJSRhK3tEa3d6Wm99cjlueElzc31YODVVZ25Dakttb0xLO28+ckQKejRKNHBCKTg7eVo2
cXJgaGRyZXs5YkFSNE5PXm5TVmx0RHF0MCUwKi1BYzM5QDV8XjJrZTchalZwTEZQKHpMK052Cno8
QzdzV0FWK342cDk9LW9ESmQzezEwNEJ3czlMN2I1TSZ5aFhDeypZb2NQdnFqNiFpRzNBaUUje1Jp
NmU5aWlWeAp6cmErLXlnXkVzN2lwaU53Q2d7VEZtMCQjM3NFPiFueUB5KlUybjhUMkcqcnxyeWp4
ZnxLXlcqMyhKZUZ3YDArVjcKekgyZypGZmo4ZT5eND1TZU51WCp7aXhRWXgyS2gzOWYlJC1NWWV0
bFcqLUlQKV44JFJIO1Z+SWkySWdeP3Rtb1BXCnphaFg8RClffT1gd0w0KFo3NjZDRjtuQWFuVlI9
aHItWmFzY1VrZF5qMVN8K3g1VT9PJUxCTjg1MXB4fko3NmRFXgp6U1AteHZATCFFVUIlOEdUVXBT
bExuNUBRRFI9YVVyKC1yUyNlOWZ9Zl4qbndObE5WR3daeSF3YkBOaDhzQ1BkTDcKekRtKitRRGhI
NkQ3JGdCKHUyb1BRSHB8bkIhRXljR0A0M2dUcW59Tm1gYzIkKlp7YVk8JTR6dyRrTjN1TVdGXkh8
Cnp6cDlNTjNFNmVuWFNUJVFgIVMzXmFqMEBLN2xsVEUkY1N6PFErdXYkKllkPmo3eHFsMW9mVSZe
Zlptbz18MkRadgp6MTtAT1hQSjRMQmtBM09ZaUZ4KVI4eH5KaTRRZmNkX3BWfip4MW1ZTC1FUiUt
ZTgxUDZtcStqQmhvNXVpaFB+M2MKekJ0MWc8dytXUXBScmhzVEokQnhTIzdVPFdaTz9EfCMmd3oz
I2FsTis1QUpYbyl1dFY+Q3dad3k8bnNrVEVaRUJrCnpAOX1jJT5fSV9zc3A5X3BqYjFPSngxTCVR
UUBkTURJcl5uZjRRVl4qbDtgSG9ufTJoZzg4QFRJRmU+Zl5PRTklbAp6PX1xOWM8bS19N05yVEpz
MlIjVG9hQkJSdXkqaiYqUXp5RmpYTGIwNmRSNl42PDt5bzwoTl88YS18Y2c3ITYjbiMKeitUSE5q
e2QjXn4oNmtAPGhwdlYlP3BkNGhgMVI0RSlpPiloWWAofmQrQGJsUnlyTG1DWHpjaWtuVWtpNVN1
SzNWCnp6cCRjeHA5NWxHVUA3QEZUS1pjUjlEYDBEUi1WWWYkXmkpOTElQWgzYFg8SG5ufkpKMXpB
Wl5BR2ljdS0wbGlCNgp6Q1c8cyUmVVhfRExJdSZgS3AreEBNVFNLUEw7eG5DNTZaeWVeWC1sTz4o
akohQWI9RFpuN0BOSWVBXl4+R09pdkQKejlwPCQyM0EofHVGPzR1OE9yTD58Rz9xQj8/TTx4Mkkh
WW4hbXFrOy1HTVh2X0ZIKW4+e2NvZ207a1FYM1EwViFGCnp1P0tsRmg4RUk8dTYmMCRCYE8+S3Jf
eGw3VEJfMWdgVjN2Y0ZpYnwjdzl2VTBoZThMUTFqPEdjKDhXZlBqbTRRNQp6OVMxPmAxNXFVfGhv
QUomI3FOQSgzSC1iVmVvdiM2aikyaClreyVMVztsKzB8KUFmZj1JZ0xDODlmN05LRHIyUUwKei0h
M0J+SVo7RFdZOHByVDc3LWlURlBFVyo7O1MrVjlYJCQzPF5icHgjfGV7e3VMSXdANWYrZ3Z1O0hg
OUxzPXt2CnoyQXpydVczaXlhdW92SWFEMmcxREwmN1cpTEo5Jm8zPVN2RCRDdHNlRiopcW1PYiFw
R0k3fndua0ltLVRlb34mdQp6RVBvbHRWRkQlT1pVIV9GQl42PzI1JlRNd1FtOUNmJlViRkFpcFB0
ZnFkcH0qXmRue0FBMVJBfk9VVEA8c2NsQjAKelNPZzR3SGxOP0BuPFRqQT80RUU4KjVTWmw0Uzwy
YFFOP0M0UyUyUSpBOGNOcjcxPUBjIU9yNHZVMDdLZXFQRDw9CnomaFQ5TGtRWXZTSWd1b19Pdzxt
eik1VWYhai17b2cweShVclNxbyR1bH1IRmU9cWszMFVzRFN4VT9gR143YnlAaQp6TiRRfGBSRTht
QEhIYipXcHVNfDJec2hvPzAqcUc8JSFZeitRTWQ/fTArMGlTd1VvI09JTU15dnhiUCUhYE4wMWUK
enJOJldfOCpycnl0ekdPaFAmTHdyV2BWPFI/VjU/N2ZLIVJPZj8hJkRmeWY9U0hPYmg5N1FacF8y
WmVgaipHfG09CnpWSCZsVzB8Uz14U2hRTig2d35XTFh4VlFzI14/VFd6U0w8KChlQD5xMThhJU1W
ZENwSWtGRCRXREE7fWE8I0ZrUQp6QTU3JSt0fmQwMkV0dEdBPEApMV9gIVJGdnIqKzs/dT1IcmZv
SkJRYEs0LUk1Pj4oNnk/K3AwOHI9VmxgWWhWQSEKejR5MSY/clgod0dLd156Zz90T09UPlJzSFJI
Zn5HeXJBJWRzPUgzKEJ7Wi1tTktnanZubEYmKWYhR1ZpTWNYe3tSCnpDdWgtX0ZfU2ooM3gwP1Z3
JShUVGdZJmRyUT90aEBzJExHLXBTR3N2JEB4eG14IXpHZSp9WiFOKW41eFojY3QxNwp6QH4rbDRz
MEB3UklsNGh8e3FlUSNRQHpYNzhJUGxAJiNuelc9Q0ZSWVhXY3Zab20qQyohaz9UQDl5JjQ4cyQ+
JEcKeih5JDBqelJjZnBxKStHaXM0fk9MQyExIztXM2liRz01aG8zVFZQLXgxfDEtWEtBa3hwei1g
UCZrMDs8bTZTVSNMCnooYCN4SzReT3h9SWRudEhWSkIlcHpOY18qWUlpVi11NkUqM2ZHflY4NWU5
ek9YNDdLZXlgTGgzVH5pSU5HMXhYbQp6WjRLX2BhdjBucDhvd0UmN28/JUJpUk9jMSgxdkYyeit9
R1RhTSYhWER3Q3xmOUN7QCtaU0FITTMrUU9fNGplVTUKemc3QikpRG9fcj9vUmsmQGlEaVRgdGk9
dXhrX3QzNU0xaDd0SWlOLWxEVCkrOG5tQE0rfDBrYElYfEBQUTNNMyRrCnpZZj4oNmx+NX5vMXAj
S15TV0d1PmI0MjtXLTYpancmajI9RFpxWm1pLTI3bmRJQ0NReVcrKCtaKDhaaHcleU4mJAp6MGNt
OFV3dU5YUXJIUDdGRTtiSnZyRlQ1cGY+M0RRQCRgbkxfan1XSkh8PShiNyRRTGRLMFBLRThoSTk9
d15rWH4KenEoUlQ/U3NXSU9leUhHJEdtOTd7ajZOJX05X243ck04S0JuJEBzSHxHTilpTXdmQWso
XzZjakF6Un5gbk5gU0dFCno7KWxXeFpaSl43VytWVjl0MFV2PzwoOylaZFJGb0g3aGZNKlFAeUhl
IXB3PXU+NUNAQkoxd3s3VVNndCZFWDF3WQp6JnR3MGlqJmxkKGJiQjwjKlghNiRCS19gfEZ3TF5D
dGxJUkdUZWBucz1vcD0oUXRRRTRUP1dxV3ktZkp6Z3t1NXwKelhGdTd4e3J5R3tKdj1UfmViV0pr
cEo9fUFfWmoqMjByNCFQJl5mdyNTPil2bD97MyZrey1OViUpMUc+d2NNUFg4CnpLYmR1U15NU0gx
OEpBY3tRT3VKb3ZsMFZzLUZoeWNmVW5yYmM0d2FLZEJiaTB0OHBIM14tJW56NElGT3pAKHNgNQp6
R1dDbEdzPHVhc245aT5tZEVDcVkqbyg/WmFTUUdMSTZLQWFjSD9rdW59JjxIX1AmPyZTdShPTj1S
eDRsNlo2KHkKemlPfmY5ek09Y28pV2BGX0ZScXB5djRlbS01PU0xIWxJbT53dWJ6S1BSYWw/dCp6
P3ptQDdEVip7Yn14LWk2ZD5aCnprMktlSj1DP09TIT4qXmpaPTctMXVYYTNzQWZaczw9cjtLQkpJ
e0dybWlKcUFFQWElYHUtTWhsJDdYdiZacj9HUwp6NW5zJWptNn4qV3xJR3Q9KzYjTn4qNyRPPmNW
NCspTX0ze1NBaFAyMUNqTyZTY0t6MXR1MD0yaipOcz1GU04xNHoKelNhSWNEKkckJjlGNztgPE44
YUhpaXNqZSFNZUZCMGl1JEdeODVATXpoQVM0PEJBMHhKVVlzcEYpdHpaRzM5VSg3Cno7bz8qaDZU
RGUlbkRHPVpeSUpjN1VELV9jMXJKPExDZF87RFoxMlhxe25xfEdlQ31OSWxgfCZveElPPXdXYjtL
dgp6bDxsRCYlOU1mLW5mM2ZIVF58T2EzKztwdlpNJnJnaWd4Rns/bFI9eygpXzJ0N0NjPEo8TVcj
S0d3bEN4VkF0KTUKenp4XzVMOGpLPWxBPlhZWXY0VWdaWXlrJCZNeVRaJEdAaEhCOCtVNmk9UlIj
dj9HSzlFS0Q2ITk0YDJoem1aI0xlCnpLUjFJd0Fsdyk1LTBXb0RNSVJvUyh0KmVUamZRR0dHZXV6
ezBBckctTGxUfnUoYW9+fDUydHUqQytGN2QhaD5ENwp6XihzI09nfnZRT2NULXM+S2c/fT9UPG9J
bkUtemhMVmpXV3B2TD8zTWt2NitjJmc+M1oxMi1SSmJeWkZ9ezlvKjEKekZWdm12TERhaWVLQXk0
Qj44dGdwPiRnan5VJG5EM2NXJXp9KnN0cS05O0diSyYpIXp2VSRObCU9UmNsNFYlMV5RCnp5clkr
RUhYNm88OUEzOSNAc1cwaGxAbEVEO3M8cSZuKktLOGlKZ3NxWHdMSXBRen5vcnFAVlBeZDhKMk8q
bUEzWQp6eD9LVXM3cEBLSlkoTGBnczVeUForeG9gWHlkSnlGJjI4Q3wmZHc+ZkZJM3A5KXp2S0Nk
QlN+RGB9aGNLYmNTIVkKelF7S0ZWR091PE9sITZ5XkBaZjtOVzhIRzl4ODR8Zjs3UyM7eTxfeihL
YUZlT2peWlBhUkV3U18zTER0WnN9JlUpCnohbnw5SkNucXhyRG0qRTBaYz4zWmZEMUp0e2txeFdL
d180K2J8OGhEbGA+VDIwbEBEY3NgN3BgO3xgcDc1Qz53Ygp6VnliJFVjUUA7RUxpeGRnV0x9MFg2
dUVSRHkjJFNsVG5UIzdvZ3RoXjVEcjRRQFUwa097SHReNntvQkZFWX0qIVoKejdhTD0wYXJWbzcz
Q3kkZXtYQWAwazdlP3ArN0VXMShkX2oyZTltT3s5bzRubUgkSTk3ZVcjQipwRHo0amMpVk5YCnpU
R3tpe1lVVEleUSZ4e0g5eld6IWM8UDMyYGlqOGdBIUNPOUl0e3NAdWxhK1c7UFQqa2BMfjBNJWJz
IU80bkgkXgp6UF9JQUVoPHROQnFRQGA0digpZio+WDctTylEdDVySj5PMF5tYkNoKnxDOXk5bzAh
JC0jQ0FXUGkoSXpQVGIrPEoKeklgM2xRcnxnU3dyekJPKV9sdHt0YylyNF5NJFhJNXRiNldyb3xR
THo/SnNwPjdDSUJKMkZ8K2haWGNNeTFeZXRxCnpyQHFVIVRHSGp3Z3hhOWpEfE1eWmhQWFgwKUJB
NkZjeU5pR15ARyhEJk09b0YwYjwmeEY8MjZDZGhEJiR6eF9PXwp6TjlvcXNmLXpRTkRmNipBSHxG
YTh1dGh+QFB5c1JWQztXe3dCUmpVZV9JZGxHbn1OYU1EQnNIWFEzRml3d2IlZW4KekNRTzNHMkMm
IXclfWolcUQlV0JJU1pufWA0YmJHbHdiJWRfOHtsN2hAKz54aCNSam4wMFJRSlV6YHVPfD1OUTtX
CnpxMnVCWjM9eXB9Sk4/KEBgVkYmLVR7UFdKfDgjdkgtX3F1JGxhJj9ZS2t2SyVrcz1Ye1dFbjUk
QERHRXpydEUpTQp6biUwIW87cDRaLUpGbX5+eCpaWXt5N0pvWHZBdkk7QEotclUrX209SD9DXyMk
cDcofSlkfVp2JHheMGBMcFBYT3cKem0zVk9YR25aJGQ/fEYlZXVJWU9gI248cW4/fWBsUD13Qkw9
UksrdHRsV2txSUdRWU5Ge0w4ZTBedH4/K3tkXzY5Cno7dWlPfCV9am4+Zkg+Pip2N0VfbUtQJGMk
dWBoK04/WHxhaWJwSWl4QkNqdkxJbnFWQ0BYTkktaEhET0krZko4PAp6PkFkLTNhaT4lYW9qNnc5
ZjJCVG1eM2BeSXYoRXxjNEU0P2t7JXJtVVBwKF55Zjs8X3thbWlnKWQ/eDQ5dFY/PEYKejgmTU8l
SytiS2EmNEZXX3BYaj95cyVBTlQ+Ui01Uih6WCMjenZab3BVYy18ZysqZGVzJmlEaCVlQWBiUD5l
PTU4CnphWHYySXJNNjN0LXJsZCM8dTN6aCVlUTZkcG0xbiVWcHN0LWJZZTdmX2tZeDBaeXFsQUNf
JUcwR0YrOExnV2xWZAp6Sk1aI14jWT1sbUQmKlFeY2Y4YXc7YnFzTiklIWRgT0pXX2Y0fTlKKkB9
ZChxRSNnKD44fGp3SGleLXlYK2heWEIKejFXKV5CI0NNbCZXJDI1fi18amVAYEQ1MF5nPGEmb2VP
YEZ7PmYpI3F0SEwrcGkjcGQ9al80R21tRTZpbzVUV2ZKCno0Pn5rS208b1FZNjFqRCp6azNzTjNw
PSpZKTJwaTIlV3cwaGheQm1FR2RZQ00lXmszPD9zd2smUSpIQj9JYDkyNwp6UVdtYEB6R24xS2Vu
R3N0ZEFSLWtzVzxtS1deYj1BYWh7cD1HIWcke2NVUlVCaHhvSUk9K2QqRFRFQyQpS0I/VEAKeiYp
cnRJYEI7MDI7OzZPJWZ6IUQhOSgzSEhhOS1TVkB4SUQ4VnsjWUNQVytzKCtTazlSRHlvNUREOWdP
Pyl5dys9CkxtKnU3Uklgc1Y/LWJ5Kl8KCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLm1tCmluZGV4IGY2MTZhNzRiNDE3ZjYxZTlhYTNkZDI1YzhiZTg2YzllMmEyZmQyOGEuLjYw
YjcyMmMzYzk0OWM3Yjg1ZTY0ZDJmM2RhNmJmMzU3YmM4MGJhZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0
ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0yOTAsNjAgKzI5MCw2IEBAIFRFU1QoV2ViS2l0
LCBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNXaXRoUHJld2FybWluZykKICAgICBydW5XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmc6Olll
cyk7CiB9CiAKLVRFU1QoV2ViS2l0LCBDdXN0b21EYXRhU3RvcmVQYXRoc1ZlcnN1c0NvbXBsZXRp
b25IYW5kbGVycykKLXsKLSAgICAvLyBDb3B5IHRoZSBiYWtlZCBkYXRhYmFzZSBmaWxlcyB0byB0
aGUgZGF0YWJhc2UgZGlyZWN0b3J5Ci0gICAgTlNVUkwgKnVybDEgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAiU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMt
NCIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07Ci0KLSAgICBOU1VSTCAqc3dQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJL
aXQvU2VydmljZVdvcmtlcnMvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXV07Ci0gICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6c3dQYXRoIGVy
cm9yOm5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpzd1BhdGgucGF0aF0pOwotCi0gICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpzd1BhdGggd2l0aEludGVybWVk
aWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1Bh
dGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMtNS5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKLQotICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKLSAgICBhdXRvIGRh
dGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAg
IC8vIEZldGNoIFNXIHJlY29yZHMKLSAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5T
KFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zXV0pOwotICAgIHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsK
LSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4g
KmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQp
OwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUg
PSBmYWxzZTsKLQotICAgIC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNp
bmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBp
biBmbGlnaHQuCi0gICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRl
RGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNv
cmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAg
ICBkYXRhU3RvcmUgPSBuaWw7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRv
Q29udGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwotCi0gICAgLy8gRGVsZXRl
IGFsbCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9y
ZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgZGF0YVN0b3JlID0gYWRvcHRO
UyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkYXRhU3RvcmUgcmVtb3Zl
RGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUg
ZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIHJlYWR5VG9Db250
aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUg
PSBmYWxzZTsKLQotICAgIC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwg
YW5kIHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCi0gICAgLy8gTm93IHJlZmV0
Y2ggdGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCi0gICAgZGF0YVN0b3JlID0g
YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkYXRhU3RvcmUg
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsK
LSAgICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJlYWR5
VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWFkeVRvQ29udGludWUpOwotfQotCiBURVNUKFdlYktpdCwgQ3VzdG9tRGF0YVN0b3JlRGVz
dHJveVdoaWxlRmV0Y2hpbmdOZXR3b3JrUHJvY2Vzc0RhdGEpCiB7CiAgICAgTlNVUkwgKmNvb2tp
ZVN0b3JhZ2VGaWxlID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0
L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9Db29raWVT
dG9yYWdlL0Nvb2tpZS5GaWxlIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVj
dG9yeTpOT107Cg==
</data>
<flag name="commit-queue"
          id="444296"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424589</attachid>
            <date>2021-03-29 15:07:59 -0700</date>
            <delta_ts>2021-03-29 16:17:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210329150758.patch</filename>
            <type>text/plain</type>
            <size>106976</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0NWRiNmMwNjEzYjg3ZWEyY2FiMjRi
ZDNiNDNkMGZhNTdjZTlmNjQuLmEwOTIxMzhjNGI3YWZkNjVhNTg1ZjliNjJlMDY4Nzg5ODMxMzQ2
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
ICAgICAgICAKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTAzLTI4ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIEFzcGVj
dFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIGZvciBXZWJLaXRMZWdhY3kuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMmJlOTY0ODEwMGUyMDI3YTIyZDk3YWMzMzhmZjZjODUwYzQwNGM0Ni4uNjhh
MDUwNmQ1Mzc2YWJkMjQ0Mzc0ZjA5NmRhYzFlM2RmMDRkMTM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2NyBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0
aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgbmV0
d29yayBwcm9jZXNzIHdvdWxkIHN0b3JlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgaW4gYSBTUUxp
dGUgZGF0YWJhc2UuCisgICAgICAgIFdoZW4gc3RhcnRpbmcgdG8gdXNlIHNlcnZpY2Ugd29ya2Vy
cywgd2Ugd291bGQgbG9hZCBhbGwgdGhvc2Ugc2NyaXB0cyBmcm9tIHRoZSBkYXRhYmFzZQorICAg
ICAgICBpbnRvIG1lbW9yeS4gVGhpcyB3b3VsZCB1c2UgYSBkZWNlbnQgYW1vdW50IG9mIG1lbW9y
eSBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3Vl
LCB0aGUgYXBwcm9hY2ggaXMgdGhpcyBwYXRjaCBpcyB0byBzdG9yZSB0aGUgc2NyaXB0cyBhcyBz
ZXBhcmF0ZQorICAgICAgICBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkLiBUaGlzIHdo
ZW4sIHdoZW4gbG9hZGluZyB0aGVtLCB3ZSBjYW4gc2ltcGx5IG1tYXAoKSB0aGVtCisgICAgICAg
IGFuZCBncmVhdGx5IHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgTm90ZSB0aGF0IHRo
ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzICh3aGljaCBtYXkgYmUgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcykgYWxzbyBrZWVwcyBhCisgICAgICAgIGNvcHkgb2YgdGhlIGltcG9ydGVkIHNlcnZpY2Ug
d29ya2VyIHNjcmlwdHMgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlcnMgaXQgaXMgcnVubmluZy4gTW9y
ZQorICAgICAgICB3b3JrIHdpbGwgYmUgbmVlZGVkIGluIGEgZm9sbG93LXVwIGJ1dCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBleHRlbmQgdGhlIGFwcHJvYWNoIHNvIHRoYXQKKyAgICAgICAgdGhlIHNl
cnZpY2Ugd29ya2VyIHByb2Nlc3Mgd291bGQgb25seSBoYXZlIGEgbW1hcCdkIHZlcnNpb24gb2Yg
dGhvc2Ugc2NyaXB0cy4gVGhpcyB3b3VsZAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9u
IHRoZSBXZWJDb250ZW50L1NlcnZpY2VXb3JrZXIgcHJvY2VzcyBzaWRlIGFzIHdlbGwuIEkgYW0g
ZG9pbmcgdGhpcworICAgICAgICBzZXBhcmF0ZWx5IHRob3VnaCB0byByZWR1Y2UgcGF0Y2ggc2l6
ZSBhbmQgZmFjaWxpdGF0ZSByZXZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGVyZSBz
aG91bGQgYmUgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UsIGp1c3QgYSBkZWNyZWFzZWQK
KyAgICAgICAgbWVtb3J5IHVzYWdlIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBzZXJ2aWNl
IHdvcmtlcnMgYXJlIHVzZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgU1dTY3Jp
cHRTdG9yYWdlIGNsYXNzIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJBZ2VudDo6Z2V0SW5pdGlhbGl6YXRpb25JbmZvKToKKyAgICAgICAgQ29udmVy
dCB0aGUgc2NyaXB0IHR5cGUgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIEZpeCBhc3NlcnRpb25zIHRoYXQgd2Vy
ZSBoaXR0aW5nIHdoZW4gY29tcGFyaW5nIHRvIGVtcHR5IFNoYXJlZEJ1ZmZlcnMgKG9mZnNldCB3
b3VsZCBiZSAwCisgICAgICAgIGFuZCBzaXplIHdvdWxkIGJlIDApLiBUaGlzIHdhcyBjYXVnaHQg
YnkgQVBJIHRlc3RzIHNpbmNlIHdlIGhhdmUgc29tZSBzZXJ2aWNlIHdvcmtlciBBUEkKKyAgICAg
ICAgdGVzdHMgdGhhdCB1c2UgZW1wdHkgd29ya2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgQWRkIHNvbWUgY29udmVyc2lv
biBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIgdG8gdGhlIHNjcmlwdCwgYW5kIHZpY2UtdmVy
c2EsIGluIHRoZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjYXNlLgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JpcHRCdWZmZXJUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpbmdUb1NjcmlwdEJ1ZmZlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgIC0gU3RvcmUgc2NyaXB0cyBhcyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcs
IHNvIHRoYXQgdGhleSBjYW4gaG9sZAorICAgICAgICAgIG1tYXAnZCBkYXRhLgorICAgICAgICAt
IEFkZCBzY3JpcHRCdWZmZXJUb1N0cmluZygpIC8gc3RyaW5nVG9TY3JpcHRCdWZmZXIoKSB1dGls
aXR5IGZ1bmN0aW9ucyB0bworICAgICAgICAgIGNvbnZlcnQgc2NyaXB0IHNvdXJjZXMgYmV0d2Vl
biBTdHJpbmcgYW5kIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIENvbnZlcnQgZnJv
bSBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICBVcGRhdGUgZGF0YWJhc2Ugc2NoZW1h
IGFuZCBidW1wIHZlcnNpb24gbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIHN0b3JlIHRoZQorICAgICAg
ICBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaW5zaWRlIHRoZSBTUUxpdGUgZGF0YWJhc2UuIEluc3Rl
YWQsIHRob3NlIHNjcmlwdHMKKyAgICAgICAgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IG9uIHRoZSBm
aWxlc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkltcG9y
dGVkU2NyaXB0QXR0cmlidXRlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
cG9ydGVkU2NyaXB0QXR0cmlidXRlczo6ZGVjb2RlKToKKyAgICAgICAgSW50cm9kdWNlIG5ldyBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgc3RydWN0IHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgZGF0
YQorICAgICAgICBtZW1iZXJzIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQsIGV4Y2VwdCBmb3IgdGhlIGFjdHVhbAorICAgICAgICBzY3JpcHQgc291cmNlLiBXZSBu
b3cgc2F2ZSBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIGluIHRoZQorICAg
ICAgICBkYXRhYmFzYWUgaW5zdGVhZCBvZiBIYXNoTWFwIG9mIEltcG9ydGVkU2NyaXB0IHNpbmNl
IHdlIG5vIGxvbmdlciB3YW50IHRvCisgICAgICAgIHN0b3JlIGltcG9ydGVkIHNjcmlwdCBzb3Vy
Y2VzIGluIHRoZSBkYXRhYmFzZSwgYnV0IHJhdGhlciBzdG9yZSB0aGVtCisgICAgICAgIHNlcGFy
YXRlbHkgb24gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIChXZWJDb3JlOjpzdHJpcFNjcmlw
dFNvdXJjZXMpOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBIYXNoTWFw
IG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgaW50
byBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIChpZGVudGljYWwgYnV0IHdp
dGhvdXQgdGhlIHNjcmlwdAorICAgICAgICBzb3VyY2UpLCByZWFkeSB0byBzYXZlIGluIHRoZSBT
UUxpdGUgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlU2NyaXB0U291cmNl
c0Zyb21EaXNrKToKKyAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBIYXNo
TWFwIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAg
ZnJvbSBhIEhhc01hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMsIGNvbWluZyBmcm9tIHRo
ZSBTUUxpdGVEYXRhYmFzZS4gVGhlCisgICAgICAgIG1pc3Npbmcgc2NyaXB0IHNvdXJjZXMgYXJl
IGZldGNoZWQgZnJvbSB0aGUgZGlzayB2aWEgU1dTY3JpcHRTdG9yYWdlLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKToKKyAg
ICAgICAgTWFrZSBzdXJlIHdlIGRlc3Ryb3kgdGhlIFNXU2NyaXB0U3RvcmFnZSBvbiB0aGUgYmFj
a2dyb3VuZCBxdWV1ZSBmb3IgdGhyZWFkLXNhZmV0eS4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAg
ICBSZXR1cm5zIHRoZSBwYXRoIG9uIHRoZSBmaWxlc3lzdGVtIHdoZXJlIHNlcnZpY2Ugd29ya2Vy
IHNjcmlwdHMgYXJlIHN0b3JlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0
YWJhc2U6OnNjcmlwdFN0b3JhZ2UpOgorICAgICAgICBDb25zdHJ1Y3RzIChpZiBuZWNlc3Nhcnkp
IGEgU1dTY3JpcHRTdG9yYWdlIGFuZCByZXR1cm4gaXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbCk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBjbGVh
ciBhbGwgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgb24gZGlzayBpbiBhZGRpdGlvbiB0byB0
aGUgZGF0YWJhc2UsCisgICAgICAgIG5vdyB0aGF0IHRoZXkgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5
LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdl
cyk6CisgICAgICAgIC0gU3RvcCBzdG9yaW5nIHRoZSBzY3JpcHQgc291cmNlcyBpbiB0aGUgU1FM
aXRlIGRhdGFiYXNlLCBhbmQgaW5zdGVhZCBzdG9yZSB0aGVtIGFzIHNlcGFyYXRlCisgICAgICAg
IGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbSB2aWEgU1dTY3JpcHRTdG9yYWdlLgorICAgICAgICAt
IEltcHJvdmUgbG9nZ2luZworICAgICAgICAtIFdoZW4gZG9uZSBzdG9yaW5nIHRoZSBzY3JpcHRz
IHRvIGRpc2ssIHNlbmQgdGhlc2UgbmV3IG1tYXAnZCB2ZXJzaW9ucyBiYWNrIHRvIHRoZQorICAg
ICAgICAgIFNXU2VydmVyV29ya2VyIG9uIHRoZSBtYWluIHRocmVhZCwgc28gdGhhdCBpdCBjYW4g
cmVwbGFjZSBpdCdzIGhlYXZ5IHNjcmlwdCBzb3VyY2VzIHdpdGgKKyAgICAgICAgICB0aGVzZSBv
bmVzLiBUaGlzIGhlbHBzIHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRo
ZSBzY3JpcHQgc291cmNlcyBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0
aGF0IHRoZXkgYXJlIG5vIGxvbmdlcgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRh
dGFiYXNlLgorICAgICAgICAtIEltcHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmg6CisgICAgICAg
IFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0
aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2Ny
aXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBz
YXZlIG1lbW9yeS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRT
dG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8gZGVhbCB3
aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29ya2VyIHNj
cmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4gV2hlbgor
ICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEgU2hhcmVk
QnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEuCisgICAgICAgIFRo
ZSBzY3JpcHRzIHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVzaWRlIHRoZSBkYXRhYmFz
ZS4gVGhlIHNjcmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBvcmlnaW4gKHVzaW5nIFNI
QTI1NiBvZiB0aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lKSwgYW5kIHRoZW4gYnkgcmVnaXN0cmF0
aW9uIChieQorICAgICAgICB1c2luZyBTSEEyNTYgb2YgdGhlIHJlZ2lzdHJhdGlvbiBzY29wZSBh
cyBzdWJmb2xkZXIgbmFtZSkuIFRoZSBmaWxlIG5hbWUgZm9yIHRoZSBzY3JpcHQKKyAgICAgICAg
aXMgYSBTSEEyNTYgb2YgdGhlIHNjcmlwdCBVUkwuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUg
c2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhh
dCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2Ug
bmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0
IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQg
ZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgVGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQgZm9yIGNvbnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRz
IGRhdGEgbWVtYmVycyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjpzY3JpcHQgY29uc3QpOgorICAgICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNj
cmlwdCBpbnN0ZWFkIG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQor
ICAgICAgICBtbWFwJ2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0y
OCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGZyb20gdGhl
IFhjb2RlIHByb2plY3QgYXMgdGhleSBkb24ndCBleGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMGYxZWI4NmZi
OTUwZmY1NmU4YTcyNjAzOGZlMTAxM2Q1OGJkZGU2Li4xZjZiZTY4ZmY1YTIwM2EzMDZiMWE5YzVj
YTc5MjI0ZTVkZjE5NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIg
c2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgwOAorICAgICAg
ICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0U2NyaXB0UmVz
b3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBwYXNzIHRoZSBJ
bXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURp
cmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAgICAgICBEcm9w
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5kIHVzZSB0aGUg
ZXhpc3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoKSBp
biB3dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6Om1hcFRv
RmlsZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhlIG1hcFRvRmlsZSgpIGxvZ2lj
IHRvIFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIFVwZGF0ZSBT
aGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlzdGluZ3Vpc2ggYSBudWxsIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBXZSBub3cgdXNlIFNoYXJlZEJ1
ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291cmNlcworICAgICAgICBhbmQg
aXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0byBiZSBlbXB0eSAoYW5kIHRo
ZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0cykuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVz
b3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNlIElQQworICAgICAgICBmb3Ig
Y29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0ZWRTY3JpcHQgZGF0YSBtZW1i
ZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBEb24ndCBldmVyIHJlcGxheSBEaXNw
bGF5TGlzdCBpdGVtcyBvZiBhIFJlbW90ZUltYWdlQnVmZmVyIGluIFdlYlByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2YTFmZjBi
ZS4uNjI1NThmOTg4N2Q5ZDhkNWEzZWIxNDY5MGIxY2RmNzlmNzFlYjM5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKQEAgLTQwOCw1ICs0MDgsNjAgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgIioiX3Mp
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChmaWxlSXNE
aXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAg
ICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSwg
UGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRwdXRIYW5kbGUpCit7CisgICAgY29uc3RleHByIGJvb2wg
ZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5
c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOworICAg
IGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVtOjp0
cnVuY2F0ZUZpbGUoaGFuZGxlLCBieXRlc1NpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEZpbGVT
eXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOworICAgIGJvb2wgc3Vj
Y2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICB2b2lkKiBtYXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7
CisgICAgdWludDhfdCogbWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOworICAg
IG1lbWNweShtYXBEYXRhLCBieXRlcywgYnl0ZXNTaXplKTsKKworI2lmIE9TKFdJTkRPV1MpCisg
ICAgRFdPUkQgb2xkUHJvdGVjdGlvbjsKKyAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwg
RklMRV9NQVBfUkVBRCwgJm9sZFByb3RlY3Rpb24pOworICAgIEZsdXNoVmlld09mRmlsZShtYXAs
IG1fc2l6ZSk7CisjZWxzZQorICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCisgICAg
bXByb3RlY3QobWFwLCBieXRlc1NpemUsIFBST1RfUkVBRCk7CisKKyAgICAvLyBGbHVzaCAoYXN5
bmNocm9ub3VzbHkpIHRvIGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KKyAg
ICBtc3luYyhtYXAsIGJ5dGVzU2l6ZSwgTVNfQVNZTkMpOworI2VuZGlmCisKKyAgICBpZiAob3V0
cHV0SGFuZGxlKQorICAgICAgICAqb3V0cHV0SGFuZGxlID0gaGFuZGxlOworICAgIGVsc2UKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gbWFwcGVk
RmlsZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzExNWQ2NWQ0ZjhhMDI0ZDJlN2Y2YjljMzIxNDcy
Mzg0ZWY0YzQuLjA2NDNlMDg4ZGJiN2RjYjQ5MDJmYWZkMTRmN2UyMGJkY2UyOTI4YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmgKQEAgLTE5MCwxNCArMTkwLDE0IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BSSVZBVEUgTlNT
dHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOwogI2VuZGlmCiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVt
cHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Nh
ZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJik7CkBAIC0yNTIsNiArMjUyLDkg
QEAgaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6b3BlcmF0b3I9KE1hcHBl
ZEZpbGVEYXRhJiYgb3RoZXIpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCisvLyBUaGlzIGNyZWF0
ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRlIHRoZSBwcm92aWRlZCBkYXRh
IHRvIGl0IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KK1dURl9FWFBPUlRfUFJJVkFURSBN
YXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCB1aW50OF90
KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSwgUGxhdGZvcm1GaWxlSGFuZGxlKiA9IG51bGxwdHIp
OworCiB9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggN2UxODA1NWQzYzM3MTU0Nzg0MDVmZjM5YTU1Y2M5OTE4M2NiNmVj
OC4uZDk0ZTkyMzJjYjZiMWUzMzFhYzFjMDBlMDFkOTQyODA1Njc2MTkwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTI2ODQsNiArMjY4NCw3IEBAIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNw
cAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAord29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZTEz
ZWJiMzdlY2ZhYTQ1NDgxMGM1NWY5ZDI0M2M1ZWNkMTIyNzMzLi5lY2I3NWI2ZWVkMmM4NDI4NGE0
YWQ5MDY1OGFlZjkwYzQwYjhkZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjYyLDYgKzEyNjIsNyBAQAogCQk0NjBDQkYz
NjFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4
OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi87IH07CiAJCTQ2MEUzMDc3MjIyRjRGMDMw
MDlBMDYwNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjVFREQ5RjIyMkY0
RUMzMDBCNDZFMTYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MjE4
QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkUwMTZBRDFGNzJENjFFMDAyODJC
MkMgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5MSAvKiBTV1Njcmlw
dFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjM1MjFBRDIwODEwOTJB
MDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4MTA5MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0VC
NjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyog
VGFnQ29sbGVjdGlvbi5oICovOyB9OwogCQk0NjUzMDdEMDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNV
SUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlFdmVudEluaXQuaCAqLzsgfTsKQEAg
LTgyMzAsNiArODIzMSw4IEBACiAJCTQ2MENCRjMzMUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdp
bmRvd1Byb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRDE5NDQxRkNFMjFERDAwQzNEQjg1IC8qIEpT
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1Njcmlw
dFN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyNzNDQUUyNjBFNTlE
RjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjM0NTkyQjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIy
IC8qIFdpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRv
d1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzUyMUFDMjA4MTA5MEUw
MEMyODkyMiAvKiBXaW5kb3dQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXaW5kb3dQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MDcwNyw2ICsyMDcxMCw4IEBACiAJCQkJNTFCOTE0MEIxRkQyNzgyNTAwRUUyODU5IC8qIFJlZ2lz
dHJhdGlvblN0b3JlLmggKi8sCiAJCQkJNDE1MUU1QjkxRkJBNEM3NjAwRTQ3RTJEIC8qIFNXT3Jp
Z2luU3RvcmUuY3BwICovLAogCQkJCTQxNTFFNUI3MUZCQTRDNzUwMEU0N0UyRCAvKiBTV09yaWdp
blN0b3JlLmggKi8sCisJCQkJNDYyNzNDQUUyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3Rv
cmFnZS5jcHAgKi8sCisJCQkJNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3Rv
cmFnZS5oICovLAogCQkJCTUxN0E1MkVGMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5jcHAg
Ki8sCiAJCQkJNTE3QTUyRUUxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmggKi8sCiAJCQkJ
ODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovLApAQCAt
MzUyODYsNiArMzUyOTEsNyBAQAogCQkJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1NCAvKiBTV0Nv
bnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFBOUVDRTIxNDAzQTVDMDBDRkIy
MEEgLyogU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTUxRTVCQjFG
QkE0QzdBMDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYy
NzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1OTcxRjRBNjg2RjAwQjU0REVEIC8qIFNXU2VydmVyUmVn
aXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCmluZGV4
IDIxYjMwZWUyOTQ3MjZiMjNjMjdhYjIwNDU2ZTU5ODI1MzY5MTNkMTEuLjRhM2U3ZTk3ODFmZjZh
MWNmNzM4NzdjNTVlMGM5NjkzMDQwZDdjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcApA
QCAtNjAsNyArNjAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlNl
cnZpY2VXb3JrZXI6OkNvbmZpZ3VyYXRpb24+PiBTZXJ2aWNlV29yawogICAgICAgICAuc2V0VGFy
Z2V0SWQobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaWRlbnRpZmllcigpKQogICAgICAgICAu
c2V0U2VjdXJpdHlPcmlnaW4obV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuc2VjdXJpdHlPcmln
aW4oKS0+dG9SYXdTdHJpbmcoKSkKICAgICAgICAgLnNldFVybChtX3NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdFVSTC5zdHJpbmcoKSkKLSAgICAg
ICAgLnNldENvbnRlbnQobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4
dERhdGEoKS5zY3JpcHQpCisgICAgICAgIC5zZXRDb250ZW50KHNjcmlwdEJ1ZmZlclRvU3RyaW5n
KG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0
KSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggNTFiYzRhYTk4M2M4NzNjZjEzZDU0M2RkMWM3NjY0Y2NmNjY1ZGFh
OS4uYWY4MmM4YzA2ZDJiNjM2MWVhMjZkNGFmMDhhYjRiMWY3ZTY0NWRhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0yODEsOCArMjgxLDggQEAgYm9vbCBT
aGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRoaXNP
ZmZzZXQgPCB0aGlzU2VnbWVudC5zaXplKCkpOwotICAgICAgICBBU1NFUlQob3RoZXJPZmZzZXQg
PCBvdGhlclNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHRoaXNPZmZzZXQgPD0gdGhp
c1NlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKG90aGVyT2Zmc2V0IDw9IG90aGVyU2Vn
bWVudC5zaXplKCkpOwogCiAgICAgICAgIHNpemVfdCB0aGlzUmVtYWluaW5nID0gdGhpc1NlZ21l
bnQuc2l6ZSgpIC0gdGhpc09mZnNldDsKICAgICAgICAgc2l6ZV90IG90aGVyUmVtYWluaW5nID0g
b3RoZXJTZWdtZW50LnNpemUoKSAtIG90aGVyT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCAyM2JmNWE4ZWRiNGMxZTMwMjliN2NiNDc0OWVhY2Q1NTAxYmE5
MTk0Li4yOWM3MTcyMjg0Zjc1ZmYwOTRlZTcwYzY3OWEyYzZhYzMyYjUzODkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRG
aWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBw
ZWRGaWxlRGF0YSkpKTsgfQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAKICAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA0ZDQ3NGYxNmU1ODhkZDAw
ZmIzOWQ1NjBmNjQxM2M2MmE5Mzg2ZWYyLi5hNGJlMTAwNDBiZTI4NTkyMTBiNzJjZWQyMzE4MmFm
MDY0N2E3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC02MCw3ICs2MSw3IEBAIE9w
dGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0CiAKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVzb3VyY2UodXJs
KSkgewotICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdFJlc291cmNlLT5zY3JpcHQp
OworICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCpzY3Jp
cHRSZXNvdXJjZS0+c2NyaXB0KSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2NyaXB0
UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBlID0g
c2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExv
YWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICBp
ZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKHJlc3Bv
bnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTmV0d29ya0Vy
cm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0IG1pbWUgdHlwZSJf
cyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2Vy
R2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdCB7IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNl
TUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4o
d29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHN0cmluZ1RvU2NyaXB0QnVmZmVyKHNjcmlwdCgp
KSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0KICNlbmRpZgog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDE2ZGYy
ZDgyNDlmODdmNmFlNDM3M2UyNjU2MjNjM2Q4YTk5YjVlZGYuLjFlYTU5MDFiZDlkMmZkOWM3OTNi
MmQ1YWUwZTI3MGU4M2M4ZTcyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgICAgIGpvYkRhdGFJZGVudGlmaWVyLAogICAgICAg
ICByZWdpc3RyYXRpb24uaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLAotICAgICAgICBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHNjcmlwdC0+
Y29weSgpLAogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksCiAgICAgICAg
IGNvbnRlbnRTZWN1cml0eVBvbGljeS5pc29sYXRlZENvcHkoKSwKICAgICAgICAgcmVmZXJyZXJQ
b2xpY3kuaXNvbGF0ZWRDb3B5KCksCkBAIC00OCw2ICs0OCwyMCBAQCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAog
ICAgIH07CiB9CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChhdXRvIGl0ID0g
YnVmZmVyLmJlZ2luKCk7IGl0ICE9IGJ1ZmZlci5lbmQoKTsgKytpdCkKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVu
dC0+c2l6ZSgpKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworUmVmPFNo
YXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7
CisgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmgKaW5kZXggM2FkNWQ0YTEyNjk1YjY5ZWUxNjVlZTQ4MGE5NjFiMTBmMWRiZGM3ZS4uODQ1
NDFkNDYyYThiNzBhNGIzM2QzYTIzNjcwYWJiMjQ2MGU1OTJhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOSwxMyArNDAsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hhcmVkQnVmZmVyJik7CitSZWY8
U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKKwogc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgc3RydWN0IEltcG9ydGVkU2NyaXB0
IHsKLSAgICAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2NyaXB0OwogICAgICAgICBVUkwgcmVzcG9uc2VVUkw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlw
ZTsKIAotICAgICAgICBJbXBvcnRlZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVy
biB7IHNjcmlwdC5pc29sYXRlZENvcHkoKSwgcmVzcG9uc2VVUkwuaXNvbGF0ZWRDb3B5KCksIG1p
bWVUeXBlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBzY3JpcHQtPmNvcHkoKSwgcmVzcG9uc2VVUkwuaXNv
bGF0ZWRDb3B5KCksIG1pbWVUeXBlLmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgICAgICB7CkBAIC01NCw3ICs1OCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgewogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJ
bXBvcnRlZFNjcmlwdD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4gc2NyaXB0OworICAgICAgICAgICAgT3B0aW9uYWw8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+IHNjcmlwdDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc2NyaXB0
OwogICAgICAgICAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKQEAgLTgwLDcgKzg0LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSB7CiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRh
SWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSByZWdpc3RyYXRp
b247CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXI7
Ci0gICAgU3RyaW5nIHNjcmlwdDsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAg
Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmluZyByZWZl
cnJlclBvbGljeTsKQEAgLTEyMCw4ICsxMjQsOSBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlYwog
ICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLSAgICBTdHJpbmcgc2NyaXB0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2Ny
aXB0KSkKKyAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OworICAgIGRlY29k
ZXIgPj4gc2NyaXB0OworICAgIGlmICghc2NyaXB0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKQEAgLTE1Nyw3ICsxNjIsNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
YwogICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUo
KnJlZ2lzdHJhdGlvbiksCiAgICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSwKLSAgICAgICAgV1RGTW92ZShzY3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpzY3JpcHQpLAog
ICAgICAgICBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLAogICAgICAgICBXVEZNb3ZlKGNvbnRl
bnRTZWN1cml0eVBvbGljeSksCiAgICAgICAgIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBkNzBmNGY1ZTY5M2YyNzdmNjU1ODNlN2E0ZTA3
NjE0NTNjNTRlZmFkLi5hNjg0YzcyMGY2ODNmM2QxMGYzYTA5ZDQyNTI3NGU2ZWViZTI2ODFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgog
Ly8gRklYTUU6IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OlNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRh
LCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFs
dWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkm
IGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRo
cmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoiICsg
SW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92
ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNP
bkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBNb25vdG9uaWNUaW1l
Ojpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpP
bWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2Vy
UHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5z
ZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVy
LCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQorICAgIDogV29ya2VyVGhy
ZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJ
bnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3Zl
KHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09u
TGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6
Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9t
aXQsIHNldHRpbmdzVmFsdWVzIH0sIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKGRhdGEuc2NyaXB0KSwg
bG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0
aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9u
UHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxl
ZCgpKQogICAgICwgbV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3dvcmtlck9i
amVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSkKICAgICAs
IG1faGVhcnRCZWF0VGltZW91dChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uKCktPnNob3VsZFVzZVNob3J0VGltZW91dCgpID8gaGVhcnRCZWF0VGltZW91dEZvclRlc3Qg
OiBoZWFydEJlYXRUaW1lb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBjZWU4
Y2M4YzA4YmUwYjFiN2Y1NDExMGE2Y2IzMTc0NmU5ODk0YjE0Li5kODg1YTIzNzBmMzA1MjU5NzEx
MTdhYjk4MzkzZWUxNTQwODQ3OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJT
UUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5oIgorI2luY2x1
ZGUgIlNXU2NyaXB0U3RvcmFnZS5oIgogI2luY2x1ZGUgIlNXU2VydmVyLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAg
LTQ5LDcgKzUwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgdWlu
dDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDU7CitzdGF0aWMgY29uc3QgdWludDY0X3Qgc2NoZW1hVmVy
c2lvbiA9IDY7CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0
IFN0cmluZyYgdGFibGVOYW1lKQogewpAQCAtNjEsNyArNjIsNiBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKICAgICAgICAg
IiwgbGFzdFVwZGF0ZUNoZWNrVGltZSBET1VCTEUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIK
ICAgICAgICAgIiwgdXBkYXRlVmlhQ2FjaGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgogICAgICAgICAiLCBzY3JpcHRVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgot
ICAgICAgICAiLCBzY3JpcHQgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAg
ICAiLCB3b3JrZXJUeXBlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIKICAgICAgICAg
IiwgY29udGVudFNlY3VyaXR5UG9saWN5IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIK
ICAgICAgICAgIiwgcmVmZXJyZXJQb2xpY3kgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgpAQCAtMTA3LDYgKzEwNyw1NiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW5PbGREYXRhYmFz
ZXMoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKICAgICAgICAgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZURpcmVjdG9yeSwgZGF0YWJhc2VGaWxlbmFtZUZyb21WZXJzaW9uKHZlcnNp
b24pKSk7CiB9CiAKK3N0cnVjdCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgeworICAgIFVSTCBy
ZXNwb25zZVVSTDsKKyAgICBTdHJpbmcgbWltZVR5cGU7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgZW5jb2RlciA8PCByZXNwb25zZVVSTCA8PCBtaW1lVHlwZTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1
dGVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPFVS
TD4gcmVzcG9uc2VVUkw7CisgICAgICAgIGRlY29kZXIgPj4gcmVzcG9uc2VVUkw7CisgICAgICAg
IGlmICghcmVzcG9uc2VVUkwpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGU7CisgICAgICAgIGRlY29kZXIgPj4gbWlt
ZVR5cGU7CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92ZSgqcmVzcG9u
c2VVUkwpLAorICAgICAgICAgICAgV1RGTW92ZSgqbWltZVR5cGUpCisgICAgICAgIH19OworICAg
IH0KK307CisKK3N0YXRpYyBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBz
dHJpcFNjcmlwdFNvdXJjZXMoY29uc3QgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiBtYXApCit7CisgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVk
U2NyaXB0QXR0cmlidXRlcz4gbWFwV2l0aG91dFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWly
IDogbWFwKQorICAgICAgICBtYXBXaXRob3V0U2NyaXB0cy5hZGQocGFpci5rZXksIEltcG9ydGVk
U2NyaXB0QXR0cmlidXRlcyB7IHBhaXIudmFsdWUucmVzcG9uc2VVUkwsIHBhaXIudmFsdWUubWlt
ZVR5cGUgfSk7CisgICAgcmV0dXJuIG1hcFdpdGhvdXRTY3JpcHRzOworfQorCitzdGF0aWMgSGFz
aE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHBvcHVs
YXRlU2NyaXB0U291cmNlc0Zyb21EaXNrKFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSwg
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBIYXNo
TWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiYmIG1hcCkKK3sKKyAgICBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gaW1wb3J0ZWRT
Y3JpcHRzOworICAgIGZvciAoYXV0byYgcGFpciA6IG1hcCkgeworICAgICAgICBhdXRvIGltcG9y
dGVkU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5yZXRyaWV2ZShyZWdpc3RyYXRpb25LZXksIHBhaXIu
a2V5KTsKKyAgICAgICAgaWYgKCFpbXBvcnRlZFNjcmlwdCkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwb3B1bGF0
ZVNjcmlwdFNvdXJjZXNGcm9tRGlzazogRmFpbGVkIHRvIHJldHJpZXZlIGltcG9ydGVkIHNjcmlw
dCBmb3IgJXMgZnJvbSBkaXNrIiwgcGFpci5rZXkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpbXBvcnRlZFNjcmlwdHMu
YWRkKHBhaXIua2V5LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsg
V1RGTW92ZShpbXBvcnRlZFNjcmlwdCksIFdURk1vdmUocGFpci52YWx1ZS5yZXNwb25zZVVSTCks
IFdURk1vdmUocGFpci52YWx1ZS5taW1lVHlwZSkgfSk7CisgICAgfQorICAgIHJldHVybiBpbXBv
cnRlZFNjcmlwdHM7Cit9CisKIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpSZWdpc3RyYXRpb25EYXRh
YmFzZShSZWdpc3RyYXRpb25TdG9yZSYgc3RvcmUsIFN0cmluZyYmIGRhdGFiYXNlRGlyZWN0b3J5
KQogICAgIDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlNlcnZpY2VXb3JrZXIgSS9P
IFRocmVhZCIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsKSkKICAgICAsIG1fc3RvcmUobWFrZVdl
YWtQdHIoc3RvcmUpKQpAQCAtMTI0LDkgKzE3NCw5IEBAIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjp+
UmVnaXN0cmF0aW9uRGF0YWJhc2UoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
LSAgICAvLyBUaGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUgZGVzdHJveWVkIG9uIHRoZSBiYWNrZ3Jv
dW5kIHRocmVhZC4KLSAgICBpZiAobV9kYXRhYmFzZSkKLSAgICAgICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFtkYXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSldIHsgfSk7CisgICAgLy8gVGhl
IGRhdGFiYXNlICYgc2NyaXB0U3RvcmFnZSBuZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiB0aGUgYmFj
a2dyb3VuZCB0aHJlYWQuCisgICAgaWYgKG1fZGF0YWJhc2UgfHwgbV9zY3JpcHRTdG9yYWdlKQor
ICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2RhdGFi
YXNlKSwgc2NyaXB0U3RvcmFnZSA9IFdURk1vdmUobV9zY3JpcHRTdG9yYWdlKV0geyB9KTsKIH0K
IAogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6cG9zdFRhc2tUb1dvcmtRdWV1ZShGdW5jdGlv
bjx2b2lkKCk+JiYgdGFzaykKQEAgLTE4NSw2ICsyMzUsMTkgQEAgYm9vbCBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgZnVsbEZpbGVuYW1lKQog
ICAgIHJldHVybiB0cnVlOwogfQogCitTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlw
dFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKG1fZGF0YWJhc2VEaXJlY3RvcnksIHsgIlNjcmlwdHMiLCAi
VjEiIH0pOworfQorCitTV1NjcmlwdFN0b3JhZ2UmIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpzY3Jp
cHRTdG9yYWdlKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1f
c2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbWFrZVVuaXF1ZTxTV1Nj
cmlwdFN0b3JhZ2U+KHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgcmV0dXJuICptX3Nj
cmlwdFN0b3JhZ2U7Cit9CisKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29y
ZHNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0zMzMs
OCArMzk2LDEwIEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiB7CiAgICAgcG9zdFRhc2tUb1dv
cmtRdWV1ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9kYXRhYmFzZSA9IG51bGxwdHI7CisgICAgICAg
IG1fc2NyaXB0U3RvcmFnZSA9IG51bGxwdHI7CiAKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6
ZGVsZXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2VGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSk7CiAg
ICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkoZGF0
YWJhc2VEaXJlY3RvcnlJc29sYXRlZENvcHkoKSk7CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0zNTIsMTIgKzQxNywxMyBAQCBib29s
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE+JgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCpt
X2RhdGFiYXNlKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgU1FMaXRlU3RhdGVt
ZW50IHNxbCgqbV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIFJlY29yZHMgVkFMVUVTICg/LCA/LCA/
LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CisgICAgU1FMaXRlU3RhdGVtZW50
IHNxbCgqbV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIFJlY29yZHMgVkFMVUVTICg/LCA/LCA/LCA/
LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CiAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJG
YWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50
byByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBhdXRvJiBzY3JpcHRTdG9yYWdlID0gdGhpcy0+c2NyaXB0U3RvcmFnZSgpOwogICAgIGZv
ciAoYXV0byYgcmVnaXN0cmF0aW9uIDogcmVtb3ZlZFJlZ2lzdHJhdGlvbnMpIHsKICAgICAgICAg
U1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIFJlY29yZHMgV0hF
UkUga2V5ID0gPyIpOwogICAgICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAg
LTM2NiwxNCArNDMyLDE3IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5n
ZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHJlbW92ZSByZWdpc3Ry
YXRpb24gZGF0YSBmcm9tIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBzY3JpcHRTdG9yYWdlLmNsZWFyKHJlZ2lzdHJh
dGlvbik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBkYXRhIDogdXBkYXRlZFJlZ2lzdHJhdGlv
bnMpIHsKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjc3BFbmNvZGVyOwogICAg
ICAgICBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeS5lbmNvZGUoY3NwRW5jb2Rlcik7CiAKKyAg
ICAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgZW5jb2RlIHRoZSBzY3JpcHQgc291cmNlcyB0byB0
aGUgZGF0YWJhc2UuIFRoZXkgd2lsbCBiZSBzdG9yZWQgc2VwYXJhdGVseSBpbiB0aGUgU2NyaXB0
U3RvcmFnZS4KKyAgICAgICAgLy8gQXMgYSByZXN1bHQsIHdlIG5lZWQgdG8gc3RyaXAgdGhlIHNj
cmlwdCBzb3VyY2VzIGhlcmUgYmVmb3JlIGVuY29kaW5nIHRoZSBzY3JpcHRSZXNvdXJjZU1hcC4K
ICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBzY3JpcHRSZXNvdXJjZU1hcEVuY29k
ZXI7Ci0gICAgICAgIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlciA8PCBkYXRhLnNjcmlwdFJlc291
cmNlTWFwOworICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIgPDwgc3RyaXBTY3JpcHRT
b3VyY2VzKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXIgY2VydGlmaWNhdGVJbmZvRW5jb2RlcjsKICAgICAgICAgY2VydGlmaWNhdGVJ
bmZvRW5jb2RlciA8PCBkYXRhLmNlcnRpZmljYXRlSW5mbzsKQEAgLTM4NSwyMSArNDU0LDM2IEBA
IGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMoY29uc3QgVmVjdG9yPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgICAgICAgICB8fCBzcWwuYmluZERvdWJsZSg1
LCBkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZh
bHVlKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDYsIHVwZGF0
ZVZpYUNhY2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg3LCBkYXRhLnNjcmlwdFVSTC5z
dHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgZGF0
YS5zY3JpcHQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDksIHdv
cmtlclR5cGVUb1N0cmluZyhkYXRhLndvcmtlclR5cGUpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IHNxbC5iaW5kQmxvYigxMCwgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3NwRW5jb2Rlci5i
dWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDEx
LCBkYXRhLnJlZmVycmVyUG9saWN5KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5i
aW5kQmxvYigxMiwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNv
dXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IHNxbC5iaW5kQmxvYigxMywgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlm
aWNhdGVJbmZvRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAg
fHwgc3FsLmJpbmRUZXh0KDgsIHdvcmtlclR5cGVUb1N0cmluZyhkYXRhLndvcmtlclR5cGUpKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYig5LCBjc3BFbmNvZGVyLmJ1
ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAg
ICB8fCBzcWwuYmluZFRleHQoMTAsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwor
ICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDExLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIu
YnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElU
RV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FM
SVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHN0b3Jl
IHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisKKyAgICAgICAgLy8gU2F2ZSBzY3JpcHRzIHRv
IGRpc2suCisgICAgICAgIGF1dG8gbWFpblNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0
YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQpOworICAgICAg
ICBBU1NFUlQobWFpblNjcmlwdCk7CisgICAgICAgIGlmICghbWFpblNjcmlwdCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRhdGEuc2Ny
aXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3Jp
cHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXksICpwYWlyLnZh
bHVlLnNjcmlwdCk7CisgICAgICAgICAgICBBU1NFUlQoaW1wb3J0ZWRTY3JpcHQpOworICAgICAg
ICAgICAgaWYgKGltcG9ydGVkU2NyaXB0KQorICAgICAgICAgICAgICAgIGltcG9ydGVkU2NyaXB0
cy5hZGQoY3Jvc3NUaHJlYWRDb3B5KHBhaXIua2V5KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdCkp
OworICAgICAgICB9CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkYXRhLnNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBtYWluU2NyaXB0ID0gbWFpblNjcmlwdC5yZWxlYXNlTm9uTnVs
bCgpLCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAobV9zdG9yZSkKKyAgICAgICAgICAgICAgICBtX3N0b3JlLT5k
aWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92
ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKKyAgICAgICAgfSk7CiAg
ICAgfQogCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7Ci0KLSAgICBMT0coU2VydmljZVdvcmtl
ciwgIlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2UgKCV6dSBhZGRl
ZC91cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSByZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1
cGRhdGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7
CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlVwZGF0ZWQgU2VydmljZVdvcmtlciBy
ZWdpc3RyYXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5k
ICV6dSByZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRhdGVkUmVnaXN0cmF0aW9ucy5zaXplKCks
IHJlbW92ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTQwNyw2ICs0OTEsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29y
ZHMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCisgICAgUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiIpOwog
ICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJTRUxFQ1QgKiBGUk9NIFJlY29y
ZHM7Il9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gcmV0cmlldmUg
cmVnaXN0cmF0aW9ucyBmcm9tIHJlY29yZHMgdGFibGUgKCIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
cigpLCAiKSAtICIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKQEAgLTQxNCw2ICs0OTks
NyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgIGlu
dCByZXN1bHQgPSBzcWwuc3RlcCgpOwogCiAgICAgZm9yICg7IHJlc3VsdCA9PSBTUUxJVEVfUk9X
OyByZXN1bHQgPSBzcWwuc3RlcCgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogSW1wb3J0aW5nIGEgcmVn
aXN0cmF0aW9uIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIGF1dG8ga2V5ID0gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KHNxbC5nZXRDb2x1bW5UZXh0
KDApKTsKICAgICAgICAgYXV0byBvcmlnaW5VUkwgPSBVUkwgeyBVUkwoKSwgc3FsLmdldENvbHVt
blRleHQoMSkgfTsKICAgICAgICAgYXV0byBzY29wZVBhdGggPSBzcWwuZ2V0Q29sdW1uVGV4dCgy
KTsKQEAgLTQyMiw1MiArNTA4LDY4IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1w
b3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gbGFzdFVwZGF0ZUNoZWNrVGltZSA9IFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhzcWwuZ2V0Q29sdW1uRG91YmxlKDQpKTsKICAgICAgICAgYXV0byB1
cGRhdGVWaWFDYWNoZSA9IHN0cmluZ1RvVXBkYXRlVmlhQ2FjaGUoc3FsLmdldENvbHVtblRleHQo
NSkpOwogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1u
VGV4dCg2KSB9OwotICAgICAgICBhdXRvIHNjcmlwdCA9IHNxbC5nZXRDb2x1bW5UZXh0KDcpOwot
ICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdUb1dvcmtlclR5cGUoc3FsLmdldENvbHVt
blRleHQoOCkpOworICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdUb1dvcmtlclR5cGUo
c3FsLmdldENvbHVtblRleHQoNykpOwogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjb250ZW50
U2VjdXJpdHlQb2xpY3lEYXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDks
IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEpOworICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFz
VmVjdG9yKDgsIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEpOwogICAgICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5kYXRh
KCksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6ZSgpKTsKICAgICAgICAgT3B0aW9uYWw8
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJpdHlQb2xp
Y3k7CiAgICAgICAgIGlmIChjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhLnNpemUoKSkgewogICAg
ICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2VjdXJpdHlQb2xpY3k7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAgICAgICAgICAgIGlmICghY29udGVudFNl
Y3VyaXR5UG9saWN5KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vydmlj
ZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8g
ZGVjb2RlIGNvbnRlbnRTZWN1cml0eVBvbGljeSIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXV0byByZWZlcnJlclBvbGlj
eSA9IHNxbC5nZXRDb2x1bW5UZXh0KDEwKTsKKyAgICAgICAgYXV0byByZWZlcnJlclBvbGljeSA9
IHNxbC5nZXRDb2x1bW5UZXh0KDkpOwogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzY3JpcHRS
ZXNvdXJjZU1hcERhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTEsIHNj
cmlwdFJlc291cmNlTWFwRGF0YSk7Ci0gICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJMLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Pj4gc2NyaXB0UmVzb3VyY2VNYXA7
CisgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTAsIHNjcmlwdFJlc291cmNlTWFw
RGF0YSk7CisgICAgICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAogICAgICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNvdXJjZU1hcERh
dGEuZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKTsKICAgICAgICAgaWYgKHNj
cmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpIHsKLSAgICAgICAgICAgIHNjcmlwdFJlc291cmNl
TWFwRGVjb2RlciA+PiBzY3JpcHRSZXNvdXJjZU1hcDsKLSAgICAgICAgICAgIGlmICghc2NyaXB0
UmVzb3VyY2VNYXApCisgICAgICAgICAgICBPcHRpb25hbDxIYXNoTWFwPFVSTCwgSW1wb3J0ZWRT
Y3JpcHRBdHRyaWJ1dGVzPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKKyAgICAg
ICAgICAgIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlciA+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhv
dXRTY3JpcHRzOworICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3Jp
cHRzKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwg
IlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIHNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMiKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjcmlwdFJlc291cmNlTWFwID0gcG9wdWxh
dGVTY3JpcHRTb3VyY2VzRnJvbURpc2soc2NyaXB0U3RvcmFnZSgpLCAqa2V5LCBXVEZNb3ZlKCpz
Y3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBW
ZWN0b3I8dWludDhfdD4gY2VydGlmaWNhdGVJbmZvRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVt
bkJsb2JBc1ZlY3RvcigxMiwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CisgICAgICAgIHNxbC5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoMTEsIGNlcnRpZmljYXRlSW5mb0RhdGEpOwogICAgICAgICBPcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKIAogICAgICAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGNlcnRpZmljYXRlSW5mb0RlY29kZXIoY2VydGlmaWNhdGVJbmZv
RGF0YS5kYXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGEuc2l6ZSgpKTsKICAgICAgICAgY2VydGlm
aWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKQorICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRpZmljYXRlSW5mbyIpOwogICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5w
dXQgZm9yIHRoaXMgcmVnaXN0cmF0aW9uLgogICAgICAgICAvLyBJZiBhbnkgcGFydCBvZiB0aGlz
IGlucHV0IGlzIGludmFsaWQsIGxldCdzIHNraXAgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgd2UgcmV0dXJuIGFuIGVycm9yIHNraXBwaW5nICphbGwqIHJlZ2lz
dHJhdGlvbnM/Ci0gICAgICAgIGlmICgha2V5IHx8ICFvcmlnaW5VUkwuaXNWYWxpZCgpIHx8ICF0
b3BPcmlnaW4gfHwgIXVwZGF0ZVZpYUNhY2hlIHx8ICFzY3JpcHRVUkwuaXNWYWxpZCgpIHx8ICF3
b3JrZXJUeXBlIHx8ICFzY29wZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIGlmICgha2V5IHx8ICFv
cmlnaW5VUkwuaXNWYWxpZCgpIHx8ICF0b3BPcmlnaW4gfHwgIXVwZGF0ZVZpYUNhY2hlIHx8ICFz
Y3JpcHRVUkwuaXNWYWxpZCgpIHx8ICF3b3JrZXJUeXBlIHx8ICFzY29wZVVSTC5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBwYXJ0IG9mIHRo
ZSByZWdpc3RyYXRpb24iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byBzY3JpcHQgPSBzY3JpcHRTdG9yYWdlKCkucmV0cmlldmUoKmtleSwgc2NyaXB0
VVJMKTsKKyAgICAgICAgQVNTRVJUKHNjcmlwdCk7CisgICAgICAgIGlmICghc2NyaXB0KSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byByZXRyaWV2ZSBtYWluIHNjcmlwdCBm
b3IgJXMgZnJvbSBkaXNrIiwgc2NyaXB0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHdvcmtlcklkZW50
aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0
byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2
aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtl
clN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07
CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3Bl
VVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0
byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwg
V1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCks
IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGlj
eSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJU
eXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBj
b250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RG
TW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHQucmVsZWFzZU5vbk51
bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5
UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndv
cmtlclR5cGUsIHRydWUsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0
RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHRE
YXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKaW5kZXggZDZhZWQ2YjQwZTYwNDYyNmUzYTFm
ZmJjMzVlYmE0MzEyZThlYzdkYS4uNTcwNzUyNjY5NjIxZGIzNDI4NzdhZjM0YzcxZTQ1Yjk4Yjkw
YTE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlZ2lzdHJhdGlvblN0b3JlOwogY2xhc3MgU1FMaXRlRGF0
YWJhc2U7CitjbGFzcyBTV1NjcmlwdFN0b3JhZ2U7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CkBAIC03
Miw2ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRSZWNvcmRzSWZOZWNlc3Nhcnko
KTsKICAgICBib29sIGRvUHVzaENoYW5nZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YT4mLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4mKTsK
ICAgICB2b2lkIGRvQ2xlYXJPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKKyAgICBTV1Nj
cmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3JhZ2UoKTsKKyAgICBTdHJpbmcgc2NyaXB0U3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gUmVwbGllcyB0byB0aGUgbWFpbiB0aHJlYWQuCiAg
ICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYm
KTsKQEAgLTgwLDYgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fd29y
a1F1ZXVlOwogICAgIFdlYWtQdHI8UmVnaXN0cmF0aW9uU3RvcmU+IG1fc3RvcmU7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNXU2NyaXB0U3RvcmFnZT4gbV9zY3JpcHRTdG9yYWdlOwogICAgIFN0cmlu
ZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRmlsZVBhdGg7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcAppbmRleCAwYmE4ODcxOWYzNGY0YWNhYmEyOTFmZDJhNDNiM2ViNDAxNjE0Mzhh
Li45MjExNTZhYzE2MmM0MmI0Y2JkMjRlMjE1ZDdiMjJhZmIwZTA1NzRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcApAQCAtMTI4LDYgKzEyOCwxMSBAQCB2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjph
ZGRSZWdpc3RyYXRpb25Gcm9tRGF0YWJhc2UoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZAog
ICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShXVEZNb3ZlKGRhdGEpKTsKIH0K
IAordm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
IGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICBtX3NlcnZlci5kaWRTYXZlV29ya2VyU2NyaXB0c1Rv
RGlzayhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92ZShtYWluU2NyaXB0KSwgV1RGTW92
ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKwogdm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6ZGF0YWJh
c2VGYWlsZWRUb09wZW4oKQogewogICAgIG1fc2VydmVyLnJlZ2lzdHJhdGlvblN0b3JlRGF0YWJh
c2VGYWlsZWRUb09wZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAppbmRleCA3NTQzZWMxM2IzZGNmNzEw
OGI0MjExZDY2ZTAxYzg3NzAwN2NlOTc4Li4yNjg3OGNlZWIwZTJmNjA3ZTcwN2U3YmI0MDFmZTQy
MWNkMTFlOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJik7CiAgICAgdm9pZCBkYXRhYmFzZUZhaWxlZFRvT3BlbigpOwogICAgIHZvaWQgZGF0
YWJhc2VPcGVuZWRBbmRSZWNvcmRzSW1wb3J0ZWQoKTsKKyAgICB2b2lkIGRpZFNhdmVXb3JrZXJT
Y3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRl
ZFNjcmlwdHMpOwogCiAgICAgU1dTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk2NTYwMzQ2NzdiNWZiYTFiMDkyOWIw
NjUwZDYxMGE5MDEyYjQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMCwwICsxLDExMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTV1NjcmlwdFN0b3Jh
Z2UuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTdHJpbmcgc2hhMkhhc2goY29uc3QgU3RyaW5nJiBpbnB1dCkKK3sKKyAgICBhdXRvIGNyeXB0
byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7CisgICAgYXV0byBpbnB1dFV0ZjggPSBpbnB1dC51dGY4KCk7CisgICAgY3J5
cHRvLT5hZGRCeXRlcyhpbnB1dFV0ZjguZGF0YSgpLCBpbnB1dFV0ZjgubGVuZ3RoKCkpOworICAg
IGF1dG8gaGFzaCA9IGNyeXB0by0+Y29tcHV0ZUhhc2goKTsKKyAgICByZXR1cm4gV1RGOjpiYXNl
NjRVUkxFbmNvZGUoaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpKTsKK30KKworc3RhdGljIFN0cmlu
ZyBzaGEySGFzaChjb25zdCBVUkwmIGlucHV0KQoreworICAgIHJldHVybiBzaGEySGFzaChpbnB1
dC5zdHJpbmcoKSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5KQorICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQoreworICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpy
ZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXN0cmF0aW9uS2V5KSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnRzKG1fZGlyZWN0b3J5LCB7IHNoYTJIYXNoKHJlZ2lzdHJhdGlvbktl
eS50b3BPcmlnaW4oKS50b1N0cmluZygpKSwgc2hhMkhhc2gocmVnaXN0cmF0aW9uS2V5LnNjb3Bl
KCkpIH0pOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVnaXN0cmF0aW9uS2V5KSwgc2hhMkhh
c2goc2NyaXB0VVJMKSk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNXU2NyaXB0U3RvcmFn
ZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpCit7
CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHNjcmlwdFBhdGggPSB0
aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKKyAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShzY3JpcHRQ
YXRoKSk7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGVsZXRlIHRoZSBmaWxlIGJlZm9yZSB3cml0
aW5nIGFzIHRoZXJlIG1heSBiZSBjb2RlIHVzaW5nIGEgbW1hcCdkIHZlcnNpb24gb2YgdGhpcyBm
aWxlLgorICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2NyaXB0UGF0aCk7CisKKyAgICBhdXRv
IG1hcHBlZEZpbGUgPSBGaWxlU3lzdGVtOjptYXBUb0ZpbGUoc2NyaXB0UGF0aCwgc2NyaXB0LmRh
dGFBc1VJbnQ4UHRyKCksIHNjcmlwdC5zaXplKCkpOworICAgIGlmICghbWFwcGVkRmlsZSkgewor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9yYWdl
OjpzdG9yZTogRmFpbHVyZSB0byBzdG9yZSAlcywgRmlsZVN5c3RlbTo6bWFwVG9GaWxlKCkgZmFp
bGVkIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobWFwcGVk
RmlsZSkpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJp
ZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwg
Y29uc3QgVVJMJiBzY3JpcHRVUkwpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisK
KyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwg
c2NyaXB0VVJMKTsKKworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGU6OlByaXZhdGUsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShtYXBwZWRGaWxlKSk7Cit9CisKK3ZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCit7CisgICAgYXV0
byByZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5yZWdpc3RyYXRpb25EaXJlY3RvcnkocmVn
aXN0cmF0aW9uS2V5KTsKKyAgICBib29sIHJlc3VsdCA9IEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVt
cHR5RGlyZWN0b3J5KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7CisgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoIXJlc3VsdCwgU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6Y2xlYXI6IEZh
aWx1cmUgdG8gY2xlYXIgc2NyaXB0cyBmb3IgcmVnaXN0cmF0aW9uICVzIiwgcmVnaXN0cmF0aW9u
S2V5LnRvRGF0YWJhc2VLZXkoKS51dGY4KCkuZGF0YSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWRkZWJkODU0ZTBjZDRjZjQwNDFlNmI3MTYzYjQ0NTYzMjEwNTc1OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgU1dTY3JpcHRTdG9yYWdlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTV1Njcmlw
dFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOworCisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVS
TCYgc2NyaXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKKyAgICB2b2lkIGNsZWFyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmKTsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgcmVnaXN0cmF0aW9u
RGlyZWN0b3J5KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSBjb25zdDsKKyAg
ICBTdHJpbmcgc2NyaXB0UGF0aChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jiwg
Y29uc3QgVVJMJiBzY3JpcHRVUkwpIGNvbnN0OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcAppbmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5N2Q2NGYxZDY1ODY5NGIz
Li5kY2UyMDE2ZmMxNTM4MzAwZmZhYTExNzU5ZWFlMzM0MDhjNGY5ZTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTc2
LDYgKzE3NiwxMiBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICB9KTsKIH0KIAordm9pZCBTV1NlcnZl
cjo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFz
aE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3sKKyAg
ICBpZiAoYXV0byB3b3JrZXIgPSB3b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkK
KyAgICAgICAgd29ya2VyLT5kaWRTYXZlU2NyaXB0c1RvRGlzayhXVEZNb3ZlKG1haW5TY3JpcHQp
LCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJh
dGlvbikKIHsKICAgICBtX29yaWdpblN0b3JlLT5hZGQocmVnaXN0cmF0aW9uLT5rZXkoKS50b3BP
cmlnaW4oKSk7CkBAIC02MzMsNyArNjM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKIAog
dm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewotICAgIHRy
eUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRl
bnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6Omdl
bmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNl
TWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQpLCBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVy
bCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOwogfQogCiB2b2lk
IFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAppbmRleCBiYTFiNDEzNTAzNTQwZGNlODg1Y2Q0NDhiM2Y3YzA0MjhkYjhjYjE3Li43
OTZiZTg1ZTNlNTQ3NzI2ODZlOTU0ODA4NDVmMDQ1NDhjNWQ5NTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xOTAsNiArMTkw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMo
U1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbVN0
b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKKyAgICB2b2lkIGRpZFNhdmVXb3JrZXJT
Y3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRl
ZFNjcmlwdHMpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwog
ICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcAppbmRleCA4MDJhNDgwMTE1MWE3MjhmYmM1YTJhNjkxMjRkYjk2M2M3NzJj
YjBhLi41Y2EyNTI2OTExNDUzZGIwOGYxZjhmMjgzMmRiYzQwNDVlNjRhYTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNj
cmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bAog
ICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0
IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRlIGZyYWdtZW50cwog
ICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMgYSBieXRlLWZvci1i
eXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNlJ3Mgc291cmNlCiAg
ICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVS
TCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNj
cmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVz
dWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsK
KyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
bmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2Vy
LT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBzY3JpcHRCdWZm
ZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRpZmljYXRlc01hdGNo
KHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJbmZvKCkp
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9i
UXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNhdGUgYXJlIG1h
dGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9uIGNsYXNzaWMg
c2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtbRUNNQVNjcmlw
dENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4
IDJiOGZmNjg1ZTA0OTc5ZmNkYzczZTczMjBkZjNmNGRhNjRjNzYyZGYuLjEyMDA1MTY5OGJmOTM5
ODE4ZTRkNDNlODVjNjk1NzMwMGJhN2RjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29yCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlwdCwg
VVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAgICAgaWYgKGF1dG8qIHdv
cmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdU
Rk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUobWltZVR5
cGUpIH0pOworICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2NyaXB0
VVJMKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNDY1OWY5
ZjlmYTZjNmJhYThkZTk2OGQzOTE1ZmUzM2M0ZTMxMjY2OC4uOWJlMzQ0NDkxZjA2MTNmYWUxNDBl
Nzk4NTFiNzEwYTNiMzJiMmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZp
bmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uRGF0
YT4mJik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0LCBV
UkwmJiByZXNwb25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNj
cmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCmluZGV4IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlhNjY3MDUuLjYxM2Ji
NzJjNTg4ZDhhMTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdX
b3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9CiAKIC8vIEZJWE1FOiBV
c2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRlbnRTZWN1cml0eVBvbGlj
eQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8s
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK1NXU2Vy
dmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgU2hhcmVkQnVmZmVy
JiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgOiBtX3NlcnZl
cihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0
aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQdHIocmVnaXN0cmF0aW9u
KSkKQEAgLTIzOCw2ICsyMzgsMjEgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0U2NyaXB0UmVz
b3VyY2UoVVJMJiYgdXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG8KICAgICBtX3Nj
cmlwdFJlc291cmNlTWFwLnNldChXVEZNb3ZlKHVybCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAK
K3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGlt
cG9ydGVkU2NyaXB0cykKK3sKKyAgICAvLyBUaGUgc2NyaXB0cyB3ZXJlIHNhdmVkIHRvIGRpc2ss
IHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdkIHZlcnNpb24gdG8gc2F2ZSBtZW1v
cnkuCisgICAgQVNTRVJUKG1haW5TY3JpcHQuZ2V0KCkgPT0gbV9zY3JpcHQuZ2V0KCkpOyAvLyBE
byBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KKyAgICBt
X3NjcmlwdCA9IFdURk1vdmUobWFpblNjcmlwdCk7CisgICAgZm9yIChhdXRvJiBwYWlyIDogaW1w
b3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX3NjcmlwdFJlc291cmNlTWFwLmZp
bmQocGFpci5rZXkpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV9zY3JpcHRSZXNvdXJjZU1hcC5l
bmQoKSk7CisgICAgICAgIGlmIChpdCA9PSBtX3NjcmlwdFJlc291cmNlTWFwLmVuZCgpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9PSAq
cGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUg
aWRlbnRpY2FsLgorICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShwYWlyLnZhbHVl
KTsKKyAgICB9Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNraXBXYWl0aW5nKCkKIHsKICAg
ICBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAzNzhmYmE2
NTdlOGJiZjQ4NDFlNTZjYmY4NjU2MWY4ZWNjMzExMDIwLi5jNDVkYWRiY2FiODE5NzZiNzZmMGJl
NTMxNGYzYjcxZjc3YjZiMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXIuZ2V0KCk7IH0KICAg
ICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVSTCYgc2NyaXB0
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KKyAgICBTaGFyZWRCdWZmZXIm
IHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5m
bzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS50eXBlOyB9
CiAKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3Qg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICB2b2lkIG1hdGNoQWxs
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShVUkwm
JiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKKyAgICB2b2lk
IGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFz
aE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAg
ICB2b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBpc1NraXBXYWl0aW5nRmxhZ1NldCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0KQEAgLTEyNyw3ICsxMjgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIAogcHJpdmF0ZToK
LSAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOworICAgIFNX
U2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwm
LCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKICAgICB2b2lkIGNh
bGxXaGVuQWN0aXZhdGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0xNDAsNyArMTQxLDcg
QEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0
aW9uS2V5OwogICAgIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9u
OwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJpbmcgbV9zY3JpcHQ7Cisg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlmaWNhdGVJbmZvIG1fY2Vy
dGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCmluZGV4IGYzYjc1YTVlYmEzZmQ3M2Y1MjY4NDQ2MTIzOTc4NWU1NDQ2OTM3
YTIuLmQ4ZDk0MzQwODQ1ZGQ4NWIzNmRjODkyOWFiMWU2MjcxODg5MzI4OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmluZENsaWVudEJ5SWRlbnRpZmllcih1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogICAgIE1hdGNoQWxsKHVpbnQ2NF90
IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4gKE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKLSAgICBTZXRTY3JpcHRSZXNvdXJj
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0
VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSkKKyAg
ICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGlu
YXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmln
aW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYWI3YWJjMjU3NjVh
ZDQyOGYyYTE1N2M2MTc5NGQyMjU4NjE3YmI0Ny4uMmVhMjg0MDA5NjQ0OTBmZGJiZTU3MGEwOGIy
ZmMwYzI4YTM3MjFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNzAyLDcgKzcwMiw3IEBAIHZv
aWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNp
emVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGlj
TGlua3M6Ok5vKSkKLSAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShm
aWxlbmFtZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03NDksMTggKzc0
OSwxOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAvLyBJZiBjYWNo
ZSBzYWx0IGlzIGluaXRpYWxpemVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNoLCBzb21lIGNh
Y2hlIGZpbGVzIGhhdmUgcHJvYmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkgY29ycnVwdGVk
LgogICAgICAgICAgICAgQVNTRVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBjYWNoZXNSb290
UGF0aCgqZm9sZGVyT3JpZ2luKSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNp
dmVseU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
V1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAgZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAgICAgfSk7
CiAgICAgfQogfQogCi12b2lkIEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJh
Y2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxv
Y2spOwotICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCmluZGV4IDE5NDRhNWM3OTJkOGQ3OTllMjlkYWJjODQ2NjY3YjY2ODYy
YmI3ZjkuLjQ0MDllN2I0OTZhYjhjZjY0NmM5YTBmZmFlZGY1NzM0YzBmZjFlODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbENh
Y2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVh
ckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5G
cm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJh
Y2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJl
YWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAg
ICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA2NmY3NmViMmQ2
ZmM3ZDk4ZGNlOGFlMDYyY2ZiYWYwZmY1MDM2Yjc5Li4wMzgyOWRiMjJiYjhhYjhmNzUyMGNkM2Ez
YTgyNjcyOTNmOWQ5NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmICFPUyhXSU5ET1dTKQog
I2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC00MCw0MSArNDEsOCBAQCBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKIAogRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25z
dAogewotICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOwotICAgIGF1
dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2Vy
LCBmYWlsSWZGaWxlRXhpc3RzKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
aGFuZGxlKSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgbV9zaXplKSkgewot
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICB9Ci0gICAgCi0gICAgRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZv
clBhdGgocGF0aCk7Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRX
cml0ZSwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7Ci0gICAg
aWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwot
ICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHZvaWQqIG1hcCA9IGNvbnN0X2Nhc3Q8
dm9pZCo+KG1hcHBlZEZpbGUuZGF0YSgpKTsKLSAgICB1aW50OF90KiBtYXBEYXRhID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KG1hcCk7Ci0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1aW50OF90
KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0YSwgYnl0
ZXMsIGJ5dGVzU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gYnl0ZXNTaXplOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9KTsKLQotI2lmIE9TKFdJTkRPV1MpCi0gICAgRFdPUkQgb2xkUHJv
dGVjdGlvbjsKLSAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwgRklMRV9NQVBfUkVBRCwg
Jm9sZFByb3RlY3Rpb24pOwotICAgIEZsdXNoVmlld09mRmlsZShtYXAsIG1fc2l6ZSk7Ci0jZWxz
ZQotICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCi0gICAgbXByb3RlY3QobWFwLCBt
X3NpemUsIFBST1RfUkVBRCk7Ci0KLSAgICAvLyBGbHVzaCAoYXN5bmNocm9ub3VzbHkpIHRvIGZp
bGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KLSAgICBtc3luYyhtYXAsIG1fc2l6
ZSwgTVNfQVNZTkMpOwotI2VuZGlmCi0KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOworICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShw
YXRoLCBkYXRhKCksIHNpemUoKSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIERhdGE6OmFkb3B0TWFw
KFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
Y3BwCmluZGV4IDdhMGVjNWUxNGYzM2RlMDQyY2RmNDRiMGZiYTQyM2NjOWRkN2FmYzUuLjdhOTk2
MTRmMjMzNWIxNTBjOWNhYjIyMmM5MzVkMGJiZWY2OWM4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lz
dGVtLmNwcApAQCAtNjIsMjMgKzYyLDYgQEAgdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIEQKICAgICB9
CiB9CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRo
KQotewotICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhdGgsIFsmcGF0aF0oY29uc3QgU3RyaW5nJiBu
YW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewotICAgICAgICBTdHJpbmcgZW50cnlQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOwotICAg
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZp
bGU6Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9y
eToKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGVudHJ5UGF0aCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGZvbGxvdyBzeW1saW5r
cy4KLSAgICAgICAgfQotICAgIH0pOwotICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KHBhdGgpOwotfQotCiBGaWxlVGltZXMgZmlsZVRpbWVzKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICNpZiBIQVZFKFNUQVRfQklSVEhUSU1FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAppbmRleCA3
YTVmOGNjNGZlMzhhOTU2MWNlMWM4YjYxYzEwYzc0NzljYTg3NDJmLi5jMGI0ZTgxYjQ3Mzc1YTA3
ZmY5OWJlYjQyMTBkYTAxNTgyMmM3MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaApAQCAtMzMs
OCArMzMsNiBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGVudW0gY2xhc3MgRGlyZWN0b3J5
RW50cnlUeXBlIHsgRGlyZWN0b3J5LCBGaWxlIH07CiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlKT4mKTsKIAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1
cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpOwotCiBzdHJ1Y3QgRmlsZVRpbWVzIHsKICAgICBX
YWxsVGltZSBjcmVhdGlvbjsKICAgICBXYWxsVGltZSBtb2RpZmljYXRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCBlZGRjMGJlMjllMGUyYzZkMjAyNWE5NmIyNWVjMWU1NmM0OGFmOGQ2Li5k
YjRjMDU0OWM2YmJlYjgwM2I2NmYwZTMxNDUxOWJlNTgyOTI1YmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVJT0NoYW5uZWwu
aCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9QYWdlQmxvY2suaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CkBAIC0xMTkzLDcg
KzExOTQsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0ZU9sZFZlcnNpb25zKCkKICAgICAgICAgICAg
IGF1dG8gb2xkVmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVT
dG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBkZWxldGluZyBvbGQgY2FjaGUgdmVyc2lvbiwgcGF0
aCAlcyIsIG9sZFZlcnNpb25QYXRoLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgICAgICBkZWxl
dGVEaXJlY3RvcnlSZWN1cnNpdmVseShvbGRWZXJzaW9uUGF0aCk7CisgICAgICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShvbGRWZXJzaW9uUGF0aCk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggOWUzMTI5NzE5NmRhMTE1NWYwYjIyYzMxODBhMDNjODMwNDg2ZTM3
Mi4uZjZjMTRiNWMzN2VlMGMyMjhmYTU4NjI1MjU5ZmU4NzA2MDg5ODlhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMjIsNyArMTIy
LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJl
ZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsK
LSAgICB1aW50NjRfdCBidWZmZXJTaXplID0gYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwOwor
ICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsKKyAgICBlbmNvZGVyIDw8IGlzTnVsbDsKKyAgICBp
ZiAoaXNOdWxsKQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50NjRfdCBidWZmZXJTaXplID0g
YnVmZmVyLT5zaXplKCk7CiAgICAgZW5jb2RlciA8PCBidWZmZXJTaXplOwogICAgIGlmICghYnVm
ZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDEyICsxNDksMjQgQEAgc3RhdGljIHZv
aWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVk
QnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7
CisgICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAgIGRlY29kZXIgPj4gaXNOdWxsOworICAg
IGlmICghaXNOdWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKmlzTnVsbCkg
eworICAgICAgICBidWZmZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKICAgICB1aW50NjRfdCBidWZmZXJTaXplID0gMDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWJ1ZmZlclNp
emUpCisgICAgaWYgKCFidWZmZXJTaXplKSB7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAogI2lmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQogICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDVlOGY3MDkwNjFiNDJkMThhYzk2OTE4ZTU5OGZkODIxNDBjNDI4Y2QuLjFl
MDFhNWQ0ZTdhN2I4MzE0YTIzMTRhYTg3ZjRkZDJkZDMyZWIxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlVwogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTY3JpcHRS
ZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQmIHNjcmlwdCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291
cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwgc2NyaXB0LnNjcmlwdCwgc2NyaXB0
LnJlc3BvbnNlVVJMLCBzY3JpcHQubWltZVR5cGUgfSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpTZXRTY3JpcHRSZXNvdXJjZSB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHNj
cmlwdCB9LCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6d29y
a2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAxYmI0ZTAxZmEwZDUxM2ZkODg4MDgxNTQ5YTAzNDFmOTFhM2ZlZjZmLi5hNTg3NDM3NDc4N2M1
YmI3YmY4YmU2NTE4NzY4NmQ2N2Q4MTNiMmZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDMtMjYgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3Jp
cHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxy
ZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NpbXBs
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMzogUmVtb3ZlZC4KKyAgICAgICAg
RHJvcCBvdXRkYXRlZCBwcmUtYmFrZWQgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uIGRhdGFi
YXNlIGFzIGl0IGlzIG5vIGxvbmdlcgorICAgICAgICBuZWVkZWQgYW5kIGl0IGlzIGEgcGFpbiB0
byBrZWVwIHVwIHRvIGRhdGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAg
IEFkZCBBUEkgdGVzdCBjb3ZlcmFnZSBmb3IgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoKS4gSXQgaXMgbm90IGEgbmV3IEFQSSBidXQgaXQKKyAgICAgICAgaGFkIG5vIHRlc3Rz
LCBpdCB1c2VkIG1vcmUgaW4gdGhpcyBwYXRjaCBhbmQgd2Ugbm93IGhhdmUgYW4gaW1wbGVtZW50
YXRpb24gb24gYWxsIHN1cHBvcnRlZAorICAgICAgICBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbToKKyAgICAgICAgLSBUd2VhayBzZXJ2aWNlIHdvcmtlciB0ZXN0cyBzbyB0
aGF0IHRoZXkgZXhwZWN0IGEgdmVyc2lvbiA2IGRhdGFiYXNlIGluc3RlYWQgb2YgdmVyc2lvbiA1
LAorICAgICAgICAgIHNpbmNlIEkgdXBkYXRlZCB0aGUgZGF0YWJhc2Ugc2NoZW1lIGFuZCBidW1w
ZWQgdGhlIHZlcnNpb24uCisgICAgICAgIC0gVXBkYXRlIHRlc3QgdGhhdCB3YXMgcmVseWluZyBv
biBhIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtlciBkYXRhYmFzZSBmaWxlICh3aXRoIG9sZCBzY2hl
bWEpIGFuZAorICAgICAgICAgIGhhdmUgaXQgZHluYW1pY2FsbHkgZ2VuZXJhdGUgdGhlIGRhdGFi
YXNlIGluc3RlYWQgYnkgbG9hZGluZyBhIHBhZ2UgdGhhdCByZWdpc3RlcnMgYSBzZXJ2aWNlCisg
ICAgICAgICAgd29ya2VyLgorCiAyMDIxLTAzLTI4ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIEFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhB
bmRIZWlnaHRFbmFibGVkIGZvciBXZWJLaXRMZWdhY3kuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDI2ZTcwOTNiOGYxNTBhMTgxOGVmMmViYjIzYjRiNGE4ZWVjYjgxNTUuLmM3YWMxNDg3YTkx
MDJiYTUyYmNiZDdhZGNiN2Q3ODM4NTQ0ODA4MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNjksNyArMjY5LDYgQEAKIAkJNDZBNDRBNTQyNUE3ODMwMzAwRjYxRTE2IC8qIHdlYmF1ZGlv
LWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTQ0QTUzMjVBNzgyREQwMEY2MUUxNiAvKiB3
ZWJhdWRpby1jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UuaHRtbCAqLzsgfTsKIAkJNDZBNDZBMUEy
NTc1NjQ1NjAwQTFCMTE4IC8qIFNlc3Npb25TdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDZBMTkyNTc1NjQ1NjAwQTFCMTE4IC8qIFNl
c3Npb25TdG9yYWdlLm1tICovOyB9OwogCQk0NkE5MTE1OTIxMDhFNjc4MDA3OEQ0MEQgLyogQ3Vz
dG9tVXNlckFnZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBOTExNTgyMTA4RTY2QjAwNzhENDBEIC8qIEN1c3RvbVVzZXJBZ2VudC5tbSAqLzsg
fTsKLQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OwogCQk0NkJCRUExQjI1Rjk4MzU3
MDBENDk4N0EgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQTZBMTUxMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3Bw
ICovOyB9OwogCQk0NkMxRUE5ODI1NzU4ODIwMDA1RTQwOUUgLyogYWxlcnQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMxRUE5NzI1
NzU4ODA1MDA1RTQwOUUgLyogYWxlcnQuaHRtbCAqLzsgfTsKIAkJNDZDM0FFQjMyM0QwRTUyOTAw
MUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzNBRUIyMjNEMEU1MEYwMDFCMDY4MCAvKiBiZWZv
cmV1bmxvYWQuaHRtbCAqLzsgfTsKQEAgLTE2NTgsNyArMTY1Nyw2IEBACiAJCQkJQkM5MDk3ODQx
MjU1NzFDRjAwMDgzNzU2IC8qIHNpbXBsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY0RjQwNUJEMUQ0QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlk
ZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEyM0YyMTI2
NjE1NjcwMEM5RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNENGQ0REQTI0OUZDOUU0MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTIwNDMsNyArMjA0MSw2IEBACiAJCTQ2M0Y0NzIyMjU1QjQ5
QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3NEaWRUZXJt
aW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRDNzY0QzIzMERGODMy
MDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9
ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJTaW1wbGVTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3RpZnktcmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBHZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MDM3LDcgKzQwMzQsNiBAQAogCQkJCUY0RTNEODA3MjBGNzA4RTQw
MDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgKi8sCiAJ
CQkJRjRGQzA3NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25l
Lmh0bWwgKi8sCiAJCQkJQzlCNEFEMjkxRUNBNkVBNTAwRjVGRUEwIC8qIHNpbGVuY2UtbG9uZy5t
NGEgKi8sCi0JCQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3
MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlG
NENGQ0REODI0OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAqLywKIAkJCQk5MzYwMjcw
NTI1QTNCMjhFMDAzNjc2NzAgLyogc3BlZWNocmVjb2duaXRpb24tYmFzaWMuaHRtbCAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzZjYWYy
YWQ0MzcyNjYzZDJiZTMxMWJjZmI2M2EwNGQwYzBkMDFmNi4uOGY2NTFkM2VhZTM0MzI5NzUxYWMz
NjFkZDdlMDY0Y2I2MzdlMzc1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKQEAgLTE1MSw0ICsxNTEsMjkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBvcGVuRXhpc3RpbmdGaWxlQW5kRmFpbElmRmlsZUV4aXN0cykKICAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKTsKIH0KIAorVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBkZWxldGVOb25FbXB0eURpcmVjdG9yeSkKK3sKKyAgICBhdXRvIGNyZWF0ZVRlc3RU
aWxlID0gW10oY29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIGF1dG8gZmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOworICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVI
YW5kbGUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmls
ZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICB9OworCisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIHRlbXBvcmFyeUZpbGU7CisgICAgYXV0byB0ZW1wb3JhcnlU
ZXN0Rm9sZGVyID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5VGVzdCIsIHRlbXBvcmFyeUZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZSh0ZW1wb3JhcnlGaWxlKTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRl
bXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIgfSkpKTsKKyAgICBjcmVhdGVUZXN0VGls
ZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRl
ciwgImZpbGUxLnR4dCIpKTsKKyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUyLnR4dCIpKTsKKyAg
ICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRl
bXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlMy50eHQiIH0pKTsKKyAgICBj
cmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBv
cmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlNC50eHQiIH0pKTsKKyAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZv
bGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5
VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJh
c2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0KaW5kZXggN2Y0YWM5NmZhN2M3M2E4NDIyYTRjNGU4ZmY3ZTYxMDVlOWU4ODBk
Zi4uMjM3ODhlYWUxNDM2N2FlMmYxYTQxNjRlYjRjOWZiYTE0MzA5NDQ3MSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0KQEAgLTE5NTYsNyArMTk1Niw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFN1
c3BlbmROZXR3b3JrUHJvY2VzcykKICAgICBhdXRvIHBhdGggPSBzdG9yZS5fY29uZmlndXJhdGlv
bi5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5wYXRoOwogCiAgICAgTlNVUkwq
IGRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNd
OwotICAgIE5TVVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl07CisgICAgTlNV
UkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXTsKIAogICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd0RCUGF0
aC5wYXRoXSk7CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFRFU1QoV2ViS2l0LCBTZXJ2aWNlV29y
a2VyRGF0YWJhc2VXaXRoUmVjb3Jkc1RhYmxlQnV0VW5leHBlY3RlZFNjaGVtYSkKICAgICBFWFBF
Q1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OnN3UGF0aC5wYXRoXSk7CiAKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVT
IGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJv
cjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVS
TDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKIAogICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3
UGF0aDsKQEAgLTIzNTUsNiArMjM1NSw3NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBDbGVhckRP
TUNhY2hlQWxzb0luY2x1ZGVzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpCiAgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CiB9CiAKK1RFU1QoU2VydmljZVdvcmtlcnMsIEN1c3RvbURhdGFT
dG9yZVBhdGhzVmVyc3VzQ29tcGxldGlvbkhhbmRsZXJzKQoreworICAgIE5TVVJMICpzd1BhdGgg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJL1dlYktpdC9TZXJ2aWNlV29ya2Vycy8iIHN0cmluZ0J5RXhwYW5k
aW5nVGlsZGVJblBhdGhdXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJl
bW92ZUl0ZW1BdFVSTDpzd1BhdGggZXJyb3I6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7
CisKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmls
IGVycm9yOm5pbF07CisKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzd1BhdGg7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsK
KworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJd
OworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICJ0ZXh0
L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEJ5dGVzIH0sCisgICAgfSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7Cisg
ICAgd2hpbGUgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucy02LnNxbGl0ZTMiXS5wYXRoXSAmJiArK3RpbWVvdXQgPCAyMCkKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6W3N3UGF0aCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0
ZTMiXS5wYXRoXSk7CisKKyAgICAvLyBGZXRjaCBTVyByZWNvcmRzCisgICAgYXV0byB3ZWJzaXRl
RGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbV0tXZWJz
aXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsKKyAgICBzdGF0aWMgYm9v
bCByZWFkeVRvQ29udGludWU7CisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dl
YnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUs
IGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBGZXRjaCByZWNvcmRzIGFnYWlu
LCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hp
bGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVj
b3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9
IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxz
ZTsKKworICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFzaW5nIG91ciByZWZlcmVu
Y2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAg
IGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIGRhdGFTdG9yZSA9
IG5pbDsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBUaGUgcmVjb3JkcyBzaG91bGQg
aGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxkIGhhdmUgYmVlbiBtYWRl
LgorICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlmeSB0aGV5IGFyZSBnb25l
LgorICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlw
ZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQg
Kj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgZGF0YVJlY29yZHMuY291
bnQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKK30KKwogVEVTVChTZXJ2aWNl
V29ya2VycywgV2ViUHJvY2Vzc0NhY2hlKQogewogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2Fs
bG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTQuc3FsaXRlMyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYTA1ZGM0NmUzYTJjY2ViMzRlZjlhNzY4Y2QwOWViM2Q4YWYyNDE1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDIwNDgwCnpjbWVIT2N+fSF5KlV2X1A1
TSZqUU1hUDlyQWh9XzhMcWRwdnZXUzJ2QjZMVXdHTWJIPDJeY0xecW9QKnBnOFBQdQp6WHN1aC15
Nip9cVImQ3ZfYj1TSnJUMUJnTXNvJE4xQVhyPTRAQTtuaGQ7aUdiV2JTaEFKP0gtSnozMHczWFVz
QFgKeiN3aVJiKURTOV5MYyRvMTM+SiRLaXkjYUpnOVVGWmMkK1VLT21OSEBfQHdpI1RgWXptOUk8
ekokemEoPkZ6aDI3CnpqPChqb1FnMT1QZmBBMTkzaiE3ZEVDXlQtdXBuU1R6PUQ3VWYmVkg1Q085
I3otTXplK2xsMnJAcHVgNFhHN1RYbwp6OHlfc20wSTRgcmllIXI4bEJHeXZBcmRlZyg8N1BFTDc3
TnU4b2FaVGxhYUprTTNSPTtDcGsleWlTIVhDQl9tbT4Kek4kRllBN1VjdF57Z2NIS1gpdk44QEZI
QkBOKU4jWkRicn1OdE8zY2I1PmdzJStDU0AzaUlQOzdSKnE3Yk0xamVNCnpYV31YaGlCSFItMmx0
bWwyfVgzcjc2V2xxZzMxKEZ0S3lJezBAcVVpTH5zKmpzfndoVmh+WEhLc25AcDdUYyVNewp6bjN+
R0tXSTYoO14hK3RUVCY3M2psR0ViO1poITw8aCFGJXZHP01AUSlZMjB9NHshaVJZSUtBUU9GXn0q
R0xUXmUKemcleyM3MnotKmRQfTImMVU8aXhyRjd7JEZhSjN2OEteN35hUmlCVVFEMip8bi0/JDko
TVU0cUkrKXA8MnAwYkJHCnooPjlwX3w1K3t6MHV9QDsydmB1WEFZZWhqZmBBMnFlfkd7ZVUjMWZv
KWdqOC1EYFUyY1J+TEtsdkV2ZEk2czBCZQp6UmRUaFUyJldYZjBzKmVjJm8+ciE3WWJWeDMoMytE
M0xgMXVLZEFrbkxtPDl6Knc2TEs1VDdLS1J6cHphLX1nWTQKejNXa3YrcllzYm9hPUVrd3pXT0hQ
Qnp5ekxoeVpfRk87Vl4qPV51O34+ZU1teypRZig5bmojUHgjWH1IZFFjI05HCnpSRjt+O2w+eDhf
TDFncGBKfUgyOWhkUksmTUMyYlJwY0Y5SylaU1FjWUVQM0I3Xk5mQnJkRzU3Vng9LSpoX05ITwp6
KjFyaF98S05gbDhlZTd3M1E3ZWZ7NzV4UD42TXMzTXZAPGBNWVVRdUBRK3NFRHpwZC1ROT5DMGlV
UHR5Z3B7SEwKejhLVHFfWCN+VHhNSVleYDIhZStaZFNRVl5yPjY5WUBDUEh2UjtnOGI3PSl2Zypn
I1p7NXZAe19ZRTVZLXBARCFtCnpjSE19Pyg3K3pYUjlQVD16O3FlQmQ0RG1fZyV+QU17T3YzZzde
JjUkPD1KcjYxfmc3RmoxYkJjcnU4NW91d29ydAp6dFJHSWNzVEdOdD1VWFQ9dU1ibj5LbT04bXFJ
d2M4MTUlP2IhQVBVVGtnN21PQTwoeytwKEtXQTNLM0UjbFZQTmgKejNgem1aTl56d1VRSl5JbFFp
M1hWbjZWak5oeTw3IUF7fjQ2TFVocGZEYTYmNyt8MGdkeHRZbHQ1a2ZFfT8yfSY3Cnped3FjfGpo
T3VIQFpQZ34majNON155Y21uNns8JUhGaG9hVWF6dnc2PmZ3KmZCck1HY1FrRyhmOGlTUlQxfGpM
dQp6JGRucDJNKDRCOzA2R1pgYyliWTt4VUN1bUdgMis1YSlpVlAqb0s3dTJBRn09UDQhQlFZNyM8
WD82T3g9VVNRLUEKeig2fkJpSWh2WmF2VWReRiVyX3J3PDktKUZhYSUkYSt7RGt3elpvfXI5bnhJ
c3N9WDg1VWduQ2pLbW9MSztvPnJECno0SjRwQik4O3laNnFyYGhkcmV7OWJBUjROT15uU1ZsdERx
dDAlMCotQWMzOUA1fF4ya2U3IWpWcExGUCh6TCtOdgp6PEM3c1dBVit+NnA5PS1vREpkM3sxMDRC
d3M5TDdiNU0meWhYQ3sqWW9jUHZxajYhaUczQWlFI3tSaTZlOWlpVngKenJhKy15Z15FczdpcGlO
d0Nne1RGbTAkIzNzRT4hbnlAeSpVMm44VDJHKnJ8cnlqeGZ8S15XKjMoSmVGd2AwK1Y3CnpIMmcq
RmZqOGU+XjQ9U2VOdVgqe2l4UVl4MktoMzlmJSQtTVlldGxXKi1JUCleOCRSSDtWfklpMklnXj90
bW9QVwp6YWhYPEQpX309YHdMNChaNzY2Q0Y7bkFhblZSPWhyLVphc2NVa2ReajFTfCt4NVU/TyVM
Qk44NTFweH5KNzZkRV4KelNQLXh2QEwhRVVCJThHVFVwU2xMbjVAUURSPWFVcigtclMjZTlmfWZe
Km53TmxOVkd3Wnkhd2JATmg4c0NQZEw3CnpEbSorUURoSDZENyRnQih1Mm9QUUhwfG5CIUV5Y0dA
NDNnVHFufU5tYGMyJCpae2FZPCU0encka04zdU1XRl5IfAp6enA5TU4zRTZlblhTVCVRYCFTM15h
ajBASzdsbFRFJGNTejxRK3V2JCpZZD5qN3hxbDFvZlUmXmZabW89fDJEWnYKejE7QE9YUEo0TEJr
QTNPWWlGeClSOHh+Smk0UWZjZF9wVn4qeDFtWUwtRVIlLWU4MVA2bXErakJobzV1aWhQfjNjCnpC
dDFnPHcrV1FwUnJoc1RKJEJ4UyM3VTxXWk8/RHwjJnd6MyNhbE4rNUFKWG8pdXRWPkN3Wnd5PG5z
a1RFWkVCawp6QDl9YyU+X0lfc3NwOV9wamIxT0p4MUwlUVFAZE1ESXJebmY0UVZeKmw7YEhvbn0y
aGc4OEBUSUZlPmZeT0U5JWwKej19cTljPG0tfTdOclRKczJSI1RvYUJCUnV5KmomKlF6eUZqWExi
MDZkUjZeNjw7eW88KE5fPGEtfGNnNyE2I24jCnorVEhOantkI15+KDZrQDxocHZWJT9wZDRoYDFS
NEUpaT4paFlgKH5kK0BibFJ5ckxtQ1h6Y2lrblVraTVTdUszVgp6enAkY3hwOTVsR1VAN0BGVEta
Y1I5RGAwRFItVllmJF5pKTkxJUFoM2BYPEhubn5KSjF6QVpeQUdpY3UtMGxpQjYKekNXPHMlJlVY
X0RMSXUmYEtwK3hATVRTS1BMO3huQzU2WnllXlgtbE8+KGpKIUFiPURabjdATkllQV5ePkdPaXZE
Cno5cDwkMjNBKHx1Rj80dThPckw+fEc/cUI/P008eDJJIVluIW1xazstR01Ydl9GSCluPntjb2dt
O2tRWDNRMFYhRgp6dT9LbEZoOEVJPHU2JjAkQmBPPktyX3hsN1RCXzFnYFYzdmNGaWJ8I3c5dlUw
aGU4TFExajxHYyg4V2ZQam00UTUKejlTMT5gMTVxVXxob0FKJiNxTkEoM0gtYlZlb3YjNmopMmgp
a3slTFc7bCswfClBZmY9SWdMQzg5ZjdOS0RyMlFMCnotITNCfklaO0RXWThwclQ3Ny1pVEZQRVcq
OztTK1Y5WCQkMzxeYnB4I3xle3t1TEl3QDVmK2d2dTtIYDlMcz17dgp6MkF6cnVXM2l5YXVvdklh
RDJnMURMJjdXKUxKOSZvMz1TdkQkQ3RzZUYqKXFtT2IhcEdJN353bmtJbS1UZW9+JnUKekVQb2x0
VkZEJU9aVSFfRkJeNj8yNSZUTXdRbTlDZiZVYkZBaXBQdGZxZHB9Kl5kbntBQTFSQX5PVVRAPHNj
bEIwCnpTT2c0d0hsTj9AbjxUakE/NEVFOCo1U1psNFM8MmBRTj9DNFMlMlEqQThjTnI3MT1AYyFP
cjR2VTA3S2VxUEQ8PQp6JmhUOUxrUVl2U0lndW9fT3c8bXopNVVmIWote29nMHkoVXJTcW8kdWx9
SEZlPXFrMzBVc0RTeFU/YEdeN2J5QGkKek4kUXxgUkU4bUBISGIqV3B1TXwyXnNobz8wKnFHPCUh
WXorUU1kP30wKzBpU3dVbyNPSU1NeXZ4YlAlIWBOMDFlCnpyTiZXXzgqcnJ5dHpHT2hQJkx3cldg
VjxSP1Y1PzdmSyFST2Y/ISZEZnlmPVNIT2JoOTdRWnBfMlplYGoqR3xtPQp6VkgmbFcwfFM9eFNo
UU4oNnd+V0xYeFZRcyNeP1RXelNMPCgoZUA+cTE4YSVNVmRDcElrRkQkV0RBO31hPCNGa1EKekE1
NyUrdH5kMDJFdHRHQTxAKTFfYCFSRnZyKis7P3U9SHJmb0pCUWBLNC1JNT4+KDZ5PytwMDhyPVZs
YFloVkEhCno0eTEmP3JYKHdHS3deemc/dE9PVD5Sc0hSSGZ+R3lyQSVkcz1IMyhCe1otbU5LZ2p2
bmxGJilmIUdWaU1jWHt7Ugp6Q3VoLV9GX1NqKDN4MD9WdyUoVFRnWSZkclE/dGhAcyRMRy1wU0dz
diRAeHhteCF6R2UqfVohTiluNXhaI2N0MTcKekB+K2w0czBAd1JJbDRofHtxZVEjUUB6WDc4SVBs
QCYjbnpXPUNGUllYV2N2Wm9tKkMqIWs/VEA5eSY0OHMkPiRHCnooeSQwanpSY2ZwcSkrR2lzNH5P
TEMhMSM7VzNpYkc9NWhvM1RWUC14MXwxLVhLQWt4cHotYFAmazA7PG02U1UjTAp6KGAjeEs0Xk94
fUlkbnRIVkpCJXB6TmNfKllJaVYtdTZFKjNmR35WODVlOXpPWDQ3S2V5YExoM1R+aUlORzF4WG0K
elo0S19gYXYwbnA4b3dFJjdvPyVCaVJPYzEoMXZGMnorfUdUYU0mIVhEd0N8ZjlDe0ArWlNBSE0z
K1FPXzRqZVU1CnpnN0IpKURvX3I/b1JrJkBpRGlUYHRpPXV4a190MzVNMWg3dElpTi1sRFQpKzhu
bUBNK3wwa2BJWHxAUFEzTTMkawp6WWY+KDZsfjV+bzFwI0teU1dHdT5iNDI7Vy02KWp3JmoyPURa
cVptaS0yN25kSUNDUXlXKygrWig4Wmh3JXlOJiQKejBjbThVd3VOWFFySFA3RkU7Ykp2ckZUNXBm
PjNEUUAkYG5MX2p9V0pIfD0oYjckUUxkSzBQS0U4aEk5PXdea1h+CnpxKFJUP1NzV0lPZXlIRyRH
bTk3e2o2TiV9OV9uN3JNOEtCbiRAc0h8R04paU13ZkFrKF82Y2pBelJ+YG5OYFNHRQp6OylsV3ha
WkpeN1crVlY5dDBVdj88KDspWmRSRm9IN2hmTSpRQHlIZSFwdz11PjVDQEJKMXd7N1VTZ3QmRVgx
d1kKeiZ0dzBpaiZsZChiYkI8IypYITYkQktfYHxGd0xeQ3RsSVJHVGVgbnM9b3A9KFF0UUU0VD9X
cVd5LWZKemd7dTV8CnpYRnU3eHtyeUd7SnY9VH5lYldKa3BKPX1BX1pqKjIwcjQhUCZeZncjUz4p
dmw/ezMma3stTlYlKTFHPndjTVBYOAp6S2JkdVNeTVNIMThKQWN7UU91Sm92bDBWcy1GaHljZlVu
cmJjNHdhS2RCYmkwdDhwSDNeLSVuejRJRk96QChzYDUKekdXQ2xHczx1YXNuOWk+bWRFQ3FZKm8o
P1phU1FHTEk2S0FhY0g/a3VufSY8SF9QJj8mU3UoT049Ung0bDZaNih5CnppT35mOXpNPWNvKVdg
Rl9GUnFweXY0ZW0tNT1NMSFsSW0+d3ViektQUmFsP3Qqej96bUA3RFYqe2J9eC1pNmQ+Wgp6azJL
ZUo9Qz9PUyE+Kl5qWj03LTF1WGEzc0FmWnM8PXI7S0JKSXtHcm1pSnFBRUFhJWB1LU1obCQ3WHYm
WnI/R1MKejVucyVqbTZ+Kld8SUd0PSs2I05+KjckTz5jVjQrKU19M3tTQWhQMjFDak8mU2NLejF0
dTA9MmoqTnM9RlNOMTR6CnpTYUljRCpHJCY5Rjc7YDxOOGFIaWlzamUhTWVGQjBpdSRHXjg1QE16
aEFTNDxCQTB4SlVZc3BGKXR6WkczOVUoNwp6O28/Kmg2VERlJW5ERz1aXklKYzdVRC1fYzFySjxM
Q2RfO0RaMTJYcXtucXxHZUN9TklsYHwmb3hJTz13V2I7S3YKemw8bEQmJTlNZi1uZjNmSFRefE9h
Mys7cHZaTSZyZ2lneEZ7P2xSPXsoKV8ydDdDYzxKPE1XI0tHd2xDeFZBdCk1Cnp6eF81TDhqSz1s
QT5YWVl2NFVnWll5ayQmTXlUWiRHQGhIQjgrVTZpPVJSI3Y/R0s5RUtENiE5NGAyaHptWiNMZQp6
S1IxSXdBbHcpNS0wV29ETUlSb1ModCplVGpmUUdHR2V1enswQXJHLUxsVH51KGFvfnw1MnR1KkMr
RjdkIWg+RDcKel4ocyNPZ352UU9jVC1zPktnP30/VDxvSW5FLXpoTFZqV1dwdkw/M01rdjYrYyZn
PjNaMTItUkpiXlpGfXs5byoxCnpGVnZtdkxEYWllS0F5NEI+OHRncD4kZ2p+VSRuRDNjVyV6fSpz
dHEtOTtHYksmKSF6dlUkTmwlPVJjbDRWJTFeUQp6eXJZK0VIWDZvPDlBMzkjQHNXMGhsQGxFRDtz
PHEmbipLSzhpSmdzcVh3TElwUXp+b3JxQFZQXmQ4SjJPKm1BM1kKeng/S1VzN3BAS0pZKExgZ3M1
XlBaK3hvYFh5ZEp5RiYyOEN8JmR3PmZGSTNwOSl6dktDZEJTfkRgfWhjS2JjUyFZCnpRe0tGVkdP
dTxPbCE2eV5AWmY7Tlc4SEc5eDg0fGY7N1MjO3k8X3ooS2FGZU9qXlpQYVJFd1NfM0xEdFpzfSZV
KQp6IW58OUpDbnF4ckRtKkUwWmM+M1pmRDFKdHtrcXhXS3dfNCtifDhoRGxgPlQyMGxARGNzYDdw
YDt8YHA3NUM+d2IKelZ5YiRVY1FAO0VMaXhkZ1dMfTBYNnVFUkR5IyRTbFRuVCM3b2d0aF41RHI0
UUBVMGtPe0h0XjZ7b0JGRVl9KiFaCno3YUw9MGFyVm83M0N5JGV7WEFgMGs3ZT9wKzdFVzEoZF9q
MmU5bU97OW80bm1IJEk5N2VXI0IqcER6NGpjKVZOWAp6VEd7aXtZVVRJXlEmeHtIOXpXeiFjPFAz
MmBpajhnQSFDTzlJdHtzQHVsYStXO1BUKmtgTH4wTSVicyFPNG5IJF4KelBfSUFFaDx0TkJxUUBg
NHYoKWYqPlg3LU8pRHQ1cko+TzBebWJDaCp8Qzl5OW8wISQtI0NBV1BpKEl6UFRiKzxKCnpJYDNs
UXJ8Z1N3cnpCTylfbHR7dGMpcjReTSRYSTV0YjZXcm98UUx6P0pzcD43Q0lCSjJGfCtoWlhjTXkx
XmV0cQp6ckBxVSFUR0hqd2d4YTlqRHxNXlpoUFhYMClCQTZGY3lOaUdeQEcoRCZNPW9GMGI8JnhG
PDI2Q2RoRCYkenhfT18Kek45b3FzZi16UU5EZjYqQUh8RmE4dXRofkBQeXNSVkM7V3t3QlJqVWVf
SWRsR259TmFNREJzSFhRM0Zpd3diJWVuCnpDUU8zRzJDJiF3JX1qJXFEJVdCSVNabn1gNGJiR2x3
YiVkXzh7bDdoQCs+eGgjUmpuMDBSUUpVemB1T3w9TlE7Vwp6cTJ1QlozPXlwfUpOPyhAYFZGJi1U
e1BXSnw4I3ZILV9xdSRsYSY/WUtrdksla3M9WHtXRW41JEBER0V6cnRFKU0Kem4lMCFvO3A0Wi1K
Rm1+fngqWll7eTdKb1h2QXZJO0BKLXJVK19tPUg/Q18jJHA3KH0pZH1adiR4XjBgTHBQWE93Cnpt
M1ZPWEduWiRkP3xGJWV1SVlPYCNuPHFuP31gbFA9d0JMPVJLK3R0bFdrcUlHUVlORntMOGUwXnR+
Pyt7ZF82OQp6O3VpT3wlfWpuPmZIPj4qdjdFX21LUCRjJHVgaCtOP1h8YWlicElpeEJDanZMSW5x
VkNAWE5JLWhIRE9JK2ZKODwKej5BZC0zYWk+JWFvajZ3OWYyQlRtXjNgXkl2KEV8YzRFND9reyVy
bVVQcCheeWY7PF97YW1pZylkP3g0OXRWPzxGCno4Jk1PJUsrYkthJjRGV19wWGo/eXMlQU5UPlIt
NVIoelgjI3p2Wm9wVWMtfGcrKmRlcyZpRGglZUFgYlA+ZT01OAp6YVh2MklyTTYzdC1ybGQjPHUz
emglZVE2ZHBtMW4lVnBzdC1iWWU3Zl9rWXgwWnlxbEFDXyVHMEdGKzhMZ1dsVmQKekpNWiNeI1k9
bG1EJipRXmNmOGF3O2Jxc04pJSFkYE9KV19mNH05SipAfWQocUUjZyg+OHxqd0hpXi15WCtoXlhC
CnoxVyleQiNDTWwmVyQyNX4tfGplQGBENTBeZzxhJm9lT2BGez5mKSNxdEhMK3BpI3BkPWpfNEdt
bUU2aW81VFdmSgp6ND5+a0ttPG9RWTYxakQqemszc04zcD0qWSkycGkyJVd3MGhoXkJtRUdkWUNN
JV5rMzw/c3drJlEqSEI/SWA5MjcKelFXbWBAekduMUtlbkdzdGRBUi1rc1c8bUtXXmI9QWFoe3A9
RyFnJHtjVVJVQmh4b0lJPStkKkRURUMkKUtCP1RACnomKXJ0SWBCOzAyOzs2TyVmeiFEITkoM0hI
YTktU1ZAeElEOFZ7I1lDUFcrcygrU2s5UkR5bzVERDlnTz8peXcrPQpMbSp1N1JJYHNWPy1ieSpf
CgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBmNjE2YTc0YjQx
N2Y2MWU5YWEzZGQyNWM4YmU4NmM5ZTJhMmZkMjhhLi42MGI3MjJjM2M5NDljN2I4NWU2NGQyZjNk
YTZiZjM1N2JjODBiYWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQpAQCAtMjkwLDYwICsyOTAsNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzV2l0aFByZXdhcm1pbmcpCiAgICAgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
KFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nOjpZZXMpOwogfQogCi1URVNUKFdlYktpdCwg
Q3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCi17Ci0gICAgLy8g
Q29weSB0aGUgYmFrZWQgZGF0YWJhc2UgZmlsZXMgdG8gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeQot
ICAgIE5TVVJMICp1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
IlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQiIHdpdGhFeHRlbnNpb246QCJzcWxp
dGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotCi0gICAgTlNV
UkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9j
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3JrZXJzLyIgc3Ry
aW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOwotICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQ
YXRoLnBhdGhdKTsKLQotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0
cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5p
bF07Ci0KLSAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSBzd1BhdGg7Ci0gICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0KLSAgICAvLyBGZXRjaCBTVyByZWNvcmRzCi0g
ICAgYXV0byB3ZWJzaXRlRGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0
aEFycmF5OkBbV0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsK
LSAgICBzdGF0aWMgYm9vbCByZWFkeVRvQ29udGludWU7Ci0gICAgW2RhdGFTdG9yZSBmZXRjaERh
dGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAg
ICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRp
bnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5
VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBGZXRj
aCByZWNvcmRzIGFnYWluLCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhl
IGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgotICAgIFtkYXRhU3Rv
cmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJl
YWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFz
aW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMg
aW4gZmxpZ2h0LgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRh
VHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwot
ICAgIGRhdGFTdG9yZSA9IG5pbDsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5
VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBUaGUg
cmVjb3JkcyBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxk
IGhhdmUgYmVlbiBtYWRlLgotICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlm
eSB0aGV5IGFyZSBnb25lLgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVz
OndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vi
c2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgwVSwg
ZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAg
IH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLX0K
LQogVEVTVChXZWJLaXQsIEN1c3RvbURhdGFTdG9yZURlc3Ryb3lXaGlsZUZldGNoaW5nTmV0d29y
a1Byb2Nlc3NEYXRhKQogewogICAgIE5TVVJMICpjb29raWVTdG9yYWdlRmlsZSA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvQ29va2llU3RvcmFnZS9Db29raWUuRmlsZSIgc3Ry
aW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6Tk9dOwo=
</data>
<flag name="commit-queue"
          id="444309"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424597</attachid>
            <date>2021-03-29 15:51:26 -0700</date>
            <delta_ts>2021-03-29 17:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210329155125.patch</filename>
            <type>text/plain</type>
            <size>107053</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0NWRiNmMwNjEzYjg3ZWEyY2FiMjRi
ZDNiNDNkMGZhNTdjZTlmNjQuLmEwOTIxMzhjNGI3YWZkNjVhNTg1ZjliNjJlMDY4Nzg5ODMxMzQ2
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
ICAgICAgICAKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTAzLTI4ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIEFzcGVj
dFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIGZvciBXZWJLaXRMZWdhY3kuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMmJlOTY0ODEwMGUyMDI3YTIyZDk3YWMzMzhmZjZjODUwYzQwNGM0Ni4uNjhh
MDUwNmQ1Mzc2YWJkMjQ0Mzc0ZjA5NmRhYzFlM2RmMDRkMTM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2NyBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0
aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgbmV0
d29yayBwcm9jZXNzIHdvdWxkIHN0b3JlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgaW4gYSBTUUxp
dGUgZGF0YWJhc2UuCisgICAgICAgIFdoZW4gc3RhcnRpbmcgdG8gdXNlIHNlcnZpY2Ugd29ya2Vy
cywgd2Ugd291bGQgbG9hZCBhbGwgdGhvc2Ugc2NyaXB0cyBmcm9tIHRoZSBkYXRhYmFzZQorICAg
ICAgICBpbnRvIG1lbW9yeS4gVGhpcyB3b3VsZCB1c2UgYSBkZWNlbnQgYW1vdW50IG9mIG1lbW9y
eSBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3Vl
LCB0aGUgYXBwcm9hY2ggaXMgdGhpcyBwYXRjaCBpcyB0byBzdG9yZSB0aGUgc2NyaXB0cyBhcyBz
ZXBhcmF0ZQorICAgICAgICBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkLiBUaGlzIHdo
ZW4sIHdoZW4gbG9hZGluZyB0aGVtLCB3ZSBjYW4gc2ltcGx5IG1tYXAoKSB0aGVtCisgICAgICAg
IGFuZCBncmVhdGx5IHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgTm90ZSB0aGF0IHRo
ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzICh3aGljaCBtYXkgYmUgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcykgYWxzbyBrZWVwcyBhCisgICAgICAgIGNvcHkgb2YgdGhlIGltcG9ydGVkIHNlcnZpY2Ug
d29ya2VyIHNjcmlwdHMgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlcnMgaXQgaXMgcnVubmluZy4gTW9y
ZQorICAgICAgICB3b3JrIHdpbGwgYmUgbmVlZGVkIGluIGEgZm9sbG93LXVwIGJ1dCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBleHRlbmQgdGhlIGFwcHJvYWNoIHNvIHRoYXQKKyAgICAgICAgdGhlIHNl
cnZpY2Ugd29ya2VyIHByb2Nlc3Mgd291bGQgb25seSBoYXZlIGEgbW1hcCdkIHZlcnNpb24gb2Yg
dGhvc2Ugc2NyaXB0cy4gVGhpcyB3b3VsZAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9u
IHRoZSBXZWJDb250ZW50L1NlcnZpY2VXb3JrZXIgcHJvY2VzcyBzaWRlIGFzIHdlbGwuIEkgYW0g
ZG9pbmcgdGhpcworICAgICAgICBzZXBhcmF0ZWx5IHRob3VnaCB0byByZWR1Y2UgcGF0Y2ggc2l6
ZSBhbmQgZmFjaWxpdGF0ZSByZXZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGVyZSBz
aG91bGQgYmUgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UsIGp1c3QgYSBkZWNyZWFzZWQK
KyAgICAgICAgbWVtb3J5IHVzYWdlIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBzZXJ2aWNl
IHdvcmtlcnMgYXJlIHVzZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgU1dTY3Jp
cHRTdG9yYWdlIGNsYXNzIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJBZ2VudDo6Z2V0SW5pdGlhbGl6YXRpb25JbmZvKToKKyAgICAgICAgQ29udmVy
dCB0aGUgc2NyaXB0IHR5cGUgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIEZpeCBhc3NlcnRpb25zIHRoYXQgd2Vy
ZSBoaXR0aW5nIHdoZW4gY29tcGFyaW5nIHRvIGVtcHR5IFNoYXJlZEJ1ZmZlcnMgKG9mZnNldCB3
b3VsZCBiZSAwCisgICAgICAgIGFuZCBzaXplIHdvdWxkIGJlIDApLiBUaGlzIHdhcyBjYXVnaHQg
YnkgQVBJIHRlc3RzIHNpbmNlIHdlIGhhdmUgc29tZSBzZXJ2aWNlIHdvcmtlciBBUEkKKyAgICAg
ICAgdGVzdHMgdGhhdCB1c2UgZW1wdHkgd29ya2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgQWRkIHNvbWUgY29udmVyc2lv
biBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIgdG8gdGhlIHNjcmlwdCwgYW5kIHZpY2UtdmVy
c2EsIGluIHRoZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjYXNlLgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JpcHRCdWZmZXJUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpbmdUb1NjcmlwdEJ1ZmZlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgIC0gU3RvcmUgc2NyaXB0cyBhcyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcs
IHNvIHRoYXQgdGhleSBjYW4gaG9sZAorICAgICAgICAgIG1tYXAnZCBkYXRhLgorICAgICAgICAt
IEFkZCBzY3JpcHRCdWZmZXJUb1N0cmluZygpIC8gc3RyaW5nVG9TY3JpcHRCdWZmZXIoKSB1dGls
aXR5IGZ1bmN0aW9ucyB0bworICAgICAgICAgIGNvbnZlcnQgc2NyaXB0IHNvdXJjZXMgYmV0d2Vl
biBTdHJpbmcgYW5kIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIENvbnZlcnQgZnJv
bSBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICBVcGRhdGUgZGF0YWJhc2Ugc2NoZW1h
IGFuZCBidW1wIHZlcnNpb24gbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIHN0b3JlIHRoZQorICAgICAg
ICBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaW5zaWRlIHRoZSBTUUxpdGUgZGF0YWJhc2UuIEluc3Rl
YWQsIHRob3NlIHNjcmlwdHMKKyAgICAgICAgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IG9uIHRoZSBm
aWxlc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkltcG9y
dGVkU2NyaXB0QXR0cmlidXRlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
cG9ydGVkU2NyaXB0QXR0cmlidXRlczo6ZGVjb2RlKToKKyAgICAgICAgSW50cm9kdWNlIG5ldyBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgc3RydWN0IHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgZGF0
YQorICAgICAgICBtZW1iZXJzIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQsIGV4Y2VwdCBmb3IgdGhlIGFjdHVhbAorICAgICAgICBzY3JpcHQgc291cmNlLiBXZSBu
b3cgc2F2ZSBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIGluIHRoZQorICAg
ICAgICBkYXRhYmFzYWUgaW5zdGVhZCBvZiBIYXNoTWFwIG9mIEltcG9ydGVkU2NyaXB0IHNpbmNl
IHdlIG5vIGxvbmdlciB3YW50IHRvCisgICAgICAgIHN0b3JlIGltcG9ydGVkIHNjcmlwdCBzb3Vy
Y2VzIGluIHRoZSBkYXRhYmFzZSwgYnV0IHJhdGhlciBzdG9yZSB0aGVtCisgICAgICAgIHNlcGFy
YXRlbHkgb24gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIChXZWJDb3JlOjpzdHJpcFNjcmlw
dFNvdXJjZXMpOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBIYXNoTWFw
IG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgaW50
byBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIChpZGVudGljYWwgYnV0IHdp
dGhvdXQgdGhlIHNjcmlwdAorICAgICAgICBzb3VyY2UpLCByZWFkeSB0byBzYXZlIGluIHRoZSBT
UUxpdGUgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlU2NyaXB0U291cmNl
c0Zyb21EaXNrKToKKyAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBIYXNo
TWFwIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAg
ZnJvbSBhIEhhc01hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMsIGNvbWluZyBmcm9tIHRo
ZSBTUUxpdGVEYXRhYmFzZS4gVGhlCisgICAgICAgIG1pc3Npbmcgc2NyaXB0IHNvdXJjZXMgYXJl
IGZldGNoZWQgZnJvbSB0aGUgZGlzayB2aWEgU1dTY3JpcHRTdG9yYWdlLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKToKKyAg
ICAgICAgTWFrZSBzdXJlIHdlIGRlc3Ryb3kgdGhlIFNXU2NyaXB0U3RvcmFnZSBvbiB0aGUgYmFj
a2dyb3VuZCBxdWV1ZSBmb3IgdGhyZWFkLXNhZmV0eS4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAg
ICBSZXR1cm5zIHRoZSBwYXRoIG9uIHRoZSBmaWxlc3lzdGVtIHdoZXJlIHNlcnZpY2Ugd29ya2Vy
IHNjcmlwdHMgYXJlIHN0b3JlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0
YWJhc2U6OnNjcmlwdFN0b3JhZ2UpOgorICAgICAgICBDb25zdHJ1Y3RzIChpZiBuZWNlc3Nhcnkp
IGEgU1dTY3JpcHRTdG9yYWdlIGFuZCByZXR1cm4gaXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbCk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBjbGVh
ciBhbGwgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgb24gZGlzayBpbiBhZGRpdGlvbiB0byB0
aGUgZGF0YWJhc2UsCisgICAgICAgIG5vdyB0aGF0IHRoZXkgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5
LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdl
cyk6CisgICAgICAgIC0gU3RvcCBzdG9yaW5nIHRoZSBzY3JpcHQgc291cmNlcyBpbiB0aGUgU1FM
aXRlIGRhdGFiYXNlLCBhbmQgaW5zdGVhZCBzdG9yZSB0aGVtIGFzIHNlcGFyYXRlCisgICAgICAg
IGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbSB2aWEgU1dTY3JpcHRTdG9yYWdlLgorICAgICAgICAt
IEltcHJvdmUgbG9nZ2luZworICAgICAgICAtIFdoZW4gZG9uZSBzdG9yaW5nIHRoZSBzY3JpcHRz
IHRvIGRpc2ssIHNlbmQgdGhlc2UgbmV3IG1tYXAnZCB2ZXJzaW9ucyBiYWNrIHRvIHRoZQorICAg
ICAgICAgIFNXU2VydmVyV29ya2VyIG9uIHRoZSBtYWluIHRocmVhZCwgc28gdGhhdCBpdCBjYW4g
cmVwbGFjZSBpdCdzIGhlYXZ5IHNjcmlwdCBzb3VyY2VzIHdpdGgKKyAgICAgICAgICB0aGVzZSBv
bmVzLiBUaGlzIGhlbHBzIHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRo
ZSBzY3JpcHQgc291cmNlcyBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0
aGF0IHRoZXkgYXJlIG5vIGxvbmdlcgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRh
dGFiYXNlLgorICAgICAgICAtIEltcHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmg6CisgICAgICAg
IFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0
aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2Ny
aXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBz
YXZlIG1lbW9yeS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRT
dG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8gZGVhbCB3
aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29ya2VyIHNj
cmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4gV2hlbgor
ICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEgU2hhcmVk
QnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEuCisgICAgICAgIFRo
ZSBzY3JpcHRzIHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVzaWRlIHRoZSBkYXRhYmFz
ZS4gVGhlIHNjcmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBvcmlnaW4gKHVzaW5nIFNI
QTI1NiBvZiB0aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lKSwgYW5kIHRoZW4gYnkgcmVnaXN0cmF0
aW9uIChieQorICAgICAgICB1c2luZyBTSEEyNTYgb2YgdGhlIHJlZ2lzdHJhdGlvbiBzY29wZSBh
cyBzdWJmb2xkZXIgbmFtZSkuIFRoZSBmaWxlIG5hbWUgZm9yIHRoZSBzY3JpcHQKKyAgICAgICAg
aXMgYSBTSEEyNTYgb2YgdGhlIHNjcmlwdCBVUkwuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUg
c2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhh
dCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2Ug
bmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0
IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQg
ZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgVGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQgZm9yIGNvbnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRz
IGRhdGEgbWVtYmVycyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjpzY3JpcHQgY29uc3QpOgorICAgICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNj
cmlwdCBpbnN0ZWFkIG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQor
ICAgICAgICBtbWFwJ2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0y
OCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGZyb20gdGhl
IFhjb2RlIHByb2plY3QgYXMgdGhleSBkb24ndCBleGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMGYxZWI4NmZi
OTUwZmY1NmU4YTcyNjAzOGZlMTAxM2Q1OGJkZGU2Li4xZjZiZTY4ZmY1YTIwM2EzMDZiMWE5YzVj
YTc5MjI0ZTVkZjE5NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIg
c2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgwOAorICAgICAg
ICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0U2NyaXB0UmVz
b3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBwYXNzIHRoZSBJ
bXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURp
cmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAgICAgICBEcm9w
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5kIHVzZSB0aGUg
ZXhpc3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoKSBp
biB3dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6Om1hcFRv
RmlsZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhlIG1hcFRvRmlsZSgpIGxvZ2lj
IHRvIFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIFVwZGF0ZSBT
aGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlzdGluZ3Vpc2ggYSBudWxsIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBXZSBub3cgdXNlIFNoYXJlZEJ1
ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291cmNlcworICAgICAgICBhbmQg
aXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0byBiZSBlbXB0eSAoYW5kIHRo
ZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0cykuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVz
b3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNlIElQQworICAgICAgICBmb3Ig
Y29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0ZWRTY3JpcHQgZGF0YSBtZW1i
ZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBEb24ndCBldmVyIHJlcGxheSBEaXNw
bGF5TGlzdCBpdGVtcyBvZiBhIFJlbW90ZUltYWdlQnVmZmVyIGluIFdlYlByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2YTFmZjBi
ZS4uNjI1NThmOTg4N2Q5ZDhkNWEzZWIxNDY5MGIxY2RmNzlmNzFlYjM5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKQEAgLTQwOCw1ICs0MDgsNjAgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgIioiX3Mp
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChmaWxlSXNE
aXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAg
ICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSwg
UGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRwdXRIYW5kbGUpCit7CisgICAgY29uc3RleHByIGJvb2wg
ZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5
c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOworICAg
IGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVtOjp0
cnVuY2F0ZUZpbGUoaGFuZGxlLCBieXRlc1NpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEZpbGVT
eXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOworICAgIGJvb2wgc3Vj
Y2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICB2b2lkKiBtYXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7
CisgICAgdWludDhfdCogbWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOworICAg
IG1lbWNweShtYXBEYXRhLCBieXRlcywgYnl0ZXNTaXplKTsKKworI2lmIE9TKFdJTkRPV1MpCisg
ICAgRFdPUkQgb2xkUHJvdGVjdGlvbjsKKyAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwg
RklMRV9NQVBfUkVBRCwgJm9sZFByb3RlY3Rpb24pOworICAgIEZsdXNoVmlld09mRmlsZShtYXAs
IG1fc2l6ZSk7CisjZWxzZQorICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCisgICAg
bXByb3RlY3QobWFwLCBieXRlc1NpemUsIFBST1RfUkVBRCk7CisKKyAgICAvLyBGbHVzaCAoYXN5
bmNocm9ub3VzbHkpIHRvIGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KKyAg
ICBtc3luYyhtYXAsIGJ5dGVzU2l6ZSwgTVNfQVNZTkMpOworI2VuZGlmCisKKyAgICBpZiAob3V0
cHV0SGFuZGxlKQorICAgICAgICAqb3V0cHV0SGFuZGxlID0gaGFuZGxlOworICAgIGVsc2UKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gbWFwcGVk
RmlsZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzExNWQ2NWQ0ZjhhMDI0ZDJlN2Y2YjljMzIxNDcy
Mzg0ZWY0YzQuLjIxNDdlYjExZTg2OGQxYzRhNWI2NDRlYTY3YTJiMTdhNzUxM2RhZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmgKQEAgLTE5MCwxNCArMTkwLDE0IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BSSVZBVEUgTlNT
dHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOwogI2VuZGlmCiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVt
cHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Nh
ZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJik7CkBAIC0yNTIsNiArMjUyLDEw
IEBAIGlubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBw
ZWRGaWxlRGF0YSYmIG90aGVyKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8gVGhpcyBjcmVh
dGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBzIGl0LCB3cml0ZSB0aGUgcHJvdmlkZWQgZGF0
YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVkIGZpbGUuCisvLyBUaGlzIGZ1bmN0aW9uIGZh
aWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIGF0IHRoZSBkZXN0aW5hdGlvbiBwYXRoLgor
V1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBQbGF0Zm9ybUZp
bGVIYW5kbGUqID0gbnVsbHB0cik7CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3ZTE4MDU1ZDNjMzcxNTQ3ODQw
NWZmMzlhNTVjYzk5MTgzY2I2ZWM4Li5kOTRlOTIzMmNiNmIxZTMzMWFjMWMwMGUwMWQ5NDI4MDU2
NzYxOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4NCw2ICsyNjg0LDcgQEAgd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3Rv
cmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0
cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGNlMTNlYmIzN2VjZmFhNDU0ODEwYzU1ZjlkMjQzYzVlY2QxMjI3MzMu
LmVjYjc1YjZlZWQyYzg0Mjg0YTRhZDkwNjU4YWVmOTBjNDBiOGRlMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNjIsNiAr
MTI2Miw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsK
IAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25Q
ZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90
aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1l
U3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlF
RjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0
U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4
OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIx
MUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURC
NkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2
ZW50SW5pdC5oICovOyB9OwpAQCAtODIzMCw2ICs4MjMxLDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NG
RTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2lu
ZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFG
Q0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2
MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQ
b3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1
MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzA3LDYgKzIwNzEwLDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3
ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0
Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3
NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2
RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2
RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENE
QzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyog
U1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJK
b2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTI4Niw2ICszNTI5MSw3IEBACiAJCQkJNDY2NThEQzkxRkEy
NEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMx
MUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9y
YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyogU1dT
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBT
V1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBC
NTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VX
b3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4MjUzNjkx
M2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2
aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNlcnZpY2VX
b3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGVu
dGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0VXJs
KG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0
VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENvbnRlbnQo
c2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCku
Y29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJjNGFhOTgzYzg3M2NmMTNk
NTQzZGQxYzc2NjRjY2Y2NjVkYWE5Li5hZjgyYzhjMDZkMmI2MzYxZWEyNmQ0YWYwOGFiNGIxZjdl
NjQ1ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTI4
MSw4ICsyODEsOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImIG90aGVyKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAot
ICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8IHRoaXNTZWdtZW50LnNpemUoKSk7Ci0gICAgICAg
IEFTU0VSVChvdGhlck9mZnNldCA8IG90aGVyU2VnbWVudC5zaXplKCkpOworICAgICAgICBBU1NF
UlQodGhpc09mZnNldCA8PSB0aGlzU2VnbWVudC5zaXplKCkpOworICAgICAgICBBU1NFUlQob3Ro
ZXJPZmZzZXQgPD0gb3RoZXJTZWdtZW50LnNpemUoKSk7CiAKICAgICAgICAgc2l6ZV90IHRoaXNS
ZW1haW5pbmcgPSB0aGlzU2VnbWVudC5zaXplKCkgLSB0aGlzT2Zmc2V0OwogICAgICAgICBzaXpl
X3Qgb3RoZXJSZW1haW5pbmcgPSBvdGhlclNlZ21lbnQuc2l6ZSgpIC0gb3RoZXJPZmZzZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDIzYmY1YThlZGI0YzFlMzAy
OWI3Y2I0NzQ5ZWFjZDU1MDFiYTkxOTQuLjI5YzcxNzIyODRmNzVmZjA5NGVlNzBjNjc5YTJjNmFj
MzJiNTM4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02OCw2
ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CiAgICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkp
OyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKTsKIAogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmlu
ZGV4IDRkNDc0ZjE2ZTU4OGRkMDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUxMDA0MGJl
Mjg1OTIxMGI3MmNlZDIzMTgyYWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
QEAgLTYwLDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6
OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3Vy
Y2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3Bl
KS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2Ny
aXB0UmVzb3VyY2UtPnNjcmlwdCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0
QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAgICAgIG1f
cmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBt
X3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2Vw
dGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEph
dmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVz
cG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2Uo
dXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9T
Y3JpcHRCdWZmZXIoc2NyaXB0KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUg
fSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5jcHAKaW5kZXggMTZkZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTliNWVkZi4u
MWVhNTkwMWJkOWQyZmQ5Yzc5M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgam9iRGF0
YUlkZW50aWZpZXIsCiAgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwKICAgICAg
ICAgc2VydmljZVdvcmtlcklkZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRlZENvcHko
KSwKKyAgICAgICAgc2NyaXB0LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5mby5pc29s
YXRlZENvcHkoKSwKICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29weSgp
LAogICAgICAgICByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYgKzQ4LDIw
IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlz
b2xhdGVkQ29weSgpIGNvbnN0CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3Ry
aW5nKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBmb3IgKGF1dG8gaXQgPSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVuZCgpOyAr
K2l0KQorICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5zZWdtZW50
LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2NWVlNDgw
YTk2MWIxMGYxZGJkYzdlLi44NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYwZTU5MmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhT
aGFyZWRCdWZmZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBz
dHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAg
ICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVS
TC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJ
bXBvcnRlZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29w
eSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkg
fTsgfQogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAg
ICAgICAgICBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAg
ICAgZGVjb2RlciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xp
Y3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiBzY3JpcHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVy
KSwKICAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAg
IFdURk1vdmUoKnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAg
ICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShy
ZWZlcnJlclBvbGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVl
NjkzZjI3N2Y2NTU4M2U3YTRlMDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEwZjNhMDlk
NDI1Mjc0ZTZlZWJlMjY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAog
U2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6
OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwg
V29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3Zp
ZGVyKQotICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCks
ICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwg
ZmFsc2UsIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hS
ZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBs
b2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRp
b24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Q
cm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVk
KCkpCisgICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwg
InNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJ
ZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
YWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBm
YWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJl
cXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9T
dHJpbmcoZGF0YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5v
cm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCku
Z2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZs
YWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHko
KSkKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNoYXJlZCgpKQogICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBoZWFy
dEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCmluZGV4IGNlZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4OTRiMTQu
LmQ4ODVhMjM3MGYzMDUyNTk3MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRy
YW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgpAQCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRpYyBjb25z
dCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNv
cmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3ICs2Miw2
IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYg
dGFibGVOYW1lKQogICAgICAgICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCi0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMIgogICAgICAgICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhUIE5PVCBO
VUxMIE9OIENPTkZMSUNUIEZBSUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBjbGVhbk9sZERhdGFiYXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQog
ICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFzZUZpbGVu
YW1lRnJvbVZlcnNpb24odmVyc2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2NyaXB0QXR0
cmlidXRlcyB7CisgICAgVVJMIHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlwZTsKKwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBl
OworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsK
KyAgICAgICAgT3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2RlciA+PiBy
ZXNwb25zZVVSTDsKKyAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKKyAg
ICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAg
ICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCptaW1lVHlw
ZSkKKyAgICAgICAgfX07CisgICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJbXBvcnRl
ZFNjcmlwdEF0dHJpYnV0ZXM+IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sKKyAgICBI
YXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2NyaXB0czsK
KyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3JpcHRzLmFk
ZChwYWlyLmtleSwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5yZXNwb25z
ZVVSTCwgcGFpci52YWx1ZS5taW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91dFNjcmlw
dHM7Cit9CisKK3N0YXRpYyBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdD4gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3JpcHRTdG9y
YWdlJiBzY3JpcHRTdG9yYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXksIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+JiYg
bWFwKQoreworICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbWFwKSB7
CisgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKHJl
Z2lzdHJhdGlvbktleSwgcGFpci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2NyaXB0KSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0
aW9uRGF0YWJhc2U6OnBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQgdG8gcmV0
cmlldmUgaW1wb3J0ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGltcG9ydGVkU2NyaXB0cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92ZShwYWly
LnZhbHVlLnJlc3BvbnNlVVJMKSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9KTsKKyAg
ICB9CisgICAgcmV0dXJuIGltcG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9uRGF0YWJh
c2U6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwgU3RyaW5n
JiYgZGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0
ZSgiU2VydmljZVdvcmtlciBJL08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwpKQog
ICAgICwgbV9zdG9yZShtYWtlV2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkgQEAgUmVn
aXN0cmF0aW9uRGF0YWJhc2U6On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBiZSBkZXN0
cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNlKQotICAg
ICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2RhdGFiYXNl
KV0geyB9KTsKKyAgICAvLyBUaGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQgdG8gYmUg
ZGVzdHJveWVkIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRhYmFzZSB8
fCBtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJh
c2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZShtX3Njcmlw
dFN0b3JhZ2UpXSB7IH0pOwogfQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwb3N0VGFz
a1RvV29ya1F1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIzNSwxOSBA
QCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3Ry
aW5nJiBmdWxsRmlsZW5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFzZURpcmVj
dG9yeSwgeyAiU2NyaXB0cyIsICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYgUmVnaXN0
cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmICghbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3NjcmlwdFN0b3Jh
Z2UgPSBtYWtlVW5pcXVlPFNXU2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgp
KTsKKyAgICByZXR1cm4gKm1fc2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKQEAgLTMzMyw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6Y2xlYXJBbGwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUK
IHsKICAgICBwb3N0VGFza1RvV29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2RhdGFiYXNl
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAogICAgICAg
ICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZpbGVQYXRo
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2NyaXB0U3Rv
cmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
YXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsKIAogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTM1
MiwxMiArNDE3LDEzIEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMo
Y29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRlVHJhbnNh
Y3Rpb24gdHJhbnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7
CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVj
b3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsK
KyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3Jk
cyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKICAgICBp
ZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzdG9yZSBy
ZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3Jp
cHRTdG9yYWdlKCk7CiAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVkUmVnaXN0
cmF0aW9ucykgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiREVM
RVRFIEZST00gUmVjb3JkcyBXSEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwucHJlcGFy
ZSgpICE9IFNRTElURV9PSwpAQCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHRE
YXRhPiYKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWls
ZWQgdG8gcmVtb3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAoJWkpIC0g
JXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNjcmlwdFN0
b3JhZ2UuY2xlYXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGRhdGEg
OiB1cGRhdGVkUmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyIGNzcEVuY29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LmVuY29k
ZShjc3BFbmNvZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNvZGUgdGhl
IHNjcmlwdCBzb3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3JlZCBzZXBh
cmF0ZWx5IGluIHRoZSBTY3JpcHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgd2Ug
bmVlZCB0byBzdHJpcCB0aGUgc2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2RpbmcgdGhl
IHNjcmlwdFJlc291cmNlTWFwLgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNj
cmlwdFJlc291cmNlTWFwRW5jb2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVy
IDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNlTWFwRW5j
b2RlciA8PCBzdHJpcFNjcmlwdFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7CiAKICAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwog
ICAgICAgICBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpA
QCAtMzg1LDIxICs0NTQsMzYgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hh
bmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAg
IHx8IHNxbC5iaW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBz
cWwuYmluZFRleHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51
cGRhdGVWaWFDYWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0
KDcsIGRhdGEuc2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IHNxbC5iaW5kVGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8
fCBzcWwuYmluZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1
ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAg
ICB8fCBzcWwuYmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwot
ICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIu
YnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FM
SVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5n
KGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRC
bG9iKDksIGNzcEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBv
bGljeSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlw
dFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1
ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIs
IGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIu
YnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3Jr
ZXIsICJGYWlsZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxl
ICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAg
ICAvLyBTYXZlIHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0ID0gc2Ny
aXB0U3RvcmFnZS5zdG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBk
YXRhLnNjcmlwdCk7CisgICAgICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAgaWYgKCFt
YWluU2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBp
bXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5
LCBwYWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVChpbXBv
cnRlZFNjcmlwdCk7CisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAgICAgICAg
ICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkpLCBXVEZN
b3ZlKGltcG9ydGVkU2NyaXB0KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciA9IGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQgPSBtYWlu
U2NyaXB0LnJlbGVhc2VOb25OdWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0
ZWRTY3JpcHRzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQorICAgICAg
ICAgICAgICAgIG1fc3RvcmUtPmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0
cykpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKLQot
ICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlv
biBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92
ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJl
Z2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiVXBk
YXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0
ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRS
ZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwg
IlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNR
TElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVwYXJlIHN0
YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJsZSAoIiwg
bV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNn
KCkpOwpAQCAtNDE0LDYgKzQ5OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1w
b3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBmb3IgKDsg
cmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNv
cmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAg
ICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VL
ZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9IFVSTCB7
IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3BlUGF0aCA9
IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5nIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0VXBkYXRl
Q2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5Eb3VibGUo
NCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVWaWFDYWNo
ZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsg
VVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0ID0gc3Fs
LmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29y
a2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9
IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNxbC5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CisgICAgICAg
IHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7
CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2Vj
dXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkp
OwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+
IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGlj
eURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0
eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAg
ICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9y
dFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAgICAgICBh
dXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVt
bkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAgT3B0aW9u
YWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3Rvcigx
MCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogCiAg
ICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVy
KHNjcmlwdFJlc291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXpl
KCkpOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewotICAgICAg
ICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwOwotICAg
ICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlvbmFsPEhh
c2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJjZU1hcFdp
dGhvdXRTY3JpcHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNjcmlwdFJl
c291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6
IEZhaWxlZCB0byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIpOwogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2NyaXB0
UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRTdG9yYWdl
KCksICprZXksIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9EYXRhOwot
ICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUluZm9EYXRh
KTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNhdGVJbmZv
RGF0YSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZv
OwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVj
b2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YS5zaXpl
KCkpOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsK
LSAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlmaWNhdGVJ
bmZvKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY2VydGlm
aWNhdGVJbmZvIik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8v
IElmIGFueSBwYXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0aGlzIHJl
Z2lzdHJhdGlvbi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4gZXJyb3Ig
c2tpcHBpbmcgKmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdp
blVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlw
dFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkKKyAg
ICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAh
dXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwg
IXNjb3BlVVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vy
dmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQg
dG8gZGVjb2RlIHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UoKS5y
ZXRyaWV2ZSgqa2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAg
ICAgaWYgKCFzY3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VX
b3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIHJl
dHJpZXZlIG1haW4gc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAg
ICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2
aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2Ny
aXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVj
a1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJE
YXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZp
ZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgq
Y29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUo
c2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFw
KSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRh
IHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIs
IHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZN
b3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RG
TW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJj
ZU1hcCkgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0
b3JlKFdURk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAppbmRleCBk
NmFlZDZiNDBlNjA0NjI2ZTNhMWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2MjFkYjM0
Mjg3N2FmMzRjNzFlNDViOThiOTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3Rv
cmU7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFi
YXNlRGlyZWN0b3J5KTsKQEAgLTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9y
dFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0
b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYpOworICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOworICAgIFN0
cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBsaWVzIHRv
IHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRpb25TdG9y
ZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBtX3Njcmlw
dFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1f
ZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2U+IG1f
ZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRhY2FiYTI5
MWZkMmE0M2IzZWI0MDE2MTQzOGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2IyMmFmYjBl
MDU3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBAIHZvaWQg
UmVnaXN0cmF0aW9uU3RvcmU6OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmJiBkCiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJvbVN0b3Jl
KFdURk1vdmUoZGF0YSkpOwogfQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRTYXZlV29y
a2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2VydmVyLmRp
ZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3Zl
KG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFJlZ2lz
dHJhdGlvblN0b3JlOjpkYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2ZXIucmVn
aXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCmlu
ZGV4IDc1NDNlYzEzYjNkY2Y3MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4Y2VlYjBl
MmY2MDdlNzA3ZTdiYjQwMWZlNDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKQEAgLTYz
LDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNl
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFpbGVkVG9P
cGVuKCk7CiAgICAgdm9pZCBkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgpOworICAg
IHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2VydmVyKCkg
eyByZXR1cm4gbV9zZXJ2ZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTY1
NjAzNDY3N2I1ZmJhMWIwOTI5YjA2NTBkNjEwYTkwMTJiNDdlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNXU2NyaXB0U3RvcmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9D
cnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBzaGEySGFzaChjb25zdCBTdHJpbmcmIGlucHV0
KQoreworICAgIGF1dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGlucHV0VXRmOCA9IGlu
cHV0LnV0ZjgoKTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVzKGlucHV0VXRmOC5kYXRhKCksIGlucHV0
VXRmOC5sZW5ndGgoKSk7CisgICAgYXV0byBoYXNoID0gY3J5cHRvLT5jb21wdXRlSGFzaCgpOwor
ICAgIHJldHVybiBXVEY6OmJhc2U2NFVSTEVuY29kZShoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkp
OworfQorCitzdGF0aWMgU3RyaW5nIHNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQpCit7CisgICAg
cmV0dXJuIHNoYTJIYXNoKGlucHV0LnN0cmluZygpKTsKK30KKworU1dTY3JpcHRTdG9yYWdlOjpT
V1NjcmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCisgICAgOiBtX2RpcmVjdG9y
eShkaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cit9CisKK1N0cmlu
ZyBTV1NjcmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3RvcnksIHsgc2hh
Mkhhc2gocmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBzaGEySGFzaChy
ZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6
OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdp
c3RyYXRpb25LZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFy
ZWRCdWZmZXImIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAg
IGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3Jp
cHRVUkwpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKHNjcmlwdFBhdGgpKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZWxldGUg
dGhlIGZpbGUgYmVmb3JlIHdyaXRpbmcgYXMgdGhlcmUgbWF5IGJlIGNvZGUgdXNpbmcgYSBtbWFw
J2QgdmVyc2lvbiBvZiB0aGlzIGZpbGUuCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzY3Jp
cHRQYXRoKTsKKworICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShz
Y3JpcHRQYXRoLCBzY3JpcHQuZGF0YUFzVUludDhQdHIoKSwgc2NyaXB0LnNpemUoKSk7CisgICAg
aWYgKCFtYXBwZWRGaWxlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3Jr
ZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lz
dGVtOjptYXBUb0ZpbGUoKSBmYWlsZWQiLCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNX
U2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sKKyAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBh
dGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFs
c2U7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShzY3JpcHRQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc3VjY2Vzcyk7CisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGUpKTsKK30KKwordm9pZCBTV1NjcmlwdFN0
b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPnJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkpOworICAgIGJvb2wgcmVzdWx0ID0gRmls
ZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRighcmVzdWx0LCBTZXJ2aWNlV29ya2VyLCAiU1dTY3Jp
cHRTdG9yYWdlOjpjbGVhcjogRmFpbHVyZSB0byBjbGVhciBzY3JpcHRzIGZvciByZWdpc3RyYXRp
b24gJXMiLCByZWdpc3RyYXRpb25LZXkudG9EYXRhYmFzZUtleSgpLnV0ZjgoKS5kYXRhKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGRlYmQ4NTRlMGNkNGNmNDA0MWU2Yjcx
NjNiNDQ1NjMyMTA1NzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBT
V1NjcmlwdFN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGV4cGxpY2l0IFNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CisK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2Ny
aXB0KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRVUkwpOworICAgIHZvaWQgY2xl
YXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOworCitwcml2YXRlOgorICAg
IFN0cmluZyByZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYpIGNvbnN0OworICAgIFN0cmluZyBzY3JpcHRQYXRoKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3Q7CisKKyAgICBT
dHJpbmcgbV9kaXJlY3Rvcnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDBlZjAwOGZiNTYwNzgxZDMwYWJk
YjRhOTk3ZDY0ZjFkNjU4Njk0YjMuLmRjZTIwMTZmYzE1MzgzMDBmZmFhMTE3NTllYWUzMzQwOGM0
ZjllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCkBAIC0xNzYsNiArMTc2LDEyIEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lz
dHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogICAgIH0p
OwogfQogCit2b2lkIFNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1w
b3J0ZWRTY3JpcHRzKQoreworICAgIGlmIChhdXRvIHdvcmtlciA9IHdvcmtlckJ5SUQoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICB3b3JrZXItPmRpZFNhdmVTY3JpcHRzVG9EaXNr
KFdURk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7Cit9CisKIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdp
c3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uKQogewogICAgIG1fb3JpZ2luU3RvcmUtPmFkZChyZWdp
c3RyYXRpb24tPmtleSgpLnRvcE9yaWdpbigpKTsKQEAgLTYzMyw3ICs2MzksNyBAQCB2b2lkIFNX
U2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNlcgogCiB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVz
b3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8sIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdU
Rk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9u
LmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHN0cmluZ1RvU2Ny
aXB0QnVmZmVyKHNjcmlwdCksIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5
LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJj
ZU1hcCkgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGJhMWI0MTM1MDM1NDBkY2U4ODVjZDQ0
OGIzZjdjMDQyOGRiOGNiMTcuLjc5NmJlODVlM2U1NDc3MjY4NmU5NTQ4MDg0NWYwNDU0OGM1ZDk1
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmgKQEAgLTE5MCw2ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0
cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAgICAgdm9pZCBh
ZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOworICAg
IHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAgICAgdm9pZCByZWdpc3RyYXRpb25TdG9y
ZUltcG9ydENvbXBsZXRlKCk7CiAgICAgdm9pZCByZWdpc3RyYXRpb25TdG9yZURhdGFiYXNlRmFp
bGVkVG9PcGVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgwMmE0ODAxMTUxYTcyOGZi
YzVhMmE2OTEyNGRiOTYzYzc3MmNiMGEuLjVjYTI1MjY5MTE0NTNkYjA4ZjFmOGYyODMyZGJjNDA0
NWU2NGFhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQg
U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQmIHJlc3VsCiAgICAgLy8gSWYgbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBu
ZXdlc3RXb3JrZXIncyBzY3JpcHQgdXJsIGVxdWFscyBqb2IncyBzY3JpcHQgdXJsIHdpdGggdGhl
IGV4Y2x1ZGUgZnJhZ21lbnRzCiAgICAgLy8gZmxhZyBzZXQsIGFuZCBzY3JpcHQncyBzb3VyY2Ug
dGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUgbWF0Y2ggd2l0aCBuZXdlc3RXb3JrZXIncyBzY3JpcHQg
cmVzb3VyY2UncyBzb3VyY2UKICAgICAvLyB0ZXh0LCB0aGVuOgotICAgIGlmIChuZXdlc3RXb3Jr
ZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlw
dFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29y
a2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IG5ld2VzdFdvcmtlci0+c2NyaXB0KCkgJiYgZG9D
ZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNl
cnRpZmljYXRlSW5mbygpKSkgeworICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0
VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQu
c2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG5ld2VzdFdvcmtlci0+c2NyaXB0KCkpICYm
IGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2Vy
LT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCwgc2NyaXB0IGFu
ZCBjZXJ0aWZpY2F0ZSBhcmUgbWF0Y2hpbmcgZm9yIHJlZ2lzdHJhdGlvbklEPSVsbHUiLCB0aGlz
LCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgLy8gRklY
TUU6IGZvciBub24gY2xhc3NpYyBzY3JpcHRzLCBjaGVjayB0aGUgc2NyaXB04oCZcyBtb2R1bGUg
cmVjb3JkJ3MgW1tFQ01BU2NyaXB0Q29kZV1dLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKaW5kZXggMmI4ZmY2ODVlMDQ5NzlmY2RjNzNlNzMyMGRmM2Y0ZGE2NGM3
NjJkZi4uMTIwMDUxNjk4YmY5Mzk4MThlNGQ0M2U4NWM2OTU3MzAwYmE3ZGNhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTE2LDEwICsxMTYsMTAgQEAg
dm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3IKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12
b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVS
TCwgU3RyaW5nJiYgc2NyaXB0LCBVUkwmJiByZXNwb25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUp
Cit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlw
dFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmIHNjcmlwdCkK
IHsKICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2Vy
Rm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+
c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92ZShzY3JpcHRVUkwpLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHJlc3BvbnNl
VVJMKSwgV1RGTW92ZShtaW1lVHlwZSkgfSk7CisgICAgICAgIHdvcmtlci0+c2V0U2NyaXB0UmVz
b3VyY2UoV1RGTW92ZShzY3JpcHRVUkwpLCBXVEZNb3ZlKHNjcmlwdCkpOwogfQogCiB2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAppbmRleCA0NjU5ZjlmOWZhNmM2YmFhOGRlOTY4ZDM5MTVmZTMzYzRlMzEyNjY4Li45
YmUzNDQ0OTFmMDYxM2ZhZTE0MGU3OTg1MWI3MTBhM2IzMmIyYjI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCBjbGllbnRJ
ZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJM
LCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVh
dENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVE
b21haW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggM2JhMzZhM2Y5NWE1N2ViYTE3ODU4Y2U2MmRl
ZWU3OGFjOWE2NjcwNS4uNjEzYmI3MmM1ODhkOGExNzBiMWU0YmIyYjc5MGMwMzAwYmUxZjQ0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU1dTZXJ2ZXJXb3JrZXIqIFNXU2Vy
dmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50
aWYKIH0KIAogLy8gRklYTUU6IFVzZSByLXZhbHVlIHJlZmVyZW5jZXMgZm9yIHNjcmlwdCBhbmQg
Y29udGVudFNlY3VyaXR5UG9saWN5Ci1TV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dT
ZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlw
dFJlc291cmNlTWFwKQorU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBz
ZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJj
ZU1hcCkKICAgICA6IG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZlcikpCiAgICAgLCBtX3JlZ2lz
dHJhdGlvbktleShyZWdpc3RyYXRpb24ua2V5KCkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihtYWtl
V2Vha1B0cihyZWdpc3RyYXRpb24pKQpAQCAtMjM4LDYgKzIzOCwyMSBAQCB2b2lkIFNXU2VydmVy
V29ya2VyOjpzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiB1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wbwogICAgIG1fc2NyaXB0UmVzb3VyY2VNYXAuc2V0KFdURk1vdmUodXJsKSwgV1RG
TW92ZShzY3JpcHQpKTsKIH0KIAordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkU2F2ZVNjcmlwdHNU
b0Rpc2soUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIC8vIFRoZSBzY3JpcHRz
IHdlcmUgc2F2ZWQgdG8gZGlzaywgcmVwbGFjZSBvdXIgc2NyaXB0cyB3aXRoIHRoZSBtbWFwJ2Qg
dmVyc2lvbiB0byBzYXZlIG1lbW9yeS4KKyAgICBBU1NFUlQobWFpblNjcmlwdC5nZXQoKSA9PSBt
X3NjcmlwdC5nZXQoKSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBh
cmUgaWRlbnRpY2FsLgorICAgIG1fc2NyaXB0ID0gV1RGTW92ZShtYWluU2NyaXB0KTsKKyAgICBm
b3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBpdCA9IG1f
c2NyaXB0UmVzb3VyY2VNYXAuZmluZChwYWlyLmtleSk7CisgICAgICAgIEFTU0VSVChpdCAhPSBt
X3NjcmlwdFJlc291cmNlTWFwLmVuZCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fc2NyaXB0UmVz
b3VyY2VNYXAuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCpp
dC0+dmFsdWUuc2NyaXB0ID09ICpwYWlyLnZhbHVlKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBz
dXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCisgICAgICAgIGl0LT52YWx1ZS5zY3JpcHQg
PSBXVEZNb3ZlKHBhaXIudmFsdWUpOworICAgIH0KK30KKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6
c2tpcFdhaXRpbmcoKQogewogICAgIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCmluZGV4IDM3OGZiYTY1N2U4YmJmNDg0MWU1NmNiZjg2NTYxZjhlY2MzMTEwMjAuLmM0
NWRhZGJjYWI4MTk3NmI3NmYwYmU1MzE0ZjNiNzFmNzdiNmIyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAg
LTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFNXU2VydmVyKiBzZXJ2ZXIoKSB7IHJldHVybiBt
X3NlcnZlci5nZXQoKTsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
IHJlZ2lzdHJhdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9CiAg
ICAgY29uc3QgVVJMJiBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2NyaXB0VVJM
OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsg
fQorICAgIFNoYXJlZEJ1ZmZlciYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0K
ICAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLnR5cGU7IH0KIApAQCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZmluZENsaWVu
dEJ5SWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpIGNvbnN0
OwogICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKTsKICAgICB2b2lkIHNl
dFNjcmlwdFJlc291cmNlKFVSTCYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0JiYpOworICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1w
b3J0ZWRTY3JpcHRzKTsKIAogICAgIHZvaWQgc2tpcFdhaXRpbmcoKTsKICAgICBib29sIGlzU2tp
cFdhaXRpbmdGbGFnU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc1NraXBXYWl0aW5nRmxhZ1NldDsg
fQpAQCAtMTI3LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRD
aGVjaygpOwogCiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbiYsIGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZp
Y2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBT
dHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
PiYmKTsKIAogICAgIHZvaWQgY2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVyKGJvb2wgc3VjY2Vzcyk7
CiAKQEAgLTE0MCw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJh
dGlvbj4gbV9yZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlckRhdGEgbV9kYXRhOwotICAg
IFN0cmluZyBtX3NjcmlwdDsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3NjcmlwdDsKICAgICBD
ZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzIG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmluZyBt
X3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZjNiNzVhNWViYTNmZDczZjUy
Njg0NDYxMjM5Nzg1ZTU0NDY5MzdhMi4uZDhkOTQzNDA4NDVkZDg1YjM2ZGM4OTI5YWIxZTYyNzE4
ODkzMjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBGaW5k
Q2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiAg
ICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENs
YWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYwot
ICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwg
U3RyaW5nIG1pbWVUeXBlKQorICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQogICAgIFBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJj
ZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cAppbmRleCBhYjdhYmMyNTc2NWFkNDI4ZjJhMTU3YzYxNzk0ZDIyNTg2MTdiYjQ3Li4yZWEyODQw
MDk2NDQ5MGZkYmJlNTcwYTA4YjJmYzBjMjhhMzcyMWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBA
IC03MDIsNyArNzAyLDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBmaWxl
bmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewogICAgICAgICAg
ICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQotICAgICAgICAgICAgICAgIGRlbGV0ZURp
cmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICB9KTsKQEAgLTc0OSwxOCArNzQ5LDE4IEBAIHZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9y
aWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZm9sZGVyUGF0CiAKICAg
ICAgICAgICAgIC8vIElmIGNhY2hlIHNhbHQgaXMgaW5pdGlhbGl6ZWQgYW5kIHRoZSBwYXRocyBk
byBub3QgbWF0Y2gsIHNvbWUgY2FjaGUgZmlsZXMgaGF2ZSBwcm9iYWJseSBiZSByZW1vdmVkIG9y
IHBhcnRpYWxseSBjb3JydXB0ZWQuCiAgICAgICAgICAgICBBU1NFUlQoIW1fc2FsdCB8fCBmb2xk
ZXJQYXRoID09IGNhY2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmlnaW4pKTsKLSAgICAgICAgICAgIGRl
bGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRlclBhdGgsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7Cisg
ICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChmb2xk
ZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3Ip
XSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRW5naW5lOjpkZWxldGVEaXJl
Y3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5l
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcm
IHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKGdsb2JhbFNpemVGaWxlTG9jayk7Ci0gICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2
ZWx5KHBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShw
YXRoKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXggMTk0NGE1Yzc5MmQ4ZDc5
OWUyOWRhYmM4NDY2NjdiNjY4NjJiYjdmOS4uNDQwOWU3YjQ5NmFiOGNmNjQ2YzlhMGZmYWVkZjU3
MzRjMGZmMWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
bGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXNrKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVEaXJl
Y3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVOb25FbXB0eURpcmVj
dG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmKTsKICAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEu
Y3BwCmluZGV4IDY2Zjc2ZWIyZDZmYzdkOThkY2U4YWUwNjJjZmJhZjBmZjUwMzZiNzkuLjAzODI5
ZGIyMmJiOGFiOGY3NTIwY2QzYTNhODI2NzI5M2Y5ZDk0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
CiAjaWYgIU9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KQEAgLTQwLDQxICs0MSw4
IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiBEYXRhIERhdGE6Om1hcFRvRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7Ci0gICAgY29uc3RleHByIGJvb2wgZmFpbElmRmlsZUV4
aXN0cyA9IHRydWU7Ci0gICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRo
LCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6RmlsZUFj
Y2Vzc1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOwotICAgIGlmICghRmlsZVN5
c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUo
aGFuZGxlLCBtX3NpemUpKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLSAgICAKLSAgICBGaWxlU3lzdGVtOjptYWtl
U2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hh
cmVkLCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgdm9p
ZCogbWFwID0gY29uc3RfY2FzdDx2b2lkKj4obWFwcGVkRmlsZS5kYXRhKCkpOwotICAgIHVpbnQ4
X3QqIG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFwKTsKLSAgICBhcHBseShbJm1h
cERhdGFdKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplKSB7Ci0gICAgICAg
IG1lbWNweShtYXBEYXRhLCBieXRlcywgYnl0ZXNTaXplKTsKLSAgICAgICAgbWFwRGF0YSArPSBi
eXRlc1NpemU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0pOwotCi0jaWYgT1MoV0lORE9X
UykKLSAgICBEV09SRCBvbGRQcm90ZWN0aW9uOwotICAgIFZpcnR1YWxQcm90ZWN0KG1hcCwgbV9z
aXplLCBGSUxFX01BUF9SRUFELCAmb2xkUHJvdGVjdGlvbik7Ci0gICAgRmx1c2hWaWV3T2ZGaWxl
KG1hcCwgbV9zaXplKTsKLSNlbHNlCi0gICAgLy8gRHJvcCB0aGUgd3JpdGUgcGVybWlzc2lvbi4K
LSAgICBtcHJvdGVjdChtYXAsIG1fc2l6ZSwgUFJPVF9SRUFEKTsKLQotICAgIC8vIEZsdXNoIChh
c3luY2hyb25vdXNseSkgdG8gZmlsZSwgdHVybmluZyB0aGlzIGludG8gY2xlYW4gbWVtb3J5Lgot
ICAgIG1zeW5jKG1hcCwgbV9zaXplLCBNU19BU1lOQyk7Ci0jZW5kaWYKLQorICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgYXV0byBtYXBwZWRGaWxlID0gRmls
ZVN5c3RlbTo6bWFwVG9GaWxlKHBhdGgsIGRhdGEoKSwgc2l6ZSgpLCAmaGFuZGxlKTsKICAgICBy
ZXR1cm4gRGF0YTo6YWRvcHRNYXAoV1RGTW92ZShtYXBwZWRGaWxlKSwgaGFuZGxlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2EwZWM1ZTE0ZjMzZGUwNDJjZGY0NGIwZmJh
NDIzY2M5ZGQ3YWZjNS4uN2E5OTYxNGYyMzM1YjE1MGM5Y2FiMjIyYzkzNWQwYmJlZjY5YzgwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02MiwyMyArNjIsNiBAQCB2b2lkIHRyYXZl
cnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgRAogICAgIH0KIH0KIAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0aCwgWyZw
YXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAg
ICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aCwgbmFtZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIERp
cmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdG9y
eUVudHJ5VHlwZTo6RGlyZWN0b3J5OgotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBUaGlzIGRv
ZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Ci19Ci0KIEZpbGVUaW1lcyBmaWxlVGltZXMo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVT
eXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5oCmluZGV4IDdhNWY4Y2M0ZmUzOGE5NTYxY2UxYzhiNjFjMTBjNzQ3OWNhODc0
MmYuLmMwYjRlODFiNDczNzVhMDdmZjk5YmViNDIxMGRhMDE1ODIyYzczNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5oCkBAIC0zMyw4ICszMyw2IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewog
ZW51bSBjbGFzcyBEaXJlY3RvcnlFbnRyeVR5cGUgeyBEaXJlY3RvcnksIEZpbGUgfTsKIHZvaWQg
dHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYpOwogCi12b2lk
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KIHN0cnVj
dCBGaWxlVGltZXMgewogICAgIFdhbGxUaW1lIGNyZWF0aW9uOwogICAgIFdhbGxUaW1lIG1vZGlm
aWNhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGVkZGMwYmUyOWUwZTJjNmQyMDI1YTk2
YjI1ZWMxZTU2YzQ4YWY4ZDYuLmRiNGMwNTQ5YzZiYmViODAzYjY2ZjBlMzE0NTE5YmU1ODI5MjVi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9D
b25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21O
dW1iZXIuaD4KQEAgLTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVy
c2lvbnMoKQogICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAg
ICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9s
ZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRo
KTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZl
cnNpb25QYXRoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5ZTMxMjk3MTk2ZGExMTU1ZjBi
MjJjMzE4MGEwM2M4MzA0ODZlMzcyLi5mNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYw
ODk4OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3Rh
dGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVuY29k
ZXIgPDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHVp
bnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZl
clNpemU7CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTIg
KzE0OSwyNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAgZGVj
b2RlciA+PiBpc051bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1
ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNWU4ZjcwOTA2MWI0MmQxOGFjOTY5MThl
NTk4ZmQ4MjE0MGM0MjhjZC4uMWUwMWE1ZDRlN2E3YjgzMTRhMjMxNGFhODdmNGRkMmRkMzJlYjEw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjg4LDcgKzI4OCw3
IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBz
Y3JpcHQuc2NyaXB0LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsK
KyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiYjRlMDFmYTBkNTEzZmQ4ODgwODE1NDlhMDM0MWY5MWEz
ZmVmNmYuLmE1ODc0Mzc0Nzg3YzViYjdiZjhiZTY1MTg3Njg2ZDY3ZDgxM2IyZmEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29y
ayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUz
OiBSZW1vdmVkLgorICAgICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtl
ciByZWdpc3RyYXRpb24gZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRl
ZCBhbmQgaXQgaXMgYSBwYWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBpdAor
ICAgICAgICBoYWQgbm8gdGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3ZSBu
b3cgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBsYXRm
b3Jtcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vydmlj
ZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNlcnZp
Y2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2Ug
aW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBkYXRh
YmFzZSBzY2hlbWUgYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUgdGVz
dCB0aGF0IHdhcyByZWx5aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFiYXNl
IGZpbGUgKHdpdGggb2xkIHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWljYWxs
eSBnZW5lcmF0ZSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0IHJl
Z2lzdGVycyBhIHNlcnZpY2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjggIENhbWVy
b24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgQXNwZWN0
UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgZm9yIFdlYktpdExlZ2FjeS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjZlNzA5M2I4ZjE1MGExODE4ZWYyZWJiMjNiNGI0YThl
ZWNiODE1NS4uYzdhYzE0ODdhOTEwMmJhNTJiY2JkN2FkY2I3ZDc4Mzg1NDQ4MDgxYSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI2OSw3ICsyNjksNiBAQAogCQk0NkE0NEE1NDI1QTc4MzAz
MDBGNjFFMTYgLyogd2ViYXVkaW8tY3JlYXRlTWVkaWFFbGVtZW50U291cmNlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDRBNTMy
NUE3ODJERDAwRjYxRTE2IC8qIHdlYmF1ZGlvLWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1s
ICovOyB9OwogCQk0NkE0NkExQTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE0NkExOTI1
NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gKi87IH07CiAJCTQ2QTkxMTU5MjEw
OEU2NzgwMDc4RDQwRCAvKiBDdXN0b21Vc2VyQWdlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE5MTE1ODIxMDhFNjZCMDA3OEQ0MEQgLyogQ3Vz
dG9tVXNlckFnZW50Lm1tICovOyB9OwotCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2lt
cGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTZBNzU3MjBGOTA1NEYwMDAy
RTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi87IH07
CiAJCTQ2QkJFQTFCMjVGOTgzNTcwMEQ0OTg3QSAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNkExNTExQUFDMEIzMTAwMkIy
RUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCTQ2QzFFQTk4MjU3NTg4MjAwMDVFNDA5RSAv
KiBhbGVydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzFFQTk3MjU3NTg4MDUwMDVFNDA5RSAvKiBhbGVydC5odG1sICovOyB9Owog
CQk0NkMzQUVCMzIzRDBFNTI5MDAxQjA2ODAgLyogYmVmb3JldW5sb2FkLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDM0FFQjIyM0Qw
RTUwRjAwMUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sICovOyB9OwpAQCAtMTY1OCw3ICsxNjU3
LDYgQEAKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTIu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIzRTEg
Lyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJCTQ2QUU1QTM3MjBGOTA2
NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNr
aW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5RkM5RTQwMDUyNzQ4MiAv
KiBTcGFjZU9ubHkub3RmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjA0Myw3ICsyMDQxLDYg
QEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8q
IFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3Fs
aXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2NTZBNzU3MjBGOTA1NEYwMDAy
RTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0g
IlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERF
IC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25D
b29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUu
aHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMzcsNyArNDAzNCw2IEBACiAJ
CQkJRjRFM0Q4MDcyMEY3MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25l
LWFydGljbGUuaHRtbCAqLywKIAkJCQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlm
aWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLywKIAkJCQlDOUI0QUQyOTFFQ0E2RUE1MDBGNUZF
QTAgLyogc2lsZW5jZS1sb25nLm00YSAqLywKLQkJCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYg
LyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovLAogCQkJCUY0
RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1h
dWRpby5odG1sICovLAogCQkJCUY0Q0ZDREQ4MjQ5RkM5RDkwMDUyNzQ4MiAvKiBTcGFjZU9ubHku
b3RmICovLAogCQkJCTkzNjAyNzA1MjVBM0IyOEUwMDM2NzY3MCAvKiBzcGVlY2hyZWNvZ25pdGlv
bi1iYXNpYy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcAppbmRleCA3NmNhZjJhZDQzNzI2NjNkMmJlMzExYmNmYjYzYTA0ZDBjMGQwMWY2Li44
ZjY1MWQzZWFlMzQzMjk3NTFhYzM2MWRkN2UwNjRjYjYzN2UzNzUyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMTUxLDQgKzE1MSwyOSBAQCBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRGYWlsSWZGaWxlRXhpc3Rz
KQogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpOwog
fQogCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KQorewor
ICAgIGF1dG8gY3JlYXRlVGVzdFRpbGUgPSBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAg
ICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVz
dERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAg
IH07CisKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsK
KyAgICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgiZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGUpOworCisgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiB9KSkp
OworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxl
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVy
LCAiZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZp
bGUzLnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGU0
LnR4dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVj
dG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAg
IEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIp
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3YzczYTg0MjJh
NGM0ZThmZjdlNjEwNWU5ZTg4MGRmLi4yMzc4OGVhZTE0MzY3YWUyZjFhNDE2NGViNGM5ZmJhMTQz
MDk0NDcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgVEVT
VChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZXNzKQogICAgIGF1dG8gcGF0aCA9
IHN0b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LnBhdGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpw
YXRoIGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01
LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJd
OwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgVEVT
VChXZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVj
dGVkU2NoZW1hKQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKIAogICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQ
YXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zLTUuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXSBlcnJv
cjpuaWxdOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwpAQCAtMjM1NSw2ICsyMzU1LDc3IEBAIFRFU1QoU2Vy
dmljZVdvcmtlcnMsIENsZWFyRE9NQ2FjaGVBbHNvSW5jbHVkZXNTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucykKICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKIH0KIAorVEVTVChTZXJ2aWNl
V29ya2VycywgQ3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCit7
CisgICAgTlNVUkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5
L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3Jr
ZXJzLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOworICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOworICAg
IEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNB
dFBhdGg6c3dQYXRoLnBhdGhdKTsKKworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rvcmll
czpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKworICAgIGF1dG8gd2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKKyAgICBh
dXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTpkYXRhU3RvcmUuZ2V0KCldOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMo
W1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRs
ZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZl
cih7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAorICAgICAgICB7ICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICB9KTsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICB1bnNp
Z25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdICYmICsrdGlt
ZW91dCA8IDIwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAg
IEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0
UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdKTsKKworICAgIC8vIEZldGNoIFNXIHJlY29y
ZHMKKyAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
XV0pOworICAgIHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsKKyAgICBbZGF0YVN0b3JlIGZl
dGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Cisg
ICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOworICAgICAgICByZWFkeVRv
Q29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAgIC8v
IEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0
byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisgICAgW2Rh
dGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVj
b3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAg
ICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBkYXRhU3RvcmUgPSBuaWw7
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIHJl
YWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRzLCBy
ZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVz
dCBpcyBpbiBmbGlnaHQuCisgICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0
ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBs
ZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAg
fV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAgIC8v
IFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFjayBz
aG91bGQgaGF2ZSBiZWVuIG1hZGUuCisgICAgLy8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMgdG8g
dmVyaWZ5IHRoZXkgYXJlIGdvbmUuCisgICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09m
VHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8
V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VR
KDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUp
OworfQorCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2FjaGUpCiB7CiAgICAgW1dL
V2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNx
bGl0ZTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMDVkYzQ2ZTNhMmNjZWIzNGVm
OWE3NjhjZDA5ZWIzZDhhZjI0MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjA0
ODAKemNtZUhPY359IXkqVXZfUDVNJmpRTWFQOXJBaH1fOExxZHB2dldTMnZCNkxVd0dNYkg8Ml5j
TF5xb1AqcGc4UFB1CnpYc3VoLXk2Kn1xUiZDdl9iPVNKclQxQmdNc28kTjFBWHI9NEBBO25oZDtp
R2JXYlNoQUo/SC1KejMwdzNYVXNAWAp6I3dpUmIpRFM5XkxjJG8xMz5KJEtpeSNhSmc5VUZaYyQr
VUtPbU5IQF9Ad2kjVGBZem05STx6SiR6YSg+RnpoMjcKemo8KGpvUWcxPVBmYEExOTNqITdkRUNe
VC11cG5TVHo9RDdVZiZWSDVDTzkjei1NemUrbGwyckBwdWA0WEc3VFhvCno4eV9zbTBJNGByaWUh
cjhsQkd5dkFyZGVnKDw3UEVMNzdOdThvYVpUbGFhSmtNM1I9O0NwayV5aVMhWENCX21tPgp6TiRG
WUE3VWN0XntnY0hLWCl2TjhARkhCQE4pTiNaRGJyfU50TzNjYjU+Z3MlK0NTQDNpSVA7N1IqcTdi
TTFqZU0KelhXfVhoaUJIUi0ybHRtbDJ9WDNyNzZXbHFnMzEoRnRLeUl7MEBxVWlMfnMqanN+d2hW
aH5YSEtzbkBwN1RjJU17CnpuM35HS1dJNig7XiErdFRUJjczamxHRWI7WmghPDxoIUYldkc/TUBR
KVkyMH00eyFpUllJS0FRT0ZefSpHTFReZQp6ZyV7Izcyei0qZFB9MiYxVTxpeHJGN3skRmFKM3Y4
S143fmFSaUJVUUQyKnxuLT8kOShNVTRxSSspcDwycDBiQkcKeig+OXBffDUre3owdX1AOzJ2YHVY
QVllaGpmYEEycWV+R3tlVSMxZm8pZ2o4LURgVTJjUn5MS2x2RXZkSTZzMEJlCnpSZFRoVTImV1hm
MHMqZWMmbz5yITdZYlZ4MygzK0QzTGAxdUtkQWtuTG08OXoqdzZMSzVUN0tLUnpwemEtfWdZNAp6
M1drdityWXNib2E9RWt3eldPSFBCenl6TGh5Wl9GTztWXio9XnU7fj5lTW17KlFmKDluaiNQeCNY
fUhkUWMjTkcKelJGO347bD54OF9MMWdwYEp9SDI5aGRSSyZNQzJiUnBjRjlLKVpTUWNZRVAzQjde
TmZCcmRHNTdWeD0tKmhfTkhPCnoqMXJoX3xLTmBsOGVlN3czUTdlZns3NXhQPjZNczNNdkA8YE1Z
VVF1QFErc0VEenBkLVE5PkMwaVVQdHlncHtITAp6OEtUcV9YI35UeE1JWV5gMiFlK1pkU1FWXnI+
NjlZQENQSHZSO2c4Yjc9KXZnKmcjWns1dkB7X1lFNVktcEBEIW0KemNITX0/KDcrelhSOVBUPXo7
cWVCZDREbV9nJX5BTXtPdjNnN14mNSQ8PUpyNjF+ZzdGajFiQmNydTg1b3V3b3J0Cnp0UkdJY3NU
R050PVVYVD11TWJuPkttPThtcUl3YzgxNSU/YiFBUFVUa2c3bU9BPCh7K3AoS1dBM0szRSNsVlBO
aAp6M2B6bVpOXnp3VVFKXklsUWkzWFZuNlZqTmh5PDchQXt+NDZMVWhwZkRhNiY3K3wwZ2R4dFls
dDVrZkV9PzJ9JjcKel53cWN8amhPdUhAWlBnfiZqM043XnljbW42ezwlSEZob2FVYXp2dzY+Zncq
ZkJyTUdjUWtHKGY4aVNSVDF8akx1CnokZG5wMk0oNEI7MDZHWmBjKWJZO3hVQ3VtR2AyKzVhKWlW
UCpvSzd1MkFGfT1QNCFCUVk3IzxYPzZPeD1VU1EtQQp6KDZ+QmlJaHZaYXZVZF5GJXJfcnc8OS0p
RmFhJSRhK3tEa3d6Wm99cjlueElzc31YODVVZ25Dakttb0xLO28+ckQKejRKNHBCKTg7eVo2cXJg
aGRyZXs5YkFSNE5PXm5TVmx0RHF0MCUwKi1BYzM5QDV8XjJrZTchalZwTEZQKHpMK052Cno8Qzdz
V0FWK342cDk9LW9ESmQzezEwNEJ3czlMN2I1TSZ5aFhDeypZb2NQdnFqNiFpRzNBaUUje1JpNmU5
aWlWeAp6cmErLXlnXkVzN2lwaU53Q2d7VEZtMCQjM3NFPiFueUB5KlUybjhUMkcqcnxyeWp4ZnxL
XlcqMyhKZUZ3YDArVjcKekgyZypGZmo4ZT5eND1TZU51WCp7aXhRWXgyS2gzOWYlJC1NWWV0bFcq
LUlQKV44JFJIO1Z+SWkySWdeP3Rtb1BXCnphaFg8RClffT1gd0w0KFo3NjZDRjtuQWFuVlI9aHIt
WmFzY1VrZF5qMVN8K3g1VT9PJUxCTjg1MXB4fko3NmRFXgp6U1AteHZATCFFVUIlOEdUVXBTbExu
NUBRRFI9YVVyKC1yUyNlOWZ9Zl4qbndObE5WR3daeSF3YkBOaDhzQ1BkTDcKekRtKitRRGhINkQ3
JGdCKHUyb1BRSHB8bkIhRXljR0A0M2dUcW59Tm1gYzIkKlp7YVk8JTR6dyRrTjN1TVdGXkh8Cnp6
cDlNTjNFNmVuWFNUJVFgIVMzXmFqMEBLN2xsVEUkY1N6PFErdXYkKllkPmo3eHFsMW9mVSZeZlpt
bz18MkRadgp6MTtAT1hQSjRMQmtBM09ZaUZ4KVI4eH5KaTRRZmNkX3BWfip4MW1ZTC1FUiUtZTgx
UDZtcStqQmhvNXVpaFB+M2MKekJ0MWc8dytXUXBScmhzVEokQnhTIzdVPFdaTz9EfCMmd3ozI2Fs
Tis1QUpYbyl1dFY+Q3dad3k8bnNrVEVaRUJrCnpAOX1jJT5fSV9zc3A5X3BqYjFPSngxTCVRUUBk
TURJcl5uZjRRVl4qbDtgSG9ufTJoZzg4QFRJRmU+Zl5PRTklbAp6PX1xOWM8bS19N05yVEpzMlIj
VG9hQkJSdXkqaiYqUXp5RmpYTGIwNmRSNl42PDt5bzwoTl88YS18Y2c3ITYjbiMKeitUSE5qe2Qj
Xn4oNmtAPGhwdlYlP3BkNGhgMVI0RSlpPiloWWAofmQrQGJsUnlyTG1DWHpjaWtuVWtpNVN1SzNW
Cnp6cCRjeHA5NWxHVUA3QEZUS1pjUjlEYDBEUi1WWWYkXmkpOTElQWgzYFg8SG5ufkpKMXpBWl5B
R2ljdS0wbGlCNgp6Q1c8cyUmVVhfRExJdSZgS3AreEBNVFNLUEw7eG5DNTZaeWVeWC1sTz4oakoh
QWI9RFpuN0BOSWVBXl4+R09pdkQKejlwPCQyM0EofHVGPzR1OE9yTD58Rz9xQj8/TTx4MkkhWW4h
bXFrOy1HTVh2X0ZIKW4+e2NvZ207a1FYM1EwViFGCnp1P0tsRmg4RUk8dTYmMCRCYE8+S3JfeGw3
VEJfMWdgVjN2Y0ZpYnwjdzl2VTBoZThMUTFqPEdjKDhXZlBqbTRRNQp6OVMxPmAxNXFVfGhvQUom
I3FOQSgzSC1iVmVvdiM2aikyaClreyVMVztsKzB8KUFmZj1JZ0xDODlmN05LRHIyUUwKei0hM0J+
SVo7RFdZOHByVDc3LWlURlBFVyo7O1MrVjlYJCQzPF5icHgjfGV7e3VMSXdANWYrZ3Z1O0hgOUxz
PXt2CnoyQXpydVczaXlhdW92SWFEMmcxREwmN1cpTEo5Jm8zPVN2RCRDdHNlRiopcW1PYiFwR0k3
fndua0ltLVRlb34mdQp6RVBvbHRWRkQlT1pVIV9GQl42PzI1JlRNd1FtOUNmJlViRkFpcFB0ZnFk
cH0qXmRue0FBMVJBfk9VVEA8c2NsQjAKelNPZzR3SGxOP0BuPFRqQT80RUU4KjVTWmw0UzwyYFFO
P0M0UyUyUSpBOGNOcjcxPUBjIU9yNHZVMDdLZXFQRDw9CnomaFQ5TGtRWXZTSWd1b19Pdzxteik1
VWYhai17b2cweShVclNxbyR1bH1IRmU9cWszMFVzRFN4VT9gR143YnlAaQp6TiRRfGBSRThtQEhI
YipXcHVNfDJec2hvPzAqcUc8JSFZeitRTWQ/fTArMGlTd1VvI09JTU15dnhiUCUhYE4wMWUKenJO
JldfOCpycnl0ekdPaFAmTHdyV2BWPFI/VjU/N2ZLIVJPZj8hJkRmeWY9U0hPYmg5N1FacF8yWmVg
aipHfG09CnpWSCZsVzB8Uz14U2hRTig2d35XTFh4VlFzI14/VFd6U0w8KChlQD5xMThhJU1WZENw
SWtGRCRXREE7fWE8I0ZrUQp6QTU3JSt0fmQwMkV0dEdBPEApMV9gIVJGdnIqKzs/dT1IcmZvSkJR
YEs0LUk1Pj4oNnk/K3AwOHI9VmxgWWhWQSEKejR5MSY/clgod0dLd156Zz90T09UPlJzSFJIZn5H
eXJBJWRzPUgzKEJ7Wi1tTktnanZubEYmKWYhR1ZpTWNYe3tSCnpDdWgtX0ZfU2ooM3gwP1Z3JShU
VGdZJmRyUT90aEBzJExHLXBTR3N2JEB4eG14IXpHZSp9WiFOKW41eFojY3QxNwp6QH4rbDRzMEB3
UklsNGh8e3FlUSNRQHpYNzhJUGxAJiNuelc9Q0ZSWVhXY3Zab20qQyohaz9UQDl5JjQ4cyQ+JEcK
eih5JDBqelJjZnBxKStHaXM0fk9MQyExIztXM2liRz01aG8zVFZQLXgxfDEtWEtBa3hwei1gUCZr
MDs8bTZTVSNMCnooYCN4SzReT3h9SWRudEhWSkIlcHpOY18qWUlpVi11NkUqM2ZHflY4NWU5ek9Y
NDdLZXlgTGgzVH5pSU5HMXhYbQp6WjRLX2BhdjBucDhvd0UmN28/JUJpUk9jMSgxdkYyeit9R1Rh
TSYhWER3Q3xmOUN7QCtaU0FITTMrUU9fNGplVTUKemc3QikpRG9fcj9vUmsmQGlEaVRgdGk9dXhr
X3QzNU0xaDd0SWlOLWxEVCkrOG5tQE0rfDBrYElYfEBQUTNNMyRrCnpZZj4oNmx+NX5vMXAjS15T
V0d1PmI0MjtXLTYpancmajI9RFpxWm1pLTI3bmRJQ0NReVcrKCtaKDhaaHcleU4mJAp6MGNtOFV3
dU5YUXJIUDdGRTtiSnZyRlQ1cGY+M0RRQCRgbkxfan1XSkh8PShiNyRRTGRLMFBLRThoSTk9d15r
WH4KenEoUlQ/U3NXSU9leUhHJEdtOTd7ajZOJX05X243ck04S0JuJEBzSHxHTilpTXdmQWsoXzZj
akF6Un5gbk5gU0dFCno7KWxXeFpaSl43VytWVjl0MFV2PzwoOylaZFJGb0g3aGZNKlFAeUhlIXB3
PXU+NUNAQkoxd3s3VVNndCZFWDF3WQp6JnR3MGlqJmxkKGJiQjwjKlghNiRCS19gfEZ3TF5DdGxJ
UkdUZWBucz1vcD0oUXRRRTRUP1dxV3ktZkp6Z3t1NXwKelhGdTd4e3J5R3tKdj1UfmViV0prcEo9
fUFfWmoqMjByNCFQJl5mdyNTPil2bD97MyZrey1OViUpMUc+d2NNUFg4CnpLYmR1U15NU0gxOEpB
Y3tRT3VKb3ZsMFZzLUZoeWNmVW5yYmM0d2FLZEJiaTB0OHBIM14tJW56NElGT3pAKHNgNQp6R1dD
bEdzPHVhc245aT5tZEVDcVkqbyg/WmFTUUdMSTZLQWFjSD9rdW59JjxIX1AmPyZTdShPTj1SeDRs
Nlo2KHkKemlPfmY5ek09Y28pV2BGX0ZScXB5djRlbS01PU0xIWxJbT53dWJ6S1BSYWw/dCp6P3pt
QDdEVip7Yn14LWk2ZD5aCnprMktlSj1DP09TIT4qXmpaPTctMXVYYTNzQWZaczw9cjtLQkpJe0dy
bWlKcUFFQWElYHUtTWhsJDdYdiZacj9HUwp6NW5zJWptNn4qV3xJR3Q9KzYjTn4qNyRPPmNWNCsp
TX0ze1NBaFAyMUNqTyZTY0t6MXR1MD0yaipOcz1GU04xNHoKelNhSWNEKkckJjlGNztgPE44YUhp
aXNqZSFNZUZCMGl1JEdeODVATXpoQVM0PEJBMHhKVVlzcEYpdHpaRzM5VSg3Cno7bz8qaDZURGUl
bkRHPVpeSUpjN1VELV9jMXJKPExDZF87RFoxMlhxe25xfEdlQ31OSWxgfCZveElPPXdXYjtLdgp6
bDxsRCYlOU1mLW5mM2ZIVF58T2EzKztwdlpNJnJnaWd4Rns/bFI9eygpXzJ0N0NjPEo8TVcjS0d3
bEN4VkF0KTUKenp4XzVMOGpLPWxBPlhZWXY0VWdaWXlrJCZNeVRaJEdAaEhCOCtVNmk9UlIjdj9H
SzlFS0Q2ITk0YDJoem1aI0xlCnpLUjFJd0Fsdyk1LTBXb0RNSVJvUyh0KmVUamZRR0dHZXV6ezBB
ckctTGxUfnUoYW9+fDUydHUqQytGN2QhaD5ENwp6XihzI09nfnZRT2NULXM+S2c/fT9UPG9JbkUt
emhMVmpXV3B2TD8zTWt2NitjJmc+M1oxMi1SSmJeWkZ9ezlvKjEKekZWdm12TERhaWVLQXk0Qj44
dGdwPiRnan5VJG5EM2NXJXp9KnN0cS05O0diSyYpIXp2VSRObCU9UmNsNFYlMV5RCnp5clkrRUhY
Nm88OUEzOSNAc1cwaGxAbEVEO3M8cSZuKktLOGlKZ3NxWHdMSXBRen5vcnFAVlBeZDhKMk8qbUEz
WQp6eD9LVXM3cEBLSlkoTGBnczVeUForeG9gWHlkSnlGJjI4Q3wmZHc+ZkZJM3A5KXp2S0NkQlN+
RGB9aGNLYmNTIVkKelF7S0ZWR091PE9sITZ5XkBaZjtOVzhIRzl4ODR8Zjs3UyM7eTxfeihLYUZl
T2peWlBhUkV3U18zTER0WnN9JlUpCnohbnw5SkNucXhyRG0qRTBaYz4zWmZEMUp0e2txeFdLd180
K2J8OGhEbGA+VDIwbEBEY3NgN3BgO3xgcDc1Qz53Ygp6VnliJFVjUUA7RUxpeGRnV0x9MFg2dUVS
RHkjJFNsVG5UIzdvZ3RoXjVEcjRRQFUwa097SHReNntvQkZFWX0qIVoKejdhTD0wYXJWbzczQ3kk
ZXtYQWAwazdlP3ArN0VXMShkX2oyZTltT3s5bzRubUgkSTk3ZVcjQipwRHo0amMpVk5YCnpUR3tp
e1lVVEleUSZ4e0g5eld6IWM8UDMyYGlqOGdBIUNPOUl0e3NAdWxhK1c7UFQqa2BMfjBNJWJzIU80
bkgkXgp6UF9JQUVoPHROQnFRQGA0digpZio+WDctTylEdDVySj5PMF5tYkNoKnxDOXk5bzAhJC0j
Q0FXUGkoSXpQVGIrPEoKeklgM2xRcnxnU3dyekJPKV9sdHt0YylyNF5NJFhJNXRiNldyb3xRTHo/
SnNwPjdDSUJKMkZ8K2haWGNNeTFeZXRxCnpyQHFVIVRHSGp3Z3hhOWpEfE1eWmhQWFgwKUJBNkZj
eU5pR15ARyhEJk09b0YwYjwmeEY8MjZDZGhEJiR6eF9PXwp6TjlvcXNmLXpRTkRmNipBSHxGYTh1
dGh+QFB5c1JWQztXe3dCUmpVZV9JZGxHbn1OYU1EQnNIWFEzRml3d2IlZW4KekNRTzNHMkMmIXcl
fWolcUQlV0JJU1pufWA0YmJHbHdiJWRfOHtsN2hAKz54aCNSam4wMFJRSlV6YHVPfD1OUTtXCnpx
MnVCWjM9eXB9Sk4/KEBgVkYmLVR7UFdKfDgjdkgtX3F1JGxhJj9ZS2t2SyVrcz1Ye1dFbjUkQERH
RXpydEUpTQp6biUwIW87cDRaLUpGbX5+eCpaWXt5N0pvWHZBdkk7QEotclUrX209SD9DXyMkcDco
fSlkfVp2JHheMGBMcFBYT3cKem0zVk9YR25aJGQ/fEYlZXVJWU9gI248cW4/fWBsUD13Qkw9Uksr
dHRsV2txSUdRWU5Ge0w4ZTBedH4/K3tkXzY5Cno7dWlPfCV9am4+Zkg+Pip2N0VfbUtQJGMkdWBo
K04/WHxhaWJwSWl4QkNqdkxJbnFWQ0BYTkktaEhET0krZko4PAp6PkFkLTNhaT4lYW9qNnc5ZjJC
VG1eM2BeSXYoRXxjNEU0P2t7JXJtVVBwKF55Zjs8X3thbWlnKWQ/eDQ5dFY/PEYKejgmTU8lSyti
S2EmNEZXX3BYaj95cyVBTlQ+Ui01Uih6WCMjenZab3BVYy18ZysqZGVzJmlEaCVlQWBiUD5lPTU4
CnphWHYySXJNNjN0LXJsZCM8dTN6aCVlUTZkcG0xbiVWcHN0LWJZZTdmX2tZeDBaeXFsQUNfJUcw
R0YrOExnV2xWZAp6Sk1aI14jWT1sbUQmKlFeY2Y4YXc7YnFzTiklIWRgT0pXX2Y0fTlKKkB9ZChx
RSNnKD44fGp3SGleLXlYK2heWEIKejFXKV5CI0NNbCZXJDI1fi18amVAYEQ1MF5nPGEmb2VPYEZ7
PmYpI3F0SEwrcGkjcGQ9al80R21tRTZpbzVUV2ZKCno0Pn5rS208b1FZNjFqRCp6azNzTjNwPSpZ
KTJwaTIlV3cwaGheQm1FR2RZQ00lXmszPD9zd2smUSpIQj9JYDkyNwp6UVdtYEB6R24xS2VuR3N0
ZEFSLWtzVzxtS1deYj1BYWh7cD1HIWcke2NVUlVCaHhvSUk9K2QqRFRFQyQpS0I/VEAKeiYpcnRJ
YEI7MDI7OzZPJWZ6IUQhOSgzSEhhOS1TVkB4SUQ4VnsjWUNQVytzKCtTazlSRHlvNUREOWdPPyl5
dys9CkxtKnU3Uklgc1Y/LWJ5Kl8KCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tCmluZGV4IGY2MTZhNzRiNDE3ZjYxZTlhYTNkZDI1YzhiZTg2YzllMmEyZmQyOGEuLjYwYjcy
MmMzYzk0OWM3Yjg1ZTY0ZDJmM2RhNmJmMzU3YmM4MGJhZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURh
dGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0yOTAsNjAgKzI5MCw2IEBAIFRFU1QoV2ViS2l0LCBX
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNXaXRoUHJld2FybWluZykKICAgICBydW5XZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmc6Olllcyk7
CiB9CiAKLVRFU1QoV2ViS2l0LCBDdXN0b21EYXRhU3RvcmVQYXRoc1ZlcnN1c0NvbXBsZXRpb25I
YW5kbGVycykKLXsKLSAgICAvLyBDb3B5IHRoZSBiYWtlZCBkYXRhYmFzZSBmaWxlcyB0byB0aGUg
ZGF0YWJhc2UgZGlyZWN0b3J5Ci0gICAgTlNVUkwgKnVybDEgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNCIg
d2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07Ci0KLSAgICBOU1VSTCAqc3dQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpb
QCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJLaXQv
U2VydmljZVdvcmtlcnMvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXV07Ci0gICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6c3dQYXRoIGVycm9y
Om5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpzd1BhdGgucGF0aF0pOwotCi0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpzd1BhdGggd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGgg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMt
NS5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKLQotICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKLSAgICBhdXRvIGRhdGFT
dG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAgIC8v
IEZldGNoIFNXIHJlY29yZHMKLSAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtb
TlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zXV0pOwotICAgIHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsKLSAg
ICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRh
dGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOwot
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKLQotICAgIC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNpbmcg
b3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBm
bGlnaHQuCi0gICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0
YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRz
LmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBk
YXRhU3RvcmUgPSBuaWw7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29u
dGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwotCi0gICAgLy8gRGVsZXRlIGFs
bCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3
aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgZGF0YVN0b3JlID0gYWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIHJlYWR5VG9Db250aW51
ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKLQotICAgIC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5k
IHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCi0gICAgLy8gTm93IHJlZmV0Y2gg
dGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCi0gICAgZGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkYXRhU3RvcmUgZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAg
ICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJlYWR5VG9D
b250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWFkeVRvQ29udGludWUpOwotfQotCiBURVNUKFdlYktpdCwgQ3VzdG9tRGF0YVN0b3JlRGVzdHJv
eVdoaWxlRmV0Y2hpbmdOZXR3b3JrUHJvY2Vzc0RhdGEpCiB7CiAgICAgTlNVUkwgKmNvb2tpZVN0
b3JhZ2VGaWxlID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2Nv
bS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9Db29raWVTdG9y
YWdlL0Nvb2tpZS5GaWxlIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9y
eTpOT107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424604</attachid>
            <date>2021-03-29 17:05:52 -0700</date>
            <delta_ts>2021-03-29 17:27:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210329170551.patch</filename>
            <type>text/plain</type>
            <size>107314</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0NWRiNmMwNjEzYjg3ZWEyY2FiMjRi
ZDNiNDNkMGZhNTdjZTlmNjQuLmEwOTIxMzhjNGI3YWZkNjVhNTg1ZjliNjJlMDY4Nzg5ODMxMzQ2
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
ICAgICAgICAKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTAzLTI4ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIEFzcGVj
dFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIGZvciBXZWJLaXRMZWdhY3kuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMmJlOTY0ODEwMGUyMDI3YTIyZDk3YWMzMzhmZjZjODUwYzQwNGM0Ni4uNjhh
MDUwNmQ1Mzc2YWJkMjQ0Mzc0ZjA5NmRhYzFlM2RmMDRkMTM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2NyBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0
aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgbmV0
d29yayBwcm9jZXNzIHdvdWxkIHN0b3JlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgaW4gYSBTUUxp
dGUgZGF0YWJhc2UuCisgICAgICAgIFdoZW4gc3RhcnRpbmcgdG8gdXNlIHNlcnZpY2Ugd29ya2Vy
cywgd2Ugd291bGQgbG9hZCBhbGwgdGhvc2Ugc2NyaXB0cyBmcm9tIHRoZSBkYXRhYmFzZQorICAg
ICAgICBpbnRvIG1lbW9yeS4gVGhpcyB3b3VsZCB1c2UgYSBkZWNlbnQgYW1vdW50IG9mIG1lbW9y
eSBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3Vl
LCB0aGUgYXBwcm9hY2ggaXMgdGhpcyBwYXRjaCBpcyB0byBzdG9yZSB0aGUgc2NyaXB0cyBhcyBz
ZXBhcmF0ZQorICAgICAgICBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkLiBUaGlzIHdo
ZW4sIHdoZW4gbG9hZGluZyB0aGVtLCB3ZSBjYW4gc2ltcGx5IG1tYXAoKSB0aGVtCisgICAgICAg
IGFuZCBncmVhdGx5IHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgTm90ZSB0aGF0IHRo
ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzICh3aGljaCBtYXkgYmUgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcykgYWxzbyBrZWVwcyBhCisgICAgICAgIGNvcHkgb2YgdGhlIGltcG9ydGVkIHNlcnZpY2Ug
d29ya2VyIHNjcmlwdHMgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlcnMgaXQgaXMgcnVubmluZy4gTW9y
ZQorICAgICAgICB3b3JrIHdpbGwgYmUgbmVlZGVkIGluIGEgZm9sbG93LXVwIGJ1dCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBleHRlbmQgdGhlIGFwcHJvYWNoIHNvIHRoYXQKKyAgICAgICAgdGhlIHNl
cnZpY2Ugd29ya2VyIHByb2Nlc3Mgd291bGQgb25seSBoYXZlIGEgbW1hcCdkIHZlcnNpb24gb2Yg
dGhvc2Ugc2NyaXB0cy4gVGhpcyB3b3VsZAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9u
IHRoZSBXZWJDb250ZW50L1NlcnZpY2VXb3JrZXIgcHJvY2VzcyBzaWRlIGFzIHdlbGwuIEkgYW0g
ZG9pbmcgdGhpcworICAgICAgICBzZXBhcmF0ZWx5IHRob3VnaCB0byByZWR1Y2UgcGF0Y2ggc2l6
ZSBhbmQgZmFjaWxpdGF0ZSByZXZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGVyZSBz
aG91bGQgYmUgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UsIGp1c3QgYSBkZWNyZWFzZWQK
KyAgICAgICAgbWVtb3J5IHVzYWdlIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBzZXJ2aWNl
IHdvcmtlcnMgYXJlIHVzZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgU1dTY3Jp
cHRTdG9yYWdlIGNsYXNzIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJBZ2VudDo6Z2V0SW5pdGlhbGl6YXRpb25JbmZvKToKKyAgICAgICAgQ29udmVy
dCB0aGUgc2NyaXB0IHR5cGUgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIEZpeCBhc3NlcnRpb25zIHRoYXQgd2Vy
ZSBoaXR0aW5nIHdoZW4gY29tcGFyaW5nIHRvIGVtcHR5IFNoYXJlZEJ1ZmZlcnMgKG9mZnNldCB3
b3VsZCBiZSAwCisgICAgICAgIGFuZCBzaXplIHdvdWxkIGJlIDApLiBUaGlzIHdhcyBjYXVnaHQg
YnkgQVBJIHRlc3RzIHNpbmNlIHdlIGhhdmUgc29tZSBzZXJ2aWNlIHdvcmtlciBBUEkKKyAgICAg
ICAgdGVzdHMgdGhhdCB1c2UgZW1wdHkgd29ya2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgQWRkIHNvbWUgY29udmVyc2lv
biBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIgdG8gdGhlIHNjcmlwdCwgYW5kIHZpY2UtdmVy
c2EsIGluIHRoZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjYXNlLgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JpcHRCdWZmZXJUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpbmdUb1NjcmlwdEJ1ZmZlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgIC0gU3RvcmUgc2NyaXB0cyBhcyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcs
IHNvIHRoYXQgdGhleSBjYW4gaG9sZAorICAgICAgICAgIG1tYXAnZCBkYXRhLgorICAgICAgICAt
IEFkZCBzY3JpcHRCdWZmZXJUb1N0cmluZygpIC8gc3RyaW5nVG9TY3JpcHRCdWZmZXIoKSB1dGls
aXR5IGZ1bmN0aW9ucyB0bworICAgICAgICAgIGNvbnZlcnQgc2NyaXB0IHNvdXJjZXMgYmV0d2Vl
biBTdHJpbmcgYW5kIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIENvbnZlcnQgZnJv
bSBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICBVcGRhdGUgZGF0YWJhc2Ugc2NoZW1h
IGFuZCBidW1wIHZlcnNpb24gbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIHN0b3JlIHRoZQorICAgICAg
ICBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaW5zaWRlIHRoZSBTUUxpdGUgZGF0YWJhc2UuIEluc3Rl
YWQsIHRob3NlIHNjcmlwdHMKKyAgICAgICAgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IG9uIHRoZSBm
aWxlc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkltcG9y
dGVkU2NyaXB0QXR0cmlidXRlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
cG9ydGVkU2NyaXB0QXR0cmlidXRlczo6ZGVjb2RlKToKKyAgICAgICAgSW50cm9kdWNlIG5ldyBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgc3RydWN0IHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgZGF0
YQorICAgICAgICBtZW1iZXJzIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQsIGV4Y2VwdCBmb3IgdGhlIGFjdHVhbAorICAgICAgICBzY3JpcHQgc291cmNlLiBXZSBu
b3cgc2F2ZSBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIGluIHRoZQorICAg
ICAgICBkYXRhYmFzYWUgaW5zdGVhZCBvZiBIYXNoTWFwIG9mIEltcG9ydGVkU2NyaXB0IHNpbmNl
IHdlIG5vIGxvbmdlciB3YW50IHRvCisgICAgICAgIHN0b3JlIGltcG9ydGVkIHNjcmlwdCBzb3Vy
Y2VzIGluIHRoZSBkYXRhYmFzZSwgYnV0IHJhdGhlciBzdG9yZSB0aGVtCisgICAgICAgIHNlcGFy
YXRlbHkgb24gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIChXZWJDb3JlOjpzdHJpcFNjcmlw
dFNvdXJjZXMpOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBIYXNoTWFw
IG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgaW50
byBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIChpZGVudGljYWwgYnV0IHdp
dGhvdXQgdGhlIHNjcmlwdAorICAgICAgICBzb3VyY2UpLCByZWFkeSB0byBzYXZlIGluIHRoZSBT
UUxpdGUgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlU2NyaXB0U291cmNl
c0Zyb21EaXNrKToKKyAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBIYXNo
TWFwIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAg
ZnJvbSBhIEhhc01hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMsIGNvbWluZyBmcm9tIHRo
ZSBTUUxpdGVEYXRhYmFzZS4gVGhlCisgICAgICAgIG1pc3Npbmcgc2NyaXB0IHNvdXJjZXMgYXJl
IGZldGNoZWQgZnJvbSB0aGUgZGlzayB2aWEgU1dTY3JpcHRTdG9yYWdlLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKToKKyAg
ICAgICAgTWFrZSBzdXJlIHdlIGRlc3Ryb3kgdGhlIFNXU2NyaXB0U3RvcmFnZSBvbiB0aGUgYmFj
a2dyb3VuZCBxdWV1ZSBmb3IgdGhyZWFkLXNhZmV0eS4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAg
ICBSZXR1cm5zIHRoZSBwYXRoIG9uIHRoZSBmaWxlc3lzdGVtIHdoZXJlIHNlcnZpY2Ugd29ya2Vy
IHNjcmlwdHMgYXJlIHN0b3JlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0
YWJhc2U6OnNjcmlwdFN0b3JhZ2UpOgorICAgICAgICBDb25zdHJ1Y3RzIChpZiBuZWNlc3Nhcnkp
IGEgU1dTY3JpcHRTdG9yYWdlIGFuZCByZXR1cm4gaXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbCk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBjbGVh
ciBhbGwgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgb24gZGlzayBpbiBhZGRpdGlvbiB0byB0
aGUgZGF0YWJhc2UsCisgICAgICAgIG5vdyB0aGF0IHRoZXkgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5
LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdl
cyk6CisgICAgICAgIC0gU3RvcCBzdG9yaW5nIHRoZSBzY3JpcHQgc291cmNlcyBpbiB0aGUgU1FM
aXRlIGRhdGFiYXNlLCBhbmQgaW5zdGVhZCBzdG9yZSB0aGVtIGFzIHNlcGFyYXRlCisgICAgICAg
IGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbSB2aWEgU1dTY3JpcHRTdG9yYWdlLgorICAgICAgICAt
IEltcHJvdmUgbG9nZ2luZworICAgICAgICAtIFdoZW4gZG9uZSBzdG9yaW5nIHRoZSBzY3JpcHRz
IHRvIGRpc2ssIHNlbmQgdGhlc2UgbmV3IG1tYXAnZCB2ZXJzaW9ucyBiYWNrIHRvIHRoZQorICAg
ICAgICAgIFNXU2VydmVyV29ya2VyIG9uIHRoZSBtYWluIHRocmVhZCwgc28gdGhhdCBpdCBjYW4g
cmVwbGFjZSBpdCdzIGhlYXZ5IHNjcmlwdCBzb3VyY2VzIHdpdGgKKyAgICAgICAgICB0aGVzZSBv
bmVzLiBUaGlzIGhlbHBzIHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRo
ZSBzY3JpcHQgc291cmNlcyBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0
aGF0IHRoZXkgYXJlIG5vIGxvbmdlcgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRh
dGFiYXNlLgorICAgICAgICAtIEltcHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmg6CisgICAgICAg
IFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0
aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2Ny
aXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBz
YXZlIG1lbW9yeS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRT
dG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8gZGVhbCB3
aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29ya2VyIHNj
cmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4gV2hlbgor
ICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEgU2hhcmVk
QnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEuCisgICAgICAgIFRo
ZSBzY3JpcHRzIHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVzaWRlIHRoZSBkYXRhYmFz
ZS4gVGhlIHNjcmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBvcmlnaW4gKHVzaW5nIFNI
QTI1NiBvZiB0aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lKSwgYW5kIHRoZW4gYnkgcmVnaXN0cmF0
aW9uIChieQorICAgICAgICB1c2luZyBTSEEyNTYgb2YgdGhlIHJlZ2lzdHJhdGlvbiBzY29wZSBh
cyBzdWJmb2xkZXIgbmFtZSkuIFRoZSBmaWxlIG5hbWUgZm9yIHRoZSBzY3JpcHQKKyAgICAgICAg
aXMgYSBTSEEyNTYgb2YgdGhlIHNjcmlwdCBVUkwuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUg
c2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhh
dCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2Ug
bmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0
IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQg
ZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgVGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQgZm9yIGNvbnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRz
IGRhdGEgbWVtYmVycyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjpzY3JpcHQgY29uc3QpOgorICAgICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNj
cmlwdCBpbnN0ZWFkIG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQor
ICAgICAgICBtbWFwJ2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0y
OCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGZyb20gdGhl
IFhjb2RlIHByb2plY3QgYXMgdGhleSBkb24ndCBleGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMGYxZWI4NmZi
OTUwZmY1NmU4YTcyNjAzOGZlMTAxM2Q1OGJkZGU2Li4xZjZiZTY4ZmY1YTIwM2EzMDZiMWE5YzVj
YTc5MjI0ZTVkZjE5NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIg
c2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgwOAorICAgICAg
ICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0U2NyaXB0UmVz
b3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBwYXNzIHRoZSBJ
bXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURp
cmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAgICAgICBEcm9w
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5kIHVzZSB0aGUg
ZXhpc3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoKSBp
biB3dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6Om1hcFRv
RmlsZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhlIG1hcFRvRmlsZSgpIGxvZ2lj
IHRvIFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIFVwZGF0ZSBT
aGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlzdGluZ3Vpc2ggYSBudWxsIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBXZSBub3cgdXNlIFNoYXJlZEJ1
ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291cmNlcworICAgICAgICBhbmQg
aXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0byBiZSBlbXB0eSAoYW5kIHRo
ZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0cykuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVz
b3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNlIElQQworICAgICAgICBmb3Ig
Y29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0ZWRTY3JpcHQgZGF0YSBtZW1i
ZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBEb24ndCBldmVyIHJlcGxheSBEaXNw
bGF5TGlzdCBpdGVtcyBvZiBhIFJlbW90ZUltYWdlQnVmZmVyIGluIFdlYlByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2YTFmZjBi
ZS4uYTg0MTZmMzNhZTJkOGNjM2JjM2QzMDRmM2JiOTczZDBmZjc4NTMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKQEAgLTQwOCw1ICs0MDgsNjAgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgIioiX3Mp
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChmaWxlSXNE
aXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAg
ICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSwg
UGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRwdXRIYW5kbGUpCit7CisgICAgY29uc3RleHByIGJvb2wg
ZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5
c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOworICAg
IGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVtOjp0
cnVuY2F0ZUZpbGUoaGFuZGxlLCBieXRlc1NpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEZpbGVT
eXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOworICAgIGJvb2wgc3Vj
Y2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICB2b2lkKiBtYXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7
CisgICAgdWludDhfdCogbWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOworICAg
IG1lbWNweShtYXBEYXRhLCBieXRlcywgYnl0ZXNTaXplKTsKKworI2lmIE9TKFdJTkRPV1MpCisg
ICAgRFdPUkQgb2xkUHJvdGVjdGlvbjsKKyAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIGJ5dGVzU2l6
ZSwgRklMRV9NQVBfUkVBRCwgJm9sZFByb3RlY3Rpb24pOworICAgIEZsdXNoVmlld09mRmlsZSht
YXAsIGJ5dGVzU2l6ZSk7CisjZWxzZQorICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24u
CisgICAgbXByb3RlY3QobWFwLCBieXRlc1NpemUsIFBST1RfUkVBRCk7CisKKyAgICAvLyBGbHVz
aCAoYXN5bmNocm9ub3VzbHkpIHRvIGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9y
eS4KKyAgICBtc3luYyhtYXAsIGJ5dGVzU2l6ZSwgTVNfQVNZTkMpOworI2VuZGlmCisKKyAgICBp
ZiAob3V0cHV0SGFuZGxlKQorICAgICAgICAqb3V0cHV0SGFuZGxlID0gaGFuZGxlOworICAgIGVs
c2UKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4g
bWFwcGVkRmlsZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzExNWQ2NWQ0ZjhhMDI0ZDJlN2Y2Yjlj
MzIxNDcyMzg0ZWY0YzQuLjIxNDdlYjExZTg2OGQxYzRhNWI2NDRlYTY3YTJiMTdhNzUxM2RhZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE5MCwxNCArMTkwLDE0IEBAIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BSSVZB
VEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5
UHJlZml4KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCiBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJik7CkBAIC0yNTIsNiAr
MjUyLDEwIEBAIGlubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9y
PShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8gVGhp
cyBjcmVhdGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBzIGl0LCB3cml0ZSB0aGUgcHJvdmlk
ZWQgZGF0YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVkIGZpbGUuCisvLyBUaGlzIGZ1bmN0
aW9uIGZhaWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIGF0IHRoZSBkZXN0aW5hdGlvbiBw
YXRoLgorV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBQbGF0
Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1J
bXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3ZTE4MDU1ZDNjMzcx
NTQ3ODQwNWZmMzlhNTVjYzk5MTgzY2I2ZWM4Li5kOTRlOTIzMmNiNmIxZTMzMWFjMWMwMGUwMWQ5
NDI4MDU2NzYxOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4NCw2ICsyNjg0LDcgQEAgd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGNlMTNlYmIzN2VjZmFhNDU0ODEwYzU1ZjlkMjQzYzVlY2Qx
MjI3MzMuLmVjYjc1YjZlZWQyYzg0Mjg0YTRhZDkwNjU4YWVmOTBjNDBiOGRlMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NjIsNiArMTI2Miw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAq
LzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYy
NjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkw
QjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMw
N0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyog
SlNVSUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODIzMCw2ICs4MjMxLDggQEAKIAkJNDYwQ0JGMzMx
RDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNE
T01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBE
MTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3
M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcx
QyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzA3LDYgKzIwNzEwLDggQEAKIAkJCQk1MUI5MTQw
QjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVC
OTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1Qjcx
RkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1
OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTI4Niw2ICszNTI5MSw3IEBACiAJCQkJNDY2NThE
QzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEg
LyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhF
NSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2
ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4
MjUzNjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNl
cnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAu
c2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCku
c2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENv
bnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJjNGFhOTgzYzg3
M2NmMTNkNTQzZGQxYzc2NjRjY2Y2NjVkYWE5Li5hZjgyYzhjMDZkMmI2MzYxZWEyNmQ0YWYwOGFi
NGIxZjdlNjQ1ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTI4MSw4ICsyODEsOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIAotICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8IHRoaXNTZWdtZW50LnNpemUoKSk7Ci0g
ICAgICAgIEFTU0VSVChvdGhlck9mZnNldCA8IG90aGVyU2VnbWVudC5zaXplKCkpOworICAgICAg
ICBBU1NFUlQodGhpc09mZnNldCA8PSB0aGlzU2VnbWVudC5zaXplKCkpOworICAgICAgICBBU1NF
UlQob3RoZXJPZmZzZXQgPD0gb3RoZXJTZWdtZW50LnNpemUoKSk7CiAKICAgICAgICAgc2l6ZV90
IHRoaXNSZW1haW5pbmcgPSB0aGlzU2VnbWVudC5zaXplKCkgLSB0aGlzT2Zmc2V0OwogICAgICAg
ICBzaXplX3Qgb3RoZXJSZW1haW5pbmcgPSBvdGhlclNlZ21lbnQuc2l6ZSgpIC0gb3RoZXJPZmZz
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDIzYmY1YThlZGI0
YzFlMzAyOWI3Y2I0NzQ5ZWFjZDU1MDFiYTkxOTQuLjI5YzcxNzIyODRmNzVmZjA5NGVlNzBjNjc5
YTJjNmFjMzJiNTM4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBA
IC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CiAgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwg
c2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKIAogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PGNoYXI+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCmluZGV4IDRkNDc0ZjE2ZTU4OGRkMDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUx
MDA0MGJlMjg1OTIxMGI3MmNlZDIzMTgyYWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTYwLDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlm
IChpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0
UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2Jh
bFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBl
bmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
c2NyaXB0QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAg
ICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAg
ICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFs
PEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9y
dGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2Uo
dXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCks
IG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVz
b3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3Ry
aW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlN
RVR5cGUgfSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5jcHAKaW5kZXggMTZkZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTli
NWVkZi4uMWVhNTkwMWJkOWQyZmQ5Yzc5M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRh
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAg
am9iRGF0YUlkZW50aWZpZXIsCiAgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwK
ICAgICAgICAgc2VydmljZVdvcmtlcklkZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgc2NyaXB0LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5m
by5pc29sYXRlZENvcHkoKSwKICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVk
Q29weSgpLAogICAgICAgICByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYg
KzQ4LDIwIEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZl
clRvU3RyaW5nKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBmb3IgKGF1dG8gaXQgPSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVu
ZCgpOyArK2l0KQorICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5z
ZWdtZW50LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgp
OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2
NWVlNDgwYTk2MWIxMGYxZGJkYzdlLi44NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYw
ZTU5MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0
MCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0
cmluZyhTaGFyZWRCdWZmZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsK
ICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVS
TDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNw
b25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
ICAgICBJbXBvcnRlZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlw
dC0+Y29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRD
b3B5KCkgfTsgfQogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7
CisgICAgICAgICAgICBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAg
ICAgICAgICAgZGVjb2RlciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1
Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZv
OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBA
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiBzY3JpcHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3
IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVu
dGlmaWVyKSwKICAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92
ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisg
ICAgICAgIFdURk1vdmUoKnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5m
byksCiAgICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RG
TW92ZShyZWZlcnJlclBvbGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3
MGY0ZjVlNjkzZjI3N2Y2NTU4M2U3YTRlMDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEw
ZjNhMDlkNDI1Mjc0ZTZlZWJlMjY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBA
IC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxh
Z3MKIAogU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0
dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQ
cm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyKQotICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3Ry
aW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6
Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBv
bGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2Ny
aXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5l
Y3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxF
bmFibGVkKCkpCisgICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJp
bmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9s
aWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVm
ZmVyVG9TdHJpbmcoZGF0YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVt
bXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3Jp
Z2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVu
dGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRl
ZENvcHkoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OnNoYXJlZCgpKQogICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkg
PyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwCmluZGV4IGNlZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4
OTRiMTQuLmQ4ODVhMjM3MGYzMDUyNTk3MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRl
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNR
TGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRp
YyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3
ICs2Miw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0
cmluZyYgdGFibGVOYW1lKQogICAgICAgICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCi0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBjbGVhbk9sZERhdGFiYXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5KQogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFz
ZUZpbGVuYW1lRnJvbVZlcnNpb24odmVyc2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2Ny
aXB0QXR0cmlidXRlcyB7CisgICAgVVJMIHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlw
ZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1p
bWVUeXBlOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2Rl
ciA+PiByZXNwb25zZVVSTDsKKyAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlw
ZTsKKyAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7Cisg
ICAgICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCpt
aW1lVHlwZSkKKyAgICAgICAgfX07CisgICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sK
KyAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2Ny
aXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3Jp
cHRzLmFkZChwYWlyLmtleSwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5y
ZXNwb25zZVVSTCwgcGFpci52YWx1ZS5taW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91
dFNjcmlwdHM7Cit9CisKK3N0YXRpYyBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3Jp
cHRTdG9yYWdlJiBzY3JpcHRTdG9yYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXksIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0
ZXM+JiYgbWFwKQoreworICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDog
bWFwKSB7CisgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJp
ZXZlKHJlZ2lzdHJhdGlvbktleSwgcGFpci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2Ny
aXB0KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVn
aXN0cmF0aW9uRGF0YWJhc2U6OnBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQg
dG8gcmV0cmlldmUgaW1wb3J0ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92
ZShwYWlyLnZhbHVlLnJlc3BvbnNlVVJMKSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9
KTsKKyAgICB9CisgICAgcmV0dXJuIGltcG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwg
U3RyaW5nJiYgZGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiU2VydmljZVdvcmtlciBJL08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJp
YWwpKQogICAgICwgbV9zdG9yZShtYWtlV2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkg
QEAgUmVnaXN0cmF0aW9uRGF0YWJhc2U6On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBi
ZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNl
KQotICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2Rh
dGFiYXNlKV0geyB9KTsKKyAgICAvLyBUaGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQg
dG8gYmUgZGVzdHJveWVkIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRh
YmFzZSB8fCBtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
ZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZSht
X3NjcmlwdFN0b3JhZ2UpXSB7IH0pOwogfQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpw
b3N0VGFza1RvV29ya1F1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIz
NSwxOSBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFz
ZURpcmVjdG9yeSwgeyAiU2NyaXB0cyIsICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYg
UmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIGlmICghbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3Njcmlw
dFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFNXU2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVj
dG9yeSgpKTsKKyAgICByZXR1cm4gKm1fc2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKQEAgLTMzMyw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6Y2xlYXJBbGwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGUKIHsKICAgICBwb3N0VGFza1RvV29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2Rh
dGFiYXNlID0gbnVsbHB0cjsKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZp
bGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2Ny
aXB0U3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsK
IAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
QEAgLTM1MiwxMiArNDE3LDEzIEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENo
YW5nZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRl
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJl
Z2luKCk7CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElO
VE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8p
Il9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8g
UmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsK
ICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBz
dG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlz
LT5zY3JpcHRTdG9yYWdlKCk7CiAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVk
UmVnaXN0cmF0aW9ucykgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNl
LCAiREVMRVRFIEZST00gUmVjb3JkcyBXSEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwu
cHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiYKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIs
ICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAo
JWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
TXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNj
cmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyIGNzcEVuY29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5
LmVuY29kZShjc3BFbmNvZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNv
ZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3Jl
ZCBzZXBhcmF0ZWx5IGluIHRoZSBTY3JpcHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3Vs
dCwgd2UgbmVlZCB0byBzdHJpcCB0aGUgc2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2Rp
bmcgdGhlIHNjcmlwdFJlc291cmNlTWFwLgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNl
TWFwRW5jb2RlciA8PCBzdHJpcFNjcmlwdFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7
CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJ
bmZvOwpAQCAtMzg1LDIxICs0NTQsMzYgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9Q
dXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAg
ICAgICAgIHx8IHNxbC5iaW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVU
aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwuYmluZFRleHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJh
dGlvbi51cGRhdGVWaWFDYWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJp
bmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IHNxbC5iaW5kVGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwuYmluZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlw
ZSkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNv
ZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBzcWwuYmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVu
Y29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUlu
Zm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRv
U3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3Fs
LmJpbmRCbG9iKDksIGNzcEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZl
cnJlclBvbGljeSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEs
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNv
ZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJs
b2IoMTIsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0Vu
Y29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZp
Y2VXb3JrZXIsICJGYWlsZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRz
IHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBTYXZlIHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0
ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0
VVJMLCBkYXRhLnNjcmlwdCk7CisgICAgICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAg
aWYgKCFtYWluU2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNo
TWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAg
YXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRp
b24ua2V5LCBwYWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VS
VChpbXBvcnRlZFNjcmlwdCk7CisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAg
ICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkp
LCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciA9IGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQg
PSBtYWluU2NyaXB0LnJlbGVhc2VOb25OdWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUo
aW1wb3J0ZWRTY3JpcHRzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQor
ICAgICAgICAgICAgICAgIG1fc3RvcmUtPmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVk
U2NyaXB0cykpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQo
KTsKLQotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lz
dHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1
IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVt
b3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVk
L3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVw
ZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRh
YmFzZSwgIlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJs
ZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBm
b3IgKDsgcmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0
YWJhc2VLZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9
IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3Bl
UGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0
VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5E
b3VibGUoNCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVW
aWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0g
VVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0
ID0gc3FsLmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmlu
Z1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2Vy
VHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7Cisg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YSk7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250
ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5z
aXplKCkpOwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0
eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAg
ICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAg
T3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFw
OwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBE
ZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0
YS5zaXplKCkpOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewot
ICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFw
OwotICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlv
bmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJj
ZU1hcFdpdGhvdXRTY3JpcHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVy
ID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJl
Y29yZHM6IEZhaWxlZCB0byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRT
dG9yYWdlKCksICprZXksIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMp
KTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9E
YXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUlu
Zm9EYXRhKTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNh
dGVJbmZvRGF0YSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJ
bmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0
YS5zaXplKCkpOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRl
SW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
Y2VydGlmaWNhdGVJbmZvIik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAg
ICAgIC8vIElmIGFueSBwYXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0
aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4g
ZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkKKyAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdp
biB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5
cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBG
YWlsZWQgdG8gZGVjb2RlIHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3Jh
Z2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsK
KyAgICAgICAgaWYgKCFzY3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVk
IHRvIHJldHJpZXZlIG1haW4gc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0
byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmll
ciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUs
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRh
dGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VX
b3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNv
bnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklk
ZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RG
TW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdU
Rk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291
cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50
aWZpZXIsIHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8p
LCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5
KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRp
b25Ub1N0b3JlKFdURk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaApp
bmRleCBkNmFlZDZiNDBlNjA0NjI2ZTNhMWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2
MjFkYjM0Mjg3N2FmMzRjNzFlNDViOThiOTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0
aW9uU3RvcmU7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsK
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlyZWN0b3J5KTsKQEAgLTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGltcG9ydFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiYpOworICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOwor
ICAgIFN0cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBs
aWVzIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRp
b25TdG9yZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBt
X3NjcmlwdFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRh
Y2FiYTI5MWZkMmE0M2IzZWI0MDE2MTQzOGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2Iy
MmFmYjBlMDU3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBA
IHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBkCiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJv
bVN0b3JlKFdURk1vdmUoZGF0YSkpOwogfQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2Vy
dmVyLmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
VEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lk
IFJlZ2lzdHJhdGlvblN0b3JlOjpkYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2
ZXIucmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9y
ZS5oCmluZGV4IDc1NDNlYzEzYjNkY2Y3MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4
Y2VlYjBlMmY2MDdlNzA3ZTdiYjQwMWZlNDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgK
QEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURh
dGFiYXNlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFp
bGVkVG9PcGVuKCk7CiAgICAgdm9pZCBkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgp
OworICAgIHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2Vy
dmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MDIxMTVjZGUwNDgwMjI2ZjMzOWU0MjI5NGU0M2VjY2ZjMjI5MTNjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNXU2NyaXB0U3RvcmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBzaGEySGFzaChjb25zdCBTdHJpbmcm
IGlucHV0KQoreworICAgIGF1dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGlucHV0VXRm
OCA9IGlucHV0LnV0ZjgoKTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVzKGlucHV0VXRmOC5kYXRhKCks
IGlucHV0VXRmOC5sZW5ndGgoKSk7CisgICAgYXV0byBoYXNoID0gY3J5cHRvLT5jb21wdXRlSGFz
aCgpOworICAgIHJldHVybiBXVEY6OmJhc2U2NFVSTEVuY29kZShoYXNoLmRhdGEoKSwgaGFzaC5z
aXplKCkpOworfQorCitzdGF0aWMgU3RyaW5nIHNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQpCit7
CisgICAgcmV0dXJuIHNoYTJIYXNoKGlucHV0LnN0cmluZygpKTsKK30KKworU1dTY3JpcHRTdG9y
YWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCisgICAgOiBtX2Rp
cmVjdG9yeShkaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cit9CisK
K1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3Rvcnks
IHsgc2hhMkhhc2gocmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBzaGEy
SGFzaChyZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0
b3JhZ2U6OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9y
eShyZWdpc3RyYXRpb25LZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25z
dCBTaGFyZWRCdWZmZXImIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5
LCBzY3JpcHRVUkwpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKHNjcmlwdFBhdGgpKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBk
ZWxldGUgdGhlIGZpbGUgYmVmb3JlIHdyaXRpbmcgYXMgdGhlcmUgbWF5IGJlIGNvZGUgdXNpbmcg
YSBtbWFwJ2QgdmVyc2lvbiBvZiB0aGlzIGZpbGUuCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShzY3JpcHRQYXRoKTsKKworICAgIGlmICghc2NyaXB0LnNpemUoKSkgeworICAgICAgICAvLyBE
byBub3QgYXR0ZW1wdCBtYXBwaW5nIGlmIHRoZSBzaXplIGlzIDAsIGp1c3QgY3JlYXRlIGFuIGVt
cHR5IGZpbGUuCisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShGaWxlU3lzdGVtOjpvcGVu
RmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKSk7CisgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKworICAgIGF1dG8gbWFw
cGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShzY3JpcHRQYXRoLCBzY3JpcHQuZGF0YUFz
VUludDhQdHIoKSwgc2NyaXB0LnNpemUoKSk7CisgICAgaWYgKCFtYXBwZWRGaWxlKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0
b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjptYXBUb0ZpbGUoKSBmYWlsZWQi
LCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxl
KSk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25z
dCBVUkwmIHNjcmlwdFVSTCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAg
IGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3Jp
cHRVUkwpOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6UHJpdmF0ZSwgc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1h
cHBlZEZpbGUpKTsKK30KKwordm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKK3sKKyAgICBhdXRvIHJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3Ry
YXRpb25LZXkpOworICAgIGJvb2wgcmVzdWx0ID0gRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkocmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
RighcmVzdWx0LCBTZXJ2aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9yYWdlOjpjbGVhcjogRmFpbHVy
ZSB0byBjbGVhciBzY3JpcHRzIGZvciByZWdpc3RyYXRpb24gJXMiLCByZWdpc3RyYXRpb25LZXku
dG9EYXRhYmFzZUtleSgpLnV0ZjgoKS5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZGRlYmQ4NTRlMGNkNGNmNDA0MWU2YjcxNjNiNDQ1NjMyMTA1NzU4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
OworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBTV1NjcmlwdFN0b3JhZ2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNXU2NyaXB0U3Rv
cmFnZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29u
c3QgVVJMJiBzY3JpcHRVUkwpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYpOworCitwcml2YXRlOgorICAgIFN0cmluZyByZWdpc3RyYXRpb25EaXJl
Y3RvcnkoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGNvbnN0OworICAgIFN0
cmluZyBzY3JpcHRQYXRoKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25z
dCBVUkwmIHNjcmlwdFVSTCkgY29uc3Q7CisKKyAgICBTdHJpbmcgbV9kaXJlY3Rvcnk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCmluZGV4IDBlZjAwOGZiNTYwNzgxZDMwYWJkYjRhOTk3ZDY0ZjFkNjU4Njk0YjMuLmRj
ZTIwMTZmYzE1MzgzMDBmZmFhMTE3NTllYWUzMzQwOGM0ZjllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNzYsNiAr
MTc2LDEyIEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogICAgIH0pOwogfQogCit2b2lkIFNXU2VydmVyOjpk
aWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFw
PFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIGlm
IChhdXRvIHdvcmtlciA9IHdvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAg
ICAgICB3b3JrZXItPmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdURk1vdmUobWFpblNjcmlwdCksIFdU
Rk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJh
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9u
KQogewogICAgIG1fb3JpZ2luU3RvcmUtPmFkZChyZWdpc3RyYXRpb24tPmtleSgpLnRvcE9yaWdp
bigpKTsKQEAgLTYzMyw3ICs2MzksNyBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogCiB2b2lk
IFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlv
biwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQ
b2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5z
dGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlm
aWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVm
ZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXAp
IH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
eyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCksIHN0cmluZ1RvU2NyaXB0QnVmZmVyKHNjcmlwdCksIGNlcnRp
ZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0
eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQgU1dT
ZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBk
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCmluZGV4IGJhMWI0MTM1MDM1NDBkY2U4ODVjZDQ0OGIzZjdjMDQyOGRiOGNiMTcuLjc5NmJl
ODVlM2U1NDc3MjY4NmU5NTQ4MDg0NWYwNDU0OGM1ZDk1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE5MCw2ICsxOTAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYpOwogCiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOworICAgIHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlw
dHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFp
blNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2Ny
aXB0cyk7CiAgICAgdm9pZCByZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCk7CiAgICAg
dm9pZCByZWdpc3RyYXRpb25TdG9yZURhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwCmluZGV4IDgwMmE0ODAxMTUxYTcyOGZiYzVhMmE2OTEyNGRiOTYzYzc3MmNiMGEu
LjVjYTI1MjY5MTE0NTNkYjA4ZjFmOGYyODMyZGJjNDA0NWU2NGFhNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0
RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsCiAgICAg
Ly8gSWYgbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgdXJs
IGVxdWFscyBqb2IncyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzCiAgICAg
Ly8gZmxhZyBzZXQsIGFuZCBzY3JpcHQncyBzb3VyY2UgdGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUg
bWF0Y2ggd2l0aCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgcmVzb3VyY2UncyBzb3VyY2UKICAgICAv
LyB0ZXh0LCB0aGVuOgotICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAm
JiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0
ID09IG5ld2VzdFdvcmtlci0+c2NyaXB0KCkgJiYgZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQu
Y2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNlcnRpZmljYXRlSW5mbygpKSkgeworICAg
IGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdl
c3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5
cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRv
U3RyaW5nKG5ld2VzdFdvcmtlci0+c2NyaXB0KCkpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVz
dWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1
ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCwgc2NyaXB0IGFuZCBjZXJ0aWZpY2F0ZSBhcmUgbWF0Y2hp
bmcgZm9yIHJlZ2lzdHJhdGlvbklEPSVsbHUiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgLy8gRklYTUU6IGZvciBub24gY2xhc3NpYyBzY3Jp
cHRzLCBjaGVjayB0aGUgc2NyaXB04oCZcyBtb2R1bGUgcmVjb3JkJ3MgW1tFQ01BU2NyaXB0Q29k
ZV1dLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMmI4
ZmY2ODVlMDQ5NzlmY2RjNzNlNzMyMGRmM2Y0ZGE2NGM3NjJkZi4uMTIwMDUxNjk4YmY5Mzk4MThl
NGQ0M2U4NWM2OTU3MzAwYmE3ZGNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcApAQCAtMTE2LDEwICsxMTYsMTAgQEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3IK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0LCBVUkwm
JiByZXNwb25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpCit2b2lkIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmIHNjcmlwdCkKIHsKICAgICBpZiAoYXV0byogd29ya2Vy
ID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92
ZShzY3JpcHRVUkwpLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsg
V1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHJlc3BvbnNlVVJMKSwgV1RGTW92ZShtaW1lVHlwZSkg
fSk7CisgICAgICAgIHdvcmtlci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92ZShzY3JpcHRVUkwp
LCBXVEZNb3ZlKHNjcmlwdCkpOwogfQogCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA0NjU5ZjlmOWZh
NmM2YmFhOGRlOTY4ZDM5MTVmZTMzYzRlMzEyNjY4Li45YmUzNDQ0OTFmMDYxM2ZhZTE0MGU3OTg1
MWI3MTBhM2IzMmIyYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENs
aWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgbWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYm
KT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYm
IHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0
VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
aW5kZXggM2JhMzZhM2Y5NWE1N2ViYTE3ODU4Y2U2MmRlZWU3OGFjOWE2NjcwNS4uNjEzYmI3MmM1
ODhkOGExNzBiMWU0YmIyYjc5MGMwMzAwYmUxZjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgU1dTZXJ2ZXJXb3JrZXIqIFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtl
ckZvcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWYKIH0KIAogLy8gRklYTUU6IFVzZSBy
LXZhbHVlIHJlZmVyZW5jZXMgZm9yIHNjcmlwdCBhbmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1T
V1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQorU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBTaGFyZWRCdWZmZXImIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBT
dHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKICAgICA6IG1fc2VydmVyKG1h
a2VXZWFrUHRyKHNlcnZlcikpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb24u
a2V5KCkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihtYWtlV2Vha1B0cihyZWdpc3RyYXRpb24pKQpA
QCAtMjM4LDYgKzIzOCwyMSBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpzZXRTY3JpcHRSZXNvdXJj
ZShVUkwmJiB1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wbwogICAgIG1fc2NyaXB0
UmVzb3VyY2VNYXAuc2V0KFdURk1vdmUodXJsKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAordm9p
ZCBTV1NlcnZlcldvcmtlcjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0
ZWRTY3JpcHRzKQoreworICAgIC8vIFRoZSBzY3JpcHRzIHdlcmUgc2F2ZWQgdG8gZGlzaywgcmVw
bGFjZSBvdXIgc2NyaXB0cyB3aXRoIHRoZSBtbWFwJ2QgdmVyc2lvbiB0byBzYXZlIG1lbW9yeS4K
KyAgICBBU1NFUlQobWFpblNjcmlwdC5nZXQoKSA9PSBtX3NjcmlwdC5nZXQoKSk7IC8vIERvIGEg
bWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgIG1fc2Ny
aXB0ID0gV1RGTW92ZShtYWluU2NyaXB0KTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRl
ZFNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBpdCA9IG1fc2NyaXB0UmVzb3VyY2VNYXAuZmluZChw
YWlyLmtleSk7CisgICAgICAgIEFTU0VSVChpdCAhPSBtX3NjcmlwdFJlc291cmNlTWFwLmVuZCgp
KTsKKyAgICAgICAgaWYgKGl0ID09IG1fc2NyaXB0UmVzb3VyY2VNYXAuZW5kKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCppdC0+dmFsdWUuc2NyaXB0ID09ICpwYWly
LnZhbHVlKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVu
dGljYWwuCisgICAgICAgIGl0LT52YWx1ZS5zY3JpcHQgPSBXVEZNb3ZlKHBhaXIudmFsdWUpOwor
ICAgIH0KK30KKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2tpcFdhaXRpbmcoKQogewogICAgIG1f
aXNTa2lwV2FpdGluZ0ZsYWdTZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDM3OGZiYTY1N2U4
YmJmNDg0MWU1NmNiZjg2NTYxZjhlY2MzMTEwMjAuLmM0NWRhZGJjYWI4MTk3NmI3NmYwYmU1MzE0
ZjNiNzFmNzdiNmIyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgog
ICAgIFNXU2VydmVyKiBzZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlci5nZXQoKTsgfQogICAgIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uS2V5OyB9CiAgICAgY29uc3QgVVJMJiBzY3JpcHRVUkwo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2NyaXB0VVJMOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBz
Y3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQorICAgIFNoYXJlZEJ1ZmZlciYgc2Ny
aXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9
CiAgICAgV29ya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnR5cGU7IH0KIApA
QCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpIGNvbnN0OwogICAgIHZvaWQgbWF0Y2hBbGwoY29u
c3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRz
TWF0Y2hBbGxDYWxsYmFjayYmKTsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFVSTCYmLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOworICAgIHZvaWQgZGlk
U2F2ZVNjcmlwdHNUb0Rpc2soUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFw
PFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIHZv
aWQgc2tpcFdhaXRpbmcoKTsKICAgICBib29sIGlzU2tpcFdhaXRpbmdGbGFnU2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc1NraXBXYWl0aW5nRmxhZ1NldDsgfQpAQCAtMTI3LDcgKzEyOCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwogCiBwcml2YXRlOgotICAg
IFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQ
b2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2
ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwg
V29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKIAogICAgIHZvaWQgY2FsbFdo
ZW5BY3RpdmF0ZWRIYW5kbGVyKGJvb2wgc3VjY2Vzcyk7CiAKQEAgLTE0MCw3ICsxNDEsNyBAQCBw
cml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25L
ZXk7CiAgICAgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4gbV9yZWdpc3RyYXRpb247CiAg
ICAgU2VydmljZVdvcmtlckRhdGEgbV9kYXRhOwotICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX3NjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZp
Y2F0ZUluZm87CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KaW5kZXggZjNiNzVhNWViYTNmZDczZjUyNjg0NDYxMjM5Nzg1ZTU0NDY5MzdhMi4u
ZDhkOTQzNDA4NDVkZDg1YjM2ZGM4OTI5YWIxZTYyNzE4ODkzMjg5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0zNSw3ICszNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0
Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KSBBc3luYwotICAgIFNldFNjcmlwdFJlc291cmNlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkws
IFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKQorICAgIFNl
dFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFVSTCBzY3JpcHRVUkwsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQgc2NyaXB0KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlv
biwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikK
ICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBhYjdhYmMyNTc2NWFkNDI4
ZjJhMTU3YzYxNzk0ZDIyNTg2MTdiYjQ3Li4yZWEyODQwMDk2NDQ5MGZkYmJlNTcwYTA4YjJmYzBj
MjhhMzcyMWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBF
bmdpbmU6OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZp
bGVMb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IEZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkocGF0aCwgIioiKSkgewogICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShmaWxlbmFtZSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
czo6Tm8pKQotICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVu
YW1lKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9y
eShmaWxlbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTc0OSwxOCArNzQ5LDE4
IEBAIHZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZm9sZGVyUGF0CiAKICAgICAgICAgICAgIC8vIElmIGNhY2hlIHNh
bHQgaXMgaW5pdGlhbGl6ZWQgYW5kIHRoZSBwYXRocyBkbyBub3QgbWF0Y2gsIHNvbWUgY2FjaGUg
ZmlsZXMgaGF2ZSBwcm9iYWJseSBiZSByZW1vdmVkIG9yIHBhcnRpYWxseSBjb3JydXB0ZWQuCiAg
ICAgICAgICAgICBBU1NFUlQoIW1fc2FsdCB8fCBmb2xkZXJQYXRoID09IGNhY2hlc1Jvb3RQYXRo
KCpmb2xkZXJPcmlnaW4pKTsKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5
T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRlclBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZN
b3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CisgICAgICAgICAgICBkZWxldGVOb25FbXB0
eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOwogICAgICAgICB9KTsKICAg
ICB9CiB9CiAKLXZvaWQgRW5naW5lOjpkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dy
b3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURpcmVjdG9y
eU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IHBhdGguaXNvbGF0ZWRD
b3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7
Ci0gICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KHBhdGgpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShwYXRoKTsKIAogICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmgKaW5kZXggMTk0NGE1Yzc5MmQ4ZDc5OWUyOWRhYmM4NDY2NjdiNjY4NjJiYjdm
OS4uNDQwOWU3YjQ5NmFiOGNmNjQ2YzlhMGZmYWVkZjU3MzRjMGZmMWU4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQWxsQ2FjaGVz
RnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQ2Fj
aGVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21E
aXNrKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dy
b3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChj
b25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2
b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICBT
dHJpbmcgcmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IDY2Zjc2ZWIyZDZmYzdk
OThkY2U4YWUwNjJjZmJhZjBmZjUwMzZiNzkuLjAzODI5ZGIyMmJiOGFiOGY3NTIwY2QzYTNhODI2
NzI5M2Y5ZDk0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSA8ZmNudGwuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCiAjaW5j
bHVkZSA8c3lzL21tYW4uaD4KQEAgLTQwLDQxICs0MSw4IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewogCiBEYXRhIERhdGE6Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7
Ci0gICAgY29uc3RleHByIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7Ci0gICAgYXV0byBo
YW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIsIGZh
aWxJZkZpbGVFeGlzdHMpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5k
bGUpIHx8ICFGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBtX3NpemUpKSB7Ci0gICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4geyB9Owot
ICAgIH0KLSAgICAKLSAgICBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0
aChwYXRoKTsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRl
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBzdWNjZXNzKTsKLSAgICBpZiAo
IXN1Y2Nlc3MpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAg
ICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgdm9pZCogbWFwID0gY29uc3RfY2FzdDx2b2lk
Kj4obWFwcGVkRmlsZS5kYXRhKCkpOwotICAgIHVpbnQ4X3QqIG1hcERhdGEgPSBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4obWFwKTsKLSAgICBhcHBseShbJm1hcERhdGFdKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgYnl0ZXNTaXplKSB7Ci0gICAgICAgIG1lbWNweShtYXBEYXRhLCBieXRlcywg
Ynl0ZXNTaXplKTsKLSAgICAgICAgbWFwRGF0YSArPSBieXRlc1NpemU7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0pOwotCi0jaWYgT1MoV0lORE9XUykKLSAgICBEV09SRCBvbGRQcm90ZWN0
aW9uOwotICAgIFZpcnR1YWxQcm90ZWN0KG1hcCwgbV9zaXplLCBGSUxFX01BUF9SRUFELCAmb2xk
UHJvdGVjdGlvbik7Ci0gICAgRmx1c2hWaWV3T2ZGaWxlKG1hcCwgbV9zaXplKTsKLSNlbHNlCi0g
ICAgLy8gRHJvcCB0aGUgd3JpdGUgcGVybWlzc2lvbi4KLSAgICBtcHJvdGVjdChtYXAsIG1fc2l6
ZSwgUFJPVF9SRUFEKTsKLQotICAgIC8vIEZsdXNoIChhc3luY2hyb25vdXNseSkgdG8gZmlsZSwg
dHVybmluZyB0aGlzIGludG8gY2xlYW4gbWVtb3J5LgotICAgIG1zeW5jKG1hcCwgbV9zaXplLCBN
U19BU1lOQyk7Ci0jZW5kaWYKLQorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGU7CisgICAgYXV0byBtYXBwZWRGaWxlID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHBhdGgs
IGRhdGEoKSwgc2l6ZSgpLCAmaGFuZGxlKTsKICAgICByZXR1cm4gRGF0YTo6YWRvcHRNYXAoV1RG
TW92ZShtYXBwZWRGaWxlKSwgaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAK
aW5kZXggN2EwZWM1ZTE0ZjMzZGUwNDJjZGY0NGIwZmJhNDIzY2M5ZGQ3YWZjNS4uN2E5OTYxNGYy
MzM1YjE1MGM5Y2FiMjIyYzkzNWQwYmJlZjY5YzgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
Y3BwCkBAIC02MiwyMyArNjIsNiBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRAogICAgIH0KIH0K
IAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCi17
Ci0gICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUs
IERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7Ci0gICAgICAg
IHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZToK
LSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5Ogot
ICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZW50cnlQYXRoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgot
ICAgICAgICB9Ci0gICAgfSk7Ci0gICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
cGF0aCk7Ci19Ci0KIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewog
I2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IDdhNWY4
Y2M0ZmUzOGE5NTYxY2UxYzhiNjFjMTBjNzQ3OWNhODc0MmYuLmMwYjRlODFiNDczNzVhMDdmZjk5
YmViNDIxMGRhMDE1ODIyYzczNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCkBAIC0zMyw4ICsz
Myw2IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogZW51bSBjbGFzcyBEaXJlY3RvcnlFbnRy
eVR5cGUgeyBEaXJlY3RvcnksIEZpbGUgfTsKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYpOwogCi12b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2
ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0KIHN0cnVjdCBGaWxlVGltZXMgewogICAgIFdhbGxU
aW1lIGNyZWF0aW9uOwogICAgIFdhbGxUaW1lIG1vZGlmaWNhdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCmluZGV4IGVkZGMwYmUyOWUwZTJjNmQyMDI1YTk2YjI1ZWMxZTU2YzQ4YWY4ZDYuLmRiNGMw
NTQ5YzZiYmViODAzYjY2ZjBlMzE0NTE5YmU1ODI5MjViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgog
I2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
Z2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KQEAgLTExOTMsNyArMTE5
NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQogICAgICAgICAgICAgYXV0
byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
YWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3Jh
Z2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVz
Iiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgICAgIGRlbGV0ZURp
cmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZlcnNpb25QYXRoKTsKICAgICAgICAgfSk7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCA5ZTMxMjk3MTk2ZGExMTU1ZjBiMjJjMzE4MGEwM2M4MzA0ODZlMzcyLi5m
NmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYwODk4OWEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEyMiw3ICsxMjIsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVm
ZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewotICAg
IHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDA7CisgICAg
Ym9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVuY29kZXIgPDwgaXNOdWxsOworICAgIGlmIChp
c051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZm
ZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZlclNpemU7CiAgICAgaWYgKCFidWZmZXJT
aXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTIgKzE0OSwyNCBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKKyAg
ICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAgZGVjb2RlciA+PiBpc051bGw7CisgICAgaWYg
KCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgqaXNOdWxsKSB7Cisg
ICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwog
ICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVm
ZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghYnVmZmVyU2l6ZSkK
KyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKaW5kZXggNWU4ZjcwOTA2MWI0MmQxOGFjOTY5MThlNTk4ZmQ4MjE0MGM0MjhjZC4uMWUwMWE1
ZDRlN2E3YjgzMTRhMjMxNGFhODdmNGRkMmRkMzJlYjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFNjcmlwdFJlc291
cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVzb3VyY2Ug
eyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQuc2NyaXB0LCBzY3JpcHQucmVz
cG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwgc2NyaXB0
IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJU
ZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFi
YjRlMDFmYTBkNTEzZmQ4ODgwODE1NDlhMDM0MWY5MWEzZmVmNmYuLmE1ODc0Mzc0Nzg3YzViYjdi
ZjhiZTY1MTg3Njg2ZDY3ZDgxM2IyZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMg
dXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6
Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzOiBSZW1vdmVkLgorICAgICAgICBEcm9w
IG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2Ug
YXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZCBhbmQgaXQgaXMgYSBwYWluIHRvIGtl
ZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgQWRk
IEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9y
eSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBpdAorICAgICAgICBoYWQgbm8gdGVzdHMsIGl0
IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3ZSBub3cgaGF2ZSBhbiBpbXBsZW1lbnRhdGlv
biBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBsYXRmb3Jtcy4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNlcnZpY2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQg
dGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2UgaW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisg
ICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBkYXRhYmFzZSBzY2hlbWUgYW5kIGJ1bXBlZCB0
aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUgdGVzdCB0aGF0IHdhcyByZWx5aW5nIG9uIGEg
cHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFiYXNlIGZpbGUgKHdpdGggb2xkIHNjaGVtYSkg
YW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWljYWxseSBnZW5lcmF0ZSB0aGUgZGF0YWJhc2Ug
aW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0IHJlZ2lzdGVycyBhIHNlcnZpY2UKKyAgICAg
ICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjggIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFw
cGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhl
aWdodEVuYWJsZWQgZm9yIFdlYktpdExlZ2FjeS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjZlNzA5M2I4ZjE1MGExODE4ZWYyZWJiMjNiNGI0YThlZWNiODE1NS4uYzdhYzE0ODdhOTEwMmJh
NTJiY2JkN2FkY2I3ZDc4Mzg1NDQ4MDgxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2
OSw3ICsyNjksNiBAQAogCQk0NkE0NEE1NDI1QTc4MzAzMDBGNjFFMTYgLyogd2ViYXVkaW8tY3Jl
YXRlTWVkaWFFbGVtZW50U291cmNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDRBNTMyNUE3ODJERDAwRjYxRTE2IC8qIHdlYmF1
ZGlvLWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1sICovOyB9OwogCQk0NkE0NkExQTI1NzU2
NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE0NkExOTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lv
blN0b3JhZ2UubW0gKi87IH07CiAJCTQ2QTkxMTU5MjEwOEU2NzgwMDc4RDQwRCAvKiBDdXN0b21V
c2VyQWdlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkE5MTE1ODIxMDhFNjZCMDA3OEQ0MEQgLyogQ3VzdG9tVXNlckFnZW50Lm1tICovOyB9Owot
CQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NTZBNzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi87IH07CiAJCTQ2QkJFQTFCMjVGOTgzNTcwMEQ0
OTg3QSAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi87
IH07CiAJCTQ2QzFFQTk4MjU3NTg4MjAwMDVFNDA5RSAvKiBhbGVydC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzFFQTk3MjU3NTg4
MDUwMDVFNDA5RSAvKiBhbGVydC5odG1sICovOyB9OwogCQk0NkMzQUVCMzIzRDBFNTI5MDAxQjA2
ODAgLyogYmVmb3JldW5sb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDM0FFQjIyM0QwRTUwRjAwMUIwNjgwIC8qIGJlZm9yZXVu
bG9hZC5odG1sICovOyB9OwpAQCAtMTY1OCw3ICsxNjU3LDYgQEAKIAkJCQlCQzkwOTc4NDEyNTU3
MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFF
NUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAotCQkJCTQ2QUU1QTM3MjBGOTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2
NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY0Q0ZDRERBMjQ5RkM5RTQwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmIGluIENvcHkg
UmVzb3VyY2VzICovLApAQCAtMjA0Myw3ICsyMDQxLDYgQEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAw
RDlFMENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFG
QjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJh
ZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ2NTZBNzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUy
ODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRP
YnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlmeS1yZXNvdXJj
ZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2
NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQwMzcsNyArNDAzNCw2IEBACiAJCQkJRjRFM0Q4MDcyMEY3MDhFNDAwN0I1
OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAqLywKIAkJCQlG
NEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRt
bCAqLywKIAkJCQlDOUI0QUQyOTFFQ0E2RUE1MDBGNUZFQTAgLyogc2lsZW5jZS1sb25nLm00YSAq
LywKLQkJCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNC5zcWxpdGUzICovLAogCQkJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAv
KiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJCUY0Q0ZD
REQ4MjQ5RkM5RDkwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmICovLAogCQkJCTkzNjAyNzA1MjVB
M0IyOEUwMDM2NzY3MCAvKiBzcGVlY2hyZWNvZ25pdGlvbi1iYXNpYy5odG1sICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA3NmNhZjJhZDQz
NzI2NjNkMmJlMzExYmNmYjYzYTA0ZDBjMGQwMWY2Li44ZjY1MWQzZWFlMzQzMjk3NTFhYzM2MWRk
N2UwNjRjYjYzN2UzNzUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcApAQCAtMTUxLDQgKzE1MSwyOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIG9w
ZW5FeGlzdGluZ0ZpbGVBbmRGYWlsSWZGaWxlRXhpc3RzKQogICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpOwogfQogCitURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KQoreworICAgIGF1dG8gY3JlYXRlVGVzdFRpbGUg
PSBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgYXV0byBmaWxlSGFuZGxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRs
ZSkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lz
dGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIH07CisKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKKyAgICBhdXRvIHRlbXBvcmFyeVRlc3RG
b2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRl
bXBvcmFyeUZpbGUpOworCisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0
ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9y
YXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiB9KSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAi
ZmlsZTEudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTIudHh0IikpOworICAgIGNy
ZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9y
YXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGUzLnR4dCIgfSkpOworICAgIGNyZWF0
ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5
VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGU0LnR4dCIgfSkpOworICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVy
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0
Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJC
YXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3YzczYTg0MjJhNGM0ZThmZjdlNjEwNWU5ZTg4MGRmLi4y
Mzc4OGVhZTE0MzY3YWUyZjFhNDE2NGViNGM5ZmJhMTQzMDk0NDcxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJC
YXNpYy5tbQpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVu
ZE5ldHdvcmtQcm9jZXNzKQogICAgIGF1dG8gcGF0aCA9IHN0b3JlLl9jb25maWd1cmF0aW9uLl9z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LnBhdGg7CiAKICAgICBOU1VSTCogZGly
ZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU107Ci0g
ICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAq
c3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdOwogCiAgICAgRVhQRUNUX1RSVUUoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3REJQYXRoLnBh
dGhdKTsKIApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VXb3JrZXJE
YXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQogICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQ
YXRoLnBhdGhdKTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0
cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5p
bF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVy
bDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwogCiAgICAgYXV0byB3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRo
OwpAQCAtMjM1NSw2ICsyMzU1LDc3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIENsZWFyRE9NQ2Fj
aGVBbHNvSW5jbHVkZXNTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykKICAgICByZWFkeVRvQ29u
dGludWUgPSBmYWxzZTsKIH0KIAorVEVTVChTZXJ2aWNlV29ya2VycywgQ3VzdG9tRGF0YVN0b3Jl
UGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCit7CisgICAgTlNVUkwgKnN3UGF0aCA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0
LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3JrZXJzLyIgc3RyaW5nQnlFeHBhbmRpbmdU
aWxkZUluUGF0aF1dOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3Zl
SXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKKwor
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6
c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJy
b3I6bmlsXTsKKworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMo
W1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOworCisg
ICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisK
KyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRleHQvaHRt
bCIsIG1haW5CeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2Ny
aXB0Qnl0ZXMgfSwKKyAgICB9KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3
aGlsZSAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpb
c3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdICYmICsrdGltZW91dCA8IDIwKQorICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJd
LnBhdGhdKTsKKworICAgIC8vIEZldGNoIFNXIHJlY29yZHMKKyAgICBhdXRvIHdlYnNpdGVEYXRh
VHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVE
YXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXV0pOworICAgIHN0YXRpYyBib29sIHJl
YWR5VG9Db250aW51ZTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndl
YnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0
ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0
YVJlY29yZHMuY291bnQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICBy
ZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAgIC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRo
aXMgdGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0
aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRz
T2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1Rf
RVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBkYXRhU3RvcmUgPSBuaWw7CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwor
CisgICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0
byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisgICAgZGF0
YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtk
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
ICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3JlID0gbmls
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICBy
ZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAgIC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZl
IGJlZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCisg
ICAgLy8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCisg
ICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAq
ZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7
CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworfQorCiBURVNUKFNlcnZpY2VXb3Jr
ZXJzLCBXZWJQcm9jZXNzQ2FjaGUpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dX
ZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMtNC5zcWxpdGUzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaW1w
bGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBhMDVkYzQ2ZTNhMmNjZWIzNGVmOWE3NjhjZDA5ZWIzZDhhZjI0MTUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjA0ODAKemNtZUhPY359IXkqVXZfUDVNJmpR
TWFQOXJBaH1fOExxZHB2dldTMnZCNkxVd0dNYkg8Ml5jTF5xb1AqcGc4UFB1CnpYc3VoLXk2Kn1x
UiZDdl9iPVNKclQxQmdNc28kTjFBWHI9NEBBO25oZDtpR2JXYlNoQUo/SC1KejMwdzNYVXNAWAp6
I3dpUmIpRFM5XkxjJG8xMz5KJEtpeSNhSmc5VUZaYyQrVUtPbU5IQF9Ad2kjVGBZem05STx6SiR6
YSg+RnpoMjcKemo8KGpvUWcxPVBmYEExOTNqITdkRUNeVC11cG5TVHo9RDdVZiZWSDVDTzkjei1N
emUrbGwyckBwdWA0WEc3VFhvCno4eV9zbTBJNGByaWUhcjhsQkd5dkFyZGVnKDw3UEVMNzdOdThv
YVpUbGFhSmtNM1I9O0NwayV5aVMhWENCX21tPgp6TiRGWUE3VWN0XntnY0hLWCl2TjhARkhCQE4p
TiNaRGJyfU50TzNjYjU+Z3MlK0NTQDNpSVA7N1IqcTdiTTFqZU0KelhXfVhoaUJIUi0ybHRtbDJ9
WDNyNzZXbHFnMzEoRnRLeUl7MEBxVWlMfnMqanN+d2hWaH5YSEtzbkBwN1RjJU17CnpuM35HS1dJ
Nig7XiErdFRUJjczamxHRWI7WmghPDxoIUYldkc/TUBRKVkyMH00eyFpUllJS0FRT0ZefSpHTFRe
ZQp6ZyV7Izcyei0qZFB9MiYxVTxpeHJGN3skRmFKM3Y4S143fmFSaUJVUUQyKnxuLT8kOShNVTRx
SSspcDwycDBiQkcKeig+OXBffDUre3owdX1AOzJ2YHVYQVllaGpmYEEycWV+R3tlVSMxZm8pZ2o4
LURgVTJjUn5MS2x2RXZkSTZzMEJlCnpSZFRoVTImV1hmMHMqZWMmbz5yITdZYlZ4MygzK0QzTGAx
dUtkQWtuTG08OXoqdzZMSzVUN0tLUnpwemEtfWdZNAp6M1drdityWXNib2E9RWt3eldPSFBCenl6
TGh5Wl9GTztWXio9XnU7fj5lTW17KlFmKDluaiNQeCNYfUhkUWMjTkcKelJGO347bD54OF9MMWdw
YEp9SDI5aGRSSyZNQzJiUnBjRjlLKVpTUWNZRVAzQjdeTmZCcmRHNTdWeD0tKmhfTkhPCnoqMXJo
X3xLTmBsOGVlN3czUTdlZns3NXhQPjZNczNNdkA8YE1ZVVF1QFErc0VEenBkLVE5PkMwaVVQdHln
cHtITAp6OEtUcV9YI35UeE1JWV5gMiFlK1pkU1FWXnI+NjlZQENQSHZSO2c4Yjc9KXZnKmcjWns1
dkB7X1lFNVktcEBEIW0KemNITX0/KDcrelhSOVBUPXo7cWVCZDREbV9nJX5BTXtPdjNnN14mNSQ8
PUpyNjF+ZzdGajFiQmNydTg1b3V3b3J0Cnp0UkdJY3NUR050PVVYVD11TWJuPkttPThtcUl3Yzgx
NSU/YiFBUFVUa2c3bU9BPCh7K3AoS1dBM0szRSNsVlBOaAp6M2B6bVpOXnp3VVFKXklsUWkzWFZu
NlZqTmh5PDchQXt+NDZMVWhwZkRhNiY3K3wwZ2R4dFlsdDVrZkV9PzJ9JjcKel53cWN8amhPdUhA
WlBnfiZqM043XnljbW42ezwlSEZob2FVYXp2dzY+ZncqZkJyTUdjUWtHKGY4aVNSVDF8akx1Cnok
ZG5wMk0oNEI7MDZHWmBjKWJZO3hVQ3VtR2AyKzVhKWlWUCpvSzd1MkFGfT1QNCFCUVk3IzxYPzZP
eD1VU1EtQQp6KDZ+QmlJaHZaYXZVZF5GJXJfcnc8OS0pRmFhJSRhK3tEa3d6Wm99cjlueElzc31Y
ODVVZ25Dakttb0xLO28+ckQKejRKNHBCKTg7eVo2cXJgaGRyZXs5YkFSNE5PXm5TVmx0RHF0MCUw
Ki1BYzM5QDV8XjJrZTchalZwTEZQKHpMK052Cno8QzdzV0FWK342cDk9LW9ESmQzezEwNEJ3czlM
N2I1TSZ5aFhDeypZb2NQdnFqNiFpRzNBaUUje1JpNmU5aWlWeAp6cmErLXlnXkVzN2lwaU53Q2d7
VEZtMCQjM3NFPiFueUB5KlUybjhUMkcqcnxyeWp4ZnxLXlcqMyhKZUZ3YDArVjcKekgyZypGZmo4
ZT5eND1TZU51WCp7aXhRWXgyS2gzOWYlJC1NWWV0bFcqLUlQKV44JFJIO1Z+SWkySWdeP3Rtb1BX
CnphaFg8RClffT1gd0w0KFo3NjZDRjtuQWFuVlI9aHItWmFzY1VrZF5qMVN8K3g1VT9PJUxCTjg1
MXB4fko3NmRFXgp6U1AteHZATCFFVUIlOEdUVXBTbExuNUBRRFI9YVVyKC1yUyNlOWZ9Zl4qbndO
bE5WR3daeSF3YkBOaDhzQ1BkTDcKekRtKitRRGhINkQ3JGdCKHUyb1BRSHB8bkIhRXljR0A0M2dU
cW59Tm1gYzIkKlp7YVk8JTR6dyRrTjN1TVdGXkh8Cnp6cDlNTjNFNmVuWFNUJVFgIVMzXmFqMEBL
N2xsVEUkY1N6PFErdXYkKllkPmo3eHFsMW9mVSZeZlptbz18MkRadgp6MTtAT1hQSjRMQmtBM09Z
aUZ4KVI4eH5KaTRRZmNkX3BWfip4MW1ZTC1FUiUtZTgxUDZtcStqQmhvNXVpaFB+M2MKekJ0MWc8
dytXUXBScmhzVEokQnhTIzdVPFdaTz9EfCMmd3ozI2FsTis1QUpYbyl1dFY+Q3dad3k8bnNrVEVa
RUJrCnpAOX1jJT5fSV9zc3A5X3BqYjFPSngxTCVRUUBkTURJcl5uZjRRVl4qbDtgSG9ufTJoZzg4
QFRJRmU+Zl5PRTklbAp6PX1xOWM8bS19N05yVEpzMlIjVG9hQkJSdXkqaiYqUXp5RmpYTGIwNmRS
Nl42PDt5bzwoTl88YS18Y2c3ITYjbiMKeitUSE5qe2QjXn4oNmtAPGhwdlYlP3BkNGhgMVI0RSlp
PiloWWAofmQrQGJsUnlyTG1DWHpjaWtuVWtpNVN1SzNWCnp6cCRjeHA5NWxHVUA3QEZUS1pjUjlE
YDBEUi1WWWYkXmkpOTElQWgzYFg8SG5ufkpKMXpBWl5BR2ljdS0wbGlCNgp6Q1c8cyUmVVhfRExJ
dSZgS3AreEBNVFNLUEw7eG5DNTZaeWVeWC1sTz4oakohQWI9RFpuN0BOSWVBXl4+R09pdkQKejlw
PCQyM0EofHVGPzR1OE9yTD58Rz9xQj8/TTx4MkkhWW4hbXFrOy1HTVh2X0ZIKW4+e2NvZ207a1FY
M1EwViFGCnp1P0tsRmg4RUk8dTYmMCRCYE8+S3JfeGw3VEJfMWdgVjN2Y0ZpYnwjdzl2VTBoZThM
UTFqPEdjKDhXZlBqbTRRNQp6OVMxPmAxNXFVfGhvQUomI3FOQSgzSC1iVmVvdiM2aikyaClreyVM
VztsKzB8KUFmZj1JZ0xDODlmN05LRHIyUUwKei0hM0J+SVo7RFdZOHByVDc3LWlURlBFVyo7O1Mr
VjlYJCQzPF5icHgjfGV7e3VMSXdANWYrZ3Z1O0hgOUxzPXt2CnoyQXpydVczaXlhdW92SWFEMmcx
REwmN1cpTEo5Jm8zPVN2RCRDdHNlRiopcW1PYiFwR0k3fndua0ltLVRlb34mdQp6RVBvbHRWRkQl
T1pVIV9GQl42PzI1JlRNd1FtOUNmJlViRkFpcFB0ZnFkcH0qXmRue0FBMVJBfk9VVEA8c2NsQjAK
elNPZzR3SGxOP0BuPFRqQT80RUU4KjVTWmw0UzwyYFFOP0M0UyUyUSpBOGNOcjcxPUBjIU9yNHZV
MDdLZXFQRDw9CnomaFQ5TGtRWXZTSWd1b19Pdzxteik1VWYhai17b2cweShVclNxbyR1bH1IRmU9
cWszMFVzRFN4VT9gR143YnlAaQp6TiRRfGBSRThtQEhIYipXcHVNfDJec2hvPzAqcUc8JSFZeitR
TWQ/fTArMGlTd1VvI09JTU15dnhiUCUhYE4wMWUKenJOJldfOCpycnl0ekdPaFAmTHdyV2BWPFI/
VjU/N2ZLIVJPZj8hJkRmeWY9U0hPYmg5N1FacF8yWmVgaipHfG09CnpWSCZsVzB8Uz14U2hRTig2
d35XTFh4VlFzI14/VFd6U0w8KChlQD5xMThhJU1WZENwSWtGRCRXREE7fWE8I0ZrUQp6QTU3JSt0
fmQwMkV0dEdBPEApMV9gIVJGdnIqKzs/dT1IcmZvSkJRYEs0LUk1Pj4oNnk/K3AwOHI9VmxgWWhW
QSEKejR5MSY/clgod0dLd156Zz90T09UPlJzSFJIZn5HeXJBJWRzPUgzKEJ7Wi1tTktnanZubEYm
KWYhR1ZpTWNYe3tSCnpDdWgtX0ZfU2ooM3gwP1Z3JShUVGdZJmRyUT90aEBzJExHLXBTR3N2JEB4
eG14IXpHZSp9WiFOKW41eFojY3QxNwp6QH4rbDRzMEB3UklsNGh8e3FlUSNRQHpYNzhJUGxAJiNu
elc9Q0ZSWVhXY3Zab20qQyohaz9UQDl5JjQ4cyQ+JEcKeih5JDBqelJjZnBxKStHaXM0fk9MQyEx
IztXM2liRz01aG8zVFZQLXgxfDEtWEtBa3hwei1gUCZrMDs8bTZTVSNMCnooYCN4SzReT3h9SWRu
dEhWSkIlcHpOY18qWUlpVi11NkUqM2ZHflY4NWU5ek9YNDdLZXlgTGgzVH5pSU5HMXhYbQp6WjRL
X2BhdjBucDhvd0UmN28/JUJpUk9jMSgxdkYyeit9R1RhTSYhWER3Q3xmOUN7QCtaU0FITTMrUU9f
NGplVTUKemc3QikpRG9fcj9vUmsmQGlEaVRgdGk9dXhrX3QzNU0xaDd0SWlOLWxEVCkrOG5tQE0r
fDBrYElYfEBQUTNNMyRrCnpZZj4oNmx+NX5vMXAjS15TV0d1PmI0MjtXLTYpancmajI9RFpxWm1p
LTI3bmRJQ0NReVcrKCtaKDhaaHcleU4mJAp6MGNtOFV3dU5YUXJIUDdGRTtiSnZyRlQ1cGY+M0RR
QCRgbkxfan1XSkh8PShiNyRRTGRLMFBLRThoSTk9d15rWH4KenEoUlQ/U3NXSU9leUhHJEdtOTd7
ajZOJX05X243ck04S0JuJEBzSHxHTilpTXdmQWsoXzZjakF6Un5gbk5gU0dFCno7KWxXeFpaSl43
VytWVjl0MFV2PzwoOylaZFJGb0g3aGZNKlFAeUhlIXB3PXU+NUNAQkoxd3s3VVNndCZFWDF3WQp6
JnR3MGlqJmxkKGJiQjwjKlghNiRCS19gfEZ3TF5DdGxJUkdUZWBucz1vcD0oUXRRRTRUP1dxV3kt
Zkp6Z3t1NXwKelhGdTd4e3J5R3tKdj1UfmViV0prcEo9fUFfWmoqMjByNCFQJl5mdyNTPil2bD97
MyZrey1OViUpMUc+d2NNUFg4CnpLYmR1U15NU0gxOEpBY3tRT3VKb3ZsMFZzLUZoeWNmVW5yYmM0
d2FLZEJiaTB0OHBIM14tJW56NElGT3pAKHNgNQp6R1dDbEdzPHVhc245aT5tZEVDcVkqbyg/WmFT
UUdMSTZLQWFjSD9rdW59JjxIX1AmPyZTdShPTj1SeDRsNlo2KHkKemlPfmY5ek09Y28pV2BGX0ZS
cXB5djRlbS01PU0xIWxJbT53dWJ6S1BSYWw/dCp6P3ptQDdEVip7Yn14LWk2ZD5aCnprMktlSj1D
P09TIT4qXmpaPTctMXVYYTNzQWZaczw9cjtLQkpJe0dybWlKcUFFQWElYHUtTWhsJDdYdiZacj9H
Uwp6NW5zJWptNn4qV3xJR3Q9KzYjTn4qNyRPPmNWNCspTX0ze1NBaFAyMUNqTyZTY0t6MXR1MD0y
aipOcz1GU04xNHoKelNhSWNEKkckJjlGNztgPE44YUhpaXNqZSFNZUZCMGl1JEdeODVATXpoQVM0
PEJBMHhKVVlzcEYpdHpaRzM5VSg3Cno7bz8qaDZURGUlbkRHPVpeSUpjN1VELV9jMXJKPExDZF87
RFoxMlhxe25xfEdlQ31OSWxgfCZveElPPXdXYjtLdgp6bDxsRCYlOU1mLW5mM2ZIVF58T2EzKztw
dlpNJnJnaWd4Rns/bFI9eygpXzJ0N0NjPEo8TVcjS0d3bEN4VkF0KTUKenp4XzVMOGpLPWxBPlhZ
WXY0VWdaWXlrJCZNeVRaJEdAaEhCOCtVNmk9UlIjdj9HSzlFS0Q2ITk0YDJoem1aI0xlCnpLUjFJ
d0Fsdyk1LTBXb0RNSVJvUyh0KmVUamZRR0dHZXV6ezBBckctTGxUfnUoYW9+fDUydHUqQytGN2Qh
aD5ENwp6XihzI09nfnZRT2NULXM+S2c/fT9UPG9JbkUtemhMVmpXV3B2TD8zTWt2NitjJmc+M1ox
Mi1SSmJeWkZ9ezlvKjEKekZWdm12TERhaWVLQXk0Qj44dGdwPiRnan5VJG5EM2NXJXp9KnN0cS05
O0diSyYpIXp2VSRObCU9UmNsNFYlMV5RCnp5clkrRUhYNm88OUEzOSNAc1cwaGxAbEVEO3M8cSZu
KktLOGlKZ3NxWHdMSXBRen5vcnFAVlBeZDhKMk8qbUEzWQp6eD9LVXM3cEBLSlkoTGBnczVeUFor
eG9gWHlkSnlGJjI4Q3wmZHc+ZkZJM3A5KXp2S0NkQlN+RGB9aGNLYmNTIVkKelF7S0ZWR091PE9s
ITZ5XkBaZjtOVzhIRzl4ODR8Zjs3UyM7eTxfeihLYUZlT2peWlBhUkV3U18zTER0WnN9JlUpCnoh
bnw5SkNucXhyRG0qRTBaYz4zWmZEMUp0e2txeFdLd180K2J8OGhEbGA+VDIwbEBEY3NgN3BgO3xg
cDc1Qz53Ygp6VnliJFVjUUA7RUxpeGRnV0x9MFg2dUVSRHkjJFNsVG5UIzdvZ3RoXjVEcjRRQFUw
a097SHReNntvQkZFWX0qIVoKejdhTD0wYXJWbzczQ3kkZXtYQWAwazdlP3ArN0VXMShkX2oyZTlt
T3s5bzRubUgkSTk3ZVcjQipwRHo0amMpVk5YCnpUR3tpe1lVVEleUSZ4e0g5eld6IWM8UDMyYGlq
OGdBIUNPOUl0e3NAdWxhK1c7UFQqa2BMfjBNJWJzIU80bkgkXgp6UF9JQUVoPHROQnFRQGA0digp
Zio+WDctTylEdDVySj5PMF5tYkNoKnxDOXk5bzAhJC0jQ0FXUGkoSXpQVGIrPEoKeklgM2xRcnxn
U3dyekJPKV9sdHt0YylyNF5NJFhJNXRiNldyb3xRTHo/SnNwPjdDSUJKMkZ8K2haWGNNeTFeZXRx
CnpyQHFVIVRHSGp3Z3hhOWpEfE1eWmhQWFgwKUJBNkZjeU5pR15ARyhEJk09b0YwYjwmeEY8MjZD
ZGhEJiR6eF9PXwp6TjlvcXNmLXpRTkRmNipBSHxGYTh1dGh+QFB5c1JWQztXe3dCUmpVZV9JZGxH
bn1OYU1EQnNIWFEzRml3d2IlZW4KekNRTzNHMkMmIXclfWolcUQlV0JJU1pufWA0YmJHbHdiJWRf
OHtsN2hAKz54aCNSam4wMFJRSlV6YHVPfD1OUTtXCnpxMnVCWjM9eXB9Sk4/KEBgVkYmLVR7UFdK
fDgjdkgtX3F1JGxhJj9ZS2t2SyVrcz1Ye1dFbjUkQERHRXpydEUpTQp6biUwIW87cDRaLUpGbX5+
eCpaWXt5N0pvWHZBdkk7QEotclUrX209SD9DXyMkcDcofSlkfVp2JHheMGBMcFBYT3cKem0zVk9Y
R25aJGQ/fEYlZXVJWU9gI248cW4/fWBsUD13Qkw9UksrdHRsV2txSUdRWU5Ge0w4ZTBedH4/K3tk
XzY5Cno7dWlPfCV9am4+Zkg+Pip2N0VfbUtQJGMkdWBoK04/WHxhaWJwSWl4QkNqdkxJbnFWQ0BY
TkktaEhET0krZko4PAp6PkFkLTNhaT4lYW9qNnc5ZjJCVG1eM2BeSXYoRXxjNEU0P2t7JXJtVVBw
KF55Zjs8X3thbWlnKWQ/eDQ5dFY/PEYKejgmTU8lSytiS2EmNEZXX3BYaj95cyVBTlQ+Ui01Uih6
WCMjenZab3BVYy18ZysqZGVzJmlEaCVlQWBiUD5lPTU4CnphWHYySXJNNjN0LXJsZCM8dTN6aCVl
UTZkcG0xbiVWcHN0LWJZZTdmX2tZeDBaeXFsQUNfJUcwR0YrOExnV2xWZAp6Sk1aI14jWT1sbUQm
KlFeY2Y4YXc7YnFzTiklIWRgT0pXX2Y0fTlKKkB9ZChxRSNnKD44fGp3SGleLXlYK2heWEIKejFX
KV5CI0NNbCZXJDI1fi18amVAYEQ1MF5nPGEmb2VPYEZ7PmYpI3F0SEwrcGkjcGQ9al80R21tRTZp
bzVUV2ZKCno0Pn5rS208b1FZNjFqRCp6azNzTjNwPSpZKTJwaTIlV3cwaGheQm1FR2RZQ00lXmsz
PD9zd2smUSpIQj9JYDkyNwp6UVdtYEB6R24xS2VuR3N0ZEFSLWtzVzxtS1deYj1BYWh7cD1HIWck
e2NVUlVCaHhvSUk9K2QqRFRFQyQpS0I/VEAKeiYpcnRJYEI7MDI7OzZPJWZ6IUQhOSgzSEhhOS1T
VkB4SUQ4VnsjWUNQVytzKCtTazlSRHlvNUREOWdPPyl5dys9CkxtKnU3Uklgc1Y/LWJ5Kl8KCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IGY2MTZhNzRiNDE3ZjYx
ZTlhYTNkZDI1YzhiZTg2YzllMmEyZmQyOGEuLjYwYjcyMmMzYzk0OWM3Yjg1ZTY0ZDJmM2RhNmJm
MzU3YmM4MGJhZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBA
IC0yOTAsNjAgKzI5MCw2IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHNXaXRoUHJld2FybWluZykKICAgICBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hv
dWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmc6Olllcyk7CiB9CiAKLVRFU1QoV2ViS2l0LCBDdXN0
b21EYXRhU3RvcmVQYXRoc1ZlcnN1c0NvbXBsZXRpb25IYW5kbGVycykKLXsKLSAgICAvLyBDb3B5
IHRoZSBiYWtlZCBkYXRhYmFzZSBmaWxlcyB0byB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5Ci0gICAg
TlNVUkwgKnVybDEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiU2lt
cGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNCIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0KLSAgICBOU1VSTCAq
c3dQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5h
cHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJLaXQvU2VydmljZVdvcmtlcnMvIiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXV07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSByZW1vdmVJdGVtQXRVUkw6c3dQYXRoIGVycm9yOm5pbF07Ci0gICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd1BhdGgu
cGF0aF0pOwotCi0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJl
Y3RvcnlBdFVSTDpzd1BhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl0gZXJyb3I6bmlsXTsK
LQotICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSA9IHN3UGF0aDsKLSAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAgIC8vIEZldGNoIFNXIHJlY29yZHMKLSAgICBh
dXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJy
YXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXV0pOwotICAg
IHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVY
UEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUg
PSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0Nv
bnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIEZldGNoIHJl
Y29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0
YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgW2RhdGFTdG9yZSBm
ZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jkcykgewot
ICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlU
b0NvbnRpbnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBkYXRhU3RvcmUgPSBuaWw7Ci0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwotICAgIHJlYWR5VG9Db250
aW51ZSA9IGZhbHNlOwotCi0gICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRzLCByZWxlYXNpbmcg
b3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBm
bGlnaHQuCi0gICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBl
cy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7Ci0gICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAg
ZGF0YVN0b3JlID0gbmlsOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0Nv
bnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIFRoZSByZWNv
cmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFjayBzaG91bGQgaGF2
ZSBiZWVuIG1hZGUuCi0gICAgLy8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRo
ZXkgYXJlIGdvbmUuCi0gICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwotICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vi
c2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRl
RGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDBVLCBkYXRh
UmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwotfQotCiBU
RVNUKFdlYktpdCwgQ3VzdG9tRGF0YVN0b3JlRGVzdHJveVdoaWxlRmV0Y2hpbmdOZXR3b3JrUHJv
Y2Vzc0RhdGEpCiB7CiAgICAgTlNVUkwgKmNvb2tpZVN0b3JhZ2VGaWxlID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktp
dEFQSS9DdXN0b21XZWJzaXRlRGF0YS9Db29raWVTdG9yYWdlL0Nvb2tpZS5GaWxlIiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpOT107Cg==
</data>
<flag name="commit-queue"
          id="444319"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424605</attachid>
            <date>2021-03-29 17:27:22 -0700</date>
            <delta_ts>2021-03-30 11:19:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210329172721.patch</filename>
            <type>text/plain</type>
            <size>107353</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0NWRiNmMwNjEzYjg3ZWEyY2FiMjRi
ZDNiNDNkMGZhNTdjZTlmNjQuLmEwOTIxMzhjNGI3YWZkNjVhNTg1ZjliNjJlMDY4Nzg5ODMxMzQ2
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
ICAgICAgICAKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTAzLTI4ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIEFzcGVj
dFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIGZvciBXZWJLaXRMZWdhY3kuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMmJlOTY0ODEwMGUyMDI3YTIyZDk3YWMzMzhmZjZjODUwYzQwNGM0Ni4uNjhh
MDUwNmQ1Mzc2YWJkMjQ0Mzc0ZjA5NmRhYzFlM2RmMDRkMTM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2NyBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0
aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgbmV0
d29yayBwcm9jZXNzIHdvdWxkIHN0b3JlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgaW4gYSBTUUxp
dGUgZGF0YWJhc2UuCisgICAgICAgIFdoZW4gc3RhcnRpbmcgdG8gdXNlIHNlcnZpY2Ugd29ya2Vy
cywgd2Ugd291bGQgbG9hZCBhbGwgdGhvc2Ugc2NyaXB0cyBmcm9tIHRoZSBkYXRhYmFzZQorICAg
ICAgICBpbnRvIG1lbW9yeS4gVGhpcyB3b3VsZCB1c2UgYSBkZWNlbnQgYW1vdW50IG9mIG1lbW9y
eSBpbiB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3Vl
LCB0aGUgYXBwcm9hY2ggaXMgdGhpcyBwYXRjaCBpcyB0byBzdG9yZSB0aGUgc2NyaXB0cyBhcyBz
ZXBhcmF0ZQorICAgICAgICBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSBpbnN0ZWFkLiBUaGlzIHdo
ZW4sIHdoZW4gbG9hZGluZyB0aGVtLCB3ZSBjYW4gc2ltcGx5IG1tYXAoKSB0aGVtCisgICAgICAg
IGFuZCBncmVhdGx5IHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgTm90ZSB0aGF0IHRo
ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzICh3aGljaCBtYXkgYmUgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcykgYWxzbyBrZWVwcyBhCisgICAgICAgIGNvcHkgb2YgdGhlIGltcG9ydGVkIHNlcnZpY2Ug
d29ya2VyIHNjcmlwdHMgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlcnMgaXQgaXMgcnVubmluZy4gTW9y
ZQorICAgICAgICB3b3JrIHdpbGwgYmUgbmVlZGVkIGluIGEgZm9sbG93LXVwIGJ1dCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBleHRlbmQgdGhlIGFwcHJvYWNoIHNvIHRoYXQKKyAgICAgICAgdGhlIHNl
cnZpY2Ugd29ya2VyIHByb2Nlc3Mgd291bGQgb25seSBoYXZlIGEgbW1hcCdkIHZlcnNpb24gb2Yg
dGhvc2Ugc2NyaXB0cy4gVGhpcyB3b3VsZAorICAgICAgICByZWR1Y2UgbWVtb3J5IHVzYWdlIG9u
IHRoZSBXZWJDb250ZW50L1NlcnZpY2VXb3JrZXIgcHJvY2VzcyBzaWRlIGFzIHdlbGwuIEkgYW0g
ZG9pbmcgdGhpcworICAgICAgICBzZXBhcmF0ZWx5IHRob3VnaCB0byByZWR1Y2UgcGF0Y2ggc2l6
ZSBhbmQgZmFjaWxpdGF0ZSByZXZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGVyZSBz
aG91bGQgYmUgbm8gV2ViLWZhY2luZyBiZWhhdmlvciBjaGFuZ2UsIGp1c3QgYSBkZWNyZWFzZWQK
KyAgICAgICAgbWVtb3J5IHVzYWdlIGluIHRoZSBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBzZXJ2aWNl
IHdvcmtlcnMgYXJlIHVzZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgU1dTY3Jp
cHRTdG9yYWdlIGNsYXNzIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJBZ2VudDo6Z2V0SW5pdGlhbGl6YXRpb25JbmZvKToKKyAgICAgICAgQ29udmVy
dCB0aGUgc2NyaXB0IHR5cGUgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIEZpeCBhc3NlcnRpb25zIHRoYXQgd2Vy
ZSBoaXR0aW5nIHdoZW4gY29tcGFyaW5nIHRvIGVtcHR5IFNoYXJlZEJ1ZmZlcnMgKG9mZnNldCB3
b3VsZCBiZSAwCisgICAgICAgIGFuZCBzaXplIHdvdWxkIGJlIDApLiBUaGlzIHdhcyBjYXVnaHQg
YnkgQVBJIHRlc3RzIHNpbmNlIHdlIGhhdmUgc29tZSBzZXJ2aWNlIHdvcmtlciBBUEkKKyAgICAg
ICAgdGVzdHMgdGhhdCB1c2UgZW1wdHkgd29ya2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgQWRkIHNvbWUgY29udmVyc2lv
biBmcm9tIFN0cmluZyB0byBTaGFyZWRCdWZmZXIgdG8gdGhlIHNjcmlwdCwgYW5kIHZpY2UtdmVy
c2EsIGluIHRoZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBjYXNlLgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JpcHRCdWZmZXJUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpbmdUb1NjcmlwdEJ1ZmZlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgIC0gU3RvcmUgc2NyaXB0cyBhcyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcs
IHNvIHRoYXQgdGhleSBjYW4gaG9sZAorICAgICAgICAgIG1tYXAnZCBkYXRhLgorICAgICAgICAt
IEFkZCBzY3JpcHRCdWZmZXJUb1N0cmluZygpIC8gc3RyaW5nVG9TY3JpcHRCdWZmZXIoKSB1dGls
aXR5IGZ1bmN0aW9ucyB0bworICAgICAgICAgIGNvbnZlcnQgc2NyaXB0IHNvdXJjZXMgYmV0d2Vl
biBTdHJpbmcgYW5kIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIENvbnZlcnQgZnJv
bSBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWNvcmRzVGFibGVTY2hlbWEpOgorICAgICAgICBVcGRhdGUgZGF0YWJhc2Ugc2NoZW1h
IGFuZCBidW1wIHZlcnNpb24gbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIHN0b3JlIHRoZQorICAgICAg
ICBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaW5zaWRlIHRoZSBTUUxpdGUgZGF0YWJhc2UuIEluc3Rl
YWQsIHRob3NlIHNjcmlwdHMKKyAgICAgICAgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IG9uIHRoZSBm
aWxlc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkltcG9y
dGVkU2NyaXB0QXR0cmlidXRlczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
cG9ydGVkU2NyaXB0QXR0cmlidXRlczo6ZGVjb2RlKToKKyAgICAgICAgSW50cm9kdWNlIG5ldyBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgc3RydWN0IHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgZGF0
YQorICAgICAgICBtZW1iZXJzIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQsIGV4Y2VwdCBmb3IgdGhlIGFjdHVhbAorICAgICAgICBzY3JpcHQgc291cmNlLiBXZSBu
b3cgc2F2ZSBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIGluIHRoZQorICAg
ICAgICBkYXRhYmFzYWUgaW5zdGVhZCBvZiBIYXNoTWFwIG9mIEltcG9ydGVkU2NyaXB0IHNpbmNl
IHdlIG5vIGxvbmdlciB3YW50IHRvCisgICAgICAgIHN0b3JlIGltcG9ydGVkIHNjcmlwdCBzb3Vy
Y2VzIGluIHRoZSBkYXRhYmFzZSwgYnV0IHJhdGhlciBzdG9yZSB0aGVtCisgICAgICAgIHNlcGFy
YXRlbHkgb24gdGhlIGZpbGUgc3lzdGVtLgorCisgICAgICAgIChXZWJDb3JlOjpzdHJpcFNjcmlw
dFNvdXJjZXMpOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBIYXNoTWFw
IG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgaW50
byBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIChpZGVudGljYWwgYnV0IHdp
dGhvdXQgdGhlIHNjcmlwdAorICAgICAgICBzb3VyY2UpLCByZWFkeSB0byBzYXZlIGluIHRoZSBT
UUxpdGUgZGF0YWJhc2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlU2NyaXB0U291cmNl
c0Zyb21EaXNrKToKKyAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBIYXNo
TWFwIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAg
ZnJvbSBhIEhhc01hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMsIGNvbWluZyBmcm9tIHRo
ZSBTUUxpdGVEYXRhYmFzZS4gVGhlCisgICAgICAgIG1pc3Npbmcgc2NyaXB0IHNvdXJjZXMgYXJl
IGZldGNoZWQgZnJvbSB0aGUgZGlzayB2aWEgU1dTY3JpcHRTdG9yYWdlLgorCisgICAgICAgIChX
ZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKToKKyAg
ICAgICAgTWFrZSBzdXJlIHdlIGRlc3Ryb3kgdGhlIFNXU2NyaXB0U3RvcmFnZSBvbiB0aGUgYmFj
a2dyb3VuZCBxdWV1ZSBmb3IgdGhyZWFkLXNhZmV0eS4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAg
ICBSZXR1cm5zIHRoZSBwYXRoIG9uIHRoZSBmaWxlc3lzdGVtIHdoZXJlIHNlcnZpY2Ugd29ya2Vy
IHNjcmlwdHMgYXJlIHN0b3JlZC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0
YWJhc2U6OnNjcmlwdFN0b3JhZ2UpOgorICAgICAgICBDb25zdHJ1Y3RzIChpZiBuZWNlc3Nhcnkp
IGEgU1dTY3JpcHRTdG9yYWdlIGFuZCByZXR1cm4gaXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVhckFsbCk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBjbGVh
ciBhbGwgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgb24gZGlzayBpbiBhZGRpdGlvbiB0byB0
aGUgZGF0YWJhc2UsCisgICAgICAgIG5vdyB0aGF0IHRoZXkgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5
LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdl
cyk6CisgICAgICAgIC0gU3RvcCBzdG9yaW5nIHRoZSBzY3JpcHQgc291cmNlcyBpbiB0aGUgU1FM
aXRlIGRhdGFiYXNlLCBhbmQgaW5zdGVhZCBzdG9yZSB0aGVtIGFzIHNlcGFyYXRlCisgICAgICAg
IGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbSB2aWEgU1dTY3JpcHRTdG9yYWdlLgorICAgICAgICAt
IEltcHJvdmUgbG9nZ2luZworICAgICAgICAtIFdoZW4gZG9uZSBzdG9yaW5nIHRoZSBzY3JpcHRz
IHRvIGRpc2ssIHNlbmQgdGhlc2UgbmV3IG1tYXAnZCB2ZXJzaW9ucyBiYWNrIHRvIHRoZQorICAg
ICAgICAgIFNXU2VydmVyV29ya2VyIG9uIHRoZSBtYWluIHRocmVhZCwgc28gdGhhdCBpdCBjYW4g
cmVwbGFjZSBpdCdzIGhlYXZ5IHNjcmlwdCBzb3VyY2VzIHdpdGgKKyAgICAgICAgICB0aGVzZSBv
bmVzLiBUaGlzIGhlbHBzIHJlZHVjZSBtZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRo
ZSBzY3JpcHQgc291cmNlcyBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0
aGF0IHRoZXkgYXJlIG5vIGxvbmdlcgorICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRh
dGFiYXNlLgorICAgICAgICAtIEltcHJvdmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmg6CisgICAgICAg
IFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0
aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2Ny
aXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBz
YXZlIG1lbW9yeS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRT
dG9yYWdlOjpjbGVhcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuaDogQWRkZWQuCisgICAgICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8gZGVhbCB3
aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmlldmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29ya2VyIHNj
cmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFzIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4gV2hlbgor
ICAgICAgICBnb2luZyBhIHJldHJpZXZhbCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEgU2hhcmVk
QnVmZmVyIHdoaWNoIGNvbnRhaW5zCisgICAgICAgIG1tYXAnZCgpIGRhdGEuCisgICAgICAgIFRo
ZSBzY3JpcHRzIHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVzaWRlIHRoZSBkYXRhYmFz
ZS4gVGhlIHNjcmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBvcmlnaW4gKHVzaW5nIFNI
QTI1NiBvZiB0aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lKSwgYW5kIHRoZW4gYnkgcmVnaXN0cmF0
aW9uIChieQorICAgICAgICB1c2luZyBTSEEyNTYgb2YgdGhlIHJlZ2lzdHJhdGlvbiBzY29wZSBh
cyBzdWJmb2xkZXIgbmFtZSkuIFRoZSBmaWxlIG5hbWUgZm9yIHRoZSBzY3JpcHQKKyAgICAgICAg
aXMgYSBTSEEyNTYgb2YgdGhlIHNjcmlwdCBVUkwuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUg
c2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhh
dCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2Ug
bmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0
IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQg
ZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgVGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQgZm9yIGNvbnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRz
IGRhdGEgbWVtYmVycyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29y
a2VyOjpzY3JpcHQgY29uc3QpOgorICAgICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNj
cmlwdCBpbnN0ZWFkIG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQor
ICAgICAgICBtbWFwJ2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0y
OCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGZyb20gdGhl
IFhjb2RlIHByb2plY3QgYXMgdGhleSBkb24ndCBleGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMGYxZWI4NmZi
OTUwZmY1NmU4YTcyNjAzOGZlMTAxM2Q1OGJkZGU2Li4xZjZiZTY4ZmY1YTIwM2EzMDZiMWE5YzVj
YTc5MjI0ZTVkZjE5NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIg
c2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgwOAorICAgICAg
ICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0U2NyaXB0UmVz
b3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBwYXNzIHRoZSBJ
bXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURp
cmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAgICAgICBEcm9w
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5kIHVzZSB0aGUg
ZXhpc3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoKSBp
biB3dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6Om1hcFRv
RmlsZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhlIG1hcFRvRmlsZSgpIGxvZ2lj
IHRvIFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIFVwZGF0ZSBT
aGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlzdGluZ3Vpc2ggYSBudWxsIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBXZSBub3cgdXNlIFNoYXJlZEJ1
ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291cmNlcworICAgICAgICBhbmQg
aXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0byBiZSBlbXB0eSAoYW5kIHRo
ZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0cykuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVz
b3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNlIElQQworICAgICAgICBmb3Ig
Y29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0ZWRTY3JpcHQgZGF0YSBtZW1i
ZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBEb24ndCBldmVyIHJlcGxheSBEaXNw
bGF5TGlzdCBpdGVtcyBvZiBhIFJlbW90ZUltYWdlQnVmZmVyIGluIFdlYlByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2YTFmZjBi
ZS4uYTg0MTZmMzNhZTJkOGNjM2JjM2QzMDRmM2JiOTczZDBmZjc4NTMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKQEAgLTQwOCw1ICs0MDgsNjAgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgIioiX3Mp
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChmaWxlSXNE
aXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAg
ICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSwg
UGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRwdXRIYW5kbGUpCit7CisgICAgY29uc3RleHByIGJvb2wg
ZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5
c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOworICAg
IGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVtOjp0
cnVuY2F0ZUZpbGUoaGFuZGxlLCBieXRlc1NpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEZpbGVT
eXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOworICAgIGJvb2wgc3Vj
Y2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICB2b2lkKiBtYXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7
CisgICAgdWludDhfdCogbWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOworICAg
IG1lbWNweShtYXBEYXRhLCBieXRlcywgYnl0ZXNTaXplKTsKKworI2lmIE9TKFdJTkRPV1MpCisg
ICAgRFdPUkQgb2xkUHJvdGVjdGlvbjsKKyAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIGJ5dGVzU2l6
ZSwgRklMRV9NQVBfUkVBRCwgJm9sZFByb3RlY3Rpb24pOworICAgIEZsdXNoVmlld09mRmlsZSht
YXAsIGJ5dGVzU2l6ZSk7CisjZWxzZQorICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24u
CisgICAgbXByb3RlY3QobWFwLCBieXRlc1NpemUsIFBST1RfUkVBRCk7CisKKyAgICAvLyBGbHVz
aCAoYXN5bmNocm9ub3VzbHkpIHRvIGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9y
eS4KKyAgICBtc3luYyhtYXAsIGJ5dGVzU2l6ZSwgTVNfQVNZTkMpOworI2VuZGlmCisKKyAgICBp
ZiAob3V0cHV0SGFuZGxlKQorICAgICAgICAqb3V0cHV0SGFuZGxlID0gaGFuZGxlOworICAgIGVs
c2UKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4g
bWFwcGVkRmlsZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzExNWQ2NWQ0ZjhhMDI0ZDJlN2Y2Yjlj
MzIxNDcyMzg0ZWY0YzQuLjIxNDdlYjExZTg2OGQxYzRhNWI2NDRlYTY3YTJiMTdhNzUxM2RhZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTE5MCwxNCArMTkwLDE0IEBAIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BSSVZB
VEUgTlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5
UHJlZml4KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCiBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJik7CkBAIC0yNTIsNiAr
MjUyLDEwIEBAIGlubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9y
PShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8gVGhp
cyBjcmVhdGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBzIGl0LCB3cml0ZSB0aGUgcHJvdmlk
ZWQgZGF0YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVkIGZpbGUuCisvLyBUaGlzIGZ1bmN0
aW9uIGZhaWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIGF0IHRoZSBkZXN0aW5hdGlvbiBw
YXRoLgorV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBQbGF0
Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1J
bXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3ZTE4MDU1ZDNjMzcx
NTQ3ODQwNWZmMzlhNTVjYzk5MTgzY2I2ZWM4Li5kOTRlOTIzMmNiNmIxZTMzMWFjMWMwMGUwMWQ5
NDI4MDU2NzYxOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4NCw2ICsyNjg0LDcgQEAgd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3Jp
Z2luU3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAK
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGNlMTNlYmIzN2VjZmFhNDU0ODEwYzU1ZjlkMjQzYzVlY2Qx
MjI3MzMuLmVjYjc1YjZlZWQyYzg0Mjg0YTRhZDkwNjU4YWVmOTBjNDBiOGRlMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NjIsNiArMTI2Miw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAq
LzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JN
b3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hS
ZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYy
NjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkw
QjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMw
N0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyog
SlNVSUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODIzMCw2ICs4MjMxLDggQEAKIAkJNDYwQ0JGMzMx
RDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNE
T01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBE
MTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3
M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcx
QyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzA3LDYgKzIwNzEwLDggQEAKIAkJCQk1MUI5MTQw
QjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVC
OTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1Qjcx
RkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1
OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1
OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RD
MEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTI4Niw2ICszNTI5MSw3IEBACiAJCQkJNDY2NThE
QzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3Jl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEg
LyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhF
NSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2
ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1Nl
cnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4
MjUzNjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdv
cmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNl
cnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAu
c2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCku
c2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENv
bnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJjNGFhOTgzYzg3
M2NmMTNkNTQzZGQxYzc2NjRjY2Y2NjVkYWE5Li5hZjgyYzhjMDZkMmI2MzYxZWEyNmQ0YWYwOGFi
NGIxZjdlNjQ1ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTI4MSw4ICsyODEsOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIAotICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8IHRoaXNTZWdtZW50LnNpemUoKSk7Ci0g
ICAgICAgIEFTU0VSVChvdGhlck9mZnNldCA8IG90aGVyU2VnbWVudC5zaXplKCkpOworICAgICAg
ICBBU1NFUlQodGhpc09mZnNldCA8PSB0aGlzU2VnbWVudC5zaXplKCkpOworICAgICAgICBBU1NF
UlQob3RoZXJPZmZzZXQgPD0gb3RoZXJTZWdtZW50LnNpemUoKSk7CiAKICAgICAgICAgc2l6ZV90
IHRoaXNSZW1haW5pbmcgPSB0aGlzU2VnbWVudC5zaXplKCkgLSB0aGlzT2Zmc2V0OwogICAgICAg
ICBzaXplX3Qgb3RoZXJSZW1haW5pbmcgPSBvdGhlclNlZ21lbnQuc2l6ZSgpIC0gb3RoZXJPZmZz
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDIzYmY1YThlZGI0
YzFlMzAyOWI3Y2I0NzQ5ZWFjZDU1MDFiYTkxOTQuLjI5YzcxNzIyODRmNzVmZjA5NGVlNzBjNjc5
YTJjNmFjMzJiNTM4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBA
IC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9CiAgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CiAgICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwg
c2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CiAgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKIAogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PGNoYXI+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCmluZGV4IDRkNDc0ZjE2ZTU4OGRkMDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUx
MDA0MGJlMjg1OTIxMGI3MmNlZDIzMTgyYWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTYwLDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlm
IChpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0
UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2Jh
bFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBl
bmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
c2NyaXB0QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAg
ICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAg
ICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFs
PEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9y
dGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2Uo
dXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCks
IG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVz
b3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3Ry
aW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlN
RVR5cGUgfSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5jcHAKaW5kZXggMTZkZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTli
NWVkZi4uMWVhNTkwMWJkOWQyZmQ5Yzc5M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRh
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAg
am9iRGF0YUlkZW50aWZpZXIsCiAgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwK
ICAgICAgICAgc2VydmljZVdvcmtlcklkZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgc2NyaXB0LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5m
by5pc29sYXRlZENvcHkoKSwKICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVk
Q29weSgpLAogICAgICAgICByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYg
KzQ4LDIwIEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZl
clRvU3RyaW5nKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBmb3IgKGF1dG8gaXQgPSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVu
ZCgpOyArK2l0KQorICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5z
ZWdtZW50LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgp
OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2
NWVlNDgwYTk2MWIxMGYxZGJkYzdlLi44NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYw
ZTU5MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0
MCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0
cmluZyhTaGFyZWRCdWZmZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsK
ICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVS
TDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNw
b25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
ICAgICBJbXBvcnRlZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlw
dC0+Y29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRD
b3B5KCkgfTsgfQogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7
CisgICAgICAgICAgICBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAg
ICAgICAgICAgZGVjb2RlciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1
Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZv
OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBA
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiBzY3JpcHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3
IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVu
dGlmaWVyKSwKICAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92
ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisg
ICAgICAgIFdURk1vdmUoKnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5m
byksCiAgICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RG
TW92ZShyZWZlcnJlclBvbGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3
MGY0ZjVlNjkzZjI3N2Y2NTU4M2U3YTRlMDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEw
ZjNhMDlkNDI1Mjc0ZTZlZWJlMjY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBA
IC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxh
Z3MKIAogU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0
dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQ
cm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyKQotICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3Ry
aW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6
Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBv
bGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2Ny
aXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5l
Y3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxF
bmFibGVkKCkpCisgICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJp
bmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9s
aWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVm
ZmVyVG9TdHJpbmcoZGF0YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVt
bXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3Jp
Z2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVu
dGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRl
ZENvcHkoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OnNoYXJlZCgpKQogICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkg
PyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwCmluZGV4IGNlZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4
OTRiMTQuLmQ4ODVhMjM3MGYzMDUyNTk3MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRl
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNR
TGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRp
YyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3
ICs2Miw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0
cmluZyYgdGFibGVOYW1lKQogICAgICAgICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCi0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBjbGVhbk9sZERhdGFiYXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5KQogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFz
ZUZpbGVuYW1lRnJvbVZlcnNpb24odmVyc2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2Ny
aXB0QXR0cmlidXRlcyB7CisgICAgVVJMIHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlw
ZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1p
bWVUeXBlOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2Rl
ciA+PiByZXNwb25zZVVSTDsKKyAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlw
ZTsKKyAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7Cisg
ICAgICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCpt
aW1lVHlwZSkKKyAgICAgICAgfX07CisgICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sK
KyAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2Ny
aXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3Jp
cHRzLmFkZChwYWlyLmtleSwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5y
ZXNwb25zZVVSTCwgcGFpci52YWx1ZS5taW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91
dFNjcmlwdHM7Cit9CisKK3N0YXRpYyBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3Jp
cHRTdG9yYWdlJiBzY3JpcHRTdG9yYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXksIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0
ZXM+JiYgbWFwKQoreworICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDog
bWFwKSB7CisgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJp
ZXZlKHJlZ2lzdHJhdGlvbktleSwgcGFpci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2Ny
aXB0KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVn
aXN0cmF0aW9uRGF0YWJhc2U6OnBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQg
dG8gcmV0cmlldmUgaW1wb3J0ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92
ZShwYWlyLnZhbHVlLnJlc3BvbnNlVVJMKSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9
KTsKKyAgICB9CisgICAgcmV0dXJuIGltcG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwg
U3RyaW5nJiYgZGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiU2VydmljZVdvcmtlciBJL08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJp
YWwpKQogICAgICwgbV9zdG9yZShtYWtlV2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkg
QEAgUmVnaXN0cmF0aW9uRGF0YWJhc2U6On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBi
ZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNl
KQotICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2Rh
dGFiYXNlKV0geyB9KTsKKyAgICAvLyBUaGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQg
dG8gYmUgZGVzdHJveWVkIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRh
YmFzZSB8fCBtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
ZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZSht
X3NjcmlwdFN0b3JhZ2UpXSB7IH0pOwogfQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpw
b3N0VGFza1RvV29ya1F1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIz
NSwxOSBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFz
ZURpcmVjdG9yeSwgeyAiU2NyaXB0cyIsICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYg
UmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIGlmICghbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3Njcmlw
dFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFNXU2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVj
dG9yeSgpKTsKKyAgICByZXR1cm4gKm1fc2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKQEAgLTMzMyw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6Y2xlYXJBbGwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGUKIHsKICAgICBwb3N0VGFza1RvV29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2Rh
dGFiYXNlID0gbnVsbHB0cjsKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZp
bGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2Ny
aXB0U3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsK
IAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
QEAgLTM1MiwxMiArNDE3LDEzIEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENo
YW5nZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRl
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJl
Z2luKCk7CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElO
VE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8p
Il9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8g
UmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsK
ICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBz
dG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlz
LT5zY3JpcHRTdG9yYWdlKCk7CiAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVk
UmVnaXN0cmF0aW9ucykgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNl
LCAiREVMRVRFIEZST00gUmVjb3JkcyBXSEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwu
cHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiYKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIs
ICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAo
JWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
TXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNj
cmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyIGNzcEVuY29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5
LmVuY29kZShjc3BFbmNvZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNv
ZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3Jl
ZCBzZXBhcmF0ZWx5IGluIHRoZSBTY3JpcHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3Vs
dCwgd2UgbmVlZCB0byBzdHJpcCB0aGUgc2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2Rp
bmcgdGhlIHNjcmlwdFJlc291cmNlTWFwLgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNl
TWFwRW5jb2RlciA8PCBzdHJpcFNjcmlwdFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7
CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJ
bmZvOwpAQCAtMzg1LDIxICs0NTQsMzYgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9Q
dXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAg
ICAgICAgIHx8IHNxbC5iaW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVU
aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwuYmluZFRleHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJh
dGlvbi51cGRhdGVWaWFDYWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJp
bmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IHNxbC5iaW5kVGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwuYmluZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlw
ZSkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNv
ZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBzcWwuYmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVu
Y29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUlu
Zm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRv
U3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3Fs
LmJpbmRCbG9iKDksIGNzcEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZl
cnJlclBvbGljeSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEs
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNv
ZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJs
b2IoMTIsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0Vu
Y29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZp
Y2VXb3JrZXIsICJGYWlsZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRz
IHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBTYXZlIHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0
ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0
VVJMLCBkYXRhLnNjcmlwdCk7CisgICAgICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAg
aWYgKCFtYWluU2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNo
TWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAg
YXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRp
b24ua2V5LCBwYWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VS
VChpbXBvcnRlZFNjcmlwdCk7CisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAg
ICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkp
LCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciA9IGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQg
PSBtYWluU2NyaXB0LnJlbGVhc2VOb25OdWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUo
aW1wb3J0ZWRTY3JpcHRzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQor
ICAgICAgICAgICAgICAgIG1fc3RvcmUtPmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVk
U2NyaXB0cykpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQo
KTsKLQotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lz
dHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1
IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVt
b3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVk
L3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVw
ZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRh
YmFzZSwgIlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJs
ZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBm
b3IgKDsgcmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0
YWJhc2VLZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9
IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3Bl
UGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0
VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5E
b3VibGUoNCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVW
aWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0g
VVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0
ID0gc3FsLmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmlu
Z1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2Vy
VHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7Cisg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YSk7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250
ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5z
aXplKCkpOwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0
eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAg
ICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAg
T3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFw
OwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBE
ZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0
YS5zaXplKCkpOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewot
ICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFw
OwotICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlv
bmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJj
ZU1hcFdpdGhvdXRTY3JpcHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVy
ID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJl
Y29yZHM6IEZhaWxlZCB0byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRT
dG9yYWdlKCksICprZXksIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMp
KTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9E
YXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUlu
Zm9EYXRhKTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNh
dGVJbmZvRGF0YSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJ
bmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0
YS5zaXplKCkpOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRl
SW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
Y2VydGlmaWNhdGVJbmZvIik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAg
ICAgIC8vIElmIGFueSBwYXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0
aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4g
ZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkKKyAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdp
biB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5
cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBG
YWlsZWQgdG8gZGVjb2RlIHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3Jh
Z2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsK
KyAgICAgICAgaWYgKCFzY3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVk
IHRvIHJldHJpZXZlIG1haW4gc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0
byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmll
ciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUs
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRh
dGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VX
b3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNv
bnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklk
ZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RG
TW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdU
Rk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291
cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50
aWZpZXIsIHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8p
LCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5
KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRp
b25Ub1N0b3JlKFdURk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaApp
bmRleCBkNmFlZDZiNDBlNjA0NjI2ZTNhMWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2
MjFkYjM0Mjg3N2FmMzRjNzFlNDViOThiOTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0
aW9uU3RvcmU7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsK
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlyZWN0b3J5KTsKQEAgLTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGltcG9ydFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiYpOworICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOwor
ICAgIFN0cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBs
aWVzIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRp
b25TdG9yZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBt
X3NjcmlwdFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRh
Y2FiYTI5MWZkMmE0M2IzZWI0MDE2MTQzOGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2Iy
MmFmYjBlMDU3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBA
IHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBkCiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJv
bVN0b3JlKFdURk1vdmUoZGF0YSkpOwogfQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2Vy
dmVyLmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
VEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lk
IFJlZ2lzdHJhdGlvblN0b3JlOjpkYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2
ZXIucmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9y
ZS5oCmluZGV4IDc1NDNlYzEzYjNkY2Y3MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4
Y2VlYjBlMmY2MDdlNzA3ZTdiYjQwMWZlNDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgK
QEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURh
dGFiYXNlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFp
bGVkVG9PcGVuKCk7CiAgICAgdm9pZCBkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgp
OworICAgIHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2Vy
dmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ODVkZTFmYmIzMGU2ZjdkNDViMjM3MGQ0MjZjYzE1OGNjODg0MmQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNXU2NyaXB0U3RvcmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBzaGEySGFzaChjb25zdCBTdHJpbmcm
IGlucHV0KQoreworICAgIGF1dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGlucHV0VXRm
OCA9IGlucHV0LnV0ZjgoKTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVzKGlucHV0VXRmOC5kYXRhKCks
IGlucHV0VXRmOC5sZW5ndGgoKSk7CisgICAgYXV0byBoYXNoID0gY3J5cHRvLT5jb21wdXRlSGFz
aCgpOworICAgIHJldHVybiBXVEY6OmJhc2U2NFVSTEVuY29kZShoYXNoLmRhdGEoKSwgaGFzaC5z
aXplKCkpOworfQorCitzdGF0aWMgU3RyaW5nIHNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQpCit7
CisgICAgcmV0dXJuIHNoYTJIYXNoKGlucHV0LnN0cmluZygpKTsKK30KKworU1dTY3JpcHRTdG9y
YWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCisgICAgOiBtX2Rp
cmVjdG9yeShkaXJlY3RvcnkpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cit9CisK
K1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3Rvcnks
IHsgc2hhMkhhc2gocmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBzaGEy
SGFzaChyZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0
b3JhZ2U6OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9y
eShyZWdpc3RyYXRpb25LZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25z
dCBTaGFyZWRCdWZmZXImIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5
LCBzY3JpcHRVUkwpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKHNjcmlwdFBhdGgpKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBk
ZWxldGUgdGhlIGZpbGUgYmVmb3JlIHdyaXRpbmcgYXMgdGhlcmUgbWF5IGJlIGNvZGUgdXNpbmcg
YSBtbWFwJ2QgdmVyc2lvbiBvZiB0aGlzIGZpbGUuCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShzY3JpcHRQYXRoKTsKKworICAgIGlmICghc2NyaXB0LnNpemUoKSkgeworICAgICAgICAvLyBE
byBub3QgYXR0ZW1wdCBtYXBwaW5nIGlmIHRoZSBzaXplIGlzIDAsIGp1c3QgY3JlYXRlIGFuIGVt
cHR5IGZpbGUuCisgICAgICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKworICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0
ZW06Om1hcFRvRmlsZShzY3JpcHRQYXRoLCBzY3JpcHQuZGF0YUFzVUludDhQdHIoKSwgc2NyaXB0
LnNpemUoKSk7CisgICAgaWYgKCFtYXBwZWRGaWxlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0
b3JlICVzLCBGaWxlU3lzdGVtOjptYXBUb0ZpbGUoKSBmYWlsZWQiLCBzY3JpcHRQYXRoLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSk7Cit9CisKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9
IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworCisgICAgYm9v
bCBzdWNjZXNzID0gZmFsc2U7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVk
RmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc3Vj
Y2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGUpKTsKK30KKwor
dm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSA9IHRoaXMtPnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkpOworICAgIGJv
b2wgcmVzdWx0ID0gRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRighcmVzdWx0LCBTZXJ2aWNl
V29ya2VyLCAiU1dTY3JpcHRTdG9yYWdlOjpjbGVhcjogRmFpbHVyZSB0byBjbGVhciBzY3JpcHRz
IGZvciByZWdpc3RyYXRpb24gJXMiLCByZWdpc3RyYXRpb25LZXkudG9EYXRhYmFzZUtleSgpLnV0
ZjgoKS5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGRlYmQ4NTRl
MGNkNGNmNDA0MWU2YjcxNjNiNDQ1NjMyMTA1NzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OworY2xhc3MgU2hhcmVkQnVm
ZmVyOworCitjbGFzcyBTV1NjcmlwdFN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSk7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdG9yZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgc2NyaXB0KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXRyaWV2ZShj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRVUkwp
OworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwor
Citwcml2YXRlOgorICAgIFN0cmluZyByZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGNvbnN0OworICAgIFN0cmluZyBzY3JpcHRQYXRoKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCkg
Y29uc3Q7CisKKyAgICBTdHJpbmcgbV9kaXJlY3Rvcnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDBlZjAw
OGZiNTYwNzgxZDMwYWJkYjRhOTk3ZDY0ZjFkNjU4Njk0YjMuLmRjZTIwMTZmYzE1MzgzMDBmZmFh
MTE3NTllYWUzMzQwOGM0ZjllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNzYsNiArMTc2LDEyIEBAIHZvaWQgU1dT
ZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBkYXRhKQogICAgIH0pOwogfQogCit2b2lkIFNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0
c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIGlmIChhdXRvIHdvcmtlciA9IHdv
cmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICB3b3JrZXItPmRpZFNh
dmVTY3JpcHRzVG9EaXNrKFdURk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3Jp
cHRzKSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9w
dHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uKQogewogICAgIG1fb3JpZ2lu
U3RvcmUtPmFkZChyZWdpc3RyYXRpb24tPmtleSgpLnRvcE9yaWdpbigpKTsKQEAgLTYzMyw3ICs2
MzksNyBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogCiB2b2lkIFNXU2VydmVyOjp1cGRhdGVX
b3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRp
ZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
dHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24u
ZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwg
dHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3Rh
bGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmll
ciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRl
KCksIHN0cmluZ1RvU2NyaXB0QnVmZmVyKHNjcmlwdCksIGNlcnRpZmljYXRlSW5mbywgY29udGVu
dFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxD
b250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGJhMWI0MTM1
MDM1NDBkY2U4ODVjZDQ0OGIzZjdjMDQyOGRiOGNiMTcuLjc5NmJlODVlM2U1NDc3MjY4NmU5NTQ4
MDg0NWYwNDU0OGM1ZDk1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE5MCw2ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYp
OwogCiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYpOworICAgIHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxV
UkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAgICAgdm9pZCBy
ZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCk7CiAgICAgdm9pZCByZWdpc3RyYXRpb25T
dG9yZURhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgw
MmE0ODAxMTUxYTcyOGZiYzVhMmE2OTEyNGRiOTYzYzc3MmNiMGEuLjVjYTI1MjY5MTE0NTNkYjA4
ZjFmOGYyODMyZGJjNDA0NWU2NGFhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMTAwLDcg
KzEwMCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25z
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsCiAgICAgLy8gSWYgbmV3ZXN0V29ya2Vy
IGlzIG5vdCBudWxsLCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgdXJsIGVxdWFscyBqb2IncyBzY3Jp
cHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzCiAgICAgLy8gZmxhZyBzZXQsIGFuZCBz
Y3JpcHQncyBzb3VyY2UgdGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUgbWF0Y2ggd2l0aCBuZXdlc3RX
b3JrZXIncyBzY3JpcHQgcmVzb3VyY2UncyBzb3VyY2UKICAgICAvLyB0ZXh0LCB0aGVuOgotICAg
IGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdl
c3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5
cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IG5ld2VzdFdvcmtlci0+
c2NyaXB0KCkgJiYgZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBu
ZXdlc3RXb3JrZXItPmNlcnRpZmljYXRlSW5mbygpKSkgeworICAgIGlmIChuZXdlc3RXb3JrZXIg
JiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVS
TCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2Vy
VHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG5ld2VzdFdvcmtl
ci0+c2NyaXB0KCkpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5m
bywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKICAgICAgICAgUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5p
c2hlZCwgc2NyaXB0IGFuZCBjZXJ0aWZpY2F0ZSBhcmUgbWF0Y2hpbmcgZm9yIHJlZ2lzdHJhdGlv
bklEPSVsbHUiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
ICAgICAgICAgLy8gRklYTUU6IGZvciBub24gY2xhc3NpYyBzY3JpcHRzLCBjaGVjayB0aGUgc2Ny
aXB04oCZcyBtb2R1bGUgcmVjb3JkJ3MgW1tFQ01BU2NyaXB0Q29kZV1dLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMmI4ZmY2ODVlMDQ5NzlmY2RjNzNl
NzMyMGRmM2Y0ZGE2NGM3NjJkZi4uMTIwMDUxNjk4YmY5Mzk4MThlNGQ0M2U4NWM2OTU3MzAwYmE3
ZGNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTE2
LDEwICsxMTYsMTAgQEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNraXBXYWl0
aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3IKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCi12b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0
UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0LCBVUkwmJiByZXNwb25zZVVSTCwgU3Ry
aW5nJiYgbWltZVR5cGUpCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2Ny
aXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmIHNjcmlwdCkKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6
OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0g
ICAgICAgIHdvcmtlci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92ZShzY3JpcHRVUkwpLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgV1RGTW92ZShzY3JpcHQpLCBX
VEZNb3ZlKHJlc3BvbnNlVVJMKSwgV1RGTW92ZShtaW1lVHlwZSkgfSk7CisgICAgICAgIHdvcmtl
ci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92ZShzY3JpcHRVUkwpLCBXVEZNb3ZlKHNjcmlwdCkp
OwogfQogCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmFpbEhlYXJ0QmVh
dENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA0NjU5ZjlmOWZhNmM2YmFhOGRlOTY4ZDM5MTVm
ZTMzYzRlMzEyNjY4Li45YmUzNDQ0OTFmMDYxM2ZhZTE0MGU3OTg1MWI3MTBhM2IzMmIyYjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcih1
aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgbWF0Y2hBbGwodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
VVJMJiYgc2NyaXB0VVJMLCBTdHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJp
bmcmJiBtaW1lVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJj
ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaXN0cmFibGVEb21haW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggM2JhMzZhM2Y5NWE1
N2ViYTE3ODU4Y2U2MmRlZWU3OGFjOWE2NjcwNS4uNjEzYmI3MmM1ODhkOGExNzBiMWU0YmIyYjc5
MGMwMzAwYmUxZjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU1dTZXJ2
ZXJXb3JrZXIqIFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2Vy
dmljZVdvcmtlcklkZW50aWYKIH0KIAogLy8gRklYTUU6IFVzZSByLXZhbHVlIHJlZmVyZW5jZXMg
Zm9yIHNjcmlwdCBhbmQgY29udGVudFNlY3VyaXR5UG9saWN5Ci1TV1NlcnZlcldvcmtlcjo6U1dT
ZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lz
dHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25z
dCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQorU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29y
a2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24s
IGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBv
bGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4m
JiBzY3JpcHRSZXNvdXJjZU1hcCkKICAgICA6IG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZlcikp
CiAgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb24ua2V5KCkpCiAgICAgLCBtX3Jl
Z2lzdHJhdGlvbihtYWtlV2Vha1B0cihyZWdpc3RyYXRpb24pKQpAQCAtMjM4LDYgKzIzOCwyMSBA
QCB2b2lkIFNXU2VydmVyV29ya2VyOjpzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiB1cmwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wbwogICAgIG1fc2NyaXB0UmVzb3VyY2VNYXAuc2V0KFdU
Rk1vdmUodXJsKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAordm9pZCBTV1NlcnZlcldvcmtlcjo6
ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNo
TWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAg
IC8vIFRoZSBzY3JpcHRzIHdlcmUgc2F2ZWQgdG8gZGlzaywgcmVwbGFjZSBvdXIgc2NyaXB0cyB3
aXRoIHRoZSBtbWFwJ2QgdmVyc2lvbiB0byBzYXZlIG1lbW9yeS4KKyAgICBBU1NFUlQobWFpblNj
cmlwdC5nZXQoKSA9PSBtX3NjcmlwdC5nZXQoKSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3Vy
ZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgIG1fc2NyaXB0ID0gV1RGTW92ZShtYWlu
U2NyaXB0KTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKKyAgICAg
ICAgYXV0byBpdCA9IG1fc2NyaXB0UmVzb3VyY2VNYXAuZmluZChwYWlyLmtleSk7CisgICAgICAg
IEFTU0VSVChpdCAhPSBtX3NjcmlwdFJlc291cmNlTWFwLmVuZCgpKTsKKyAgICAgICAgaWYgKGl0
ID09IG1fc2NyaXB0UmVzb3VyY2VNYXAuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgQVNTRVJUKCppdC0+dmFsdWUuc2NyaXB0ID09ICpwYWlyLnZhbHVlKTsgLy8gRG8gYSBt
ZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCisgICAgICAgIGl0
LT52YWx1ZS5zY3JpcHQgPSBXVEZNb3ZlKHBhaXIudmFsdWUpOworICAgIH0KK30KKwogdm9pZCBT
V1NlcnZlcldvcmtlcjo6c2tpcFdhaXRpbmcoKQogewogICAgIG1faXNTa2lwV2FpdGluZ0ZsYWdT
ZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDM3OGZiYTY1N2U4YmJmNDg0MWU1NmNiZjg2NTYx
ZjhlY2MzMTEwMjAuLmM0NWRhZGJjYWI4MTk3NmI3NmYwYmU1MzE0ZjNiNzFmNzdiNmIyOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFNXU2VydmVyKiBzZXJ2
ZXIoKSB7IHJldHVybiBtX3NlcnZlci5nZXQoKTsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0
cmF0aW9uS2V5OyB9CiAgICAgY29uc3QgVVJMJiBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuc2NyaXB0VVJMOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7IHJl
dHVybiBtX3NjcmlwdDsgfQorICAgIFNoYXJlZEJ1ZmZlciYgc2NyaXB0KCkgY29uc3QgeyByZXR1
cm4gbV9zY3JpcHQ7IH0KICAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgV29ya2VyVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnR5cGU7IH0KIApAQCAtMTAyLDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciYpIGNvbnN0OwogICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2VydmljZVdvcmtlckNs
aWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYm
KTsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFVSTCYmLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOworICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2so
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIHZvaWQgc2tpcFdhaXRpbmcoKTsK
ICAgICBib29sIGlzU2tpcFdhaXRpbmdGbGFnU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc1NraXBX
YWl0aW5nRmxhZ1NldDsgfQpAQCAtMTI3LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZEZhaWxIZWFydEJlYXRDaGVjaygpOwogCiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKFNX
U2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXIm
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0
LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0PiYmKTsKIAogICAgIHZvaWQgY2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVy
KGJvb2wgc3VjY2Vzcyk7CiAKQEAgLTE0MCw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgV2Vha1B0cjxT
V1NlcnZlclJlZ2lzdHJhdGlvbj4gbV9yZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlckRh
dGEgbV9kYXRhOwotICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X3NjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIG1fY29udGVudFNlY3VyaXR5UG9saWN5
OwogICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZjNi
NzVhNWViYTNmZDczZjUyNjg0NDYxMjM5Nzg1ZTU0NDY5MzdhMi4uZDhkOTQzNDA4NDVkZDg1YjM2
ZGM4OTI5YWIxZTYyNzE4ODkzMjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zNSw3ICszNSw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3Vu
dGVkIHsKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIpCiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9w
dGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4g
cmVzdWx0KSBBc3luYwotICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVS
TCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKQorICAgIFNldFNjcmlwdFJlc291cmNlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkws
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0
KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAppbmRleCBhYjdhYmMyNTc2NWFkNDI4ZjJhMTU3YzYxNzk0ZDIyNTg2
MTdiYjQ3Li4yZWEyODQwMDk2NDQ5MGZkYmJlNTcwYTA4YjJmYzBjMjhhMzcyMWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2Fj
aGVzRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUK
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVMb2NrKTsKICAgICAgICAg
Zm9yIChhdXRvJiBmaWxlbmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioi
KSkgewogICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFt
ZSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQotICAgICAgICAg
ICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1lKTsKKyAgICAgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAg
ICAgIH0KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICB9KTsKQEAgLTc0OSwxOCArNzQ5LDE4IEBAIHZvaWQgRW5naW5lOjpj
bGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Zm9sZGVyUGF0CiAKICAgICAgICAgICAgIC8vIElmIGNhY2hlIHNhbHQgaXMgaW5pdGlhbGl6ZWQg
YW5kIHRoZSBwYXRocyBkbyBub3QgbWF0Y2gsIHNvbWUgY2FjaGUgZmlsZXMgaGF2ZSBwcm9iYWJs
eSBiZSByZW1vdmVkIG9yIHBhcnRpYWxseSBjb3JydXB0ZWQuCiAgICAgICAgICAgICBBU1NFUlQo
IW1fc2FsdCB8fCBmb2xkZXJQYXRoID09IGNhY2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmlnaW4pKTsK
LSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFk
KGZvbGRlclBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcildIHsgfSk7CisgICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dy
b3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxs
YmFja0FnZ3JlZ2F0b3IpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRW5n
aW5lOjpkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBT
dHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVh
ZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9p
b1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxlTG9jayk7Ci0gICAgICAgIGRlbGV0ZURp
cmVjdG9yeVJlY3Vyc2l2ZWx5KHBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeShwYXRoKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXgg
MTk0NGE1Yzc5MmQ4ZDc5OWUyOWRhYmM4NDY2NjdiNjY4NjJiYjdmOS4uNDQwOWU3YjQ5NmFiOGNm
NjQ2YzlhMGZmYWVkZjU3MzRjMGZmMWU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0xMTAsNyArMTEw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyQWxsQ2FjaGVzRnJvbURpc2soQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXNrKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBT
dHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxl
dGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICBTdHJpbmcgcmVwcmVzZW50YXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IDY2Zjc2ZWIyZDZmYzdkOThkY2U4YWUwNjJjZmJhZjBm
ZjUwMzZiNzkuLjAzODI5ZGIyMmJiOGFiOGY3NTIwY2QzYTNhODI2NzI5M2Y5ZDk0MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNs
dWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4K
QEAgLTQwLDQxICs0MSw4IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiBEYXRhIERhdGE6
Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7Ci0gICAgY29uc3RleHByIGJv
b2wgZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7Ci0gICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVt
OjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmls
ZVN5c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOwot
ICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVt
Ojp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBtX3NpemUpKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLSAgICAKLSAgICBG
aWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKLSAgICBib29s
IHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShoYW5k
bGUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZTo6U2hhcmVkLCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfQotCi0gICAgdm9pZCogbWFwID0gY29uc3RfY2FzdDx2b2lkKj4obWFwcGVkRmlsZS5kYXRh
KCkpOwotICAgIHVpbnQ4X3QqIG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFwKTsK
LSAgICBhcHBseShbJm1hcERhdGFdKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNT
aXplKSB7Ci0gICAgICAgIG1lbWNweShtYXBEYXRhLCBieXRlcywgYnl0ZXNTaXplKTsKLSAgICAg
ICAgbWFwRGF0YSArPSBieXRlc1NpemU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0pOwot
Ci0jaWYgT1MoV0lORE9XUykKLSAgICBEV09SRCBvbGRQcm90ZWN0aW9uOwotICAgIFZpcnR1YWxQ
cm90ZWN0KG1hcCwgbV9zaXplLCBGSUxFX01BUF9SRUFELCAmb2xkUHJvdGVjdGlvbik7Ci0gICAg
Rmx1c2hWaWV3T2ZGaWxlKG1hcCwgbV9zaXplKTsKLSNlbHNlCi0gICAgLy8gRHJvcCB0aGUgd3Jp
dGUgcGVybWlzc2lvbi4KLSAgICBtcHJvdGVjdChtYXAsIG1fc2l6ZSwgUFJPVF9SRUFEKTsKLQot
ICAgIC8vIEZsdXNoIChhc3luY2hyb25vdXNseSkgdG8gZmlsZSwgdHVybmluZyB0aGlzIGludG8g
Y2xlYW4gbWVtb3J5LgotICAgIG1zeW5jKG1hcCwgbV9zaXplLCBNU19BU1lOQyk7Ci0jZW5kaWYK
LQorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgYXV0byBt
YXBwZWRGaWxlID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHBhdGgsIGRhdGEoKSwgc2l6ZSgpLCAm
aGFuZGxlKTsKICAgICByZXR1cm4gRGF0YTo6YWRvcHRNYXAoV1RGTW92ZShtYXBwZWRGaWxlKSwg
aGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2EwZWM1ZTE0ZjMz
ZGUwNDJjZGY0NGIwZmJhNDIzY2M5ZGQ3YWZjNS4uN2E5OTYxNGYyMzM1YjE1MGM5Y2FiMjIyYzkz
NWQwYmJlZjY5YzgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02MiwyMyArNjIs
NiBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRAogICAgIH0KIH0KIAotdm9pZCBkZWxldGVEaXJl
Y3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgdHJhdmVyc2VEaXJl
Y3RvcnkocGF0aCwgWyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlw
ZSB0eXBlKSB7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewot
ICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5OgotICAgICAgICAgICAgZGVsZXRl
RGlyZWN0b3J5UmVjdXJzaXZlbHkoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgotICAgICAgICB9Ci0gICAgfSk7
Ci0gICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Ci19Ci0KIEZpbGVU
aW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJU
SFRJTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IDdhNWY4Y2M0ZmUzOGE5NTYxY2UxYzhi
NjFjMTBjNzQ3OWNhODc0MmYuLmMwYjRlODFiNDczNzVhMDdmZjk5YmViNDIxMGRhMDE1ODIyYzcz
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oCkBAIC0zMyw4ICszMyw2IEBAIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FjaGUgewogZW51bSBjbGFzcyBEaXJlY3RvcnlFbnRyeVR5cGUgeyBEaXJlY3Rvcnks
IEZpbGUgfTsKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5
cGUpPiYpOwogCi12b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci0KIHN0cnVjdCBGaWxlVGltZXMgewogICAgIFdhbGxUaW1lIGNyZWF0aW9uOwogICAg
IFdhbGxUaW1lIG1vZGlmaWNhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGVkZGMwYmUy
OWUwZTJjNmQyMDI1YTk2YjI1ZWMxZTU2YzQ4YWY4ZDYuLmRiNGMwNTQ5YzZiYmViODAzYjY2ZjBl
MzE0NTE5YmU1ODI5MjViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgPG11dGV4Pgog
I2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KQEAgLTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFn
ZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQogICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5h
bWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nl
c3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgu
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5
KG9sZFZlcnNpb25QYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KG9sZFZlcnNpb25QYXRoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5ZTMx
Mjk3MTk2ZGExMTU1ZjBiMjJjMzE4MGEwM2M4MzA0ODZlMzcyLi5mNmMxNGI1YzM3ZWUwYzIyOGZh
NTg2MjUyNTlmZTg3MDYwODk4OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNp
emUgPSBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVm
ZmVyOworICAgIGVuY29kZXIgPDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBl
bmNvZGVyIDw8IGJ1ZmZlclNpemU7CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1
cm47CkBAIC0xNDQsMTIgKzE0OSwyNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBp
c051bGw7CisgICAgZGVjb2RlciA+PiBpc051bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51
bGxwdHI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZl
clNpemUgPSAwOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNp
emUpIHsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAg
aWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVy
U2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNWU4ZjcwOTA2
MWI0MmQxOGFjOTY5MThlNTk4ZmQ4MjE0MGM0MjhjZC4uMWUwMWE1ZDRlN2E3YjgzMTRhMjMxNGFh
ODdmNGRkMmRkMzJlYjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApA
QCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNr
aXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgdXJsLCBzY3JpcHQuc2NyaXB0LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5t
aW1lVHlwZSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNl
IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiYjRlMDFmYTBkNTEzZmQ4ODgw
ODE1NDlhMDM0MWY5MWEzZmVmNmYuLmE1ODc0Mzc0Nzg3YzViYjdiZjhiZTY1MTg3Njg2ZDY3ZDgx
M2IyZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9y
eSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnMtNC5zcWxpdGUzOiBSZW1vdmVkLgorICAgICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtl
ZCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2Vy
CisgICAgICAgIG5lZWRlZCBhbmQgaXQgaXMgYSBwYWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdl
IGZvciBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBu
ZXcgQVBJIGJ1dCBpdAorICAgICAgICBoYWQgbm8gdGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlz
IHBhdGNoIGFuZCB3ZSBub3cgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVk
CisgICAgICAgIHBsYXRmb3Jtcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAg
ICAtIFR3ZWFrIHNlcnZpY2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJz
aW9uIDYgZGF0YWJhc2UgaW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1
cGRhdGVkIHRoZSBkYXRhYmFzZSBzY2hlbWUgYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAg
ICAgLSBVcGRhdGUgdGVzdCB0aGF0IHdhcyByZWx5aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ug
d29ya2VyIGRhdGFiYXNlIGZpbGUgKHdpdGggb2xkIHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2
ZSBpdCBkeW5hbWljYWxseSBnZW5lcmF0ZSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5n
IGEgcGFnZSB0aGF0IHJlZ2lzdGVycyBhIHNlcnZpY2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIw
MjEtMDMtMjggIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFbmFibGUgQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgZm9yIFdl
YktpdExlZ2FjeS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjZlNzA5M2I4ZjE1MGExODE4
ZWYyZWJiMjNiNGI0YThlZWNiODE1NS4uYzdhYzE0ODdhOTEwMmJhNTJiY2JkN2FkY2I3ZDc4Mzg1
NDQ4MDgxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2OSw3ICsyNjksNiBAQAogCQk0
NkE0NEE1NDI1QTc4MzAzMDBGNjFFMTYgLyogd2ViYXVkaW8tY3JlYXRlTWVkaWFFbGVtZW50U291
cmNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBNDRBNTMyNUE3ODJERDAwRjYxRTE2IC8qIHdlYmF1ZGlvLWNyZWF0ZU1lZGlhRWxl
bWVudFNvdXJjZS5odG1sICovOyB9OwogCQk0NkE0NkExQTI1NzU2NDU2MDBBMUIxMTggLyogU2Vz
c2lvblN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkE0NkExOTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gKi87IH07
CiAJCTQ2QTkxMTU5MjEwOEU2NzgwMDc4RDQwRCAvKiBDdXN0b21Vc2VyQWdlbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE5MTE1ODIxMDhFNjZC
MDA3OEQ0MEQgLyogQ3VzdG9tVXNlckFnZW50Lm1tICovOyB9OwotCQk0NkFFNUEzNzIwRjkwNjZE
MDBFMDg3M0UgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTZB
NzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00
LnNxbGl0ZTMgKi87IH07CiAJCTQ2QkJFQTFCMjVGOTgzNTcwMEQ0OTg3QSAvKiBXb3JrUXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNkEx
NTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCTQ2QzFFQTk4MjU3
NTg4MjAwMDVFNDA5RSAvKiBhbGVydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzFFQTk3MjU3NTg4MDUwMDVFNDA5RSAvKiBhbGVy
dC5odG1sICovOyB9OwogCQk0NkMzQUVCMzIzRDBFNTI5MDAxQjA2ODAgLyogYmVmb3JldW5sb2Fk
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZDM0FFQjIyM0QwRTUwRjAwMUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sICovOyB9OwpA
QCAtMTY1OCw3ICsxNjU3LDYgQEAKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2lt
cGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhC
M0UxIC8qIHNpbXBsZTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5
MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJ
CTQ2QUU1QTM3MjBGOTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkQxRDRDMEQx
QzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNl
YmFyLXNjcm9sbGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5
RkM5RTQwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAt
MjA0Myw3ICsyMDQxLDYgQEAKIAkJNDYzRjQ3MjIyNTVCNDlCNjAwRDlFMENDIC8qIFZpc2liaWxp
dHlTdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2li
aWxpdHlTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJB
M0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRlcm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2NTZB
NzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00
LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBwYXRoID0gIlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRl
MyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4
NyAvKiBHUFVQcm9jZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIy
MTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlmeS1yZXNvdXJjZUxvYWRPYnNlcnZlci5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3QzU2NTEyMUI1RUNERjAwNTc1MTZE
IC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdl
dFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMzcs
NyArNDAzNCw2IEBACiAJCQkJRjRFM0Q4MDcyMEY3MDhFNDAwN0I1OEM1IC8qIHNpZ25pZmljYW50
LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAqLywKIAkJCQlGNEZDMDc3NjIwRjAxMDgxMDBD
QTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLywKIAkJCQlDOUI0QUQy
OTFFQ0E2RUE1MDBGNUZFQTAgLyogc2lsZW5jZS1sb25nLm00YSAqLywKLQkJCQk0NjU2QTc1NzIw
RjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxp
dGUzICovLAogCQkJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlp
bmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJCUY0Q0ZDREQ4MjQ5RkM5RDkwMDUyNzQ4
MiAvKiBTcGFjZU9ubHkub3RmICovLAogCQkJCTkzNjAyNzA1MjVBM0IyOEUwMDM2NzY3MCAvKiBz
cGVlY2hyZWNvZ25pdGlvbi1iYXNpYy5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA3NmNhZjJhZDQzNzI2NjNkMmJlMzExYmNmYjYz
YTA0ZDBjMGQwMWY2Li44ZjY1MWQzZWFlMzQzMjk3NTFhYzM2MWRkN2UwNjRjYjYzN2UzNzUyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtMTUx
LDQgKzE1MSwyOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRG
YWlsSWZGaWxlRXhpc3RzKQogICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGhhbmRsZSkpOwogfQogCitURVNUX0YoRmlsZVN5c3RlbVRlc3QsIGRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KQoreworICAgIGF1dG8gY3JlYXRlVGVzdFRpbGUgPSBbXShjb25zdCBTdHJpbmcm
IHBhdGgpIHsKKyAgICAgICAgYXV0byBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOworICAgICAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOworICAgIH07CisKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
dGVtcG9yYXJ5RmlsZTsKKyAgICBhdXRvIHRlbXBvcmFyeVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9y
YXJ5RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGUpOworCisg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVy
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAi
c3ViZm9sZGVyIiB9KSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTEudHh0IikpOworICAg
IGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1w
b3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTIudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAi
c3ViZm9sZGVyIiwgImZpbGUzLnR4dCIgfSkpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3Vi
Zm9sZGVyIiwgImZpbGU0LnR4dCIgfSkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVz
dEZvbGRlcikpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBv
cmFyeVRlc3RGb2xkZXIpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA3ZjRh
Yzk2ZmE3YzczYTg0MjJhNGM0ZThmZjdlNjEwNWU5ZTg4MGRmLi4yMzc4OGVhZTE0MzY3YWUyZjFh
NDE2NGViNGM5ZmJhMTQzMDk0NDcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTk1Niw3
ICsxOTU2LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU3VzcGVuZE5ldHdvcmtQcm9jZXNzKQog
ICAgIGF1dG8gcGF0aCA9IHN0b3JlLl9jb25maWd1cmF0aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5LnBhdGg7CiAKICAgICBOU1VSTCogZGlyZWN0b3J5ID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU107Ci0gICAgTlNVUkwgKnN3REJQYXRo
ID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0
b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zLTYuc3FsaXRlMyJdOwogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3REJQYXRoLnBhdGhdKTsKIApAQCAtMTk4Myw3
ICsxOTgzLDcgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VXb3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRz
VGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQogICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKIAogICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQ
YXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6
dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02
LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwpAQCAtMjM1NSw2ICsyMzU1
LDc3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIENsZWFyRE9NQ2FjaGVBbHNvSW5jbHVkZXNTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucykKICAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKIH0K
IAorVEVTVChTZXJ2aWNlV29ya2VycywgQ3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0
aW9uSGFuZGxlcnMpCit7CisgICAgTlNVUkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2Vi
S2l0L1NlcnZpY2VXb3JrZXJzLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOworICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBl
cnJvcjpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhdKTsKKworICAgIFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1l
ZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKworICAgIGF1
dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9
IHN3UGF0aDsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOworCisgICAgYXV0byBtZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBTZXJ2aWNlV29ya2Vy
VENQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAor
ICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICB9
KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsKKyAgICB3aGlsZSAoIVtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJd
LnBhdGhdICYmICsrdGltZW91dCA8IDIwKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
bGVlcCgwLjEpOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdKTsKKworICAgIC8v
IEZldGNoIFNXIHJlY29yZHMKKyAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtb
TlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zXV0pOworICAgIHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsKKyAg
ICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRh
dGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOwor
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKKworICAgIC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNpbmcg
b3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBm
bGlnaHQuCisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0
YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRz
LmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBk
YXRhU3RvcmUgPSBuaWw7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29u
dGludWUpOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gRGVsZXRlIGFs
bCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3
aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisgICAgZGF0YVN0b3JlID0gYWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlYWR5VG9Db250aW51
ZSA9IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBm
YWxzZTsKKworICAgIC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5k
IHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCisgICAgLy8gTm93IHJlZmV0Y2gg
dGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCisgICAgZGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFtkYXRhU3RvcmUgZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAg
ICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9D
b250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWFkeVRvQ29udGludWUpOworfQorCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2Fj
aGUpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucy00LnNxbGl0ZTMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMDVk
YzQ2ZTNhMmNjZWIzNGVmOWE3NjhjZDA5ZWIzZDhhZjI0MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmxpdGVyYWwgMjA0ODAKemNtZUhPY359IXkqVXZfUDVNJmpRTWFQOXJBaH1fOExxZHB2dldT
MnZCNkxVd0dNYkg8Ml5jTF5xb1AqcGc4UFB1CnpYc3VoLXk2Kn1xUiZDdl9iPVNKclQxQmdNc28k
TjFBWHI9NEBBO25oZDtpR2JXYlNoQUo/SC1KejMwdzNYVXNAWAp6I3dpUmIpRFM5XkxjJG8xMz5K
JEtpeSNhSmc5VUZaYyQrVUtPbU5IQF9Ad2kjVGBZem05STx6SiR6YSg+RnpoMjcKemo8KGpvUWcx
PVBmYEExOTNqITdkRUNeVC11cG5TVHo9RDdVZiZWSDVDTzkjei1NemUrbGwyckBwdWA0WEc3VFhv
Cno4eV9zbTBJNGByaWUhcjhsQkd5dkFyZGVnKDw3UEVMNzdOdThvYVpUbGFhSmtNM1I9O0NwayV5
aVMhWENCX21tPgp6TiRGWUE3VWN0XntnY0hLWCl2TjhARkhCQE4pTiNaRGJyfU50TzNjYjU+Z3Ml
K0NTQDNpSVA7N1IqcTdiTTFqZU0KelhXfVhoaUJIUi0ybHRtbDJ9WDNyNzZXbHFnMzEoRnRLeUl7
MEBxVWlMfnMqanN+d2hWaH5YSEtzbkBwN1RjJU17CnpuM35HS1dJNig7XiErdFRUJjczamxHRWI7
WmghPDxoIUYldkc/TUBRKVkyMH00eyFpUllJS0FRT0ZefSpHTFReZQp6ZyV7Izcyei0qZFB9MiYx
VTxpeHJGN3skRmFKM3Y4S143fmFSaUJVUUQyKnxuLT8kOShNVTRxSSspcDwycDBiQkcKeig+OXBf
fDUre3owdX1AOzJ2YHVYQVllaGpmYEEycWV+R3tlVSMxZm8pZ2o4LURgVTJjUn5MS2x2RXZkSTZz
MEJlCnpSZFRoVTImV1hmMHMqZWMmbz5yITdZYlZ4MygzK0QzTGAxdUtkQWtuTG08OXoqdzZMSzVU
N0tLUnpwemEtfWdZNAp6M1drdityWXNib2E9RWt3eldPSFBCenl6TGh5Wl9GTztWXio9XnU7fj5l
TW17KlFmKDluaiNQeCNYfUhkUWMjTkcKelJGO347bD54OF9MMWdwYEp9SDI5aGRSSyZNQzJiUnBj
RjlLKVpTUWNZRVAzQjdeTmZCcmRHNTdWeD0tKmhfTkhPCnoqMXJoX3xLTmBsOGVlN3czUTdlZns3
NXhQPjZNczNNdkA8YE1ZVVF1QFErc0VEenBkLVE5PkMwaVVQdHlncHtITAp6OEtUcV9YI35UeE1J
WV5gMiFlK1pkU1FWXnI+NjlZQENQSHZSO2c4Yjc9KXZnKmcjWns1dkB7X1lFNVktcEBEIW0KemNI
TX0/KDcrelhSOVBUPXo7cWVCZDREbV9nJX5BTXtPdjNnN14mNSQ8PUpyNjF+ZzdGajFiQmNydTg1
b3V3b3J0Cnp0UkdJY3NUR050PVVYVD11TWJuPkttPThtcUl3YzgxNSU/YiFBUFVUa2c3bU9BPCh7
K3AoS1dBM0szRSNsVlBOaAp6M2B6bVpOXnp3VVFKXklsUWkzWFZuNlZqTmh5PDchQXt+NDZMVWhw
ZkRhNiY3K3wwZ2R4dFlsdDVrZkV9PzJ9JjcKel53cWN8amhPdUhAWlBnfiZqM043XnljbW42ezwl
SEZob2FVYXp2dzY+ZncqZkJyTUdjUWtHKGY4aVNSVDF8akx1CnokZG5wMk0oNEI7MDZHWmBjKWJZ
O3hVQ3VtR2AyKzVhKWlWUCpvSzd1MkFGfT1QNCFCUVk3IzxYPzZPeD1VU1EtQQp6KDZ+QmlJaHZa
YXZVZF5GJXJfcnc8OS0pRmFhJSRhK3tEa3d6Wm99cjlueElzc31YODVVZ25Dakttb0xLO28+ckQK
ejRKNHBCKTg7eVo2cXJgaGRyZXs5YkFSNE5PXm5TVmx0RHF0MCUwKi1BYzM5QDV8XjJrZTchalZw
TEZQKHpMK052Cno8QzdzV0FWK342cDk9LW9ESmQzezEwNEJ3czlMN2I1TSZ5aFhDeypZb2NQdnFq
NiFpRzNBaUUje1JpNmU5aWlWeAp6cmErLXlnXkVzN2lwaU53Q2d7VEZtMCQjM3NFPiFueUB5KlUy
bjhUMkcqcnxyeWp4ZnxLXlcqMyhKZUZ3YDArVjcKekgyZypGZmo4ZT5eND1TZU51WCp7aXhRWXgy
S2gzOWYlJC1NWWV0bFcqLUlQKV44JFJIO1Z+SWkySWdeP3Rtb1BXCnphaFg8RClffT1gd0w0KFo3
NjZDRjtuQWFuVlI9aHItWmFzY1VrZF5qMVN8K3g1VT9PJUxCTjg1MXB4fko3NmRFXgp6U1AteHZA
TCFFVUIlOEdUVXBTbExuNUBRRFI9YVVyKC1yUyNlOWZ9Zl4qbndObE5WR3daeSF3YkBOaDhzQ1Bk
TDcKekRtKitRRGhINkQ3JGdCKHUyb1BRSHB8bkIhRXljR0A0M2dUcW59Tm1gYzIkKlp7YVk8JTR6
dyRrTjN1TVdGXkh8Cnp6cDlNTjNFNmVuWFNUJVFgIVMzXmFqMEBLN2xsVEUkY1N6PFErdXYkKllk
Pmo3eHFsMW9mVSZeZlptbz18MkRadgp6MTtAT1hQSjRMQmtBM09ZaUZ4KVI4eH5KaTRRZmNkX3BW
fip4MW1ZTC1FUiUtZTgxUDZtcStqQmhvNXVpaFB+M2MKekJ0MWc8dytXUXBScmhzVEokQnhTIzdV
PFdaTz9EfCMmd3ozI2FsTis1QUpYbyl1dFY+Q3dad3k8bnNrVEVaRUJrCnpAOX1jJT5fSV9zc3A5
X3BqYjFPSngxTCVRUUBkTURJcl5uZjRRVl4qbDtgSG9ufTJoZzg4QFRJRmU+Zl5PRTklbAp6PX1x
OWM8bS19N05yVEpzMlIjVG9hQkJSdXkqaiYqUXp5RmpYTGIwNmRSNl42PDt5bzwoTl88YS18Y2c3
ITYjbiMKeitUSE5qe2QjXn4oNmtAPGhwdlYlP3BkNGhgMVI0RSlpPiloWWAofmQrQGJsUnlyTG1D
WHpjaWtuVWtpNVN1SzNWCnp6cCRjeHA5NWxHVUA3QEZUS1pjUjlEYDBEUi1WWWYkXmkpOTElQWgz
YFg8SG5ufkpKMXpBWl5BR2ljdS0wbGlCNgp6Q1c8cyUmVVhfRExJdSZgS3AreEBNVFNLUEw7eG5D
NTZaeWVeWC1sTz4oakohQWI9RFpuN0BOSWVBXl4+R09pdkQKejlwPCQyM0EofHVGPzR1OE9yTD58
Rz9xQj8/TTx4MkkhWW4hbXFrOy1HTVh2X0ZIKW4+e2NvZ207a1FYM1EwViFGCnp1P0tsRmg4RUk8
dTYmMCRCYE8+S3JfeGw3VEJfMWdgVjN2Y0ZpYnwjdzl2VTBoZThMUTFqPEdjKDhXZlBqbTRRNQp6
OVMxPmAxNXFVfGhvQUomI3FOQSgzSC1iVmVvdiM2aikyaClreyVMVztsKzB8KUFmZj1JZ0xDODlm
N05LRHIyUUwKei0hM0J+SVo7RFdZOHByVDc3LWlURlBFVyo7O1MrVjlYJCQzPF5icHgjfGV7e3VM
SXdANWYrZ3Z1O0hgOUxzPXt2CnoyQXpydVczaXlhdW92SWFEMmcxREwmN1cpTEo5Jm8zPVN2RCRD
dHNlRiopcW1PYiFwR0k3fndua0ltLVRlb34mdQp6RVBvbHRWRkQlT1pVIV9GQl42PzI1JlRNd1Ft
OUNmJlViRkFpcFB0ZnFkcH0qXmRue0FBMVJBfk9VVEA8c2NsQjAKelNPZzR3SGxOP0BuPFRqQT80
RUU4KjVTWmw0UzwyYFFOP0M0UyUyUSpBOGNOcjcxPUBjIU9yNHZVMDdLZXFQRDw9CnomaFQ5TGtR
WXZTSWd1b19Pdzxteik1VWYhai17b2cweShVclNxbyR1bH1IRmU9cWszMFVzRFN4VT9gR143YnlA
aQp6TiRRfGBSRThtQEhIYipXcHVNfDJec2hvPzAqcUc8JSFZeitRTWQ/fTArMGlTd1VvI09JTU15
dnhiUCUhYE4wMWUKenJOJldfOCpycnl0ekdPaFAmTHdyV2BWPFI/VjU/N2ZLIVJPZj8hJkRmeWY9
U0hPYmg5N1FacF8yWmVgaipHfG09CnpWSCZsVzB8Uz14U2hRTig2d35XTFh4VlFzI14/VFd6U0w8
KChlQD5xMThhJU1WZENwSWtGRCRXREE7fWE8I0ZrUQp6QTU3JSt0fmQwMkV0dEdBPEApMV9gIVJG
dnIqKzs/dT1IcmZvSkJRYEs0LUk1Pj4oNnk/K3AwOHI9VmxgWWhWQSEKejR5MSY/clgod0dLd156
Zz90T09UPlJzSFJIZn5HeXJBJWRzPUgzKEJ7Wi1tTktnanZubEYmKWYhR1ZpTWNYe3tSCnpDdWgt
X0ZfU2ooM3gwP1Z3JShUVGdZJmRyUT90aEBzJExHLXBTR3N2JEB4eG14IXpHZSp9WiFOKW41eFoj
Y3QxNwp6QH4rbDRzMEB3UklsNGh8e3FlUSNRQHpYNzhJUGxAJiNuelc9Q0ZSWVhXY3Zab20qQyoh
az9UQDl5JjQ4cyQ+JEcKeih5JDBqelJjZnBxKStHaXM0fk9MQyExIztXM2liRz01aG8zVFZQLXgx
fDEtWEtBa3hwei1gUCZrMDs8bTZTVSNMCnooYCN4SzReT3h9SWRudEhWSkIlcHpOY18qWUlpVi11
NkUqM2ZHflY4NWU5ek9YNDdLZXlgTGgzVH5pSU5HMXhYbQp6WjRLX2BhdjBucDhvd0UmN28/JUJp
Uk9jMSgxdkYyeit9R1RhTSYhWER3Q3xmOUN7QCtaU0FITTMrUU9fNGplVTUKemc3QikpRG9fcj9v
UmsmQGlEaVRgdGk9dXhrX3QzNU0xaDd0SWlOLWxEVCkrOG5tQE0rfDBrYElYfEBQUTNNMyRrCnpZ
Zj4oNmx+NX5vMXAjS15TV0d1PmI0MjtXLTYpancmajI9RFpxWm1pLTI3bmRJQ0NReVcrKCtaKDha
aHcleU4mJAp6MGNtOFV3dU5YUXJIUDdGRTtiSnZyRlQ1cGY+M0RRQCRgbkxfan1XSkh8PShiNyRR
TGRLMFBLRThoSTk9d15rWH4KenEoUlQ/U3NXSU9leUhHJEdtOTd7ajZOJX05X243ck04S0JuJEBz
SHxHTilpTXdmQWsoXzZjakF6Un5gbk5gU0dFCno7KWxXeFpaSl43VytWVjl0MFV2PzwoOylaZFJG
b0g3aGZNKlFAeUhlIXB3PXU+NUNAQkoxd3s3VVNndCZFWDF3WQp6JnR3MGlqJmxkKGJiQjwjKlgh
NiRCS19gfEZ3TF5DdGxJUkdUZWBucz1vcD0oUXRRRTRUP1dxV3ktZkp6Z3t1NXwKelhGdTd4e3J5
R3tKdj1UfmViV0prcEo9fUFfWmoqMjByNCFQJl5mdyNTPil2bD97MyZrey1OViUpMUc+d2NNUFg4
CnpLYmR1U15NU0gxOEpBY3tRT3VKb3ZsMFZzLUZoeWNmVW5yYmM0d2FLZEJiaTB0OHBIM14tJW56
NElGT3pAKHNgNQp6R1dDbEdzPHVhc245aT5tZEVDcVkqbyg/WmFTUUdMSTZLQWFjSD9rdW59JjxI
X1AmPyZTdShPTj1SeDRsNlo2KHkKemlPfmY5ek09Y28pV2BGX0ZScXB5djRlbS01PU0xIWxJbT53
dWJ6S1BSYWw/dCp6P3ptQDdEVip7Yn14LWk2ZD5aCnprMktlSj1DP09TIT4qXmpaPTctMXVYYTNz
QWZaczw9cjtLQkpJe0dybWlKcUFFQWElYHUtTWhsJDdYdiZacj9HUwp6NW5zJWptNn4qV3xJR3Q9
KzYjTn4qNyRPPmNWNCspTX0ze1NBaFAyMUNqTyZTY0t6MXR1MD0yaipOcz1GU04xNHoKelNhSWNE
KkckJjlGNztgPE44YUhpaXNqZSFNZUZCMGl1JEdeODVATXpoQVM0PEJBMHhKVVlzcEYpdHpaRzM5
VSg3Cno7bz8qaDZURGUlbkRHPVpeSUpjN1VELV9jMXJKPExDZF87RFoxMlhxe25xfEdlQ31OSWxg
fCZveElPPXdXYjtLdgp6bDxsRCYlOU1mLW5mM2ZIVF58T2EzKztwdlpNJnJnaWd4Rns/bFI9eygp
XzJ0N0NjPEo8TVcjS0d3bEN4VkF0KTUKenp4XzVMOGpLPWxBPlhZWXY0VWdaWXlrJCZNeVRaJEdA
aEhCOCtVNmk9UlIjdj9HSzlFS0Q2ITk0YDJoem1aI0xlCnpLUjFJd0Fsdyk1LTBXb0RNSVJvUyh0
KmVUamZRR0dHZXV6ezBBckctTGxUfnUoYW9+fDUydHUqQytGN2QhaD5ENwp6XihzI09nfnZRT2NU
LXM+S2c/fT9UPG9JbkUtemhMVmpXV3B2TD8zTWt2NitjJmc+M1oxMi1SSmJeWkZ9ezlvKjEKekZW
dm12TERhaWVLQXk0Qj44dGdwPiRnan5VJG5EM2NXJXp9KnN0cS05O0diSyYpIXp2VSRObCU9UmNs
NFYlMV5RCnp5clkrRUhYNm88OUEzOSNAc1cwaGxAbEVEO3M8cSZuKktLOGlKZ3NxWHdMSXBRen5v
cnFAVlBeZDhKMk8qbUEzWQp6eD9LVXM3cEBLSlkoTGBnczVeUForeG9gWHlkSnlGJjI4Q3wmZHc+
ZkZJM3A5KXp2S0NkQlN+RGB9aGNLYmNTIVkKelF7S0ZWR091PE9sITZ5XkBaZjtOVzhIRzl4ODR8
Zjs3UyM7eTxfeihLYUZlT2peWlBhUkV3U18zTER0WnN9JlUpCnohbnw5SkNucXhyRG0qRTBaYz4z
WmZEMUp0e2txeFdLd180K2J8OGhEbGA+VDIwbEBEY3NgN3BgO3xgcDc1Qz53Ygp6VnliJFVjUUA7
RUxpeGRnV0x9MFg2dUVSRHkjJFNsVG5UIzdvZ3RoXjVEcjRRQFUwa097SHReNntvQkZFWX0qIVoK
ejdhTD0wYXJWbzczQ3kkZXtYQWAwazdlP3ArN0VXMShkX2oyZTltT3s5bzRubUgkSTk3ZVcjQipw
RHo0amMpVk5YCnpUR3tpe1lVVEleUSZ4e0g5eld6IWM8UDMyYGlqOGdBIUNPOUl0e3NAdWxhK1c7
UFQqa2BMfjBNJWJzIU80bkgkXgp6UF9JQUVoPHROQnFRQGA0digpZio+WDctTylEdDVySj5PMF5t
YkNoKnxDOXk5bzAhJC0jQ0FXUGkoSXpQVGIrPEoKeklgM2xRcnxnU3dyekJPKV9sdHt0YylyNF5N
JFhJNXRiNldyb3xRTHo/SnNwPjdDSUJKMkZ8K2haWGNNeTFeZXRxCnpyQHFVIVRHSGp3Z3hhOWpE
fE1eWmhQWFgwKUJBNkZjeU5pR15ARyhEJk09b0YwYjwmeEY8MjZDZGhEJiR6eF9PXwp6TjlvcXNm
LXpRTkRmNipBSHxGYTh1dGh+QFB5c1JWQztXe3dCUmpVZV9JZGxHbn1OYU1EQnNIWFEzRml3d2Il
ZW4KekNRTzNHMkMmIXclfWolcUQlV0JJU1pufWA0YmJHbHdiJWRfOHtsN2hAKz54aCNSam4wMFJR
SlV6YHVPfD1OUTtXCnpxMnVCWjM9eXB9Sk4/KEBgVkYmLVR7UFdKfDgjdkgtX3F1JGxhJj9ZS2t2
SyVrcz1Ye1dFbjUkQERHRXpydEUpTQp6biUwIW87cDRaLUpGbX5+eCpaWXt5N0pvWHZBdkk7QEot
clUrX209SD9DXyMkcDcofSlkfVp2JHheMGBMcFBYT3cKem0zVk9YR25aJGQ/fEYlZXVJWU9gI248
cW4/fWBsUD13Qkw9UksrdHRsV2txSUdRWU5Ge0w4ZTBedH4/K3tkXzY5Cno7dWlPfCV9am4+Zkg+
Pip2N0VfbUtQJGMkdWBoK04/WHxhaWJwSWl4QkNqdkxJbnFWQ0BYTkktaEhET0krZko4PAp6PkFk
LTNhaT4lYW9qNnc5ZjJCVG1eM2BeSXYoRXxjNEU0P2t7JXJtVVBwKF55Zjs8X3thbWlnKWQ/eDQ5
dFY/PEYKejgmTU8lSytiS2EmNEZXX3BYaj95cyVBTlQ+Ui01Uih6WCMjenZab3BVYy18ZysqZGVz
JmlEaCVlQWBiUD5lPTU4CnphWHYySXJNNjN0LXJsZCM8dTN6aCVlUTZkcG0xbiVWcHN0LWJZZTdm
X2tZeDBaeXFsQUNfJUcwR0YrOExnV2xWZAp6Sk1aI14jWT1sbUQmKlFeY2Y4YXc7YnFzTiklIWRg
T0pXX2Y0fTlKKkB9ZChxRSNnKD44fGp3SGleLXlYK2heWEIKejFXKV5CI0NNbCZXJDI1fi18amVA
YEQ1MF5nPGEmb2VPYEZ7PmYpI3F0SEwrcGkjcGQ9al80R21tRTZpbzVUV2ZKCno0Pn5rS208b1FZ
NjFqRCp6azNzTjNwPSpZKTJwaTIlV3cwaGheQm1FR2RZQ00lXmszPD9zd2smUSpIQj9JYDkyNwp6
UVdtYEB6R24xS2VuR3N0ZEFSLWtzVzxtS1deYj1BYWh7cD1HIWcke2NVUlVCaHhvSUk9K2QqRFRF
QyQpS0I/VEAKeiYpcnRJYEI7MDI7OzZPJWZ6IUQhOSgzSEhhOS1TVkB4SUQ4VnsjWUNQVytzKCtT
azlSRHlvNUREOWdPPyl5dys9CkxtKnU3Uklgc1Y/LWJ5Kl8KCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IGY2MTZhNzRiNDE3ZjYxZTlhYTNkZDI1YzhiZTg2Yzll
MmEyZmQyOGEuLjYwYjcyMmMzYzk0OWM3Yjg1ZTY0ZDJmM2RhNmJmMzU3YmM4MGJhZGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0yOTAsNjAgKzI5MCw2IEBA
IFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNXaXRoUHJld2FybWluZykK
ICAgICBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1By
ZXdhcm1pbmc6Olllcyk7CiB9CiAKLVRFU1QoV2ViS2l0LCBDdXN0b21EYXRhU3RvcmVQYXRoc1Zl
cnN1c0NvbXBsZXRpb25IYW5kbGVycykKLXsKLSAgICAvLyBDb3B5IHRoZSBiYWtlZCBkYXRhYmFz
ZSBmaWxlcyB0byB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5Ci0gICAgTlNVUkwgKnVybDEgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiU2ltcGxlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNCIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0KLSAgICBOU1VSTCAqc3dQYXRoID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdl
YktpdEFQSS9XZWJLaXQvU2VydmljZVdvcmtlcnMvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5Q
YXRoXV07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRV
Ukw6c3dQYXRoIGVycm9yOm5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd1BhdGgucGF0aF0pOwotCi0gICAgW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDpzd1BhdGgg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwx
IHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKLQotICAgIGF1dG8gd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsK
LSAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKLQotICAgIC8vIEZldGNoIFNXIHJlY29yZHMKLSAgICBhdXRvIHdlYnNpdGVEYXRhVHlw
ZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRh
VHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXV0pOwotICAgIHN0YXRpYyBib29sIHJlYWR5
VG9Db250aW51ZTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNp
dGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURh
dGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJl
Y29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIEZldGNoIHJlY29yZHMgYWdhaW4sIHRoaXMg
dGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUg
cmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxX
S1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1RfRVEo
MVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsK
LSAgICB9XTsKLSAgICBkYXRhU3RvcmUgPSBuaWw7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWFkeVRvQ29udGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwotCi0g
ICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0
aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgZGF0YVN0
b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkYXRh
U3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBtb2RpZmllZFNp
bmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAg
IHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIFRoZSByZWNvcmRzIHNob3VsZCBoYXZlIGJl
ZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1hZGUuCi0gICAg
Ly8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdvbmUuCi0gICAg
ZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAg
IFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0g
ICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwotfQotCiBURVNUKFdlYktpdCwgQ3VzdG9t
RGF0YVN0b3JlRGVzdHJveVdoaWxlRmV0Y2hpbmdOZXR3b3JrUHJvY2Vzc0RhdGEpCiB7CiAgICAg
TlNVUkwgKmNvb2tpZVN0b3JhZ2VGaWxlID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xp
YnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRl
RGF0YS9Db29raWVTdG9yYWdlL0Nvb2tpZS5GaWxlIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5Q
YXRoXSBpc0RpcmVjdG9yeTpOT107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424663</attachid>
            <date>2021-03-30 11:19:04 -0700</date>
            <delta_ts>2021-03-30 14:09:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210330111903.patch</filename>
            <type>text/plain</type>
            <size>109429</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzOGUyZGNmODQ0MmJiNTQzNTYyY2E2
ODRlZTEwZGU3NDNkYjA5NDUuLjliZjczNjBjNWYzY2NhMDVmOTAxZmFhNzgzMmM5MDliOTcwMTJm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
ICAgICAgICAKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTAzLTI5ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHRl
cm1pbmF0ZV93aXRoX3JlYXNvbiBpbnN0ZWFkIG9mIHhwY19jb25uZWN0aW9uX2tpbGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNjQwMDVmMTY5ZDc4YzA4ZTFkYzJhOGI5ZjgxNTYxNWU4YzI3M2I5Li43ODRjNzVj
ODliYTU1M2ViYjNmNWFkMGI0ZTkzODU4ZWNkNTQ1ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTg2IEBACisyMDIxLTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgU2VydmljZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBu
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzgwOAorICAgICAgICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBuZXR3b3Jr
IHByb2Nlc3Mgd291bGQgc3RvcmUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBpbiBhIFNRTGl0ZSBk
YXRhYmFzZS4KKyAgICAgICAgV2hlbiBzdGFydGluZyB0byB1c2Ugc2VydmljZSB3b3JrZXJzLCB3
ZSB3b3VsZCBsb2FkIGFsbCB0aG9zZSBzY3JpcHRzIGZyb20gdGhlIGRhdGFiYXNlCisgICAgICAg
IGludG8gbWVtb3J5LiBUaGlzIHdvdWxkIHVzZSBhIGRlY2VudCBhbW91bnQgb2YgbWVtb3J5IGlu
IHRoZSBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNzdWUsIHRo
ZSBhcHByb2FjaCBpcyB0aGlzIHBhdGNoIGlzIHRvIHN0b3JlIHRoZSBzY3JpcHRzIGFzIHNlcGFy
YXRlCisgICAgICAgIGZpbGVzIG9uIHRoZSBmaWxlc3lzdGVtIGluc3RlYWQuIFRoaXMgd2hlbiwg
d2hlbiBsb2FkaW5nIHRoZW0sIHdlIGNhbiBzaW1wbHkgbW1hcCgpIHRoZW0KKyAgICAgICAgYW5k
IGdyZWF0bHkgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHNl
cnZpY2Ugd29ya2VyIHByb2Nlc3MgKHdoaWNoIG1heSBiZSB0aGUgV2ViQ29udGVudCBwcm9jZXNz
KSBhbHNvIGtlZXBzIGEKKyAgICAgICAgY29weSBvZiB0aGUgaW1wb3J0ZWQgc2VydmljZSB3b3Jr
ZXIgc2NyaXB0cyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VycyBpdCBpcyBydW5uaW5nLiBNb3JlCisg
ICAgICAgIHdvcmsgd2lsbCBiZSBuZWVkZWQgaW4gYSBmb2xsb3ctdXAgYnV0IHdlIHNob3VsZCBi
ZSBhYmxlIHRvIGV4dGVuZCB0aGUgYXBwcm9hY2ggc28gdGhhdAorICAgICAgICB0aGUgc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyB3b3VsZCBvbmx5IGhhdmUgYSBtbWFwJ2QgdmVyc2lvbiBvZiB0aG9z
ZSBzY3JpcHRzLiBUaGlzIHdvdWxkCisgICAgICAgIHJlZHVjZSBtZW1vcnkgdXNhZ2Ugb24gdGhl
IFdlYkNvbnRlbnQvU2VydmljZVdvcmtlciBwcm9jZXNzIHNpZGUgYXMgd2VsbC4gSSBhbSBkb2lu
ZyB0aGlzCisgICAgICAgIHNlcGFyYXRlbHkgdGhvdWdoIHRvIHJlZHVjZSBwYXRjaCBzaXplIGFu
ZCBmYWNpbGl0YXRlIHJldmlldy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoZXJlIHNob3Vs
ZCBiZSBubyBXZWItZmFjaW5nIGJlaGF2aW9yIGNoYW5nZSwganVzdCBhIGRlY3JlYXNlZAorICAg
ICAgICBtZW1vcnkgdXNhZ2UgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcyB3aGVuIHNlcnZpY2Ugd29y
a2VycyBhcmUgdXNlZC4KKworICAgICAgICBJIGRpZCBtYW51YWwgbWVtb3J5IHRlc3Rpbmcgd2l0
aCBhIHZlcnkgbGFyZ2Ugc2VydmljZSB3b3JrZXIgdGhhdCBoYWQgb25lIH4xMDBNQiBtYWluCisg
ICAgICAgIHNjcmlwdCwgaW1wb3J0aW5nIGFub3RoZXIgfjEwME1CIHNjcmlwdC4KKworICAgICAg
ICBIZXJlIGFyZSB0aGUgbWVtb3J5IHJlc3VsdHMgd2l0aG91dCBteSBjaGFuZ2U6CisgICAgICAg
IC0gTmV0d29ya2luZyAoRGlydHkpOiAyMzhNQiAoY29sZCkgLyAzMzFNQiAod2FybSkKKyAgICAg
ICAgLSBXZWJDb250ZW50IChEaXJ0eSk6IDQ0MU1CIChjb2xkKSAvIDg1N01CICh3YXJtKQorCisg
ICAgICAgIEhlcmUgYXJlIHRoZSBtZW1vcnkgcmVzdWx0cyB3aXRoIG15IGNoYW5nZToKKyAgICAg
ICAgLSBOZXR3b3JraW5nIChEaXJ0eSk6IDIyTUIgKGNvbGQpIC8gMTRNQiAod2FybSkKKyAgICAg
ICAgLSBXZWJDb250ZW50IChEaXJ0eSk6IDQ0ME1CIChjb2xkKSAvIDQzOE1CICh3YXJtKQorCisg
ICAgICAgIFRoaXMgc2hvd3MgdGhhdCBBTEwgbWVtb3J5IGZyb20gdGhlIHNjcmlwdHMgaW4gdGhl
IG5ldHdvcmsgcHJvY2VzcyBpcyBubyBsb25nZXIgbWFya2VkCisgICAgICAgIGFzIGRpcnR5LiBX
ZSBhbHNvIHNlZSBhIHNpZ25pZmljYW50IHByb2dyZXNzaW9uIGluIHRoZSBXZWJQcm9jZXNzIGlu
IHRoZSB3YXJtIGNhc2UsIHNpbmNlCisgICAgICAgIHRoZSBzY3JpcHRzIGFyZSBjb21pbmcgZnJv
bSB0aGUgbmV0d29yayBwcm9jZXNzIGFzIHNoYXJlZCBtZW1vcnkgaW4gdGhpcyBjYXNlLiBUaGVy
ZSBpcworICAgICAgICBubyBwcm9ncmVzc2lvbiBpbiB0aGUgV2ViUHJvY2VzcyBpbiB0aGUgY29s
ZCBjYXNlIHlldCwgc2luY2UgdGhlIHNjcmlwdCB3ZXJlIGp1c3QKKyAgICAgICAgZG93bmxvYWRl
ZCBhbmQgYXJlIGNvbWluZyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBOZXR3b3JrUHJvY2Vz
cy4gSW4gYSBmb2xsb3ctdXAsIHRoZQorICAgICAgICBuZXR3b3JrIHByb2Nlc3MgY291bGQgc2Vu
ZCBzaGFyZWQgbWVtb3J5IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MsIGFmdGVyIHNhdmluZyB0aGUg
c2NyaXB0cworICAgICAgICB0byBkaXNrLCBzbyB0aGF0IHRoZSBXZWJQcm9jZXNzIGNhbiByZXBs
YWNlIHRoZSBjb3BpZXMgb2YgaXRzIHNjcmlwdHMgYW5kIHNhdmUgbW9yZSBtZW1vcnkuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgU1dTY3JpcHRTdG9yYWdlIGNsYXNzIHRvIHRoZSBw
cm9qZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJBZ2VudDo6Z2V0SW5p
dGlhbGl6YXRpb25JbmZvKToKKyAgICAgICAgQ29udmVydCB0aGUgc2NyaXB0IHR5cGUgZnJvbSBT
aGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6
CisgICAgICAgIEZpeCBhc3NlcnRpb25zIHRoYXQgd2VyZSBoaXR0aW5nIHdoZW4gY29tcGFyaW5n
IHRvIGVtcHR5IFNoYXJlZEJ1ZmZlcnMgKG9mZnNldCB3b3VsZCBiZSAwCisgICAgICAgIGFuZCBz
aXplIHdvdWxkIGJlIDApLiBUaGlzIHdhcyBjYXVnaHQgYnkgQVBJIHRlc3RzIHNpbmNlIHdlIGhh
dmUgc29tZSBzZXJ2aWNlIHdvcmtlciBBUEkKKyAgICAgICAgdGVzdHMgdGhhdCB1c2UgZW1wdHkg
d29ya2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgQWRkIHNvbWUgY29udmVyc2lvbiBmcm9tIFN0cmluZyB0byBTaGFyZWRC
dWZmZXIgdG8gdGhlIHNjcmlwdCwgYW5kIHZpY2UtdmVyc2EsIGluIHRoZQorICAgICAgICBzZXJ2
aWNlIHdvcmtlciBjYXNlLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRCdWZm
ZXJUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb1NjcmlwdEJ1ZmZlcik6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6CisgICAgICAgIC0gU3RvcmUgc2NyaXB0cyBh
cyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBTdHJpbmcsIHNvIHRoYXQgdGhleSBjYW4gaG9sZAor
ICAgICAgICAgIG1tYXAnZCBkYXRhLgorICAgICAgICAtIEFkZCBzY3JpcHRCdWZmZXJUb1N0cmlu
ZygpIC8gc3RyaW5nVG9TY3JpcHRCdWZmZXIoKSB1dGlsaXR5IGZ1bmN0aW9ucyB0bworICAgICAg
ICAgIGNvbnZlcnQgc2NyaXB0IHNvdXJjZXMgYmV0d2VlbiBTdHJpbmcgYW5kIFNoYXJlZEJ1ZmZl
ci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdv
cmtlclRocmVhZCk6CisgICAgICAgIENvbnZlcnQgZnJvbSBzY3JpcHQgZnJvbSBTaGFyZWRCdWZm
ZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzVGFibGVTY2hlbWEp
OgorICAgICAgICBVcGRhdGUgZGF0YWJhc2Ugc2NoZW1hIGFuZCBidW1wIHZlcnNpb24gbm93IHRo
YXQgd2Ugbm8gbG9uZ2VyIHN0b3JlIHRoZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBzY3JpcHQg
aW5zaWRlIHRoZSBTUUxpdGUgZGF0YWJhc2UuIEluc3RlYWQsIHRob3NlIHNjcmlwdHMKKyAgICAg
ICAgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IG9uIHRoZSBmaWxlc3lzdGVtIHZpYSBTV1NjcmlwdFN0
b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkltcG9ydGVkU2NyaXB0QXR0cmlidXRlczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltcG9ydGVkU2NyaXB0QXR0cmlidXRlczo6
ZGVjb2RlKToKKyAgICAgICAgSW50cm9kdWNlIG5ldyBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMg
c3RydWN0IHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgZGF0YQorICAgICAgICBtZW1iZXJzIG9mIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQsIGV4Y2VwdCBmb3IgdGhlIGFj
dHVhbAorICAgICAgICBzY3JpcHQgc291cmNlLiBXZSBub3cgc2F2ZSBhIEhhc2hNYXAgb2YgSW1w
b3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIGluIHRoZQorICAgICAgICBkYXRhYmFzYWUgaW5zdGVhZCBv
ZiBIYXNoTWFwIG9mIEltcG9ydGVkU2NyaXB0IHNpbmNlIHdlIG5vIGxvbmdlciB3YW50IHRvCisg
ICAgICAgIHN0b3JlIGltcG9ydGVkIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBkYXRhYmFzZSwgYnV0
IHJhdGhlciBzdG9yZSB0aGVtCisgICAgICAgIHNlcGFyYXRlbHkgb24gdGhlIGZpbGUgc3lzdGVt
LgorCisgICAgICAgIChXZWJDb3JlOjpzdHJpcFNjcmlwdFNvdXJjZXMpOgorICAgICAgICBVdGls
aXR5IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBIYXNoTWFwIG9mIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgaW50byBhIEhhc2hNYXAgb2YgSW1wb3J0ZWRT
Y3JpcHRBdHRyaWJ1dGVzIChpZGVudGljYWwgYnV0IHdpdGhvdXQgdGhlIHNjcmlwdAorICAgICAg
ICBzb3VyY2UpLCByZWFkeSB0byBzYXZlIGluIHRoZSBTUUxpdGUgZGF0YWJhc2UuCisKKyAgICAg
ICAgKFdlYkNvcmU6OnBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrKToKKyAgICAgICAgVXRp
bGl0eSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBIYXNoTWFwIG9mIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgZnJvbSBhIEhhc01hcCBvZiBJbXBvcnRl
ZFNjcmlwdEF0dHJpYnV0ZXMsIGNvbWluZyBmcm9tIHRoZSBTUUxpdGVEYXRhYmFzZS4gVGhlCisg
ICAgICAgIG1pc3Npbmcgc2NyaXB0IHNvdXJjZXMgYXJlIGZldGNoZWQgZnJvbSB0aGUgZGlzayB2
aWEgU1dTY3JpcHRTdG9yYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRh
YmFzZTo6flJlZ2lzdHJhdGlvbkRhdGFiYXNlKToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGRlc3Ry
b3kgdGhlIFNXU2NyaXB0U3RvcmFnZSBvbiB0aGUgYmFja2dyb3VuZCBxdWV1ZSBmb3IgdGhyZWFk
LXNhZmV0eS4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlw
dFN0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICBSZXR1cm5zIHRoZSBwYXRoIG9uIHRo
ZSBmaWxlc3lzdGVtIHdoZXJlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgYXJlIHN0b3JlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UpOgor
ICAgICAgICBDb25zdHJ1Y3RzIChpZiBuZWNlc3NhcnkpIGEgU1dTY3JpcHRTdG9yYWdlIGFuZCBy
ZXR1cm4gaXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVh
ckFsbCk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBjbGVhciBhbGwgdGhlIHNlcnZpY2Ugd29ya2Vy
IHNjcmlwdHMgb24gZGlzayBpbiBhZGRpdGlvbiB0byB0aGUgZGF0YWJhc2UsCisgICAgICAgIG5v
dyB0aGF0IHRoZXkgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5LgorCisgICAgICAgIChXZWJDb3JlOjpS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyk6CisgICAgICAgIC0gU3RvcCBzdG9y
aW5nIHRoZSBzY3JpcHQgc291cmNlcyBpbiB0aGUgU1FMaXRlIGRhdGFiYXNlLCBhbmQgaW5zdGVh
ZCBzdG9yZSB0aGVtIGFzIHNlcGFyYXRlCisgICAgICAgIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3Rl
bSB2aWEgU1dTY3JpcHRTdG9yYWdlLgorICAgICAgICAtIEltcHJvdmUgbG9nZ2luZworICAgICAg
ICAtIFdoZW4gZG9uZSBzdG9yaW5nIHRoZSBzY3JpcHRzIHRvIGRpc2ssIHNlbmQgdGhlc2UgbmV3
IG1tYXAnZCB2ZXJzaW9ucyBiYWNrIHRvIHRoZQorICAgICAgICAgIFNXU2VydmVyV29ya2VyIG9u
IHRoZSBtYWluIHRocmVhZCwgc28gdGhhdCBpdCBjYW4gcmVwbGFjZSBpdCdzIGhlYXZ5IHNjcmlw
dCBzb3VyY2VzIHdpdGgKKyAgICAgICAgICB0aGVzZSBvbmVzLiBUaGlzIGhlbHBzIHJlZHVjZSBt
ZW1vcnkgdXNhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKToKKyAgICAgICAgLSBMb2FkIHRoZSBzY3JpcHQgc291cmNlcyBmcm9tIHRo
ZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UsIG5vdyB0aGF0IHRoZXkgYXJlIG5vIGxvbmdlcgor
ICAgICAgICAgIHN0b3JlZCBpbiB0aGUgU1FMaXRlIGRhdGFiYXNlLgorICAgICAgICAtIEltcHJv
dmUgbG9nZ2luZy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uU3RvcmU6OmRp
ZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvblN0b3JlLmg6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUg
c2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhh
dCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2Ug
bmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpoYXNoVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6U1dTY3JpcHRTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6
cmVnaXN0cmF0aW9uRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0
U3RvcmFnZTo6c2NyaXB0UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0
b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmll
dmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpjbGVhcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaDogQWRkZWQuCisgICAg
ICAgIEFkZCBTV1NjcmlwdFN0b3JhZ2UgdG8gZGVhbCB3aXRoIHRoZSBzdG9yYWdlIC8gcmV0cmll
dmFsIG9mIFNlcnZpY2UKKyAgICAgICAgV29ya2VyIHNjcmlwdHMgdG8gLyBmcm9tIGRpc2ssIGFz
IGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4gV2hlbgorICAgICAgICBnb2luZyBhIHJldHJpZXZh
bCwgd2UgcmV0dXJuIGEgc2NyaXB0IGFzIGEgU2hhcmVkQnVmZmVyIHdoaWNoIGNvbnRhaW5zCisg
ICAgICAgIG1tYXAnZCgpIGRhdGEuCisgICAgICAgIFRoZSBzY3JpcHRzIHJlc2lkZSBpbiBhIFNj
cmlwdHMvIGZvbGRlciwgYmVzaWRlIHRoZSBkYXRhYmFzZS4gVGhlIHNjcmlwdHMgYXJlIHNlcGFy
YXRlZAorICAgICAgICBieSBvcmlnaW4gKHVzaW5nIFNIQTI1NiBvZiB0aGUgb3JpZ2luIGFzIGZv
bGRlciBuYW1lKSwgYW5kIHRoZW4gYnkgcmVnaXN0cmF0aW9uIChieQorICAgICAgICB1c2luZyBT
SEEyNTYgb2YgdGhlIHJlZ2lzdHJhdGlvbiBzY29wZSBhcyBzdWJmb2xkZXIgbmFtZSkuIFRoZSBm
aWxlIG5hbWUgZm9yIHRoZSBzY3JpcHQKKyAgICAgICAgaXMgYSBTSEEyNTYgb2YgdGhlIHNjcmlw
dCBVUkwuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayk6
CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBz
dG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFj
ZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBv
cmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0
ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1
ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3Ry
aW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgVGFrZSBpbiBhIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgZm9yIGNvbnZlbmllbmNlLCBp
bnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRzIGRhdGEgbWVtYmVycyBhcyBzZXBhcmF0
ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJX
b3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHQgY29uc3QpOgorICAg
ICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNjcmlwdCBpbnN0ZWFkIG9mIFN0cmluZyB0
eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQorICAgICAgICBtbWFwJ2QgZGF0YSBhbmQg
cmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0zMCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdyBQbGF5aW5nIGNvbnRlbnQgaXNuJ3QgdXBkYXRl
ZCB3aGVuIG1lZGlhIHNlc3Npb24ncyBNZXRhZGF0YSBpcyBtb2RpZmllZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0
NzA3OGVmMmQzMWVkODU4MGJlMjMwNTg5NjZmMzU3OTA3ZGNiMTI3Li5jODQ0NjkzNTk2ZWMzOGJm
Y2I5NmM5OWU2MzkxOWZkN2ZiYjQ0Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIx
LTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2Vydmlj
ZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgw
OAorICAgICAgICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0
U2NyaXB0UmVzb3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBw
YXNzIHRoZSBJbXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3Jp
Z2luRnJvbURpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAg
ICAgICBEcm9wIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5k
IHVzZSB0aGUgZXhpc3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoKSBpbiB3dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRh
dGE6Om1hcFRvRmlsZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhlIG1hcFRvRmls
ZSgpIGxvZ2ljIHRvIFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IFVwZGF0ZSBTaGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlzdGluZ3Vpc2gg
YSBudWxsIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBXZSBub3cgdXNl
IFNoYXJlZEJ1ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291cmNlcworICAg
ICAgICBhbmQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0byBiZSBlbXB0
eSAoYW5kIHRoZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0cykuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0
U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNlIElQQworICAg
ICAgICBmb3IgY29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0ZWRTY3JpcHQg
ZGF0YSBtZW1iZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMzAgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3cgUGxheWluZyBjb250ZW50IGlzbid0IHVw
ZGF0ZWQgd2hlbiBtZWRpYSBzZXNzaW9uJ3MgTWV0YWRhdGEgaXMgbW9kaWZpZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2YTFmZjBiZS4u
YTg0MTZmMzNhZTJkOGNjM2JjM2QzMDRmM2JiOTczZDBmZjc4NTMxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKQEAgLTQwOCw1ICs0MDgsNjAgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hp
dmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAh
T1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgIioiX3MpOwor
ICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChmaWxlSXNEaXJl
Y3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAgICAg
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBkZWxldGVFbXB0eURpcmVj
dG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSwgUGxh
dGZvcm1GaWxlSGFuZGxlKiBvdXRwdXRIYW5kbGUpCit7CisgICAgY29uc3RleHByIGJvb2wgZmFp
bElmRmlsZUV4aXN0cyA9IHRydWU7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3Rl
bTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOworICAgIGlm
ICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8ICFGaWxlU3lzdGVtOjp0cnVu
Y2F0ZUZpbGUoaGFuZGxlLCBieXRlc1NpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEZpbGVTeXN0
ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOworICAgIGJvb2wgc3VjY2Vz
czsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisK
KyAgICB2b2lkKiBtYXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7Cisg
ICAgdWludDhfdCogbWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOworICAgIG1l
bWNweShtYXBEYXRhLCBieXRlcywgYnl0ZXNTaXplKTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAg
RFdPUkQgb2xkUHJvdGVjdGlvbjsKKyAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIGJ5dGVzU2l6ZSwg
RklMRV9NQVBfUkVBRCwgJm9sZFByb3RlY3Rpb24pOworICAgIEZsdXNoVmlld09mRmlsZShtYXAs
IGJ5dGVzU2l6ZSk7CisjZWxzZQorICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCisg
ICAgbXByb3RlY3QobWFwLCBieXRlc1NpemUsIFBST1RfUkVBRCk7CisKKyAgICAvLyBGbHVzaCAo
YXN5bmNocm9ub3VzbHkpIHRvIGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4K
KyAgICBtc3luYyhtYXAsIGJ5dGVzU2l6ZSwgTVNfQVNZTkMpOworI2VuZGlmCisKKyAgICBpZiAo
b3V0cHV0SGFuZGxlKQorICAgICAgICAqb3V0cHV0SGFuZGxlID0gaGFuZGxlOworICAgIGVsc2UK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICByZXR1cm4gbWFw
cGVkRmlsZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbUltcGwKIH0gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGFlYzExNWQ2NWQ0ZjhhMDI0ZDJlN2Y2YjljMzIx
NDcyMzg0ZWY0YzQuLjIxNDdlYjExZTg2OGQxYzRhNWI2NDRlYTY3YTJiMTdhNzUxM2RhZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmgKQEAgLTE5MCwxNCArMTkwLDE0IEBAIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7Ci1X
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBXVEZfRVhQT1JUX1BSSVZBVEUg
TlNTdHJpbmcgKmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJl
Zml4KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpOwogI2VuZGlmCiAKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBp
c1NhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoY29uc3QgU3RyaW5nJik7CkBAIC0yNTIsNiArMjUy
LDEwIEBAIGlubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShN
YXBwZWRGaWxlRGF0YSYmIG90aGVyKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8gVGhpcyBj
cmVhdGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBzIGl0LCB3cml0ZSB0aGUgcHJvdmlkZWQg
ZGF0YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVkIGZpbGUuCisvLyBUaGlzIGZ1bmN0aW9u
IGZhaWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIGF0IHRoZSBkZXN0aW5hdGlvbiBwYXRo
LgorV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXplLCBQbGF0Zm9y
bUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBs
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNGRkNDYzZTAyM2FkZDZl
YzI0YWNkZDE5OGY5OTFhMGZmZjcxMWUzLi4zZTAxNzUzYjZlM2I3MjRjZmQ4NzMyNjc4ODY1Nzky
NWQ3NTE0MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4NSw2ICsyNjg1LDcgQEAgd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2lu
U3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGEwNDAwYzM3MDdiYTYzMThkOTgwMDg3MTc5ZjdiZGZlODUwOTlk
ZDkuLjM5NzFmMzBjMDc5OWU3NDk1ODlhOTAwNWFlODQyODg3OGYyYmRjYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzEs
NiArMTI3MSw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1By
b3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsg
fTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rp
b25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9y
TW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNU
aW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBF
NTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2Ny
aXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAw
QzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VC
NjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0Qw
MURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNV
SUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODI0MSw2ICs4MjQyLDggQEAKIAkJNDYwQ0JGMzMxRDRC
Q0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01X
aW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9N
V2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0
NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NB
QzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAv
KiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzE4LDYgKzIwNzIxLDggQEAKIAkJCQk1MUI5MTQwQjFG
RDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFG
QkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJB
NEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURG
MDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURG
MDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAw
RENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEg
LyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTMwOCw2ICszNTMxMyw3IEBACiAJCQkJNDY2NThEQzkx
RkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyog
U1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAv
KiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZG
MDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZp
Y2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4MjUz
NjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9T
ZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNlcnZp
Y2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5p
ZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0
VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2Ny
aXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENvbnRl
bnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFk
KCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJjNGFhOTgzYzg3M2Nm
MTNkNTQzZGQxYzc2NjRjY2Y2NjVkYWE5Li5jNzBmOGFlYWViODViYWYzNjQyMjdjMjMyM2RkYWNk
OWQzMjczZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAg
LTcwLDEwICs3MCwxMCBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSBtYXBwZWRGaWxlTW9kZSkKIHsKICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVN
b2RlLCBtYXBwaW5nU3VjY2Vzcyk7CiAKICAgICBpZiAoIW1hcHBpbmdTdWNjZXNzKQogICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwpA
QCAtMjgxLDggKzI4MSw4IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIEFTU0VSVCh0aGlzT2Zmc2V0IDwgdGhpc1NlZ21lbnQuc2l6ZSgpKTsKLSAg
ICAgICAgQVNTRVJUKG90aGVyT2Zmc2V0IDwgb3RoZXJTZWdtZW50LnNpemUoKSk7CisgICAgICAg
IEFTU0VSVCh0aGlzT2Zmc2V0IDw9IHRoaXNTZWdtZW50LnNpemUoKSk7CisgICAgICAgIEFTU0VS
VChvdGhlck9mZnNldCA8PSBvdGhlclNlZ21lbnQuc2l6ZSgpKTsKIAogICAgICAgICBzaXplX3Qg
dGhpc1JlbWFpbmluZyA9IHRoaXNTZWdtZW50LnNpemUoKSAtIHRoaXNPZmZzZXQ7CiAgICAgICAg
IHNpemVfdCBvdGhlclJlbWFpbmluZyA9IG90aGVyU2VnbWVudC5zaXplKCkgLSBvdGhlck9mZnNl
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMjNiZjVhOGVkYjRj
MWUzMDI5YjdjYjQ3NDllYWNkNTUwMWJhOTE5NC4uZTRhYjFiMWFjZjk5NjI0NDU2Zjg2MDhlOTEz
NDNiZTJkNDNjZWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAg
LTY4LDcgKzY4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KICAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KICAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkKTsKIAogICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDRkNDc0ZjE2ZTU4OGRk
MDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUxMDA0MGJlMjg1OTIxMGI3MmNlZDIzMTgy
YWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTYwLDcgKzYxLDcgQEAg
T3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1
cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlw
dCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVmZmVyVG9TdHJpbmcoKnNj
cmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwgPSBzY3Jp
cHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUg
PSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0
TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAg
IGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVz
cG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3Jr
RXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBl
Il9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3Jr
ZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9u
c2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0
KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQogI2VuZGlm
CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggMTZk
ZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTliNWVkZi4uMWVhNTkwMWJkOWQyZmQ5Yzc5
M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgam9iRGF0YUlkZW50aWZpZXIsCiAgICAg
ICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwKICAgICAgICAgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgc2NyaXB0
LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5mby5pc29sYXRlZENvcHkoKSwKICAgICAg
ICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29weSgpLAogICAgICAgICByZWZlcnJl
clBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYgKzQ4LDIwIEBAIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGF1dG8gaXQg
PSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVuZCgpOyArK2l0KQorICAgICAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5zZWdtZW50LT5kYXRhKCksIGl0LT5zZWdt
ZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitSZWY8
U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2NWVlNDgwYTk2MWIxMGYxZGJkYzdlLi44
NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYwZTU5MmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZmZXImKTsKK1Jl
ZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOworCiBz
dHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3Jp
cHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAgU3RyaW5nIG1pbWVU
eXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwg
bWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbXBvcnRlZFNjcmlwdCBpc29s
YXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29weSgpLCByZXNwb25zZVVSTC5p
c29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgewotICAg
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAgICAgICAgICBPcHRpb25hbDxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAgICAgZGVjb2RlciA+PiBzY3Jp
cHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRh
dGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJh
dGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHNjcmlwdDsKICAg
ICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIHJl
ZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVj
CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
Y3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CisgICAgZGVj
b2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVu
dFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAgICAgICAgV1RGTW92
ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1vdmUoKnNjcmlwdCks
CiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAgICAgICAgIFdURk1vdmUoY29u
dGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShyZWZlcnJlclBvbGljeSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVlNjkzZjI3N2Y2NTU4M2U3YTRl
MDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEwZjNhMDlkNDI1Mjc0ZTZlZWJlMjY4MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6
CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtlclRocmVh
ZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NW
YWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94
eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5l
Y3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29ya2Vy
VGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIg
KyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZN
b3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5p
c09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1Rp
bWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6
Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdn
ZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigp
LnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlk
ZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCisgICAgOiBXb3JrZXJU
aHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiAr
IEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1v
dmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlz
T25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9ub3RvbmljVGlt
ZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6
T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9TdHJpbmcoZGF0YS5zY3JpcHQp
LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rp
b25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFi
bGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fd29ya2Vy
T2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpKQogICAg
ICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVz
dCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGNl
ZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4OTRiMTQuLmQ4ODVhMjM3MGYzMDUyNTk3
MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5j
bHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpA
QCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1
aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFW
ZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29u
c3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3ICs2Miw2IEBAIHN0YXRpYyBjb25zdCBT
dHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogICAgICAg
ICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwi
Ci0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAg
ICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbk9sZERhdGFi
YXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFzZUZpbGVuYW1lRnJvbVZlcnNpb24odmVy
c2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7CisgICAgVVJM
IHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlwZTsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBlOworICAgIH0KKworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbXBvcnRlZFNjcmlwdEF0dHJp
YnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsKKyAgICAg
ICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKKyAgICAgICAgZGVjb2RlciA+PiBt
aW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpyZXNw
b25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCptaW1lVHlwZSkKKyAgICAgICAgfX07Cisg
ICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+
IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sKKyAgICBIYXNoTWFwPFVSTCwgSW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3JpcHRzLmFkZChwYWlyLmtleSwgSW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5yZXNwb25zZVVSTCwgcGFpci52YWx1ZS5t
aW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91dFNjcmlwdHM7Cit9CisKK3N0YXRpYyBI
YXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gcG9w
dWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3JpcHRTdG9yYWdlJiBzY3JpcHRTdG9yYWdl
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIEhh
c2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+JiYgbWFwKQoreworICAgIEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiBpbXBvcnRl
ZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbWFwKSB7CisgICAgICAgIGF1dG8gaW1w
b3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKHJlZ2lzdHJhdGlvbktleSwgcGFp
ci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2NyaXB0KSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnBvcHVs
YXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQgdG8gcmV0cmlldmUgaW1wb3J0ZWQgc2Ny
aXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGltcG9ydGVkU2NyaXB0
cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQg
eyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92ZShwYWlyLnZhbHVlLnJlc3BvbnNlVVJM
KSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9KTsKKyAgICB9CisgICAgcmV0dXJuIGlt
cG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9uRGF0YWJhc2U6OlJlZ2lzdHJhdGlvbkRh
dGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwgU3RyaW5nJiYgZGF0YWJhc2VEaXJlY3Rv
cnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU2VydmljZVdvcmtlciBJ
L08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwpKQogICAgICwgbV9zdG9yZShtYWtl
V2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkgQEAgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBiZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tn
cm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNlKQotICAgICAgICBtX3dvcmtRdWV1ZS0+
ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2RhdGFiYXNlKV0geyB9KTsKKyAgICAvLyBU
aGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQgdG8gYmUgZGVzdHJveWVkIG9uIHRoZSBi
YWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRhYmFzZSB8fCBtX3NjcmlwdFN0b3JhZ2Up
CisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0
YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZShtX3NjcmlwdFN0b3JhZ2UpXSB7IH0pOwog
fQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwb3N0VGFza1RvV29ya1F1ZXVlKEZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIzNSwxOSBAQCBib29sIFJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2Ny
aXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFzZURpcmVjdG9yeSwgeyAiU2NyaXB0cyIs
ICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNj
cmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmICgh
bV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFNX
U2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gKm1f
c2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVj
b3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTMz
Myw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6Y2xlYXJBbGwoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKIHsKICAgICBwb3N0VGFza1Rv
V29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2RhdGFiYXNlID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAogICAgICAgICBTUUxpdGVGaWxlU3lzdGVt
OjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpKTsK
ICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShk
YXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsKIAogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTM1MiwxMiArNDE3LDEzIEBAIGJv
b2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMoY29uc3QgVmVjdG9yPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24o
Km1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBTUUxpdGVTdGF0
ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICBTUUxpdGVTdGF0ZW1l
bnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwg
IkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBp
bnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9yYWdlKCk7CiAgICAg
Zm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVkUmVnaXN0cmF0aW9ucykgewogICAgICAg
ICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiREVMRVRFIEZST00gUmVjb3JkcyBX
SEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSwpA
QCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hh
bmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lz
dHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNjcmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0
cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0
aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNzcEVuY29kZXI7CiAg
ICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LmVuY29kZShjc3BFbmNvZGVyKTsKIAor
ICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNvZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRv
IHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGluIHRoZSBTY3Jp
cHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgd2UgbmVlZCB0byBzdHJpcCB0aGUg
c2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2RpbmcgdGhlIHNjcmlwdFJlc291cmNlTWFw
LgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5j
b2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVz
b3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlciA8PCBzdHJpcFNjcmlw
dFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7CiAKICAgICAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwogICAgICAgICBjZXJ0aWZpY2F0
ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpAQCAtMzg1LDIxICs0NTQsMzYg
QEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHx8IHNxbC5iaW5kRG91Ymxl
KDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCku
dmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoNiwgdXBk
YXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJM
LnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCBk
YXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOSwg
d29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVy
LmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZFRleHQo
MTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3Fs
LmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJl
c291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0
aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAg
ICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDksIGNzcEVuY29kZXIu
YnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09L
CisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rl
ci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FM
SVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIGNlcnRpZmljYXRlSW5mb0Vu
Y29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gc3Rv
cmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fZGF0
YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICAvLyBTYXZlIHNjcmlwdHMg
dG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShk
YXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCk7CisgICAg
ICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAgaWYgKCFtYWluU2NyaXB0KQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGF0YS5z
Y3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNj
cmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtleSwgKnBhaXIu
dmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlwdCk7CisgICAg
ICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAgICAgICAgICAgICAgaW1wb3J0ZWRTY3Jp
cHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0
KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRhdGEuc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQgPSBtYWluU2NyaXB0LnJlbGVhc2VOb25O
dWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQorICAgICAgICAgICAgICAgIG1fc3RvcmUt
PmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZN
b3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworICAgICAgICB9KTsK
ICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKLQotICAgIExPRyhTZXJ2aWNlV29y
a2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFk
ZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIs
IHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgp
KTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2Vy
IHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBh
bmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUo
KSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVj
b3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKKyAgICBSRUxFQVNFX0xP
RyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7
CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gUmVj
b3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byByZXRyaWV2
ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJsZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5
OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAg
aW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBmb3IgKDsgcmVzdWx0ID09IFNRTElURV9S
T1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBJbXBvcnRpbmcgYSBy
ZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgYXV0byBrZXkgPSBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkoc3FsLmdldENvbHVtblRl
eHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29s
dW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3BlUGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0
KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5Eb3VibGUoNCkpOwogICAgICAgICBhdXRv
IHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVWaWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4
dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1
bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0ID0gc3FsLmdldENvbHVtblRleHQoNyk7
Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29s
dW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlw
ZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRl
bnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3Io
OSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CisgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9i
QXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CiAgICAgICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRh
dGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkpOwogICAgICAgICBPcHRpb25h
bDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRTZWN1cml0eVBv
bGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAg
ICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICAgICAg
ICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICAgICAgaWYgKCFjb250ZW50
U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2
aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0
byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJlZmVycmVyUG9s
aWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5
ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlw
dFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwg
c2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAgT3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1h
cDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMCwgc2NyaXB0UmVzb3VyY2VN
YXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogCiAgICAgICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFw
RGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpOwogICAgICAgICBpZiAo
c2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewotICAgICAgICAgICAgc2NyaXB0UmVzb3Vy
Y2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwOwotICAgICAgICAgICAgaWYgKCFzY3Jp
cHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRl
ZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzOworICAg
ICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwV2l0
aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNj
cmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
c2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1
bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRTdG9yYWdlKCksICprZXksIFdURk1vdmUo
KnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpKTsKICAgICAgICAgfQogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9EYXRhOwotICAgICAgICBzcWwuZ2V0Q29s
dW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUluZm9EYXRhKTsKKyAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CiAgICAgICAgIE9w
dGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCiAgICAgICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUlu
Zm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YS5zaXplKCkpOwogICAgICAgICBjZXJ0
aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0
aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlmaWNhdGVJbmZvKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY2VydGlmaWNhdGVJbmZvIik7CiAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBp
bnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIElmIGFueSBwYXJ0IG9mIHRo
aXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4gZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVn
aXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwg
IXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwg
IXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIHBhcnQgb2Yg
dGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3Jp
cHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAgICAgaWYgKCFzY3JpcHQpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRp
b25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIHJldHJpZXZlIG1haW4gc2NyaXB0
IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gd29ya2VySWRl
bnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNl
cnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29y
a2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
fTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2Nv
cGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBh
dXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0
LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0
KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9s
aWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtl
clR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRv
IGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5yZWxlYXNlTm9u
TnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJp
dHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAq
d29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKIAogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRl
eHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdURk1vdmUoY29udGV4
dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAppbmRleCBkNmFlZDZiNDBlNjA0NjI2ZTNh
MWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2MjFkYjM0Mjg3N2FmMzRjNzFlNDViOThi
OTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3RvcmU7CiBjbGFzcyBTUUxpdGVE
YXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKQEAg
LTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydFJlY29yZHNJZk5lY2Vzc2Fy
eSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiYp
OwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIFNX
U2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOworICAgIFN0cmluZyBzY3JpcHRTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBsaWVzIHRvIHRoZSBtYWluIHRocmVhZC4K
ICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93
b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRpb25TdG9yZT4gbV9zdG9yZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBtX3NjcmlwdFN0b3JhZ2U7CiAgICAgU3Ry
aW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRhY2FiYTI5MWZkMmE0M2IzZWI0MDE2MTQz
OGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2IyMmFmYjBlMDU3NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBAIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6
OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBk
CiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFdURk1vdmUoZGF0YSkpOwog
fQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2VydmVyLmRpZFNhdmVXb3JrZXJTY3JpcHRz
VG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZN
b3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkYXRh
YmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2ZXIucmVnaXN0cmF0aW9uU3RvcmVEYXRh
YmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCmluZGV4IDc1NDNlYzEzYjNkY2Y3
MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4Y2VlYjBlMmY2MDdlNzA3ZTdiYjQwMWZl
NDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNlKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CiAgICAgdm9pZCBk
YXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgpOworICAgIHZvaWQgZGlkU2F2ZVdvcmtl
clNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9y
dGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGE4MWEyMWZlZDhiMzQ3NzBmNTRh
ZjU0NGFmY2VlZTg3OGY1MjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0wLDAgKzEsMTE1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXU2NyaXB0U3Rv
cmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIFN0cmluZyBzaGEySGFzaChjb25zdCBTdHJpbmcmIGlucHV0KQoreworICAgIGF1dG8gY3J5
cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGlucHV0VXRmOCA9IGlucHV0LnV0ZjgoKTsKKyAgICBj
cnlwdG8tPmFkZEJ5dGVzKGlucHV0VXRmOC5kYXRhKCksIGlucHV0VXRmOC5sZW5ndGgoKSk7Cisg
ICAgYXV0byBoYXNoID0gY3J5cHRvLT5jb21wdXRlSGFzaCgpOworICAgIHJldHVybiBXVEY6OmJh
c2U2NFVSTEVuY29kZShoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkpOworfQorCitzdGF0aWMgU3Ry
aW5nIHNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQpCit7CisgICAgcmV0dXJuIHNoYTJIYXNoKGlu
cHV0LnN0cmluZygpKTsKK30KKworU1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpCisgICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6
OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3RvcnksIHsgc2hhMkhhc2gocmVnaXN0cmF0aW9u
S2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBzaGEySGFzaChyZWdpc3RyYXRpb25LZXkuc2Nv
cGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnNjcmlwdFBhdGgoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwm
IHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkpLCBzaGEy
SGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9y
YWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9
IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworICAgIEZpbGVT
eXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHNjcmlw
dFBhdGgpKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZWxldGUgdGhlIGZpbGUgYmVmb3JlIHdy
aXRpbmcgYXMgdGhlcmUgbWF5IGJlIGNvZGUgdXNpbmcgYSBtbWFwJ2QgdmVyc2lvbiBvZiB0aGlz
IGZpbGUuCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzY3JpcHRQYXRoKTsKKworICAgIC8v
IE9wdGltYWwgY2FzZSBmaXJzdCwgdHJ5IHRvIHVzZSBmaWxlIG1hcHBpbmcuCisgICAgaWYgKGF1
dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShzY3JpcHRQYXRoLCBzY3JpcHQu
ZGF0YUFzVUludDhQdHIoKSwgc2NyaXB0LnNpemUoKSkpCisgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGUpKTsKKworICAgIC8vIElmIG1tYXAoKSBm
YWlscywgZmFsbCBiYWNrIHRvIGxlc3MgZWZmaWNpZW50IHdheS4KKyAgICBhdXRvIGZpbGVIYW5k
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OldyaXRlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhh
bmRsZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2Ny
aXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om9wZW5G
aWxlKCkgZmFpbGVkIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIGZvciAoYXV0byBpdCA9IHNjcmlwdC5iZWdpbigpOyBpdCAh
PSBzY3JpcHQuZW5kKCk7ICsraXQpCisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZp
bGVIYW5kbGUsIGl0LT5zZWdtZW50LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpOworCisg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIHJldHVybiBzY3JpcHQu
Y29weSgpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJp
ZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwg
Y29uc3QgVVJMJiBzY3JpcHRVUkwpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisK
KyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwg
c2NyaXB0VVJMKTsKKyAgICAvLyBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSgpIHdpbGwgdXNlIGZpbGUgbWFwcGluZyB3aGVuZXZlciBwb3NzaWJsZS4KKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUpOworfQorCit2b2lkIFNXU2NyaXB0U3RvcmFn
ZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5KQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+cmVnaXN0cmF0
aW9uRGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7CisgICAgYm9vbCByZXN1bHQgPSBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdpc3RyYXRpb25EaXJlY3RvcnkpOworICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0
b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9yIHJlZ2lzdHJhdGlvbiAl
cyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgpLmRhdGEoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZGViZDg1NGUwY2Q0Y2Y0MDQxZTZiNzE2M2I0
NDU2MzIxMDU3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIFNXU2Ny
aXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKKworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CisgICAgdm9pZCBjbGVhcihj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisKK3ByaXZhdGU6CisgICAgU3Ry
aW5nIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25zdDsKKworICAgIFN0cmlu
ZyBtX2RpcmVjdG9yeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3ODFkMzBhYmRiNGE5
OTdkNjRmMWQ2NTg2OTRiMy4uZGNlMjAxNmZjMTUzODMwMGZmYWExMTc1OWVhZTMzNDA4YzRmOWU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTE3Niw2ICsxNzYsMTIgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0
aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgfSk7CiB9
CiAKK3ZvaWQgU1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRl
ZFNjcmlwdHMpCit7CisgICAgaWYgKGF1dG8gd29ya2VyID0gd29ya2VyQnlJRChzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV1RG
TW92ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKwogdm9pZCBT
V1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJh
dGlvbj4mJiByZWdpc3RyYXRpb24pCiB7CiAgICAgbV9vcmlnaW5TdG9yZS0+YWRkKHJlZ2lzdHJh
dGlvbi0+a2V5KCkudG9wT3JpZ2luKCkpOwpAQCAtNjMzLDcgKzYzOSw3IEBAIHZvaWQgU1dTZXJ2
ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJj
ZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVu
dFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0
YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc3RyaW5nVG9TY3JpcHRC
dWZmZXIoc2NyaXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJl
ZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFw
KSB9KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYmExYjQxMzUwMzU0MGRjZTg4NWNkNDQ4YjNm
N2MwNDI4ZGI4Y2IxNy4uNzk2YmU4NWUzZTU0NzcyNjg2ZTk1NDgwODQ1ZjA0NTQ4YzVkOTUwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aApAQCAtMTkwLDYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAgICB2b2lkIGFkZFJl
Z2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7CisgICAgdm9p
ZCBkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblN0b3JlSW1w
b3J0Q29tcGxldGUoKTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblN0b3JlRGF0YWJhc2VGYWlsZWRU
b09wZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggODAyYTQ4MDExNTFhNzI4ZmJjNWEy
YTY5MTI0ZGI5NjNjNzcyY2IwYS4uNWNhMjUyNjkxMTQ1M2RiMDhmMWY4ZjI4MzJkYmM0MDQ1ZTY0
YWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTV1Nl
cnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRj
aFJlc3VsdCYgcmVzdWwKICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIG5ld2Vz
dFdvcmtlcidzIHNjcmlwdCB1cmwgZXF1YWxzIGpvYidzIHNjcmlwdCB1cmwgd2l0aCB0aGUgZXhj
bHVkZSBmcmFnbWVudHMKICAgICAvLyBmbGFnIHNldCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0ZXh0
IGlzIGEgYnl0ZS1mb3ItYnl0ZSBtYXRjaCB3aXRoIG5ld2VzdFdvcmtlcidzIHNjcmlwdCByZXNv
dXJjZSdzIHNvdXJjZQogICAgIC8vIHRleHQsIHRoZW46Ci0gICAgaWYgKG5ld2VzdFdvcmtlciAm
JiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJM
KCksIGpvYi5zY3JpcHRVUkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJU
eXBlICYmIHJlc3VsdC5zY3JpcHQgPT0gbmV3ZXN0V29ya2VyLT5zY3JpcHQoKSAmJiBkb0NlcnRp
ZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlm
aWNhdGVJbmZvKCkpKSB7CisgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpvYi5zY3JpcHRVUkwp
ICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYmIHJlc3VsdC5zY3Jp
cHQgPT0gc2NyaXB0QnVmZmVyVG9TdHJpbmcobmV3ZXN0V29ya2VyLT5zY3JpcHQoKSkgJiYgZG9D
ZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNl
cnRpZmljYXRlSW5mbygpKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkLCBzY3JpcHQgYW5kIGNl
cnRpZmljYXRlIGFyZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJl
Z2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICAvLyBGSVhNRTog
Zm9yIG5vbiBjbGFzc2ljIHNjcmlwdHMsIGNoZWNrIHRoZSBzY3JpcHTigJlzIG1vZHVsZSByZWNv
cmQncyBbW0VDTUFTY3JpcHRDb2RlXV0uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAppbmRleCAyYjhmZjY4NWUwNDk3OWZjZGM3M2U3MzIwZGYzZjRkYTY0Yzc2MmRm
Li4xMjAwNTE2OThiZjkzOTgxOGU0ZDQzZTg1YzY5NTczMDBiYTdkY2FmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCB2b2lk
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBT
dHJpbmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSkKK3Zv
aWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJM
LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYgc2NyaXB0KQogewog
ICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJ
ZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgd29ya2VyLT5zZXRT
Y3JpcHRSZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUocmVzcG9uc2VVUkwp
LCBXVEZNb3ZlKG1pbWVUeXBlKSB9KTsKKyAgICAgICAgd29ya2VyLT5zZXRTY3JpcHRSZXNvdXJj
ZShXVEZNb3ZlKHNjcmlwdFVSTCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAKIHZvaWQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCmluZGV4IDQ2NTlmOWY5ZmE2YzZiYWE4ZGU5NjhkMzkxNWZlMzNjNGUzMTI2NjguLjliZTM0
NDQ5MWYwNjEzZmFlMTQwZTc5ODUxYjcxMGEzYjMyYjJiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVudElkUmVx
dWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
YWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPEV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNj
cmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0
cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hl
Y2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFp
bjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAzYmEzNmEzZjk1YTU3ZWJhMTc4NThjZTYyZGVlZTc4
YWM5YTY2NzA1Li42MTNiYjcyYzU4OGQ4YTE3MGIxZTRiYjJiNzkwYzAzMDBiZTFmNDRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcApAQCAtNDksNyArNDksNyBAQCBTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJX
b3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZgog
fQogCiAvLyBGSVhNRTogVXNlIHItdmFsdWUgcmVmZXJlbmNlcyBmb3Igc2NyaXB0IGFuZCBjb250
ZW50U2VjdXJpdHlQb2xpY3kKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZl
ciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYg
Y2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtl
clR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVz
b3VyY2VNYXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZl
ciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRV
UkwsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmlj
YXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250
ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5
cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFw
KQogICAgIDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fcmVnaXN0cmF0
aW9uS2V5KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFr
UHRyKHJlZ2lzdHJhdGlvbikpCkBAIC0yMzgsNiArMjM4LDIxIEBAIHZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OnNldFNjcmlwdFJlc291cmNlKFVSTCYmIHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvCiAgICAgbV9zY3JpcHRSZXNvdXJjZU1hcC5zZXQoV1RGTW92ZSh1cmwpLCBXVEZNb3Zl
KHNjcmlwdCkpOwogfQogCit2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlz
ayhSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8gVGhlIHNjcmlwdHMgd2Vy
ZSBzYXZlZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAnZCB2ZXJz
aW9uIHRvIHNhdmUgbWVtb3J5LgorICAgIEFTU0VSVChtYWluU2NyaXB0LmdldCgpID09IG1fc2Ny
aXB0LmdldCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBp
ZGVudGljYWwuCisgICAgbV9zY3JpcHQgPSBXVEZNb3ZlKG1haW5TY3JpcHQpOworICAgIGZvciAo
YXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgeworICAgICAgICBhdXRvIGl0ID0gbV9zY3Jp
cHRSZXNvdXJjZU1hcC5maW5kKHBhaXIua2V5KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fc2Ny
aXB0UmVzb3VyY2VNYXAuZW5kKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9zY3JpcHRSZXNvdXJj
ZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoKml0LT52
YWx1ZS5zY3JpcHQgPT0gKnBhaXIudmFsdWUpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUg
dGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KKyAgICAgICAgaXQtPnZhbHVlLnNjcmlwdCA9IFdU
Rk1vdmUocGFpci52YWx1ZSk7CisgICAgfQorfQorCiB2b2lkIFNXU2VydmVyV29ya2VyOjpza2lw
V2FpdGluZygpCiB7CiAgICAgbV9pc1NraXBXYWl0aW5nRmxhZ1NldCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKaW5kZXggMzc4ZmJhNjU3ZThiYmY0ODQxZTU2Y2JmODY1NjFmOGVjYzMxMTAyMC4uYzQ1ZGFk
YmNhYjgxOTc2Yjc2ZjBiZTUzMTRmM2I3MWY3N2I2YjI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtODAs
NyArODAsNyBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJuIG1fc2Vy
dmVyLmdldCgpOyB9CiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KICAgICBj
b25zdCBVUkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zY3JpcHRVUkw7IH0K
LSAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9Cisg
ICAgU2hhcmVkQnVmZmVyJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogICAg
IGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICBXb3JrZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEudHlwZTsgfQogCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50QnlJ
ZGVudGlmaWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CiAg
ICAgdm9pZCBtYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwg
U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpOwogICAgIHZvaWQgc2V0U2Ny
aXB0UmVzb3VyY2UoVVJMJiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQmJik7CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWY8U2hhcmVkQnVmZmVyPiYm
IG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRl
ZFNjcmlwdHMpOwogCiAgICAgdm9pZCBza2lwV2FpdGluZygpOwogICAgIGJvb2wgaXNTa2lwV2Fp
dGluZ0ZsYWdTZXQoKSBjb25zdCB7IHJldHVybiBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0OyB9CkBA
IC0xMjcsNyArMTI4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNr
KCk7CiAKIHByaXZhdGU6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0
aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiYmKTsKKyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiwgY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRl
SW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmlu
ZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYp
OwogCiAgICAgdm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIoYm9vbCBzdWNjZXNzKTsKIApA
QCAtMTQwLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSBtX3JlZ2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9u
PiBtX3JlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7Ci0gICAgU3Ry
aW5nIG1fc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0OwogICAgIENlcnRp
ZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIG1fcmVm
ZXJyZXJQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmM2I3NWE1ZWJhM2ZkNzNmNTI2ODQ0
NjEyMzk3ODVlNTQ0NjkzN2EyLi5kOGQ5NDM0MDg0NWRkODViMzZkYzg5MjlhYjFlNjI3MTg4OTMy
ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEZpbmRDbGll
bnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKICAgICBN
YXRjaEFsbCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xhaW0o
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
IC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCi0gICAg
U2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJp
bmcgbWltZVR5cGUpCisgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCiAgICAgUG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBT
dHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmlu
ZGV4IGFiN2FiYzI1NzY1YWQ0MjhmMmExNTdjNjE3OTRkMjI1ODYxN2JiNDcuLjJlYTI4NDAwOTY0
NDkwZmRiYmU1NzBhMDhiMmZjMGMyOGEzNzIxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTcw
Miw3ICs3MDIsNyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1l
IDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CiAgICAgICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBGaWxlU3lzdGVtOjpTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCi0gICAgICAgICAgICAgICAgZGVsZXRlRGlyZWN0
b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGZpbGVuYW1lKTsKICAgICAgICAgfQogICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0p
OwpAQCAtNzQ5LDE4ICs3NDksMTggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2lu
RnJvbURpcmVjdG9yaWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmb2xkZXJQYXQKIAogICAgICAg
ICAgICAgLy8gSWYgY2FjaGUgc2FsdCBpcyBpbml0aWFsaXplZCBhbmQgdGhlIHBhdGhzIGRvIG5v
dCBtYXRjaCwgc29tZSBjYWNoZSBmaWxlcyBoYXZlIHByb2JhYmx5IGJlIHJlbW92ZWQgb3IgcGFy
dGlhbGx5IGNvcnJ1cHRlZC4KICAgICAgICAgICAgIEFTU0VSVCghbV9zYWx0IHx8IGZvbGRlclBh
dGggPT0gY2FjaGVzUm9vdFBhdGgoKmZvbGRlck9yaWdpbikpOwotICAgICAgICAgICAgZGVsZXRl
RGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKKyAgICAg
ICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRlclBh
dGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsg
fSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBFbmdpbmU6OmRlbGV0ZURpcmVjdG9y
eVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBFbmdpbmU6OmRl
bGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0
aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtw
YXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
Z2xvYmFsU2l6ZUZpbGVMb2NrKTsKLSAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHko
cGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHBhdGgp
OwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxOTQ0YTVjNzkyZDhkNzk5ZTI5
ZGFiYzg0NjY2N2I2Njg2MmJiN2Y5Li40NDA5ZTdiNDk2YWI4Y2Y2NDZjOWEwZmZhZWRmNTczNGMw
ZmYxZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFy
Q2FjaGVzRm9yT3JpZ2luRnJvbURpc2soY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZURpcmVjdG9y
eVJlY3Vyc2l2ZWx5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAK
aW5kZXggNjZmNzZlYjJkNmZjN2Q5OGRjZThhZTA2MmNmYmFmMGZmNTAzNmI3OS4uMDM4MjlkYjIy
YmI4YWI4Zjc1MjBjZDNhM2E4MjY3MjkzZjlkOTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNp
ZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtNDAsNDEgKzQxLDggQEAg
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIERhdGEgRGF0YTo6bWFwVG9GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkgY29uc3QKIHsKLSAgICBjb25zdGV4cHIgYm9vbCBmYWlsSWZGaWxlRXhpc3Rz
ID0gdHJ1ZTsKLSAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNz
UGVybWlzc2lvbjo6VXNlciwgZmFpbElmRmlsZUV4aXN0cyk7Ci0gICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGhhbmRsZSkgfHwgIUZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShoYW5k
bGUsIG1fc2l6ZSkpIHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotICAgIAotICAgIEZpbGVTeXN0ZW06Om1ha2VTYWZl
VG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOwotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQs
IHN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICB2b2lkKiBt
YXAgPSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7Ci0gICAgdWludDhfdCog
bWFwRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOwotICAgIGFwcGx5KFsmbWFwRGF0
YV0oY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBieXRlc1NpemUpIHsKLSAgICAgICAgbWVt
Y3B5KG1hcERhdGEsIGJ5dGVzLCBieXRlc1NpemUpOwotICAgICAgICBtYXBEYXRhICs9IGJ5dGVz
U2l6ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0KLSNpZiBPUyhXSU5ET1dTKQot
ICAgIERXT1JEIG9sZFByb3RlY3Rpb247Ci0gICAgVmlydHVhbFByb3RlY3QobWFwLCBtX3NpemUs
IEZJTEVfTUFQX1JFQUQsICZvbGRQcm90ZWN0aW9uKTsKLSAgICBGbHVzaFZpZXdPZkZpbGUobWFw
LCBtX3NpemUpOwotI2Vsc2UKLSAgICAvLyBEcm9wIHRoZSB3cml0ZSBwZXJtaXNzaW9uLgotICAg
IG1wcm90ZWN0KG1hcCwgbV9zaXplLCBQUk9UX1JFQUQpOwotCi0gICAgLy8gRmx1c2ggKGFzeW5j
aHJvbm91c2x5KSB0byBmaWxlLCB0dXJuaW5nIHRoaXMgaW50byBjbGVhbiBtZW1vcnkuCi0gICAg
bXN5bmMobWFwLCBtX3NpemUsIE1TX0FTWU5DKTsKLSNlbmRpZgotCisgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBhdXRvIG1hcHBlZEZpbGUgPSBGaWxlU3lz
dGVtOjptYXBUb0ZpbGUocGF0aCwgZGF0YSgpLCBzaXplKCksICZoYW5kbGUpOwogICAgIHJldHVy
biBEYXRhOjphZG9wdE1hcChXVEZNb3ZlKG1hcHBlZEZpbGUpLCBoYW5kbGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzNkZTA0MmNkZjQ0YjBmYmE0MjNj
YzlkZDdhZmM1Li43YTk5NjE0ZjIzMzViMTUwYzljYWIyMjJjOTM1ZDBiYmVmNjljODBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTYyLDIzICs2Miw2IEBAIHZvaWQgdHJhdmVyc2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBT
dHJpbmcmLCBECiAgICAgfQogfQogCi12b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNv
bnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhd
KGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAg
U3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChw
YXRoLCBuYW1lKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRGlyZWN0
b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0b3J5RW50
cnlUeXBlOjpEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8vIFRoaXMgZG9lc24n
dCBmb2xsb3cgc3ltbGlua3MuCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQogRmlsZVRpbWVzIGZpbGVUaW1lcyhjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmgKaW5kZXggN2E1ZjhjYzRmZTM4YTk1NjFjZTFjOGI2MWMxMGM3NDc5Y2E4NzQyZi4u
YzBiNGU4MWI0NzM3NWEwN2ZmOTliZWI0MjEwZGEwMTU4MjJjNzM1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBlbnVt
IGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmlsZSB9Owogdm9pZCB0cmF2
ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+Jik7CiAKLXZvaWQgZGVs
ZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQogc3RydWN0IEZp
bGVUaW1lcyB7CiAgICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2FsbFRpbWUgbW9kaWZpY2F0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBlMmM2ZDIwMjVhOTZiMjVl
YzFlNTZjNDhhZjhkNi4uZGI0YzA1NDljNmJiZWI4MDNiNjZmMGUzMTQ1MTliZTU4MjkyNWJhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29y
a0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0NvbmRp
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJl
ci5oPgpAQCAtMTE5Myw3ICsxMTk0LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9u
cygpCiAgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFtZSk7CiAgICAgICAgICAgICBM
T0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgZGVsZXRpbmcgb2xkIGNh
Y2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9uUGF0aC51dGY4KCkuZGF0YSgpKTsKIAot
ICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkob2xkVmVyc2lvblBhdGgpOwor
ICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkob2xkVmVyc2lv
blBhdGgpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDllMzEyOTcxOTZkYTExNTVmMGIyMmMz
MTgwYTAzYzgzMDQ4NmUzNzIuLmY2YzE0YjVjMzdlZTBjMjI4ZmE1ODYyNTI1OWZlODcwNjA4OTg5
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTIyLDcgKzEyMiwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBzdGF0aWMg
dm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7Ci0gICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogMDsKKyAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CisgICAgZW5jb2RlciA8
PCBpc051bGw7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdWludDY0
X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIGVuY29kZXIgPDwgYnVmZmVyU2l6
ZTsKICAgICBpZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NCwxMiArMTQ5
LDI0IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogeworICAgIE9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKKyAgICBkZWNvZGVy
ID4+IGlzTnVsbDsKKyAgICBpZiAoIWlzTnVsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCppc051bGwpIHsKKyAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IDA7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKCFidWZmZXJTaXplKQorICAgIGlmICghYnVmZmVyU2l6ZSkgeworICAgICAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBpZiAoIWRlY29kZXIuYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA1ZThmNzA5MDYxYjQyZDE4YWM5NjkxOGU1OThm
ZDgyMTQwYzQyOGNkLi4xZTAxYTVkNGU3YTdiODMxNGEyMzE0YWE4N2Y0ZGQyZGQzMmViMTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0yODgsNyArMjg4LDcgQEAg
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVcKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpTZXRTY3JpcHRSZXNvdXJjZSB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIHNjcmlw
dC5zY3JpcHQsIHNjcmlwdC5yZXNwb25zZVVSTCwgc2NyaXB0Lm1pbWVUeXBlIH0sIDApOworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgdXJsLCBzY3JpcHQgfSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNGJmOTg0ZGI4YzZiNmFjZDM2MmUyMzc2OTEzMDU3ZGU1YWIzYjFj
Mi4uNjMxNDUwNGY3YTg5OGQ0YzAwMDgxMWJjMDhhOWNlYTAyNjdlN2M2MCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDIxLTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2Vy
dmljZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHBy
b2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzgwOAorICAgICAgICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTM6IFJl
bW92ZWQuCisgICAgICAgIERyb3Agb3V0ZGF0ZWQgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIHJl
Z2lzdHJhdGlvbiBkYXRhYmFzZSBhcyBpdCBpcyBubyBsb25nZXIKKyAgICAgICAgbmVlZGVkIGFu
ZCBpdCBpcyBhIHBhaW4gdG8ga2VlcCB1cCB0byBkYXRlLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UgZm9yIEZpbGVTeXN0ZW06OmRl
bGV0ZU5vbkVtcHR5RGlyZWN0b3J5KCkuIEl0IGlzIG5vdCBhIG5ldyBBUEkgYnV0IGl0CisgICAg
ICAgIGhhZCBubyB0ZXN0cywgaXQgdXNlZCBtb3JlIGluIHRoaXMgcGF0Y2ggYW5kIHdlIG5vdyBo
YXZlIGFuIGltcGxlbWVudGF0aW9uIG9uIGFsbCBzdXBwb3J0ZWQKKyAgICAgICAgcGxhdGZvcm1z
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIC0gVHdlYWsgc2VydmljZSB3
b3JrZXIgdGVzdHMgc28gdGhhdCB0aGV5IGV4cGVjdCBhIHZlcnNpb24gNiBkYXRhYmFzZSBpbnN0
ZWFkIG9mIHZlcnNpb24gNSwKKyAgICAgICAgICBzaW5jZSBJIHVwZGF0ZWQgdGhlIGRhdGFiYXNl
IHNjaGVtZSBhbmQgYnVtcGVkIHRoZSB2ZXJzaW9uLgorICAgICAgICAtIFVwZGF0ZSB0ZXN0IHRo
YXQgd2FzIHJlbHlpbmcgb24gYSBwcmUtYmFrZWQgc2VydmljZSB3b3JrZXIgZGF0YWJhc2UgZmls
ZSAod2l0aCBvbGQgc2NoZW1hKSBhbmQKKyAgICAgICAgICBoYXZlIGl0IGR5bmFtaWNhbGx5IGdl
bmVyYXRlIHRoZSBkYXRhYmFzZSBpbnN0ZWFkIGJ5IGxvYWRpbmcgYSBwYWdlIHRoYXQgcmVnaXN0
ZXJzIGEgc2VydmljZQorICAgICAgICAgIHdvcmtlci4KKwogMjAyMS0wMy0yOSAgQ2FtZXJvbiBN
Y0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGNhbGxpbmcgYHhj
b2RlYnVpbGQgLXNob3dzZGtzYCB3aGVyZSBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYzNhYmU5OTM1NzA1NjkzODI4ODQyNjU3MDllYThmNWRjNTZlZmJmZi4uZmJhMDMyYzg1
ODNiOWYxODc4ODE4YmE2NDk2OTM0NmM0ZTA0YjczMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTI2OSw3ICsyNjksNiBAQAogCQk0NkE0NEE1NDI1QTc4MzAzMDBGNjFFMTYgLyogd2ViYXVk
aW8tY3JlYXRlTWVkaWFFbGVtZW50U291cmNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDRBNTMyNUE3ODJERDAwRjYxRTE2IC8q
IHdlYmF1ZGlvLWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1sICovOyB9OwogCQk0NkE0NkEx
QTI1NzU2NDU2MDBBMUIxMTggLyogU2Vzc2lvblN0b3JhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE0NkExOTI1NzU2NDU2MDBBMUIxMTggLyog
U2Vzc2lvblN0b3JhZ2UubW0gKi87IH07CiAJCTQ2QTkxMTU5MjEwOEU2NzgwMDc4RDQwRCAvKiBD
dXN0b21Vc2VyQWdlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkE5MTE1ODIxMDhFNjZCMDA3OEQ0MEQgLyogQ3VzdG9tVXNlckFnZW50Lm1tICov
OyB9OwotCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTZBNzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi87IH07CiAJCTQ2QkJFQTFCMjVGOTgz
NTcwMEQ0OTg3QSAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5j
cHAgKi87IH07CiAJCTQ2QzFFQTk4MjU3NTg4MjAwMDVFNDA5RSAvKiBhbGVydC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzFFQTk3
MjU3NTg4MDUwMDVFNDA5RSAvKiBhbGVydC5odG1sICovOyB9OwogCQk0NkMzQUVCMzIzRDBFNTI5
MDAxQjA2ODAgLyogYmVmb3JldW5sb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDM0FFQjIyM0QwRTUwRjAwMUIwNjgwIC8qIGJl
Zm9yZXVubG9hZC5odG1sICovOyB9OwpAQCAtMTY2Miw3ICsxNjYxLDYgQEAKIAkJCQlCQzkwOTc4
NDEyNTU3MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTIuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAotCQkJCTQ2QUU1QTM3MjBGOTA2NkQwMEUwODczRSAvKiBTaW1w
bGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12
aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzAxQTIzRjIx
MjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5RkM5RTQwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmIGlu
IENvcHkgUmVzb3VyY2VzICovLApAQCAtMjA0Nyw3ICsyMDQ1LDYgQEAKIAkJNDYzRjQ3MjIyNTVC
NDlCNjAwRDlFMENDIC8qIFZpc2liaWxpdHlTdGF0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFZpc2liaWxpdHlTdGF0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY0N0IxMjUxRUJBM0I3MzAwNDFEN0VGIC8qIFByb2Nlc3NEaWRUZXJtaW5h
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvY2Vzc0RpZFRl
cm1pbmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NEM3NjRDMjMwREY4
MzIwMEFGQjAyMCAvKiBCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRo
ID0gIkJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQ2NTZBNzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIlNpbXBsZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2NUUyODA2MjU1QjJBNjkwMDYzQTc4NyAvKiBHUFVQcm9jZXNzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUHJvY2Vzcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY2QzM4NDIyMTA2MzdDRTAwNkE4OERFIC8qIG5vdGlmeS1yZXNvdXJj
ZUxvYWRPYnNlcnZlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm5vdGlmeS1y
ZXNvdXJjZUxvYWRPYnNlcnZlci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY3QzU2NTEyMUI1RUNERjAwNTc1MTZEIC8qIEdldFNlc3Npb25Db29raWUuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdldFNlc3Npb25Db29raWUuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQwNDgsNyArNDA0NSw2IEBACiAJCQkJRjRFM0Q4MDcyMEY3MDhF
NDAwN0I1OEM1IC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLWFydGljbGUuaHRtbCAqLywK
IAkJCQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3Rv
bmUuaHRtbCAqLywKIAkJCQlDOUI0QUQyOTFFQ0E2RUE1MDBGNUZFQTAgLyogc2lsZW5jZS1sb25n
Lm00YSAqLywKLQkJCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovLAogCQkJCUY0RjQwNUJCMUQ0QzBDRjgwMDdB
OTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJ
CUY0Q0ZDREQ4MjQ5RkM5RDkwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmICovLAogCQkJCTkzNjAy
NzA1MjVBM0IyOEUwMDM2NzY3MCAvKiBzcGVlY2hyZWNvZ25pdGlvbi1iYXNpYy5odG1sICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA3NmNh
ZjJhZDQzNzI2NjNkMmJlMzExYmNmYjYzYTA0ZDBjMGQwMWY2Li44ZjY1MWQzZWFlMzQzMjk3NTFh
YzM2MWRkN2UwNjRjYjYzN2UzNzUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcApAQCAtMTUxLDQgKzE1MSwyOSBAQCBURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIG9wZW5FeGlzdGluZ0ZpbGVBbmRGYWlsSWZGaWxlRXhpc3RzKQogICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpOwogfQogCitURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KQoreworICAgIGF1dG8gY3JlYXRlVGVz
dFRpbGUgPSBbXShjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgYXV0byBmaWxlSGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpX
cml0ZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmls
ZUhhbmRsZSkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBG
aWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIH07CisKKyAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgdGVtcG9yYXJ5RmlsZTsKKyAgICBhdXRvIHRlbXBvcmFy
eVRlc3RGb2xkZXIgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnlUZXN0IiwgdGVtcG9yYXJ5RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKHRlbXBvcmFyeUZpbGUpOworCisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMo
dGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiB9KSkpOworICAgIGNyZWF0ZVRlc3RU
aWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9s
ZGVyLCAiZmlsZTEudHh0IikpOworICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wb3JhcnlUZXN0Rm9sZGVyLCAiZmlsZTIudHh0IikpOwor
ICAgIGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMo
dGVtcG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGUzLnR4dCIgfSkpOworICAg
IGNyZWF0ZVRlc3RUaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModGVt
cG9yYXJ5VGVzdEZvbGRlciwgeyAic3ViZm9sZGVyIiwgImZpbGU0LnR4dCIgfSkpOworICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0
Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3Jh
cnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQppbmRleCA3ZjRhYzk2ZmE3YzczYTg0MjJhNGM0ZThmZjdlNjEwNWU5ZTg4
MGRmLi4yMzc4OGVhZTE0MzY3YWUyZjFhNDE2NGViNGM5ZmJhMTQzMDk0NDcxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNp
Yy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgVEVTVChTZXJ2aWNlV29ya2Vycywg
U3VzcGVuZE5ldHdvcmtQcm9jZXNzKQogICAgIGF1dG8gcGF0aCA9IHN0b3JlLl9jb25maWd1cmF0
aW9uLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LnBhdGg7CiAKICAgICBOU1VS
TCogZGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXRoIGlzRGlyZWN0b3J5OllF
U107Ci0gICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXTsKKyAgICBO
U1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdOwogCiAgICAgRVhQRUNUX1RS
VUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3REJQ
YXRoLnBhdGhdKTsKIApAQCAtMTk4Myw3ICsxOTgzLDcgQEAgVEVTVChXZWJLaXQsIFNlcnZpY2VX
b3JrZXJEYXRhYmFzZVdpdGhSZWNvcmRzVGFibGVCdXRVbmV4cGVjdGVkU2NoZW1hKQogICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6c3dQYXRoLnBhdGhdKTsKIAogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZ
RVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVy
cm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0
VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwogCiAgICAgYXV0
byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0g
c3dQYXRoOwpAQCAtMjM1NSw2ICsyMzU1LDc3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIENsZWFy
RE9NQ2FjaGVBbHNvSW5jbHVkZXNTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykKICAgICByZWFk
eVRvQ29udGludWUgPSBmYWxzZTsKIH0KIAorVEVTVChTZXJ2aWNlV29ya2VycywgQ3VzdG9tRGF0
YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCit7CisgICAgTlNVUkwgKnN3UGF0
aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3JrZXJzLyIgc3RyaW5nQnlFeHBh
bmRpbmdUaWxkZUluUGF0aF1dOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
cmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhd
KTsKKworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpu
aWwgZXJyb3I6bmlsXTsKKworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFk
b3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCld
OworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3
Il07CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRl
eHQvaHRtbCIsIG1haW5CeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Iiwgc2NyaXB0Qnl0ZXMgfSwKKyAgICB9KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICB1bnNpZ25lZCB0aW1lb3V0ID0gMDsK
KyAgICB3aGlsZSAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0
UGF0aDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdLnBhdGhdICYmICsrdGltZW91dCA8IDIwKQorICAgICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIEVYUEVDVF9UUlVFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbc3dQYXRoIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3Fs
aXRlMyJdLnBhdGhdKTsKKworICAgIC8vIEZldGNoIFNXIHJlY29yZHMKKyAgICBhdXRvIHdlYnNp
dGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6QFtXS1dl
YnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXV0pOworICAgIHN0YXRpYyBi
b29sIHJlYWR5VG9Db250aW51ZTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdL
V2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgx
VSwgZGF0YVJlY29yZHMuY291bnQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsK
KyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAgIC8vIEZldGNoIHJlY29yZHMgYWdh
aW4sIHRoaXMgdGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3
aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFS
ZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBF
WFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVl
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBkYXRhU3RvcmUgPSBuaWw7CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworICAgIHJlYWR5VG9Db250aW51ZSA9IGZh
bHNlOworCisgICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRzLCByZWxlYXNpbmcgb3VyIHJlZmVy
ZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCisg
ICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3Jl
ID0gbmlsOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsK
KyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAgIC8vIFRoZSByZWNvcmRzIHNob3Vs
ZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSBiZWVuIG1h
ZGUuCisgICAgLy8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMgdG8gdmVyaWZ5IHRoZXkgYXJlIGdv
bmUuCisgICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFU
eXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29y
ZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBkYXRhUmVjb3Jkcy5j
b3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOworfQorCiBURVNUKFNlcnZp
Y2VXb3JrZXJzLCBXZWJQcm9jZXNzQ2FjaGUpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBf
YWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMtNC5zcWxpdGUzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDBhMDVkYzQ2ZTNhMmNjZWIzNGVmOWE3NjhjZDA5ZWIzZDhhZjI0
MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjA0ODAKemNtZUhPY359IXkqVXZf
UDVNJmpRTWFQOXJBaH1fOExxZHB2dldTMnZCNkxVd0dNYkg8Ml5jTF5xb1AqcGc4UFB1CnpYc3Vo
LXk2Kn1xUiZDdl9iPVNKclQxQmdNc28kTjFBWHI9NEBBO25oZDtpR2JXYlNoQUo/SC1KejMwdzNY
VXNAWAp6I3dpUmIpRFM5XkxjJG8xMz5KJEtpeSNhSmc5VUZaYyQrVUtPbU5IQF9Ad2kjVGBZem05
STx6SiR6YSg+RnpoMjcKemo8KGpvUWcxPVBmYEExOTNqITdkRUNeVC11cG5TVHo9RDdVZiZWSDVD
Tzkjei1NemUrbGwyckBwdWA0WEc3VFhvCno4eV9zbTBJNGByaWUhcjhsQkd5dkFyZGVnKDw3UEVM
NzdOdThvYVpUbGFhSmtNM1I9O0NwayV5aVMhWENCX21tPgp6TiRGWUE3VWN0XntnY0hLWCl2TjhA
RkhCQE4pTiNaRGJyfU50TzNjYjU+Z3MlK0NTQDNpSVA7N1IqcTdiTTFqZU0KelhXfVhoaUJIUi0y
bHRtbDJ9WDNyNzZXbHFnMzEoRnRLeUl7MEBxVWlMfnMqanN+d2hWaH5YSEtzbkBwN1RjJU17Cnpu
M35HS1dJNig7XiErdFRUJjczamxHRWI7WmghPDxoIUYldkc/TUBRKVkyMH00eyFpUllJS0FRT0Ze
fSpHTFReZQp6ZyV7Izcyei0qZFB9MiYxVTxpeHJGN3skRmFKM3Y4S143fmFSaUJVUUQyKnxuLT8k
OShNVTRxSSspcDwycDBiQkcKeig+OXBffDUre3owdX1AOzJ2YHVYQVllaGpmYEEycWV+R3tlVSMx
Zm8pZ2o4LURgVTJjUn5MS2x2RXZkSTZzMEJlCnpSZFRoVTImV1hmMHMqZWMmbz5yITdZYlZ4Mygz
K0QzTGAxdUtkQWtuTG08OXoqdzZMSzVUN0tLUnpwemEtfWdZNAp6M1drdityWXNib2E9RWt3eldP
SFBCenl6TGh5Wl9GTztWXio9XnU7fj5lTW17KlFmKDluaiNQeCNYfUhkUWMjTkcKelJGO347bD54
OF9MMWdwYEp9SDI5aGRSSyZNQzJiUnBjRjlLKVpTUWNZRVAzQjdeTmZCcmRHNTdWeD0tKmhfTkhP
CnoqMXJoX3xLTmBsOGVlN3czUTdlZns3NXhQPjZNczNNdkA8YE1ZVVF1QFErc0VEenBkLVE5PkMw
aVVQdHlncHtITAp6OEtUcV9YI35UeE1JWV5gMiFlK1pkU1FWXnI+NjlZQENQSHZSO2c4Yjc9KXZn
KmcjWns1dkB7X1lFNVktcEBEIW0KemNITX0/KDcrelhSOVBUPXo7cWVCZDREbV9nJX5BTXtPdjNn
N14mNSQ8PUpyNjF+ZzdGajFiQmNydTg1b3V3b3J0Cnp0UkdJY3NUR050PVVYVD11TWJuPkttPTht
cUl3YzgxNSU/YiFBUFVUa2c3bU9BPCh7K3AoS1dBM0szRSNsVlBOaAp6M2B6bVpOXnp3VVFKXkls
UWkzWFZuNlZqTmh5PDchQXt+NDZMVWhwZkRhNiY3K3wwZ2R4dFlsdDVrZkV9PzJ9JjcKel53cWN8
amhPdUhAWlBnfiZqM043XnljbW42ezwlSEZob2FVYXp2dzY+ZncqZkJyTUdjUWtHKGY4aVNSVDF8
akx1CnokZG5wMk0oNEI7MDZHWmBjKWJZO3hVQ3VtR2AyKzVhKWlWUCpvSzd1MkFGfT1QNCFCUVk3
IzxYPzZPeD1VU1EtQQp6KDZ+QmlJaHZaYXZVZF5GJXJfcnc8OS0pRmFhJSRhK3tEa3d6Wm99cjlu
eElzc31YODVVZ25Dakttb0xLO28+ckQKejRKNHBCKTg7eVo2cXJgaGRyZXs5YkFSNE5PXm5TVmx0
RHF0MCUwKi1BYzM5QDV8XjJrZTchalZwTEZQKHpMK052Cno8QzdzV0FWK342cDk9LW9ESmQzezEw
NEJ3czlMN2I1TSZ5aFhDeypZb2NQdnFqNiFpRzNBaUUje1JpNmU5aWlWeAp6cmErLXlnXkVzN2lw
aU53Q2d7VEZtMCQjM3NFPiFueUB5KlUybjhUMkcqcnxyeWp4ZnxLXlcqMyhKZUZ3YDArVjcKekgy
ZypGZmo4ZT5eND1TZU51WCp7aXhRWXgyS2gzOWYlJC1NWWV0bFcqLUlQKV44JFJIO1Z+SWkySWde
P3Rtb1BXCnphaFg8RClffT1gd0w0KFo3NjZDRjtuQWFuVlI9aHItWmFzY1VrZF5qMVN8K3g1VT9P
JUxCTjg1MXB4fko3NmRFXgp6U1AteHZATCFFVUIlOEdUVXBTbExuNUBRRFI9YVVyKC1yUyNlOWZ9
Zl4qbndObE5WR3daeSF3YkBOaDhzQ1BkTDcKekRtKitRRGhINkQ3JGdCKHUyb1BRSHB8bkIhRXlj
R0A0M2dUcW59Tm1gYzIkKlp7YVk8JTR6dyRrTjN1TVdGXkh8Cnp6cDlNTjNFNmVuWFNUJVFgIVMz
XmFqMEBLN2xsVEUkY1N6PFErdXYkKllkPmo3eHFsMW9mVSZeZlptbz18MkRadgp6MTtAT1hQSjRM
QmtBM09ZaUZ4KVI4eH5KaTRRZmNkX3BWfip4MW1ZTC1FUiUtZTgxUDZtcStqQmhvNXVpaFB+M2MK
ekJ0MWc8dytXUXBScmhzVEokQnhTIzdVPFdaTz9EfCMmd3ozI2FsTis1QUpYbyl1dFY+Q3dad3k8
bnNrVEVaRUJrCnpAOX1jJT5fSV9zc3A5X3BqYjFPSngxTCVRUUBkTURJcl5uZjRRVl4qbDtgSG9u
fTJoZzg4QFRJRmU+Zl5PRTklbAp6PX1xOWM8bS19N05yVEpzMlIjVG9hQkJSdXkqaiYqUXp5RmpY
TGIwNmRSNl42PDt5bzwoTl88YS18Y2c3ITYjbiMKeitUSE5qe2QjXn4oNmtAPGhwdlYlP3BkNGhg
MVI0RSlpPiloWWAofmQrQGJsUnlyTG1DWHpjaWtuVWtpNVN1SzNWCnp6cCRjeHA5NWxHVUA3QEZU
S1pjUjlEYDBEUi1WWWYkXmkpOTElQWgzYFg8SG5ufkpKMXpBWl5BR2ljdS0wbGlCNgp6Q1c8cyUm
VVhfRExJdSZgS3AreEBNVFNLUEw7eG5DNTZaeWVeWC1sTz4oakohQWI9RFpuN0BOSWVBXl4+R09p
dkQKejlwPCQyM0EofHVGPzR1OE9yTD58Rz9xQj8/TTx4MkkhWW4hbXFrOy1HTVh2X0ZIKW4+e2Nv
Z207a1FYM1EwViFGCnp1P0tsRmg4RUk8dTYmMCRCYE8+S3JfeGw3VEJfMWdgVjN2Y0ZpYnwjdzl2
VTBoZThMUTFqPEdjKDhXZlBqbTRRNQp6OVMxPmAxNXFVfGhvQUomI3FOQSgzSC1iVmVvdiM2aiky
aClreyVMVztsKzB8KUFmZj1JZ0xDODlmN05LRHIyUUwKei0hM0J+SVo7RFdZOHByVDc3LWlURlBF
Vyo7O1MrVjlYJCQzPF5icHgjfGV7e3VMSXdANWYrZ3Z1O0hgOUxzPXt2CnoyQXpydVczaXlhdW92
SWFEMmcxREwmN1cpTEo5Jm8zPVN2RCRDdHNlRiopcW1PYiFwR0k3fndua0ltLVRlb34mdQp6RVBv
bHRWRkQlT1pVIV9GQl42PzI1JlRNd1FtOUNmJlViRkFpcFB0ZnFkcH0qXmRue0FBMVJBfk9VVEA8
c2NsQjAKelNPZzR3SGxOP0BuPFRqQT80RUU4KjVTWmw0UzwyYFFOP0M0UyUyUSpBOGNOcjcxPUBj
IU9yNHZVMDdLZXFQRDw9CnomaFQ5TGtRWXZTSWd1b19Pdzxteik1VWYhai17b2cweShVclNxbyR1
bH1IRmU9cWszMFVzRFN4VT9gR143YnlAaQp6TiRRfGBSRThtQEhIYipXcHVNfDJec2hvPzAqcUc8
JSFZeitRTWQ/fTArMGlTd1VvI09JTU15dnhiUCUhYE4wMWUKenJOJldfOCpycnl0ekdPaFAmTHdy
V2BWPFI/VjU/N2ZLIVJPZj8hJkRmeWY9U0hPYmg5N1FacF8yWmVgaipHfG09CnpWSCZsVzB8Uz14
U2hRTig2d35XTFh4VlFzI14/VFd6U0w8KChlQD5xMThhJU1WZENwSWtGRCRXREE7fWE8I0ZrUQp6
QTU3JSt0fmQwMkV0dEdBPEApMV9gIVJGdnIqKzs/dT1IcmZvSkJRYEs0LUk1Pj4oNnk/K3AwOHI9
VmxgWWhWQSEKejR5MSY/clgod0dLd156Zz90T09UPlJzSFJIZn5HeXJBJWRzPUgzKEJ7Wi1tTktn
anZubEYmKWYhR1ZpTWNYe3tSCnpDdWgtX0ZfU2ooM3gwP1Z3JShUVGdZJmRyUT90aEBzJExHLXBT
R3N2JEB4eG14IXpHZSp9WiFOKW41eFojY3QxNwp6QH4rbDRzMEB3UklsNGh8e3FlUSNRQHpYNzhJ
UGxAJiNuelc9Q0ZSWVhXY3Zab20qQyohaz9UQDl5JjQ4cyQ+JEcKeih5JDBqelJjZnBxKStHaXM0
fk9MQyExIztXM2liRz01aG8zVFZQLXgxfDEtWEtBa3hwei1gUCZrMDs8bTZTVSNMCnooYCN4SzRe
T3h9SWRudEhWSkIlcHpOY18qWUlpVi11NkUqM2ZHflY4NWU5ek9YNDdLZXlgTGgzVH5pSU5HMXhY
bQp6WjRLX2BhdjBucDhvd0UmN28/JUJpUk9jMSgxdkYyeit9R1RhTSYhWER3Q3xmOUN7QCtaU0FI
TTMrUU9fNGplVTUKemc3QikpRG9fcj9vUmsmQGlEaVRgdGk9dXhrX3QzNU0xaDd0SWlOLWxEVCkr
OG5tQE0rfDBrYElYfEBQUTNNMyRrCnpZZj4oNmx+NX5vMXAjS15TV0d1PmI0MjtXLTYpancmajI9
RFpxWm1pLTI3bmRJQ0NReVcrKCtaKDhaaHcleU4mJAp6MGNtOFV3dU5YUXJIUDdGRTtiSnZyRlQ1
cGY+M0RRQCRgbkxfan1XSkh8PShiNyRRTGRLMFBLRThoSTk9d15rWH4KenEoUlQ/U3NXSU9leUhH
JEdtOTd7ajZOJX05X243ck04S0JuJEBzSHxHTilpTXdmQWsoXzZjakF6Un5gbk5gU0dFCno7KWxX
eFpaSl43VytWVjl0MFV2PzwoOylaZFJGb0g3aGZNKlFAeUhlIXB3PXU+NUNAQkoxd3s3VVNndCZF
WDF3WQp6JnR3MGlqJmxkKGJiQjwjKlghNiRCS19gfEZ3TF5DdGxJUkdUZWBucz1vcD0oUXRRRTRU
P1dxV3ktZkp6Z3t1NXwKelhGdTd4e3J5R3tKdj1UfmViV0prcEo9fUFfWmoqMjByNCFQJl5mdyNT
Pil2bD97MyZrey1OViUpMUc+d2NNUFg4CnpLYmR1U15NU0gxOEpBY3tRT3VKb3ZsMFZzLUZoeWNm
VW5yYmM0d2FLZEJiaTB0OHBIM14tJW56NElGT3pAKHNgNQp6R1dDbEdzPHVhc245aT5tZEVDcVkq
byg/WmFTUUdMSTZLQWFjSD9rdW59JjxIX1AmPyZTdShPTj1SeDRsNlo2KHkKemlPfmY5ek09Y28p
V2BGX0ZScXB5djRlbS01PU0xIWxJbT53dWJ6S1BSYWw/dCp6P3ptQDdEVip7Yn14LWk2ZD5aCnpr
MktlSj1DP09TIT4qXmpaPTctMXVYYTNzQWZaczw9cjtLQkpJe0dybWlKcUFFQWElYHUtTWhsJDdY
diZacj9HUwp6NW5zJWptNn4qV3xJR3Q9KzYjTn4qNyRPPmNWNCspTX0ze1NBaFAyMUNqTyZTY0t6
MXR1MD0yaipOcz1GU04xNHoKelNhSWNEKkckJjlGNztgPE44YUhpaXNqZSFNZUZCMGl1JEdeODVA
TXpoQVM0PEJBMHhKVVlzcEYpdHpaRzM5VSg3Cno7bz8qaDZURGUlbkRHPVpeSUpjN1VELV9jMXJK
PExDZF87RFoxMlhxe25xfEdlQ31OSWxgfCZveElPPXdXYjtLdgp6bDxsRCYlOU1mLW5mM2ZIVF58
T2EzKztwdlpNJnJnaWd4Rns/bFI9eygpXzJ0N0NjPEo8TVcjS0d3bEN4VkF0KTUKenp4XzVMOGpL
PWxBPlhZWXY0VWdaWXlrJCZNeVRaJEdAaEhCOCtVNmk9UlIjdj9HSzlFS0Q2ITk0YDJoem1aI0xl
CnpLUjFJd0Fsdyk1LTBXb0RNSVJvUyh0KmVUamZRR0dHZXV6ezBBckctTGxUfnUoYW9+fDUydHUq
QytGN2QhaD5ENwp6XihzI09nfnZRT2NULXM+S2c/fT9UPG9JbkUtemhMVmpXV3B2TD8zTWt2Nitj
Jmc+M1oxMi1SSmJeWkZ9ezlvKjEKekZWdm12TERhaWVLQXk0Qj44dGdwPiRnan5VJG5EM2NXJXp9
KnN0cS05O0diSyYpIXp2VSRObCU9UmNsNFYlMV5RCnp5clkrRUhYNm88OUEzOSNAc1cwaGxAbEVE
O3M8cSZuKktLOGlKZ3NxWHdMSXBRen5vcnFAVlBeZDhKMk8qbUEzWQp6eD9LVXM3cEBLSlkoTGBn
czVeUForeG9gWHlkSnlGJjI4Q3wmZHc+ZkZJM3A5KXp2S0NkQlN+RGB9aGNLYmNTIVkKelF7S0ZW
R091PE9sITZ5XkBaZjtOVzhIRzl4ODR8Zjs3UyM7eTxfeihLYUZlT2peWlBhUkV3U18zTER0WnN9
JlUpCnohbnw5SkNucXhyRG0qRTBaYz4zWmZEMUp0e2txeFdLd180K2J8OGhEbGA+VDIwbEBEY3Ng
N3BgO3xgcDc1Qz53Ygp6VnliJFVjUUA7RUxpeGRnV0x9MFg2dUVSRHkjJFNsVG5UIzdvZ3RoXjVE
cjRRQFUwa097SHReNntvQkZFWX0qIVoKejdhTD0wYXJWbzczQ3kkZXtYQWAwazdlP3ArN0VXMShk
X2oyZTltT3s5bzRubUgkSTk3ZVcjQipwRHo0amMpVk5YCnpUR3tpe1lVVEleUSZ4e0g5eld6IWM8
UDMyYGlqOGdBIUNPOUl0e3NAdWxhK1c7UFQqa2BMfjBNJWJzIU80bkgkXgp6UF9JQUVoPHROQnFR
QGA0digpZio+WDctTylEdDVySj5PMF5tYkNoKnxDOXk5bzAhJC0jQ0FXUGkoSXpQVGIrPEoKeklg
M2xRcnxnU3dyekJPKV9sdHt0YylyNF5NJFhJNXRiNldyb3xRTHo/SnNwPjdDSUJKMkZ8K2haWGNN
eTFeZXRxCnpyQHFVIVRHSGp3Z3hhOWpEfE1eWmhQWFgwKUJBNkZjeU5pR15ARyhEJk09b0YwYjwm
eEY8MjZDZGhEJiR6eF9PXwp6TjlvcXNmLXpRTkRmNipBSHxGYTh1dGh+QFB5c1JWQztXe3dCUmpV
ZV9JZGxHbn1OYU1EQnNIWFEzRml3d2IlZW4KekNRTzNHMkMmIXclfWolcUQlV0JJU1pufWA0YmJH
bHdiJWRfOHtsN2hAKz54aCNSam4wMFJRSlV6YHVPfD1OUTtXCnpxMnVCWjM9eXB9Sk4/KEBgVkYm
LVR7UFdKfDgjdkgtX3F1JGxhJj9ZS2t2SyVrcz1Ye1dFbjUkQERHRXpydEUpTQp6biUwIW87cDRa
LUpGbX5+eCpaWXt5N0pvWHZBdkk7QEotclUrX209SD9DXyMkcDcofSlkfVp2JHheMGBMcFBYT3cK
em0zVk9YR25aJGQ/fEYlZXVJWU9gI248cW4/fWBsUD13Qkw9UksrdHRsV2txSUdRWU5Ge0w4ZTBe
dH4/K3tkXzY5Cno7dWlPfCV9am4+Zkg+Pip2N0VfbUtQJGMkdWBoK04/WHxhaWJwSWl4QkNqdkxJ
bnFWQ0BYTkktaEhET0krZko4PAp6PkFkLTNhaT4lYW9qNnc5ZjJCVG1eM2BeSXYoRXxjNEU0P2t7
JXJtVVBwKF55Zjs8X3thbWlnKWQ/eDQ5dFY/PEYKejgmTU8lSytiS2EmNEZXX3BYaj95cyVBTlQ+
Ui01Uih6WCMjenZab3BVYy18ZysqZGVzJmlEaCVlQWBiUD5lPTU4CnphWHYySXJNNjN0LXJsZCM8
dTN6aCVlUTZkcG0xbiVWcHN0LWJZZTdmX2tZeDBaeXFsQUNfJUcwR0YrOExnV2xWZAp6Sk1aI14j
WT1sbUQmKlFeY2Y4YXc7YnFzTiklIWRgT0pXX2Y0fTlKKkB9ZChxRSNnKD44fGp3SGleLXlYK2he
WEIKejFXKV5CI0NNbCZXJDI1fi18amVAYEQ1MF5nPGEmb2VPYEZ7PmYpI3F0SEwrcGkjcGQ9al80
R21tRTZpbzVUV2ZKCno0Pn5rS208b1FZNjFqRCp6azNzTjNwPSpZKTJwaTIlV3cwaGheQm1FR2RZ
Q00lXmszPD9zd2smUSpIQj9JYDkyNwp6UVdtYEB6R24xS2VuR3N0ZEFSLWtzVzxtS1deYj1BYWh7
cD1HIWcke2NVUlVCaHhvSUk9K2QqRFRFQyQpS0I/VEAKeiYpcnRJYEI7MDI7OzZPJWZ6IUQhOSgz
SEhhOS1TVkB4SUQ4VnsjWUNQVytzKCtTazlSRHlvNUREOWdPPyl5dys9CkxtKnU3Uklgc1Y/LWJ5
Kl8KCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IGY2MTZhNzRi
NDE3ZjYxZTlhYTNkZDI1YzhiZTg2YzllMmEyZmQyOGEuLjYwYjcyMmMzYzk0OWM3Yjg1ZTY0ZDJm
M2RhNmJmMzU3YmM4MGJhZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tCkBAIC0yOTAsNjAgKzI5MCw2IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHNXaXRoUHJld2FybWluZykKICAgICBydW5XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmc6Olllcyk7CiB9CiAKLVRFU1QoV2ViS2l0
LCBDdXN0b21EYXRhU3RvcmVQYXRoc1ZlcnN1c0NvbXBsZXRpb25IYW5kbGVycykKLXsKLSAgICAv
LyBDb3B5IHRoZSBiYWtlZCBkYXRhYmFzZSBmaWxlcyB0byB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5
Ci0gICAgTlNVUkwgKnVybDEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAiU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNCIgd2l0aEV4dGVuc2lvbjpAInNx
bGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Ci0KLSAgICBO
U1VSTCAqc3dQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVz
L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJLaXQvU2VydmljZVdvcmtlcnMvIiBz
dHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXV07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6c3dQYXRoIGVycm9yOm5pbF07Ci0gICAgRVhQRUNU
X0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpz
d1BhdGgucGF0aF0pOwotCi0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVh
dGVEaXJlY3RvcnlBdFVSTDpzd1BhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBh
dHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl0gZXJyb3I6
bmlsXTsKLQotICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKLSAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAgIC8vIEZldGNoIFNXIHJlY29yZHMK
LSAgICBhdXRvIHdlYnNpdGVEYXRhVHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRX
aXRoQXJyYXk6QFtXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXV0p
OwotICAgIHN0YXRpYyBib29sIHJlYWR5VG9Db250aW51ZTsKLSAgICBbZGF0YVN0b3JlIGZldGNo
RGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAg
ICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29u
dGludWUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVh
ZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIEZl
dGNoIHJlY29yZHMgYWdhaW4sIHRoaXMgdGltZSByZWxlYXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0
aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuCi0gICAgW2RhdGFT
dG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jk
cykgewotICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAg
cmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBkYXRhU3RvcmUgPSBuaWw7Ci0g
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwotICAgIHJlYWR5
VG9Db250aW51ZSA9IGZhbHNlOwotCi0gICAgLy8gRGVsZXRlIGFsbCBTVyByZWNvcmRzLCByZWxl
YXNpbmcgb3VyIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBzdG9yZSB3aGlsZSB0aGUgcmVxdWVzdCBp
cyBpbiBmbGlnaHQuCi0gICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwotICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6d2Vic2l0ZURh
dGFUeXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07
Ci0gICAgZGF0YVN0b3JlID0gbmlsOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVh
ZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIFRo
ZSByZWNvcmRzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCwgYW5kIHRoZSBjYWxsYmFjayBzaG91
bGQgaGF2ZSBiZWVuIG1hZGUuCi0gICAgLy8gTm93IHJlZmV0Y2ggdGhlIHJlY29yZHMgdG8gdmVy
aWZ5IHRoZXkgYXJlIGdvbmUuCi0gICAgZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDBV
LCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0g
ICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwot
fQotCiBURVNUKFdlYktpdCwgQ3VzdG9tRGF0YVN0b3JlRGVzdHJveVdoaWxlRmV0Y2hpbmdOZXR3
b3JrUHJvY2Vzc0RhdGEpCiB7CiAgICAgTlNVUkwgKmNvb2tpZVN0b3JhZ2VGaWxlID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVz
dFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9Db29raWVTdG9yYWdlL0Nvb2tpZS5GaWxlIiBz
dHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpOT107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424693</attachid>
            <date>2021-03-30 14:09:08 -0700</date>
            <delta_ts>2021-03-30 15:50:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210330140908.patch</filename>
            <type>text/plain</type>
            <size>116957</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzOGUyZGNmODQ0MmJiNTQzNTYyY2E2
ODRlZTEwZGU3NDNkYjA5NDUuLmUwOWUwYzhlNjcxMzJjYTRlMjhlZmU5ODg0NmU4YzkwZmY3ZDYx
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpyZWFkT3JNYWtlU2FsdCk6CisgICAgICAg
IE1vdmUgcmVhZE9yTWFrZVNhbHQoKSBmcm9tIE5ldHdvcmtDYWNoZURhdGEgdG8gRmlsZVN5c3Rl
bSBzbyB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldworICAgICAgICBTV1NjcmlwdFN0
b3JhZ2UuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpNYXBwZWRGaWxlRGF0YSk6CisgICAgICAgIFVwZGF0ZSBNYXBw
ZWRGaWxlRGF0YSdzIG9wZXJhdG9yIGJvb2woKSB0byByZXR1cm4gdHJ1ZSBpZiBtYXBwaW5nIHN1
Y2NlZWRlZCBidXQgdGhlIGZpbGUgc2l6ZQorICAgICAgICB3YXMgMC4gSXQgaXMgdXNlZnVsIHRv
IGRpc3Rpbmd1aXNoIGFuIGVycm9yIGZyb20gdGhlIGZpbGUgYmVpbmcgZW1wdHkgKHdoaWNoIGlz
IGEgdmFsaWQgY2FzZSkuCisKIDIwMjEtMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgdGVybWluYXRlX3dpdGhfcmVhc29uIGlu
c3RlYWQgb2YgeHBjX2Nvbm5lY3Rpb25fa2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2NDAwNWYxNjlkNzhj
MDhlMWRjMmE4YjlmODE1NjE1ZThjMjczYjkuLjFmZDZkODQ1MTkwZTU2ZWVjZDNlYTBlYWRjZGQ1
MjE2NmU1NjJhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYgQEAKKzIwMjEtMDMtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBz
Y3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAg
IDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdvcmsgcHJvY2VzcyB3b3VsZCBzdG9yZSBz
ZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRlIGRhdGFiYXNlLgorICAgICAgICBXaGVu
IHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMsIHdlIHdvdWxkIGxvYWQgYWxsIHRob3Nl
IHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAgICAgaW50byBtZW1vcnkuIFRoaXMgd291
bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4K
KworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhlIGFwcHJvYWNoIGlzIHRoaXMgcGF0
Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2VwYXJhdGUKKyAgICAgICAgZmlsZXMgb24g
dGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVuLCB3aGVuIGxvYWRpbmcgdGhlbSwgd2Ug
Y2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBhbmQgZ3JlYXRseSByZWR1Y2UgZGlydHkg
bWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2VydmljZSB3b3JrZXIgcHJv
Y2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MpIGFsc28ga2VlcHMgYQor
ICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGZvciB0
aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcuIE1vcmUKKyAgICAgICAgd29yayB3aWxs
IGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZXh0ZW5k
IHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRob3NlIHNjcmlwdHMuIFRoaXMg
d291bGQKKyAgICAgICAgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2FnZSBvbiB0aGUgV2ViQ29udGVu
dC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3ZWxsLiBJIGFtCisgICAgICAgIGRvaW5n
IHRoaXMgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNlIHBhdGNoIHNpemUgYW5kIGZhY2lsaXRh
dGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlcmUgc2hvdWxkIGJlIG5vIFdl
Yi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2VkCisgICAgICAgIGRpcnR5
IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gc2VydmljZSB3b3JrZXJz
IGFyZSB1c2VkLgorCisgICAgICAgIEkgZGlkIG1hbnVhbCBtZW1vcnkgdGVzdGluZyB3aXRoIGEg
dmVyeSBsYXJnZSBzZXJ2aWNlIHdvcmtlciB0aGF0IGhhZCBvbmUgfjEwME1CIG1haW4KKyAgICAg
ICAgc2NyaXB0LCBpbXBvcnRpbmcgYW5vdGhlciB+MTAwTUIgc2NyaXB0LgorCisgICAgICAgIEhl
cmUgYXJlIHRoZSBtZW1vcnkgcmVzdWx0cyB3aXRob3V0IG15IGNoYW5nZToKKyAgICAgICAgLSBO
ZXR3b3JraW5nIChEaXJ0eSk6IDIzOE1CIChjb2xkKSAvIDMzMU1CICh3YXJtKQorICAgICAgICAt
IFdlYkNvbnRlbnQgKERpcnR5KTogNDQxTUIgKGNvbGQpIC8gODU3TUIgKHdhcm0pCisKKyAgICAg
ICAgSGVyZSBhcmUgdGhlIG1lbW9yeSByZXN1bHRzIHdpdGggbXkgY2hhbmdlOgorICAgICAgICAt
IE5ldHdvcmtpbmcgKERpcnR5KTogMjJNQiAoY29sZCkgLyAxNE1CICh3YXJtKQorICAgICAgICAt
IFdlYkNvbnRlbnQgKERpcnR5KTogNDQwTUIgKGNvbGQpIC8gNDM4TUIgKHdhcm0pCisKKyAgICAg
ICAgVGhpcyBzaG93cyB0aGF0IEFMTCBtZW1vcnkgZnJvbSB0aGUgc2NyaXB0cyBpbiB0aGUgbmV0
d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBtYXJrZWQKKyAgICAgICAgYXMgZGlydHkuIFdlIGFs
c28gc2VlIGEgc2lnbmlmaWNhbnQgcHJvZ3Jlc3Npb24gaW4gdGhlIFdlYlByb2Nlc3MgaW4gdGhl
IHdhcm0gY2FzZSwgc2luY2UKKyAgICAgICAgdGhlIHNjcmlwdHMgYXJlIGNvbWluZyBmcm9tIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgYXMgc2hhcmVkIG1lbW9yeSBpbiB0aGlzIGNhc2UuIFRoZXJlIGlz
CisgICAgICAgIG5vIHByb2dyZXNzaW9uIGluIHRoZSBXZWJQcm9jZXNzIGluIHRoZSBjb2xkIGNh
c2UgeWV0LCBzaW5jZSB0aGUgc2NyaXB0IHdlcmUganVzdAorICAgICAgICBkb3dubG9hZGVkIGFu
ZCBhcmUgY29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzLiBJ
biBhIGZvbGxvdy11cCwgdGhlCisgICAgICAgIG5ldHdvcmsgcHJvY2VzcyBjb3VsZCBzZW5kIHNo
YXJlZCBtZW1vcnkgYmFjayB0byB0aGUgV2ViUHJvY2VzcywgYWZ0ZXIgc2F2aW5nIHRoZSBzY3Jp
cHRzCisgICAgICAgIHRvIGRpc2ssIHNvIHRoYXQgdGhlIFdlYlByb2Nlc3MgY2FuIHJlcGxhY2Ug
dGhlIGNvcGllcyBvZiBpdHMgc2NyaXB0cyBhbmQgc2F2ZSBtb3JlIG1lbW9yeS4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MgdG8gdGhlIHByb2pl
Y3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckFnZW50OjpnZXRJbml0aWFs
aXphdGlvbkluZm8pOgorICAgICAgICBDb252ZXJ0IHRoZSBzY3JpcHQgdHlwZSBmcm9tIFNoYXJl
ZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgRml4IGFzc2VydGlvbnMgdGhhdCB3ZXJlIGhpdHRpbmcgd2hlbiBjb21wYXJpbmcgdG8g
ZW1wdHkgU2hhcmVkQnVmZmVycyAob2Zmc2V0IHdvdWxkIGJlIDAKKyAgICAgICAgYW5kIHNpemUg
d291bGQgYmUgMCkuIFRoaXMgd2FzIGNhdWdodCBieSBBUEkgdGVzdHMgc2luY2Ugd2UgaGF2ZSBz
b21lIHNlcnZpY2Ugd29ya2VyIEFQSQorICAgICAgICB0ZXN0cyB0aGF0IHVzZSBlbXB0eSB3b3Jr
ZXIgc2NyaXB0cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkp
OgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9uIGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZl
ciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJzYSwgaW4gdGhlCisgICAgICAgIHNlcnZpY2Ug
d29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRv
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1RvU2NyaXB0QnVmZmVyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNo
YXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5IGNhbiBob2xkCisgICAg
ICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0gQWRkIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkg
LyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxpdHkgZnVuY3Rpb25zIHRvCisgICAgICAgICAg
Y29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9tIHNjcmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0
byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNUYWJsZVNjaGVtYSk6Cisg
ICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEgYW5kIGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3
ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNp
ZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVhZCwgdGhvc2Ugc2NyaXB0cworICAgICAgICBh
cmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZpbGVzeXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFn
ZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNv
ZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1
Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRhCisgICAgICAgIG1lbWJlcnMgb2YgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCwgZXhjZXB0IGZvciB0aGUgYWN0dWFs
CisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5vdyBzYXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRl
ZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAgICAgIGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhh
c2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ugd2Ugbm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAg
ICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJjZXMgaW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0
aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJhdGVseSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisK
KyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0U291cmNlcyk6CisgICAgICAgIFV0aWxpdHkg
ZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRvIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlw
dEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0aG91dCB0aGUgc2NyaXB0CisgICAgICAgIHNv
dXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNRTGl0ZSBkYXRhYmFzZS4KKworICAgICAgICAo
V2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2spOgorICAgICAgICBVdGlsaXR5
IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hNYXAgb2YgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBmcm9tIGEgSGFzTWFwIG9mIEltcG9ydGVkU2Ny
aXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhlIFNRTGl0ZURhdGFiYXNlLiBUaGUKKyAgICAg
ICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBT
V1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0
aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNrZ3JvdW5kIHF1ZXVlIGZvciB0aHJlYWQtc2Fm
ZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3Rv
cmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIFJldHVybnMgdGhlIHBhdGggb24gdGhlIGZp
bGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBhcmUgc3RvcmVkLgorCisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSk6CisgICAg
ICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkgYSBTV1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVy
biBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxs
KToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFyIGFsbCB0aGUgc2VydmljZSB3b3JrZXIgc2Ny
aXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRoZSBkYXRhYmFzZSwKKyAgICAgICAgbm93IHRo
YXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKyAgICAgICAgLSBTdG9wIHN0b3Jpbmcg
dGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxpdGUgZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0
b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZp
YSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0gSW1wcm92ZSBsb2dnaW5nCisgICAgICAgIC0g
V2hlbiBkb25lIHN0b3JpbmcgdGhlIHNjcmlwdHMgdG8gZGlzaywgc2VuZCB0aGVzZSBuZXcgbW1h
cCdkIHZlcnNpb25zIGJhY2sgdG8gdGhlCisgICAgICAgICAgU1dTZXJ2ZXJXb3JrZXIgb24gdGhl
IG1haW4gdGhyZWFkLCBzbyB0aGF0IGl0IGNhbiByZXBsYWNlIGl0J3MgaGVhdnkgc2NyaXB0IHNv
dXJjZXMgd2l0aAorICAgICAgICAgIHRoZXNlIG9uZXMuIFRoaXMgaGVscHMgcmVkdWNlIG1lbW9y
eSB1c2FnZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9y
dFJlY29yZHMpOgorICAgICAgICAtIExvYWQgdGhlIHNjcmlwdCBzb3VyY2VzIGZyb20gdGhlIGRp
c2sgdmlhIFNXU2NyaXB0U3RvcmFnZSwgbm93IHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyCisgICAg
ICAgICAgc3RvcmVkIGluIHRoZSBTUUxpdGUgZGF0YWJhc2UuCisgICAgICAgIC0gSW1wcm92ZSBs
b2dnaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25TdG9yZTo6ZGlkU2F2
ZVdvcmtlclNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuaDoKKyAgICAgICAgUGFzcyBzY3JpcHRzIHRoYXQgd2VyZSBzYXZl
ZCB0byBkaXNrIGZyb20gdGhlIHN0b3JlIHRvIHRoZSBTV1NlcnZlcldvcmtlciBzbyB0aGF0IGl0
CisgICAgICAgIGNhbiByZXBsYWNlIGl0cyBzY3JpcHRzIHNvdXJjZXMgd2l0aCB0aG9zZSBuZXcg
bW1hcCdkIHZlcnNpb24sIGluIG9yZGVyIHRvIHNhdmUgbWVtb3J5LgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omhhc2hVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpT
V1NjcmlwdFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZWdp
c3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9y
YWdlOjpzY3JpcHRQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oOiBBZGRlZC4KKyAgICAgICAg
QWRkIFNXU2NyaXB0U3RvcmFnZSB0byBkZWFsIHdpdGggdGhlIHN0b3JhZ2UgLyByZXRyaWV2YWwg
b2YgU2VydmljZQorICAgICAgICBXb3JrZXIgc2NyaXB0cyB0byAvIGZyb20gZGlzaywgYXMgZmls
ZXMgb24gdGhlIGZpbGUgc3lzdGVtLiBXaGVuCisgICAgICAgIGdvaW5nIGEgcmV0cmlldmFsLCB3
ZSByZXR1cm4gYSBzY3JpcHQgYXMgYSBTaGFyZWRCdWZmZXIgd2hpY2ggY29udGFpbnMKKyAgICAg
ICAgbW1hcCdkKCkgZGF0YS4KKyAgICAgICAgVGhlIHNjcmlwdHMgcmVzaWRlIGluIGEgU2NyaXB0
cy8gZm9sZGVyLCBiZXNpZGUgdGhlIGRhdGFiYXNlLiBUaGUgc2NyaXB0cyBhcmUgc2VwYXJhdGVk
CisgICAgICAgIGJ5IG9yaWdpbiAodXNpbmcgU0hBMjU2IG9mIHRoZSBvcmlnaW4gYXMgZm9sZGVy
IG5hbWUgd2l0aCBzYWx0KSwgYW5kIHRoZW4gYnkgcmVnaXN0cmF0aW9uIChieQorICAgICAgICB1
c2luZyBTSEEyNTYgb2YgdGhlIHJlZ2lzdHJhdGlvbiBzY29wZSBhcyBzdWJmb2xkZXIgbmFtZSB3
aXRoIHNhbHQpLiBUaGUgZmlsZSBuYW1lIGZvciB0aGUgc2NyaXB0CisgICAgICAgIGlzIGEgU0hB
MjU2IG9mIHRoZSBzY3JpcHQgVVJMIHdpdGggc2FsdC4KKworICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRp
ZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgUGFzcyBzY3JpcHRzIHRoYXQgd2Vy
ZSBzYXZlZCB0byBkaXNrIGZyb20gdGhlIHN0b3JlIHRvIHRoZSBTV1NlcnZlcldvcmtlciBzbyB0
aGF0IGl0CisgICAgICAgIGNhbiByZXBsYWNlIGl0cyBzY3JpcHRzIHNvdXJjZXMgd2l0aCB0aG9z
ZSBuZXcgbW1hcCdkIHZlcnNpb24sIGluIG9yZGVyIHRvIHNhdmUgbWVtb3J5LgorCisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlV29ya2VyKToKKyAgICAgICAgQ29udmVydCBzY3Jp
cHQgZnJvbSBTdHJpbmcgdG8gU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICBDb252ZXJ0IHNjcmlw
dCBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oOgorICAgICAgICBUYWtlIGluIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCBmb3IgY29udmVuaWVuY2UsIGluc3RlYWQgb2YgdGFraW5nCisgICAgICAgIGFsbCBp
dHMgZGF0YSBtZW1iZXJzIGFzIHNlcGFyYXRlIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJX
b3JrZXI6OnNjcmlwdCBjb25zdCk6CisgICAgICAgIFVzZSBTaGFyZWRCdWZmZXIgdHlwZSBmb3Ig
c2NyaXB0IGluc3RlYWQgb2YgU3RyaW5nIHR5cGUsIHNvIHRoYXQgd2UgY2FuIGhvbGQgb24gdGhl
CisgICAgICAgIG1tYXAnZCBkYXRhIGFuZCByZWR1Y2UgbWVtb3J5IHVzYWdlLgorCiAyMDIxLTAz
LTMwICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgTm93IFBs
YXlpbmcgY29udGVudCBpc24ndCB1cGRhdGVkIHdoZW4gbWVkaWEgc2Vzc2lvbidzIE1ldGFkYXRh
IGlzIG1vZGlmaWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3MDc4ZWYyZDMxZWQ4NTgwYmUyMzA1ODk2NmYzNTc5
MDdkY2IxMjcuLmM4NDQ2OTM1OTZlYzM4YmZjYjk2Yzk5ZTYzOTE5ZmQ3ZmJiNDRjY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBt
ZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgUGFzcyBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQgc3RydWN0IGluIHRoZSBTZXRTY3JpcHRSZXNvdXJjZSBJUEMKKyAgICAgICAgZm9y
IGNvbnZlbmllbmNlLiBXZSB1c2VkIHRvIHBhc3MgdGhlIEltcG9ydGVkU2NyaXB0IGRhdGEgbWVt
YmVycyBzZXBhcmF0ZWx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmNsZWFyQWxsQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJh
Y2tncm91bmRUaHJlYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdl
OjpkZWxldGVPbGRWZXJzaW9ucyk6CisgICAgICAgIERyb3AgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkoKSBpbXBsZW1lbnRhdGlvbiBhbmQgdXNlIHRoZSBleGlzdGluZworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIGluIHd0ZiBpbnN0ZWFkLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6bWFwVG9GaWxlIGNvbnN0KToKKyAgICAgICAg
TW92ZWQgc29tZSBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgdG8gV1RGLCBzbyB0aGF0IGl0IGNh
biBiZSByZXVzZWQuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6ZW5jb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZGVj
b2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgVXBkYXRlIFNoYXJlZEJ1ZmZlcidzIElQQyBhcmd1
bWVudCBjb2RlciB0byBkaXN0aW5ndWlzaCBhIG51bGwgU2hhcmVkQnVmZmVyCisgICAgICAgIGFu
ZCBhbiBlbXB0eSBvbmUuIFdlIG5vdyB1c2UgU2hhcmVkQnVmZmVyIHRvIHN0b3JlIHNlcnZpY2Ug
d29ya2VyIHNjcmlwdCBzb3VyY2VzCisgICAgICAgIGFuZCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhl
IHNjcmlwdCBzb3VyY2VzIHRvIGJlIGVtcHR5IChhbmQgdGhleSBhcmUgaW4gc29tZSBvZgorICAg
ICAgICBvdXIgQVBJIHRlc3RzKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAgICAgIFBhc3Mg
YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUg
U2V0U2NyaXB0UmVzb3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0
byBwYXNzIHRoZSBJbXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKwogMjAy
MS0wMy0zMCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIE5v
dyBQbGF5aW5nIGNvbnRlbnQgaXNuJ3QgdXBkYXRlZCB3aGVuIG1lZGlhIHNlc3Npb24ncyBNZXRh
ZGF0YSBpcyBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBmZWJlNDVmZThiNWU4ZmYx
YmZmMWU1MzY4ZWE1MTIxMzZhMWZmMGJlLi44N2M5ODA3NTNlZjU0YjU3NmZmZWI4MmM0NDJiNjNh
MThiZTg4YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKKyNpbmNsdWRlIDx3
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZU1l
dGFkYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgpAQCAtMzE5LDYgKzMyMCw3IEBAIGJvb2wgTWFwcGVkRmlsZURhdGE6Om1hcEZpbGVIYW5k
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZU9wZW5Nb2RlIG9wZW5NCiAgICAgfQog
CiAgICAgaWYgKCFzaXplKSB7CisgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMzQ3LDYgKzM0OSw3IEBAIGJvb2wgTWFwcGVkRmlsZURh
dGE6Om1hcEZpbGVIYW5kbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZU9wZW5Nb2Rl
IG9wZW5NCiAKICAgICBtX2ZpbGVEYXRhID0gZGF0YTsKICAgICBtX2ZpbGVTaXplID0gc2l6ZTsK
KyAgICBtX2lzVmFsaWQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MDgsNSAr
NDExLDk2IEBAIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYp
CiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIU9TKFdJTkRPV1MpCitib29s
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBhdXRv
IGVudHJpZXMgPSBsaXN0RGlyZWN0b3J5KHBhdGgsICIqIl9zKTsKKyAgICBmb3IgKGF1dG8mIGVu
dHJ5IDogZW50cmllcykgeworICAgICAgICBpZiAoZmlsZUlzRGlyZWN0b3J5KGVudHJ5LCBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBkZWxldGVOb25FbXB0eURp
cmVjdG9yeShlbnRyeSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZUZpbGUoZW50
cnkpOworICAgIH0KKyAgICByZXR1cm4gZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Cit9Cisj
ZW5kaWYKKworTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBieXRlc1NpemUsIFBsYXRmb3JtRmlsZUhhbmRsZSog
b3V0cHV0SGFuZGxlKQoreworICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0
cnVlOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJt
aXNzaW9uOjpVc2VyLCBmYWlsSWZGaWxlRXhpc3RzKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQoaGFuZGxlKSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwg
Ynl0ZXNTaXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNl
TWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKKyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW06OkZpbGVPcGVu
TW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBzdWNj
ZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGhhbmRsZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgdm9pZCogbWFwID0g
Y29uc3RfY2FzdDx2b2lkKj4obWFwcGVkRmlsZS5kYXRhKCkpOworICAgIHVpbnQ4X3QqIG1hcERh
dGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFwKTsKKyAgICBtZW1jcHkobWFwRGF0YSwgYnl0
ZXMsIGJ5dGVzU2l6ZSk7CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIERXT1JEIG9sZFByb3RlY3Rp
b247CisgICAgVmlydHVhbFByb3RlY3QobWFwLCBieXRlc1NpemUsIEZJTEVfTUFQX1JFQUQsICZv
bGRQcm90ZWN0aW9uKTsKKyAgICBGbHVzaFZpZXdPZkZpbGUobWFwLCBieXRlc1NpemUpOworI2Vs
c2UKKyAgICAvLyBEcm9wIHRoZSB3cml0ZSBwZXJtaXNzaW9uLgorICAgIG1wcm90ZWN0KG1hcCwg
Ynl0ZXNTaXplLCBQUk9UX1JFQUQpOworCisgICAgLy8gRmx1c2ggKGFzeW5jaHJvbm91c2x5KSB0
byBmaWxlLCB0dXJuaW5nIHRoaXMgaW50byBjbGVhbiBtZW1vcnkuCisgICAgbXN5bmMobWFwLCBi
eXRlc1NpemUsIE1TX0FTWU5DKTsKKyNlbmRpZgorCisgICAgaWYgKG91dHB1dEhhbmRsZSkKKyAg
ICAgICAgKm91dHB1dEhhbmRsZSA9IGhhbmRsZTsKKyAgICBlbHNlCisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisgICAgcmV0dXJuIG1hcHBlZEZpbGU7Cit9CisKK3N0
YXRpYyBTYWx0IG1ha2VTYWx0KCkKK3sKKyAgICBTYWx0IHNhbHQ7CisgICAgc3RhdGljX2Fzc2Vy
dChzYWx0LnNpemUoKSA9PSA4LCAiU2FsdCBzaXplIik7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8
dWludDMyX3QqPigmc2FsdFswXSkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwor
ICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICByZXR1cm4gc2FsdDsKK30KKworT3B0aW9uYWw8U2Fs
dD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHBhdGgpKSB7CisgICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgICAg
IFNhbHQgc2FsdDsKKyAgICAgICAgYXV0byBieXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNp
emVfdD4oRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGUpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHNhbHQ7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShw
YXRoKTsKKyAgICB9CisKKyAgICBTYWx0IHNhbHQgPSBtYWtlU2FsdCgpOworICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpKTsK
KyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6OldyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNl
cik7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgYm9vbCBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+
KEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNh
bHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZSk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgcmV0dXJuIHNhbHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBs
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAy
NGQyZTdmNmI5YzMyMTQ3MjM4NGVmNGM0Li41MDU3YTA3NjU1YWYyN2Y1YzQwMTQ1MzZjZDRhOGVm
ZTE2ZTExNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDQsNiArMTQ0LDkgQEAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IGNoYXIqKTsKIAogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7IH0KIAordXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47CitXVEZfRVhQT1JU
X1BSSVZBVEUgT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRo
KTsKKwogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3
aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRl
bXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNv
bnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZp
bGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVB
Y2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZG
aWxlRXhpc3RzID0gZmFsc2UpOwpAQCAtMTkwLDE0ICsxOTMsMTQgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIFdURl9FWFBPUlRfUFJJ
VkFURSBOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3Rv
cnlQcmVmaXgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVs
ZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisKIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChjb25zdCBTdHJpbmcmKTsKQEAgLTIxNiw3
ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0
YSgpOwogICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CiAK
LSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2ZpbGVEYXRh
OyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxp
ZDsgfQogICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9
CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KIApAQCAt
MjI3LDYgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0
ciB9OwogICAgIHVuc2lnbmVkIG1fZmlsZVNpemUgeyAwIH07CisgICAgYm9vbCBtX2lzVmFsaWQg
eyBmYWxzZSB9OwogfTsKIAogaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtYXBNb2RlLCBib29sJiBz
dWNjZXNzKQpAQCAtMjQyLDYgKzI0Niw3IEBAIGlubGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVk
RmlsZURhdGEoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZU9wZW5Nb2RlIG9wCiBpbmxp
bmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIp
CiAgICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0
cikpCiAgICAgLCBtX2ZpbGVTaXplKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkp
CisgICAgLCBtX2lzVmFsaWQoc3RkOjpleGNoYW5nZShvdGhlci5tX2lzVmFsaWQsIGZhbHNlKSkK
IHsKIH0KIApAQCAtMjQ5LDkgKzI1NCwxNCBAQCBpbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBl
ZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhlcikKIHsKICAgICBtX2Zp
bGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVEYXRhLCBudWxscHRyKTsKICAgICBt
X2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVTaXplLCAwKTsKKyAgICBtX2lz
VmFsaWQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faXNWYWxpZCwgZmFsc2UpOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAorLy8gVGhpcyBjcmVhdGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBz
IGl0LCB3cml0ZSB0aGUgcHJvdmlkZWQgZGF0YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVk
IGZpbGUuCisvLyBUaGlzIGZ1bmN0aW9uIGZhaWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxl
IGF0IHRoZSBkZXN0aW5hdGlvbiBwYXRoLgorV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVE
YXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBz
aXplX3QgYnl0ZXNTaXplLCBQbGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CisKIH0gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAyNGRkNDYzZTAyM2FkZDZlYzI0YWNkZDE5OGY5OTFhMGZmZjcxMWUzLi4zZTAxNzUz
YjZlM2I3MjRjZmQ4NzMyNjc4ODY1NzkyNWQ3NTE0MTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4
NSw2ICsyNjg1LDcgQEAgd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEwNDAwYzM3MDdiYTYz
MThkOTgwMDg3MTc5ZjdiZGZlODUwOTlkZDkuLjM5NzFmMzBjMDc5OWU3NDk1ODlhOTAwNWFlODQy
ODg3OGYyYmRjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyNzEsNiArMTI3MSw3IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUw
MDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RP
TVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYwRTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8q
IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUx
NiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0
RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUwMDI4MkIyQyAvKiBET01I
aWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyNzNDQUMy
NjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAv
KiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlF
MDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVF
RjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5oICovOyB9OwpAQCAtODI0MSw2ICs4
MjQyLDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVy
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRv
d1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBDQkYzNDFE
NEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9y
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEg
LyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8q
IFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdp
bmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzE4LDYgKzIw
NzIxLDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyogUmVnaXN0cmF0aW9uU3Rv
cmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5j
cHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAq
LywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAq
LywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8s
CiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1
MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFG
QUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCkBAIC0zNTMwOCw2ICsz
NTMxMyw3IEBACiAJCQkJNDY2NThEQzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNFMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0
Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0
N0UyRCAvKiBTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1
OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdB
NTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggMjFiMzBlZTI5
NDcyNmIyM2MyN2FiMjA0NTZlNTk4MjUzNjkxM2QxMS4uNGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1
NWUwYzk2OTMwNDBkN2MzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtl
cjo6Q29uZmlndXJhdGlvbj4+IFNlcnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0
eU9yaWdpbihtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jh
d1N0cmluZygpKQogICAgICAgICAuc2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRo
cmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29u
dGVudChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNj
cmlwdCkKKyAgICAgICAgLnNldENvbnRlbnQoc2NyaXB0QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpKQogICAgICAg
ICAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAppbmRleCA1MWJjNGFhOTgzYzg3M2NmMTNkNTQzZGQxYzc2NjRjY2Y2NjVkYWE5Li5jNzBmOGFl
YWViODViYWYzNjQyMjdjMjMyM2RkYWNkOWQzMjczZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTcwLDEwICs3MCwxMCBAQCBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogfQogI2VuZGlm
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSkKIHsKICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZp
bGVEYXRhKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBtYXBw
aW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURh
dGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CiAKICAgICBpZiAo
IW1hcHBpbmdTdWNjZXNzKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwpAQCAtMjgxLDggKzI4MSw4IEBAIGJvb2wgU2hhcmVkQnVm
ZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIEFTU0VSVCh0aGlzT2Zmc2V0IDwg
dGhpc1NlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgQVNTRVJUKG90aGVyT2Zmc2V0IDwgb3RoZXJT
ZWdtZW50LnNpemUoKSk7CisgICAgICAgIEFTU0VSVCh0aGlzT2Zmc2V0IDw9IHRoaXNTZWdtZW50
LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChvdGhlck9mZnNldCA8PSBvdGhlclNlZ21lbnQuc2l6
ZSgpKTsKIAogICAgICAgICBzaXplX3QgdGhpc1JlbWFpbmluZyA9IHRoaXNTZWdtZW50LnNpemUo
KSAtIHRoaXNPZmZzZXQ7CiAgICAgICAgIHNpemVfdCBvdGhlclJlbWFpbmluZyA9IG90aGVyU2Vn
bWVudC5zaXplKCkgLSBvdGhlck9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMjNiZjVhOGVkYjRjMWUzMDI5YjdjYjQ3NDllYWNkNTUwMWJhOTE5NC4uZTRh
YjFiMWFjZjk5NjI0NDU2Zjg2MDhlOTEzNDNiZTJkNDNjZWMzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTY4LDcgKzY4LDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcik7IH0KICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihkYXRhLCBzaXplKSk7IH0KICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OworICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6U2hhcmVkKTsKIAogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9y
PGNoYXI+JiYpOwogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCmluZGV4IDRkNDc0ZjE2ZTU4OGRkMDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUx
MDA0MGJlMjg1OTIxMGI3MmNlZDIzMTgyYWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTYwLDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlm
IChpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0
UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2Jh
bFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBl
bmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
c2NyaXB0QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAg
ICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAg
ICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFs
PEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9y
dGVkIEphdmFTY3JpcHQgbWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2Uo
dXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCks
IG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVz
b3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3Ry
aW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlN
RVR5cGUgfSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5jcHAKaW5kZXggMTZkZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTli
NWVkZi4uMWVhNTkwMWJkOWQyZmQ5Yzc5M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRh
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAg
am9iRGF0YUlkZW50aWZpZXIsCiAgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwK
ICAgICAgICAgc2VydmljZVdvcmtlcklkZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRl
ZENvcHkoKSwKKyAgICAgICAgc2NyaXB0LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5m
by5pc29sYXRlZENvcHkoKSwKICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVk
Q29weSgpLAogICAgICAgICByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYg
KzQ4LDIwIEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZl
clRvU3RyaW5nKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBmb3IgKGF1dG8gaXQgPSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVu
ZCgpOyArK2l0KQorICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5z
ZWdtZW50LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgp
OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2
NWVlNDgwYTk2MWIxMGYxZGJkYzdlLi44NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYw
ZTU5MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0
MCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0
cmluZyhTaGFyZWRCdWZmZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsK
ICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVS
TDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNw
b25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAg
ICAgICBJbXBvcnRlZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlw
dC0+Y29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRD
b3B5KCkgfTsgfQogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7
CisgICAgICAgICAgICBPcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAg
ICAgICAgICAgZGVjb2RlciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1
Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZv
OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBA
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiBzY3JpcHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3
IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVu
dGlmaWVyKSwKICAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92
ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisg
ICAgICAgIFdURk1vdmUoKnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5m
byksCiAgICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RG
TW92ZShyZWZlcnJlclBvbGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3
MGY0ZjVlNjkzZjI3N2Y2NTU4M2U3YTRlMDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEw
ZjNhMDlkNDI1Mjc0ZTZlZWJlMjY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBA
IC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxh
Z3MKIAogU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0
dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQ
cm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyKQotICAgIDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3Ry
aW5nKCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6
Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBv
bGljeSwgZmFsc2UsIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2Ny
aXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5l
Y3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxF
bmFibGVkKCkpCisgICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJp
bmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5Ojpj
cmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9s
aWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVm
ZmVyVG9TdHJpbmcoZGF0YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVt
bXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3Jp
Z2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVu
dGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRl
ZENvcHkoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OnNoYXJlZCgpKQogICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkg
PyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwCmluZGV4IGNlZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4
OTRiMTQuLmQ4ODVhMjM3MGYzMDUyNTk3MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRl
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNR
TGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVk
ZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRp
YyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWNvcmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3
ICs2Miw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0
cmluZyYgdGFibGVOYW1lKQogICAgICAgICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5P
VCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCi0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxM
IE9OIENPTkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBP
TiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhU
IE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBjbGVhbk9sZERhdGFiYXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5KQogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFz
ZUZpbGVuYW1lRnJvbVZlcnNpb24odmVyc2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2Ny
aXB0QXR0cmlidXRlcyB7CisgICAgVVJMIHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlw
ZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1p
bWVUeXBlOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
ICAgIHsKKyAgICAgICAgT3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2Rl
ciA+PiByZXNwb25zZVVSTDsKKyAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlw
ZTsKKyAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7Cisg
ICAgICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCpt
aW1lVHlwZSkKKyAgICAgICAgfX07CisgICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sK
KyAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2Ny
aXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3Jp
cHRzLmFkZChwYWlyLmtleSwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5y
ZXNwb25zZVVSTCwgcGFpci52YWx1ZS5taW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91
dFNjcmlwdHM7Cit9CisKK3N0YXRpYyBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdD4gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3Jp
cHRTdG9yYWdlJiBzY3JpcHRTdG9yYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXksIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0
ZXM+JiYgbWFwKQoreworICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDog
bWFwKSB7CisgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJp
ZXZlKHJlZ2lzdHJhdGlvbktleSwgcGFpci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2Ny
aXB0KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVn
aXN0cmF0aW9uRGF0YWJhc2U6OnBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQg
dG8gcmV0cmlldmUgaW1wb3J0ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92
ZShwYWlyLnZhbHVlLnJlc3BvbnNlVVJMKSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9
KTsKKyAgICB9CisgICAgcmV0dXJuIGltcG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwg
U3RyaW5nJiYgZGF0YWJhc2VEaXJlY3RvcnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiU2VydmljZVdvcmtlciBJL08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJp
YWwpKQogICAgICwgbV9zdG9yZShtYWtlV2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkg
QEAgUmVnaXN0cmF0aW9uRGF0YWJhc2U6On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBi
ZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNl
KQotICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2Rh
dGFiYXNlKV0geyB9KTsKKyAgICAvLyBUaGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQg
dG8gYmUgZGVzdHJveWVkIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRh
YmFzZSB8fCBtX3NjcmlwdFN0b3JhZ2UpCisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
ZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZSht
X3NjcmlwdFN0b3JhZ2UpXSB7IH0pOwogfQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpw
b3N0VGFza1RvV29ya1F1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIz
NSwxOSBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFz
ZURpcmVjdG9yeSwgeyAiU2NyaXB0cyIsICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYg
UmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNjcmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIGlmICghbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3Njcmlw
dFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFNXU2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVj
dG9yeSgpKTsKKyAgICByZXR1cm4gKm1fc2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKQEAgLTMzMyw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6Y2xlYXJBbGwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGUKIHsKICAgICBwb3N0VGFza1RvV29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2Rh
dGFiYXNlID0gbnVsbHB0cjsKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAog
ICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZp
bGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2Ny
aXB0U3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsK
IAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
QEAgLTM1MiwxMiArNDE3LDEzIEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENo
YW5nZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRl
VHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJl
Z2luKCk7CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElO
VE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8p
Il9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8g
UmVjb3JkcyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsK
ICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBz
dG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlz
LT5zY3JpcHRTdG9yYWdlKCk7CiAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVk
UmVnaXN0cmF0aW9ucykgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNl
LCAiREVMRVRFIEZST00gUmVjb3JkcyBXSEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwu
cHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiYKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIs
ICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAo
JWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
TXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNj
cmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyIGNzcEVuY29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5
LmVuY29kZShjc3BFbmNvZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNv
ZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3Jl
ZCBzZXBhcmF0ZWx5IGluIHRoZSBTY3JpcHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3Vs
dCwgd2UgbmVlZCB0byBzdHJpcCB0aGUgc2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2Rp
bmcgdGhlIHNjcmlwdFJlc291cmNlTWFwLgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBF
bmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNl
TWFwRW5jb2RlciA8PCBzdHJpcFNjcmlwdFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7
CiAKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNv
ZGVyOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJ
bmZvOwpAQCAtMzg1LDIxICs0NTQsMzYgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9Q
dXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAg
ICAgICAgIHx8IHNxbC5iaW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVU
aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwuYmluZFRleHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJh
dGlvbi51cGRhdGVWaWFDYWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJp
bmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IHNxbC5iaW5kVGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAg
ICAgICB8fCBzcWwuYmluZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlw
ZSkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNv
ZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBzcWwuYmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVu
Y29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUlu
Zm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRv
U3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3Fs
LmJpbmRCbG9iKDksIGNzcEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZl
cnJlclBvbGljeSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEs
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNv
ZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJs
b2IoMTIsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0Vu
Y29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZp
Y2VXb3JrZXIsICJGYWlsZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRz
IHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBTYXZlIHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0
ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0
VVJMLCBkYXRhLnNjcmlwdCk7CisgICAgICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAg
aWYgKCFtYWluU2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNo
TWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAg
YXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRp
b24ua2V5LCBwYWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VS
VChpbXBvcnRlZFNjcmlwdCk7CisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAg
ICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkp
LCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciA9IGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQg
PSBtYWluU2NyaXB0LnJlbGVhc2VOb25OdWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUo
aW1wb3J0ZWRTY3JpcHRzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQor
ICAgICAgICAgICAgICAgIG1fc3RvcmUtPmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVk
U2NyaXB0cykpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQo
KTsKLQotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lz
dHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1
IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVt
b3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVk
L3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVw
ZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRh
YmFzZSwgIlNFTEVDVCAqIEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVw
YXJlIHN0YXRlbWVudCB0byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJs
ZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBm
b3IgKDsgcmVzdWx0ID09IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzOiBJbXBvcnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgYXV0byBrZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0
YWJhc2VLZXkoc3FsLmdldENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9
IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3Bl
UGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0
VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5E
b3VibGUoNCkpOwogICAgICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVW
aWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0g
VVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0
ID0gc3FsLmdldENvbHVtblRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmlu
Z1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2Vy
VHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7Cisg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YSk7CiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250
ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5z
aXplKCkpOwogICAgICAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0
eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQor
ICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAg
ICAgICBhdXRvIHJlZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAg
T3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMCwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFw
OwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBE
ZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0
YS5zaXplKCkpOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewot
ICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFw
OwotICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlv
bmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJj
ZU1hcFdpdGhvdXRTY3JpcHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVy
ID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNj
cmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJl
Y29yZHM6IEZhaWxlZCB0byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRT
dG9yYWdlKCksICprZXksIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMp
KTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9E
YXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUlu
Zm9EYXRhKTsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNh
dGVJbmZvRGF0YSk7CiAgICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNh
dGVJbmZvOwogCiAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJ
bmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0
YS5zaXplKCkpOwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRl
SW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlm
aWNhdGVJbmZvKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
Y2VydGlmaWNhdGVJbmZvIik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAg
ICAgIC8vIElmIGFueSBwYXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0
aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4g
ZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkKKyAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdp
biB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5
cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBG
YWlsZWQgdG8gZGVjb2RlIHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3Jh
Z2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsK
KyAgICAgICAgaWYgKCFzY3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVk
IHRvIHJldHJpZXZlIG1haW4gc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0
byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmll
ciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUs
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRh
dGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VX
b3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNv
bnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklk
ZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RG
TW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdU
Rk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291
cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50
aWZpZXIsIHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8p
LCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5
KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRp
b25Ub1N0b3JlKFdURk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaApp
bmRleCBkNmFlZDZiNDBlNjA0NjI2ZTNhMWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2
MjFkYjM0Mjg3N2FmMzRjNzFlNDViOThiOTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0
aW9uU3RvcmU7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsK
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlyZWN0b3J5KTsKQEAgLTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGltcG9ydFJlY29yZHNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiYpOworICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOwor
ICAgIFN0cmluZyBzY3JpcHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBs
aWVzIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRp
b25TdG9yZT4gbV9zdG9yZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBt
X3NjcmlwdFN0b3JhZ2U7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRh
Y2FiYTI5MWZkMmE0M2IzZWI0MDE2MTQzOGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2Iy
MmFmYjBlMDU3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBA
IHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBkCiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJv
bVN0b3JlKFdURk1vdmUoZGF0YSkpOwogfQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2Vy
dmVyLmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
VEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lk
IFJlZ2lzdHJhdGlvblN0b3JlOjpkYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2
ZXIucmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9y
ZS5oCmluZGV4IDc1NDNlYzEzYjNkY2Y3MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4
Y2VlYjBlMmY2MDdlNzA3ZTdiYjQwMWZlNDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgK
QEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURh
dGFiYXNlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFp
bGVkVG9PcGVuKCk7CiAgICAgdm9pZCBkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgp
OworICAgIHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2Vy
dmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xOTZiODNlYTQyYjEyYWQwZmM3N2Y0MGZmNDc0NTFiMzdhOTAyYmYwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNXU2NyaXB0U3RvcmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworU1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpCisgICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCisgICAg
LCBtX3NhbHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVPcihG
aWxlU3lzdGVtOjpTYWx0KCkpKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworfQor
CitTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzaGEySGFzaChjb25zdCBTdHJpbmcmIGlucHV0KSBj
b25zdAoreworICAgIGF1dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVz
KG1fc2FsdC5kYXRhKCksIG1fc2FsdC5zaXplKCkpOworICAgIGF1dG8gaW5wdXRVdGY4ID0gaW5w
dXQudXRmOCgpOworICAgIGNyeXB0by0+YWRkQnl0ZXMoaW5wdXRVdGY4LmRhdGEoKSwgaW5wdXRV
dGY4Lmxlbmd0aCgpKTsKKyAgICBhdXRvIGhhc2ggPSBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7Cisg
ICAgcmV0dXJuIFdURjo6YmFzZTY0VVJMRW5jb2RlKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7
Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHNoYTJIYXNoKGlucHV0LnN0cmluZygpKTsKK30KKworU3Ry
aW5nIFNXU2NyaXB0U3RvcmFnZTo6c2FsdFBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kaXJlY3RvcnksICJzYWx0Iik7Cit9
CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3Rv
cnksIHsgc2hhMkhhc2gocmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBz
aGEySGFzaChyZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1Njcmlw
dFN0b3JhZ2U6OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVj
dG9yeShyZWdpc3RyYXRpb25LZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBj
b25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9u
S2V5LCBzY3JpcHRVUkwpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKHNjcmlwdFBhdGgpKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3
ZSBkZWxldGUgdGhlIGZpbGUgYmVmb3JlIHdyaXRpbmcgYXMgdGhlcmUgbWF5IGJlIGNvZGUgdXNp
bmcgYSBtbWFwJ2QgdmVyc2lvbiBvZiB0aGlzIGZpbGUuCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShzY3JpcHRQYXRoKTsKKworICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1h
cFRvRmlsZShzY3JpcHRQYXRoLCBzY3JpcHQuZGF0YUFzVUludDhQdHIoKSwgc2NyaXB0LnNpemUo
KSk7CisgICAgaWYgKCFtYXBwZWRGaWxlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVz
LCBGaWxlU3lzdGVtOjptYXBUb0ZpbGUoKSBmYWlsZWQiLCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUobWFwcGVkRmlsZSkpOworfQorCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwpCit7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5z
Y3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKKyAgICAvLyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSgpIHdpbGwgdXNlIGZpbGUgbWFwcGluZyB3aGVu
ZXZlciBwb3NzaWJsZS4KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUp
OworfQorCit2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9u
RGlyZWN0b3J5ID0gdGhpcy0+cmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7
CisgICAgYm9vbCByZXN1bHQgPSBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShy
ZWdpc3RyYXRpb25EaXJlY3RvcnkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQs
IFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFy
IHNjcmlwdHMgZm9yIHJlZ2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNl
S2V5KCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5
ZjAxMzBjNWU1ODY5OWZjMGQyNTdhNmViOTcwNGI0NzU2MDM4NTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5o
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CisKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5KTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
dHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNj
cmlwdFVSTCk7CisgICAgdm9pZCBjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5Jik7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlw
dFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMKSBjb25zdDsKKyAgICBTdHJpbmcgc2FsdFBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcg
c2hhMkhhc2goY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgU3RyaW5nIHNoYTJIYXNoKGNvbnN0
IFVSTCYpIGNvbnN0OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5OworICAgIEZpbGVTeXN0ZW06
OlNhbHQgbV9zYWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5
N2Q2NGYxZDY1ODY5NGIzLi5kY2UyMDE2ZmMxNTM4MzAwZmZhYTExNzU5ZWFlMzM0MDhjNGY5ZTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcApAQCAtMTc2LDYgKzE3NiwxMiBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICB9KTsKIH0K
IAordm9pZCBTV1NlcnZlcjo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVk
U2NyaXB0cykKK3sKKyAgICBpZiAoYXV0byB3b3JrZXIgPSB3b3JrZXJCeUlEKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRTYXZlU2NyaXB0c1RvRGlzayhXVEZN
b3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFNX
U2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0
aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsKICAgICBtX29yaWdpblN0b3JlLT5hZGQocmVnaXN0cmF0
aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CkBAIC02MzMsNyArNjM5LDcgQEAgdm9pZCBTV1NlcnZl
cjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTZXIKIAogdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNl
TWFwKQogewotICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3Zl
KHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRh
KCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1
ZmZlcihzY3JpcHQpLCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVm
ZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXAp
IH0pOwogfQogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBiYTFiNDEzNTAzNTQwZGNlODg1Y2Q0NDhiM2Y3
YzA0MjhkYjhjYjE3Li43OTZiZTg1ZTNlNTQ3NzI2ODZlOTU0ODA4NDVmMDQ1NDhjNWQ5NTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CkBAIC0xOTAsNiArMTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlv
blJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQgYWRkUmVn
aXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKKyAgICB2b2lk
IGRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVJbXBv
cnRDb21wbGV0ZSgpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRv
T3BlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4MDJhNDgwMTE1MWE3MjhmYmM1YTJh
NjkxMjRkYjk2M2M3NzJjYjBhLi41Y2EyNTI2OTExNDUzZGIwOGYxZjhmMjgzMmRiYzQwNDVlNjRh
YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0JiByZXN1bAogICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0
V29ya2VyJ3Mgc2NyaXB0IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNs
dWRlIGZyYWdtZW50cwogICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQg
aXMgYSBieXRlLWZvci1ieXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291
cmNlJ3Mgc291cmNlCiAgICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYm
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwo
KSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5
cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlm
aWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZp
Y2F0ZUluZm8oKSkpIHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkg
JiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlw
dCA9PSBzY3JpcHRCdWZmZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0Nl
cnRpZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2Vy
dGlmaWNhdGVJbmZvKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIl
cCAtIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2Vy
dGlmaWNhdGUgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVn
aXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBm
b3Igbm9uIGNsYXNzaWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29y
ZCdzIFtbRUNNQVNjcmlwdENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCmluZGV4IDJiOGZmNjg1ZTA0OTc5ZmNkYzczZTczMjBkZjNmNGRhNjRjNzYyZGYu
LjEyMDA1MTY5OGJmOTM5ODE4ZTRkNDNlODVjNjk1NzMwMGJhN2RjYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29yCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0
cmluZyYmIHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9p
ZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkws
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAg
ICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNj
cmlwdFJlc291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCks
IFdURk1vdmUobWltZVR5cGUpIH0pOworICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNl
KFdURk1vdmUoc2NyaXB0VVJMKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggNDY1OWY5ZjlmYTZjNmJhYThkZTk2OGQzOTE1ZmUzM2M0ZTMxMjY2OC4uOWJlMzQ0
NDkxZjA2MTNmYWUxNDBlNzk4NTFiNzEwYTNiMzJiMmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1
ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xh
aW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8RXhjZXB0aW9uRGF0YT4mJik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ny
aXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3Ry
aW5nJiYgc2NyaXB0LCBVUkwmJiByZXNwb25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVj
ayhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWlu
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhh
YzlhNjY3MDUuLjYxM2JiNzJjNTg4ZDhhMTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldv
cmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9
CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRl
bnRTZWN1cml0eVBvbGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNv
dXJjZU1hcCkKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlw
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXAp
CiAgICAgOiBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRp
b25LZXkocmVnaXN0cmF0aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQ
dHIocmVnaXN0cmF0aW9uKSkKQEAgLTIzOCw2ICsyMzgsMjEgQEAgdm9pZCBTV1NlcnZlcldvcmtl
cjo6c2V0U2NyaXB0UmVzb3VyY2UoVVJMJiYgdXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG8KICAgICBtX3NjcmlwdFJlc291cmNlTWFwLnNldChXVEZNb3ZlKHVybCksIFdURk1vdmUo
c2NyaXB0KSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNr
KFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICAvLyBUaGUgc2NyaXB0cyB3ZXJl
IHNhdmVkIHRvIGRpc2ssIHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdkIHZlcnNp
b24gdG8gc2F2ZSBtZW1vcnkuCisgICAgQVNTRVJUKG1haW5TY3JpcHQuZ2V0KCkgPT0gbV9zY3Jp
cHQuZ2V0KCkpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlk
ZW50aWNhbC4KKyAgICBtX3NjcmlwdCA9IFdURk1vdmUobWFpblNjcmlwdCk7CisgICAgZm9yIChh
dXRvJiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX3Njcmlw
dFJlc291cmNlTWFwLmZpbmQocGFpci5rZXkpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV9zY3Jp
cHRSZXNvdXJjZU1hcC5lbmQoKSk7CisgICAgICAgIGlmIChpdCA9PSBtX3NjcmlwdFJlc291cmNl
TWFwLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCgqaXQtPnZh
bHVlLnNjcmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0
aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RG
TW92ZShwYWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNraXBX
YWl0aW5nKCkKIHsKICAgICBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0ID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aAppbmRleCAzNzhmYmE2NTdlOGJiZjQ4NDFlNTZjYmY4NjU2MWY4ZWNjMzExMDIwLi5jNDVkYWRi
Y2FiODE5NzZiNzZmMGJlNTMxNGYzYjcxZjc3YjZiMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04MCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2
ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNv
bnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsgfQot
ICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KKyAg
ICBTaGFyZWRCdWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAg
Y29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBt
X2NlcnRpZmljYXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS50eXBlOyB9CiAKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlk
ZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAg
ICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBT
ZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCYmKTsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVk
U2NyaXB0cyk7CiAKICAgICB2b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBpc1NraXBXYWl0
aW5nRmxhZ1NldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0KQEAg
LTEyNyw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2so
KTsKIAogcHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVn
aXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRp
ZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYs
IFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+JiYpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRp
b24mLCBjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJ
bmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5n
JiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBI
YXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7
CiAKICAgICB2b2lkIGNhbGxXaGVuQWN0aXZhdGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBA
IC0xNDAsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5IG1fcmVnaXN0cmF0aW9uS2V5OwogICAgIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+
IG1fcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJp
bmcgbV9zY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlm
aWNhdGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZl
cnJlclBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGYzYjc1YTVlYmEzZmQ3M2Y1MjY4NDQ2
MTIzOTc4NWU1NDQ2OTM3YTIuLmQ4ZDk0MzQwODQ1ZGQ4NWIzNmRjODkyOWFiMWU2MjcxODg5MzI4
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmluZENsaWVu
dEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogICAgIE1h
dGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbShX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
LT4gKE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKLSAgICBT
ZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyLCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmlu
ZyBtaW1lVHlwZSkKKyAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAgICBQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0
cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5k
ZXggYWI3YWJjMjU3NjVhZDQyOGYyYTE1N2M2MTc5NGQyMjU4NjE3YmI0Ny4uYzkyODY2YmYyMWQ0
NWIwYjFiNTBkYmFlNzE2NzJmNzRkMTZiMTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMjMz
LDcgKzIzMyw3IEBAIHVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9v
dFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocm9vdFBhdGgsICJzYWx0Il9zKTsKLSAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdChz
YWx0UGF0aCk7CisgICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2Fs
dFBhdGgpOwogICAgIGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM3NCw3ICsz
NzQsNyBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCByb290UGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCldICgpIG11dGFi
bGUgewogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocm9vdFBhdGgpOwog
ICAgICAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocm9vdFBhdGgsICJzYWx0Il9zKTsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzYWx0ID0gcmVhZE9yTWFr
ZVNhbHQoc2FsdFBhdGgpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNhbHQgPSBGaWxlU3lz
dGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzAyLDcgKzcwMiw3
IEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGds
b2JhbFNpemVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxlU3lz
dGVtOjpmaWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5
bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNp
dmVseShmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03NDks
MTggKzc0OSwxOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0
b3JpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAvLyBJ
ZiBjYWNoZSBzYWx0IGlzIGluaXRpYWxpemVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNoLCBz
b21lIGNhY2hlIGZpbGVzIGhhdmUgcHJvYmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkgY29y
cnVwdGVkLgogICAgICAgICAgICAgQVNTRVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBjYWNo
ZXNSb290UGF0aCgqZm9sZGVyT3JpZ2luKSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlS
ZWN1cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAgZGVs
ZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxi
YWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAg
ICAgfSk7CiAgICAgfQogfQogCi12b2lkIEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZl
bHlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1w
dHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRo
Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXpl
RmlsZUxvY2spOwotICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDE5NDRhNWM3OTJkOGQ3OTllMjlkYWJjODQ2NjY3
YjY2ODYyYmI3ZjkuLjQ0MDllN2I0OTZhYjhjZjY0NmM5YTBmZmFlZGY1NzM0YzBmZjFlODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVh
ckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBjbGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JP
cmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZl
bHlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91
bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2sm
Jik7CiAgICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA2NmY3
NmViMmQ2ZmM3ZDk4ZGNlOGFlMDYyY2ZiYWYwZmY1MDM2Yjc5Li43ZTI5M2QwYTU4NzUxNmNhNzE3
NTA1MWUzZGM0Mjk1MzI3MDM4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmICFPUyhXSU5E
T1dTKQogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC00MCw0MSArNDEsOCBAQCBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKIAogRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
KSBjb25zdAogewotICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOwot
ICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9u
OjpVc2VyLCBmYWlsSWZGaWxlRXhpc3RzKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQoaGFuZGxlKSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgbV9zaXpl
KSkgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICB9Ci0gICAgCi0gICAgRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9y
eU1hcEZvclBhdGgocGF0aCk7Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhIG1hcHBlZEZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7
Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5k
bGUpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHZvaWQqIG1hcCA9IGNvbnN0
X2Nhc3Q8dm9pZCo+KG1hcHBlZEZpbGUuZGF0YSgpKTsKLSAgICB1aW50OF90KiBtYXBEYXRhID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KG1hcCk7Ci0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0
YSwgYnl0ZXMsIGJ5dGVzU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gYnl0ZXNTaXplOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9KTsKLQotI2lmIE9TKFdJTkRPV1MpCi0gICAgRFdPUkQg
b2xkUHJvdGVjdGlvbjsKLSAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwgRklMRV9NQVBf
UkVBRCwgJm9sZFByb3RlY3Rpb24pOwotICAgIEZsdXNoVmlld09mRmlsZShtYXAsIG1fc2l6ZSk7
Ci0jZWxzZQotICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCi0gICAgbXByb3RlY3Qo
bWFwLCBtX3NpemUsIFBST1RfUkVBRCk7Ci0KLSAgICAvLyBGbHVzaCAoYXN5bmNocm9ub3VzbHkp
IHRvIGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KLSAgICBtc3luYyhtYXAs
IG1fc2l6ZSwgTVNfQVNZTkMpOwotI2VuZGlmCi0KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlOworICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRv
RmlsZShwYXRoLCBkYXRhKCksIHNpemUoKSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIERhdGE6OmFk
b3B0TWFwKFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKQEAgLTEzNSw0MCArMTAz
LDUgQEAgYm9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAgICAg
cmV0dXJuICFtZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBhLnNpemUoKSk7CiB9CiAKLXN0YXRp
YyBTYWx0IG1ha2VTYWx0KCkKLXsKLSAgICBTYWx0IHNhbHQ7Ci0gICAgc3RhdGljX2Fzc2VydChz
YWx0LnNpemUoKSA9PSA4LCAiU2FsdCBzaXplIik7Ci0gICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPigmc2FsdFswXSkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAg
ICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIoKTsKLSAgICByZXR1cm4gc2FsdDsKLX0KLQotT3B0aW9uYWw8U2FsdD4g
cmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHBhdGgpKSB7Ci0gICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgICAgIFNh
bHQgc2FsdDsKLSAgICAgICAgYXV0byBieXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVf
dD4oRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIHNhbHQ7Ci0KLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRo
KTsKLSAgICB9Ci0KLSAgICBTYWx0IHNhbHQgPSBtYWtlU2FsdCgpOwotICAgIGF1dG8gZmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyKTsKLSAgICBpZiAoIUZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAg
ICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkpLCBzYWx0
LnNpemUoKSkpID09IHNhbHQuc2l6ZSgpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
KTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4g
c2FsdDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmgKaW5kZXggZWQxOTFkYzdkZTIyYmE2YmFmODM2OWRlYzhlYzM2YmU4NzAx
OGVhNi4uNjc1MjZjYWQ5NjA3MTRhODhjMWMwOTNlNGE5YzM4ODE0NmI4MGU5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
LmgKQEAgLTExMiw5ICsxMTIsNyBAQCBEYXRhIGFkb3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCk7CiBEYXRhIG1hcEZpbGUo
Y29uc3QgY2hhciogcGF0aCk7CiBEYXRhIG1hcEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAot
dXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47Ci0KLU9wdGlvbmFsPFNhbHQ+IHJl
YWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7Cit1c2luZyBTYWx0ID0gRmlsZVN5c3Rl
bTo6U2FsdDsKIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiwgY29uc3QgU2Fs
dCYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzNkZTA0
MmNkZjQ0YjBmYmE0MjNjYzlkZDdhZmM1Li43YTk5NjE0ZjIzMzViMTUwYzljYWIyMjJjOTM1ZDBi
YmVmNjljODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTYyLDIzICs2Miw2IEBA
IHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiAgICAgfQogfQogCi12b2lkIGRlbGV0ZURpcmVjdG9y
eVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICB0cmF2ZXJzZURpcmVjdG9y
eShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5
cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBkZWxldGVEaXJl
Y3RvcnlSZWN1cnNpdmVseShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCi0gICAgICAgIH0KLSAgICB9KTsKLSAg
ICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQogRmlsZVRpbWVz
IGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElN
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2E1ZjhjYzRmZTM4YTk1NjFjZTFjOGI2MWMx
MGM3NDc5Y2E4NzQyZi4uYzBiNGU4MWI0NzM3NWEwN2ZmOTliZWI0MjEwZGEwMTU4MjJjNzM1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdv
cmtDYWNoZSB7CiBlbnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmls
ZSB9Owogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+
Jik7CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRo
KTsKLQogc3RydWN0IEZpbGVUaW1lcyB7CiAgICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2Fs
bFRpbWUgbW9kaWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBl
MmM2ZDIwMjVhOTZiMjVlYzFlNTZjNDhhZjhkNi4uN2FlZmIzMWMxYWZhNjI3MjQ4NThkODE5NDdh
OTFiZDNlOThmNWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5j
bHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMjA2LDcgKzIwNyw3IEBAIFJlZlB0cjxTdG9yYWdlPiBT
dG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgYmFzZUNhY2hlUGF0aCwgTW9kZSBtb2RlLCBzaXpl
X3QgY2FwCiAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNp
b25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBh
dGgpKTsKKyAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChtYWtlU2Fs
dEZpbGVQYXRoKGNhY2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVy
c2lvbnMoKQogICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAg
ICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9s
ZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRo
KTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZl
cnNpb25QYXRoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5ZTMxMjk3MTk2ZGExMTU1ZjBi
MjJjMzE4MGEwM2M4MzA0ODZlMzcyLi5mNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYw
ODk4OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3Rh
dGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVuY29k
ZXIgPDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHVp
bnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZl
clNpemU7CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTIg
KzE0OSwyNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAgZGVj
b2RlciA+PiBpc051bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1
ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNWU4ZjcwOTA2MWI0MmQxOGFjOTY5MThl
NTk4ZmQ4MjE0MGM0MjhjZC4uMWUwMWE1ZDRlN2E3YjgzMTRhMjMxNGFhODdmNGRkMmRkMzJlYjEw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjg4LDcgKzI4OCw3
IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBz
Y3JpcHQuc2NyaXB0LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsK
KyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRiZjk4NGRiOGM2YjZhY2QzNjJlMjM3NjkxMzA1N2RlNWFi
M2IxYzIuLjYzMTQ1MDRmN2E4OThkNGMwMDA4MTFiYzA4YTljZWEwMjY3ZTdjNjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFNlcnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29y
ayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUz
OiBSZW1vdmVkLgorICAgICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtl
ciByZWdpc3RyYXRpb24gZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRl
ZCBhbmQgaXQgaXMgYSBwYWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBpdAor
ICAgICAgICBoYWQgbm8gdGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3ZSBu
b3cgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBsYXRm
b3Jtcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vydmlj
ZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNlcnZp
Y2Ugd29ya2VyIHRlc3RzIHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2Ug
aW5zdGVhZCBvZiB2ZXJzaW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBkYXRh
YmFzZSBzY2hlbWUgYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUgdGVz
dCB0aGF0IHdhcyByZWx5aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFiYXNl
IGZpbGUgKHdpdGggb2xkIHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWljYWxs
eSBnZW5lcmF0ZSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0IHJl
Z2lzdGVycyBhIHNlcnZpY2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjkgIENhbWVy
b24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBjYWxsaW5n
IGB4Y29kZWJ1aWxkIC1zaG93c2Rrc2Agd2hlcmUgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGMzYWJlOTkzNTcwNTY5MzgyODg0MjY1NzA5ZWE4ZjVkYzU2ZWZiZmYuLmZiYTAz
MmM4NTgzYjlmMTg3ODgxOGJhNjQ5NjkzNDZjNGUwNGI3MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yNjksNyArMjY5LDYgQEAKIAkJNDZBNDRBNTQyNUE3ODMwMzAwRjYxRTE2IC8qIHdl
YmF1ZGlvLWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTQ0QTUzMjVBNzgyREQwMEY2MUUx
NiAvKiB3ZWJhdWRpby1jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UuaHRtbCAqLzsgfTsKIAkJNDZB
NDZBMUEyNTc1NjQ1NjAwQTFCMTE4IC8qIFNlc3Npb25TdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDZBMTkyNTc1NjQ1NjAwQTFCMTE4
IC8qIFNlc3Npb25TdG9yYWdlLm1tICovOyB9OwogCQk0NkE5MTE1OTIxMDhFNjc4MDA3OEQ0MEQg
LyogQ3VzdG9tVXNlckFnZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZBOTExNTgyMTA4RTY2QjAwNzhENDBEIC8qIEN1c3RvbVVzZXJBZ2VudC5t
bSAqLzsgfTsKLQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OwogCQk0NkJCRUExQjI1
Rjk4MzU3MDBENDk4N0EgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTZBMTUxMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVl
dWUuY3BwICovOyB9OwogCQk0NkMxRUE5ODI1NzU4ODIwMDA1RTQwOUUgLyogYWxlcnQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMx
RUE5NzI1NzU4ODA1MDA1RTQwOUUgLyogYWxlcnQuaHRtbCAqLzsgfTsKIAkJNDZDM0FFQjMyM0Qw
RTUyOTAwMUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzNBRUIyMjNEMEU1MEYwMDFCMDY4MCAv
KiBiZWZvcmV1bmxvYWQuaHRtbCAqLzsgfTsKQEAgLTE2NjIsNyArMTY2MSw2IEBACiAJCQkJQkM5
MDk3ODQxMjU1NzFDRjAwMDgzNzU2IC8qIHNpbXBsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyog
U2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCUY0RjQwNUJEMUQ0QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlp
bmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEy
M0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQlGNENGQ0REQTI0OUZDOUU0MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90
ZiBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTIwNDcsNyArMjA0NSw2IEBACiAJCTQ2M0Y0NzIy
MjU1QjQ5QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVy
bWluYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3NE
aWRUZXJtaW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRDNzY0QzIz
MERGODMyMDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsg
cGF0aCA9ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJTaW1wbGVTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3Rp
ZnktcmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBHZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDQ4LDcgKzQwNDUsNiBAQAogCQkJCUY0RTNEODA3MjBG
NzA4RTQwMDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwg
Ki8sCiAJCQkJRjRGQzA3NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWls
ZXN0b25lLmh0bWwgKi8sCiAJCQkJQzlCNEFEMjkxRUNBNkVBNTAwRjVGRUEwIC8qIHNpbGVuY2Ut
bG9uZy5tNGEgKi8sCi0JCQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVCQjFENEMwQ0Y4
MDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywK
IAkJCQlGNENGQ0REODI0OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAqLywKIAkJCQk5
MzYwMjcwNTI1QTNCMjhFMDAzNjc2NzAgLyogc3BlZWNocmVjb2duaXRpb24tYmFzaWMuaHRtbCAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXgg
NzZjYWYyYWQ0MzcyNjYzZDJiZTMxMWJjZmI2M2EwNGQwYzBkMDFmNi4uOGY2NTFkM2VhZTM0MzI5
NzUxYWMzNjFkZDdlMDY0Y2I2MzdlMzc1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTE1MSw0ICsxNTEsMjkgQEAgVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBvcGVuRXhpc3RpbmdGaWxlQW5kRmFpbElmRmlsZUV4aXN0cykKICAgICBFWFBFQ1Rf
RkFMU0UoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKTsKIH0KIAorVEVTVF9GKEZp
bGVTeXN0ZW1UZXN0LCBkZWxldGVOb25FbXB0eURpcmVjdG9yeSkKK3sKKyAgICBhdXRvIGNyZWF0
ZVRlc3RUaWxlID0gW10oY29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIGF1dG8gZmlsZUhh
bmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6V3JpdGUpOworICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlk
KGZpbGVIYW5kbGUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRs
ZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICB9OworCisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIHRlbXBvcmFyeUZpbGU7CisgICAgYXV0byB0ZW1w
b3JhcnlUZXN0Rm9sZGVyID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5VGVzdCIsIHRlbXBvcmFyeUZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZSh0ZW1wb3JhcnlGaWxlKTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKHRlbXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIgfSkpKTsKKyAgICBjcmVhdGVU
ZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVz
dEZvbGRlciwgImZpbGUxLnR4dCIpKTsKKyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUyLnR4dCIp
KTsKKyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKHRlbXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlMy50eHQiIH0pKTsK
KyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRz
KHRlbXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlNC50eHQiIH0pKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5
VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVt
cG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdv
cmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyQmFzaWMubW0KaW5kZXggN2Y0YWM5NmZhN2M3M2E4NDIyYTRjNGU4ZmY3ZTYxMDVl
OWU4ODBkZi4uMjM3ODhlYWUxNDM2N2FlMmYxYTQxNjRlYjRjOWZiYTE0MzA5NDQ3MSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyQmFzaWMubW0KQEAgLTE5NTYsNyArMTk1Niw3IEBAIFRFU1QoU2VydmljZVdvcmtl
cnMsIFN1c3BlbmROZXR3b3JrUHJvY2VzcykKICAgICBhdXRvIHBhdGggPSBzdG9yZS5fY29uZmln
dXJhdGlvbi5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5wYXRoOwogCiAgICAg
TlNVUkwqIGRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9y
eTpZRVNdOwotICAgIE5TVVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl07Cisg
ICAgTlNVUkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXTsKIAogICAgIEVYUEVD
VF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpz
d0RCUGF0aC5wYXRoXSk7CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFRFU1QoV2ViS2l0LCBTZXJ2
aWNlV29ya2VyRGF0YWJhc2VXaXRoUmVjb3Jkc1RhYmxlQnV0VW5leHBlY3RlZFNjaGVtYSkKICAg
ICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOnN3UGF0aC5wYXRoXSk7CiAKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3Jp
ZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMi
XSBlcnJvcjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0
ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKIAogICAg
IGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSA9IHN3UGF0aDsKQEAgLTIzNTUsNiArMjM1NSw3NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBD
bGVhckRPTUNhY2hlQWxzb0luY2x1ZGVzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpCiAgICAg
cmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CiB9CiAKK1RFU1QoU2VydmljZVdvcmtlcnMsIEN1c3Rv
bURhdGFTdG9yZVBhdGhzVmVyc3VzQ29tcGxldGlvbkhhbmRsZXJzKQoreworICAgIE5TVVJMICpz
d1BhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFw
cGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dlYktpdC9TZXJ2aWNlV29ya2Vycy8iIHN0cmluZ0J5
RXhwYW5kaW5nVGlsZGVJblBhdGhdXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIHJlbW92ZUl0ZW1BdFVSTDpzd1BhdGggZXJyb3I6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5w
YXRoXSk7CisKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVj
dG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm5pbF07CisKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzd1BhdGg7CisgICAgYXV0byBkYXRhU3RvcmUg
PSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdl
dCgpXTsKKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6
QCJzdyJdOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7
ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIsIHNjcmlwdEJ5dGVzIH0sCisgICAgfSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgdW5zaWduZWQgdGltZW91dCA9
IDA7CisgICAgd2hpbGUgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXS5wYXRoXSAmJiArK3RpbWVvdXQgPCAyMCkKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfVFJVRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6W3N3UGF0aCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02
LnNxbGl0ZTMiXS5wYXRoXSk7CisKKyAgICAvLyBGZXRjaCBTVyByZWNvcmRzCisgICAgYXV0byB3
ZWJzaXRlRGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBb
V0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsKKyAgICBzdGF0
aWMgYm9vbCByZWFkeVRvQ29udGludWU7CisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRz
T2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1Rf
RVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51
ZSk7CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBGZXRjaCByZWNvcmRz
IGFnYWluLCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3Rv
cmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAgIFtkYXRhU3RvcmUgZmV0Y2hE
YXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAg
ICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250
aW51ZSA9IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUg
PSBmYWxzZTsKKworICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFzaW5nIG91ciBy
ZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0
LgorICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0
KCkgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgeworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIGRhdGFT
dG9yZSA9IG5pbDsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51
ZSk7CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBUaGUgcmVjb3JkcyBz
aG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxkIGhhdmUgYmVl
biBtYWRlLgorICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlmeSB0aGV5IGFy
ZSBnb25lLgorICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVE
YXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFS
ZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgZGF0YVJlY29y
ZHMuY291bnQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKK30KKwogVEVTVChT
ZXJ2aWNlV29ya2VycywgV2ViUHJvY2Vzc0NhY2hlKQogewogICAgIFtXS1dlYnNpdGVEYXRhU3Rv
cmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zLTQuc3FsaXRlMyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTA1ZGM0NmUzYTJjY2ViMzRlZjlhNzY4Y2QwOWViM2Q4
YWYyNDE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDIwNDgwCnpjbWVIT2N+fSF5
KlV2X1A1TSZqUU1hUDlyQWh9XzhMcWRwdnZXUzJ2QjZMVXdHTWJIPDJeY0xecW9QKnBnOFBQdQp6
WHN1aC15Nip9cVImQ3ZfYj1TSnJUMUJnTXNvJE4xQVhyPTRAQTtuaGQ7aUdiV2JTaEFKP0gtSnoz
MHczWFVzQFgKeiN3aVJiKURTOV5MYyRvMTM+SiRLaXkjYUpnOVVGWmMkK1VLT21OSEBfQHdpI1Rg
WXptOUk8ekokemEoPkZ6aDI3CnpqPChqb1FnMT1QZmBBMTkzaiE3ZEVDXlQtdXBuU1R6PUQ3VWYm
Vkg1Q085I3otTXplK2xsMnJAcHVgNFhHN1RYbwp6OHlfc20wSTRgcmllIXI4bEJHeXZBcmRlZyg8
N1BFTDc3TnU4b2FaVGxhYUprTTNSPTtDcGsleWlTIVhDQl9tbT4Kek4kRllBN1VjdF57Z2NIS1gp
dk44QEZIQkBOKU4jWkRicn1OdE8zY2I1PmdzJStDU0AzaUlQOzdSKnE3Yk0xamVNCnpYV31YaGlC
SFItMmx0bWwyfVgzcjc2V2xxZzMxKEZ0S3lJezBAcVVpTH5zKmpzfndoVmh+WEhLc25AcDdUYyVN
ewp6bjN+R0tXSTYoO14hK3RUVCY3M2psR0ViO1poITw8aCFGJXZHP01AUSlZMjB9NHshaVJZSUtB
UU9GXn0qR0xUXmUKemcleyM3MnotKmRQfTImMVU8aXhyRjd7JEZhSjN2OEteN35hUmlCVVFEMip8
bi0/JDkoTVU0cUkrKXA8MnAwYkJHCnooPjlwX3w1K3t6MHV9QDsydmB1WEFZZWhqZmBBMnFlfkd7
ZVUjMWZvKWdqOC1EYFUyY1J+TEtsdkV2ZEk2czBCZQp6UmRUaFUyJldYZjBzKmVjJm8+ciE3WWJW
eDMoMytEM0xgMXVLZEFrbkxtPDl6Knc2TEs1VDdLS1J6cHphLX1nWTQKejNXa3YrcllzYm9hPUVr
d3pXT0hQQnp5ekxoeVpfRk87Vl4qPV51O34+ZU1teypRZig5bmojUHgjWH1IZFFjI05HCnpSRjt+
O2w+eDhfTDFncGBKfUgyOWhkUksmTUMyYlJwY0Y5SylaU1FjWUVQM0I3Xk5mQnJkRzU3Vng9LSpo
X05ITwp6KjFyaF98S05gbDhlZTd3M1E3ZWZ7NzV4UD42TXMzTXZAPGBNWVVRdUBRK3NFRHpwZC1R
OT5DMGlVUHR5Z3B7SEwKejhLVHFfWCN+VHhNSVleYDIhZStaZFNRVl5yPjY5WUBDUEh2UjtnOGI3
PSl2ZypnI1p7NXZAe19ZRTVZLXBARCFtCnpjSE19Pyg3K3pYUjlQVD16O3FlQmQ0RG1fZyV+QU17
T3YzZzdeJjUkPD1KcjYxfmc3RmoxYkJjcnU4NW91d29ydAp6dFJHSWNzVEdOdD1VWFQ9dU1ibj5L
bT04bXFJd2M4MTUlP2IhQVBVVGtnN21PQTwoeytwKEtXQTNLM0UjbFZQTmgKejNgem1aTl56d1VR
Sl5JbFFpM1hWbjZWak5oeTw3IUF7fjQ2TFVocGZEYTYmNyt8MGdkeHRZbHQ1a2ZFfT8yfSY3Cnpe
d3FjfGpoT3VIQFpQZ34majNON155Y21uNns8JUhGaG9hVWF6dnc2PmZ3KmZCck1HY1FrRyhmOGlT
UlQxfGpMdQp6JGRucDJNKDRCOzA2R1pgYyliWTt4VUN1bUdgMis1YSlpVlAqb0s3dTJBRn09UDQh
QlFZNyM8WD82T3g9VVNRLUEKeig2fkJpSWh2WmF2VWReRiVyX3J3PDktKUZhYSUkYSt7RGt3elpv
fXI5bnhJc3N9WDg1VWduQ2pLbW9MSztvPnJECno0SjRwQik4O3laNnFyYGhkcmV7OWJBUjROT15u
U1ZsdERxdDAlMCotQWMzOUA1fF4ya2U3IWpWcExGUCh6TCtOdgp6PEM3c1dBVit+NnA5PS1vREpk
M3sxMDRCd3M5TDdiNU0meWhYQ3sqWW9jUHZxajYhaUczQWlFI3tSaTZlOWlpVngKenJhKy15Z15F
czdpcGlOd0Nne1RGbTAkIzNzRT4hbnlAeSpVMm44VDJHKnJ8cnlqeGZ8S15XKjMoSmVGd2AwK1Y3
CnpIMmcqRmZqOGU+XjQ9U2VOdVgqe2l4UVl4MktoMzlmJSQtTVlldGxXKi1JUCleOCRSSDtWfklp
MklnXj90bW9QVwp6YWhYPEQpX309YHdMNChaNzY2Q0Y7bkFhblZSPWhyLVphc2NVa2ReajFTfCt4
NVU/TyVMQk44NTFweH5KNzZkRV4KelNQLXh2QEwhRVVCJThHVFVwU2xMbjVAUURSPWFVcigtclMj
ZTlmfWZeKm53TmxOVkd3Wnkhd2JATmg4c0NQZEw3CnpEbSorUURoSDZENyRnQih1Mm9QUUhwfG5C
IUV5Y0dANDNnVHFufU5tYGMyJCpae2FZPCU0encka04zdU1XRl5IfAp6enA5TU4zRTZlblhTVCVR
YCFTM15hajBASzdsbFRFJGNTejxRK3V2JCpZZD5qN3hxbDFvZlUmXmZabW89fDJEWnYKejE7QE9Y
UEo0TEJrQTNPWWlGeClSOHh+Smk0UWZjZF9wVn4qeDFtWUwtRVIlLWU4MVA2bXErakJobzV1aWhQ
fjNjCnpCdDFnPHcrV1FwUnJoc1RKJEJ4UyM3VTxXWk8/RHwjJnd6MyNhbE4rNUFKWG8pdXRWPkN3
Wnd5PG5za1RFWkVCawp6QDl9YyU+X0lfc3NwOV9wamIxT0p4MUwlUVFAZE1ESXJebmY0UVZeKmw7
YEhvbn0yaGc4OEBUSUZlPmZeT0U5JWwKej19cTljPG0tfTdOclRKczJSI1RvYUJCUnV5KmomKlF6
eUZqWExiMDZkUjZeNjw7eW88KE5fPGEtfGNnNyE2I24jCnorVEhOantkI15+KDZrQDxocHZWJT9w
ZDRoYDFSNEUpaT4paFlgKH5kK0BibFJ5ckxtQ1h6Y2lrblVraTVTdUszVgp6enAkY3hwOTVsR1VA
N0BGVEtaY1I5RGAwRFItVllmJF5pKTkxJUFoM2BYPEhubn5KSjF6QVpeQUdpY3UtMGxpQjYKekNX
PHMlJlVYX0RMSXUmYEtwK3hATVRTS1BMO3huQzU2WnllXlgtbE8+KGpKIUFiPURabjdATkllQV5e
PkdPaXZECno5cDwkMjNBKHx1Rj80dThPckw+fEc/cUI/P008eDJJIVluIW1xazstR01Ydl9GSClu
Pntjb2dtO2tRWDNRMFYhRgp6dT9LbEZoOEVJPHU2JjAkQmBPPktyX3hsN1RCXzFnYFYzdmNGaWJ8
I3c5dlUwaGU4TFExajxHYyg4V2ZQam00UTUKejlTMT5gMTVxVXxob0FKJiNxTkEoM0gtYlZlb3Yj
NmopMmgpa3slTFc7bCswfClBZmY9SWdMQzg5ZjdOS0RyMlFMCnotITNCfklaO0RXWThwclQ3Ny1p
VEZQRVcqOztTK1Y5WCQkMzxeYnB4I3xle3t1TEl3QDVmK2d2dTtIYDlMcz17dgp6MkF6cnVXM2l5
YXVvdklhRDJnMURMJjdXKUxKOSZvMz1TdkQkQ3RzZUYqKXFtT2IhcEdJN353bmtJbS1UZW9+JnUK
ekVQb2x0VkZEJU9aVSFfRkJeNj8yNSZUTXdRbTlDZiZVYkZBaXBQdGZxZHB9Kl5kbntBQTFSQX5P
VVRAPHNjbEIwCnpTT2c0d0hsTj9AbjxUakE/NEVFOCo1U1psNFM8MmBRTj9DNFMlMlEqQThjTnI3
MT1AYyFPcjR2VTA3S2VxUEQ8PQp6JmhUOUxrUVl2U0lndW9fT3c8bXopNVVmIWote29nMHkoVXJT
cW8kdWx9SEZlPXFrMzBVc0RTeFU/YEdeN2J5QGkKek4kUXxgUkU4bUBISGIqV3B1TXwyXnNobz8w
KnFHPCUhWXorUU1kP30wKzBpU3dVbyNPSU1NeXZ4YlAlIWBOMDFlCnpyTiZXXzgqcnJ5dHpHT2hQ
Jkx3cldgVjxSP1Y1PzdmSyFST2Y/ISZEZnlmPVNIT2JoOTdRWnBfMlplYGoqR3xtPQp6VkgmbFcw
fFM9eFNoUU4oNnd+V0xYeFZRcyNeP1RXelNMPCgoZUA+cTE4YSVNVmRDcElrRkQkV0RBO31hPCNG
a1EKekE1NyUrdH5kMDJFdHRHQTxAKTFfYCFSRnZyKis7P3U9SHJmb0pCUWBLNC1JNT4+KDZ5Pytw
MDhyPVZsYFloVkEhCno0eTEmP3JYKHdHS3deemc/dE9PVD5Sc0hSSGZ+R3lyQSVkcz1IMyhCe1ot
bU5LZ2p2bmxGJilmIUdWaU1jWHt7Ugp6Q3VoLV9GX1NqKDN4MD9WdyUoVFRnWSZkclE/dGhAcyRM
Ry1wU0dzdiRAeHhteCF6R2UqfVohTiluNXhaI2N0MTcKekB+K2w0czBAd1JJbDRofHtxZVEjUUB6
WDc4SVBsQCYjbnpXPUNGUllYV2N2Wm9tKkMqIWs/VEA5eSY0OHMkPiRHCnooeSQwanpSY2ZwcSkr
R2lzNH5PTEMhMSM7VzNpYkc9NWhvM1RWUC14MXwxLVhLQWt4cHotYFAmazA7PG02U1UjTAp6KGAj
eEs0Xk94fUlkbnRIVkpCJXB6TmNfKllJaVYtdTZFKjNmR35WODVlOXpPWDQ3S2V5YExoM1R+aUlO
RzF4WG0Kelo0S19gYXYwbnA4b3dFJjdvPyVCaVJPYzEoMXZGMnorfUdUYU0mIVhEd0N8ZjlDe0Ar
WlNBSE0zK1FPXzRqZVU1CnpnN0IpKURvX3I/b1JrJkBpRGlUYHRpPXV4a190MzVNMWg3dElpTi1s
RFQpKzhubUBNK3wwa2BJWHxAUFEzTTMkawp6WWY+KDZsfjV+bzFwI0teU1dHdT5iNDI7Vy02KWp3
JmoyPURacVptaS0yN25kSUNDUXlXKygrWig4Wmh3JXlOJiQKejBjbThVd3VOWFFySFA3RkU7Ykp2
ckZUNXBmPjNEUUAkYG5MX2p9V0pIfD0oYjckUUxkSzBQS0U4aEk5PXdea1h+CnpxKFJUP1NzV0lP
ZXlIRyRHbTk3e2o2TiV9OV9uN3JNOEtCbiRAc0h8R04paU13ZkFrKF82Y2pBelJ+YG5OYFNHRQp6
OylsV3haWkpeN1crVlY5dDBVdj88KDspWmRSRm9IN2hmTSpRQHlIZSFwdz11PjVDQEJKMXd7N1VT
Z3QmRVgxd1kKeiZ0dzBpaiZsZChiYkI8IypYITYkQktfYHxGd0xeQ3RsSVJHVGVgbnM9b3A9KFF0
UUU0VD9XcVd5LWZKemd7dTV8CnpYRnU3eHtyeUd7SnY9VH5lYldKa3BKPX1BX1pqKjIwcjQhUCZe
ZncjUz4pdmw/ezMma3stTlYlKTFHPndjTVBYOAp6S2JkdVNeTVNIMThKQWN7UU91Sm92bDBWcy1G
aHljZlVucmJjNHdhS2RCYmkwdDhwSDNeLSVuejRJRk96QChzYDUKekdXQ2xHczx1YXNuOWk+bWRF
Q3FZKm8oP1phU1FHTEk2S0FhY0g/a3VufSY8SF9QJj8mU3UoT049Ung0bDZaNih5CnppT35mOXpN
PWNvKVdgRl9GUnFweXY0ZW0tNT1NMSFsSW0+d3ViektQUmFsP3Qqej96bUA3RFYqe2J9eC1pNmQ+
Wgp6azJLZUo9Qz9PUyE+Kl5qWj03LTF1WGEzc0FmWnM8PXI7S0JKSXtHcm1pSnFBRUFhJWB1LU1o
bCQ3WHYmWnI/R1MKejVucyVqbTZ+Kld8SUd0PSs2I05+KjckTz5jVjQrKU19M3tTQWhQMjFDak8m
U2NLejF0dTA9MmoqTnM9RlNOMTR6CnpTYUljRCpHJCY5Rjc7YDxOOGFIaWlzamUhTWVGQjBpdSRH
Xjg1QE16aEFTNDxCQTB4SlVZc3BGKXR6WkczOVUoNwp6O28/Kmg2VERlJW5ERz1aXklKYzdVRC1f
YzFySjxMQ2RfO0RaMTJYcXtucXxHZUN9TklsYHwmb3hJTz13V2I7S3YKemw8bEQmJTlNZi1uZjNm
SFRefE9hMys7cHZaTSZyZ2lneEZ7P2xSPXsoKV8ydDdDYzxKPE1XI0tHd2xDeFZBdCk1Cnp6eF81
TDhqSz1sQT5YWVl2NFVnWll5ayQmTXlUWiRHQGhIQjgrVTZpPVJSI3Y/R0s5RUtENiE5NGAyaHpt
WiNMZQp6S1IxSXdBbHcpNS0wV29ETUlSb1ModCplVGpmUUdHR2V1enswQXJHLUxsVH51KGFvfnw1
MnR1KkMrRjdkIWg+RDcKel4ocyNPZ352UU9jVC1zPktnP30/VDxvSW5FLXpoTFZqV1dwdkw/M01r
djYrYyZnPjNaMTItUkpiXlpGfXs5byoxCnpGVnZtdkxEYWllS0F5NEI+OHRncD4kZ2p+VSRuRDNj
VyV6fSpzdHEtOTtHYksmKSF6dlUkTmwlPVJjbDRWJTFeUQp6eXJZK0VIWDZvPDlBMzkjQHNXMGhs
QGxFRDtzPHEmbipLSzhpSmdzcVh3TElwUXp+b3JxQFZQXmQ4SjJPKm1BM1kKeng/S1VzN3BAS0pZ
KExgZ3M1XlBaK3hvYFh5ZEp5RiYyOEN8JmR3PmZGSTNwOSl6dktDZEJTfkRgfWhjS2JjUyFZCnpR
e0tGVkdPdTxPbCE2eV5AWmY7Tlc4SEc5eDg0fGY7N1MjO3k8X3ooS2FGZU9qXlpQYVJFd1NfM0xE
dFpzfSZVKQp6IW58OUpDbnF4ckRtKkUwWmM+M1pmRDFKdHtrcXhXS3dfNCtifDhoRGxgPlQyMGxA
RGNzYDdwYDt8YHA3NUM+d2IKelZ5YiRVY1FAO0VMaXhkZ1dMfTBYNnVFUkR5IyRTbFRuVCM3b2d0
aF41RHI0UUBVMGtPe0h0XjZ7b0JGRVl9KiFaCno3YUw9MGFyVm83M0N5JGV7WEFgMGs3ZT9wKzdF
VzEoZF9qMmU5bU97OW80bm1IJEk5N2VXI0IqcER6NGpjKVZOWAp6VEd7aXtZVVRJXlEmeHtIOXpX
eiFjPFAzMmBpajhnQSFDTzlJdHtzQHVsYStXO1BUKmtgTH4wTSVicyFPNG5IJF4KelBfSUFFaDx0
TkJxUUBgNHYoKWYqPlg3LU8pRHQ1cko+TzBebWJDaCp8Qzl5OW8wISQtI0NBV1BpKEl6UFRiKzxK
CnpJYDNsUXJ8Z1N3cnpCTylfbHR7dGMpcjReTSRYSTV0YjZXcm98UUx6P0pzcD43Q0lCSjJGfCto
WlhjTXkxXmV0cQp6ckBxVSFUR0hqd2d4YTlqRHxNXlpoUFhYMClCQTZGY3lOaUdeQEcoRCZNPW9G
MGI8JnhGPDI2Q2RoRCYkenhfT18Kek45b3FzZi16UU5EZjYqQUh8RmE4dXRofkBQeXNSVkM7V3t3
QlJqVWVfSWRsR259TmFNREJzSFhRM0Zpd3diJWVuCnpDUU8zRzJDJiF3JX1qJXFEJVdCSVNabn1g
NGJiR2x3YiVkXzh7bDdoQCs+eGgjUmpuMDBSUUpVemB1T3w9TlE7Vwp6cTJ1QlozPXlwfUpOPyhA
YFZGJi1Ue1BXSnw4I3ZILV9xdSRsYSY/WUtrdksla3M9WHtXRW41JEBER0V6cnRFKU0Kem4lMCFv
O3A0Wi1KRm1+fngqWll7eTdKb1h2QXZJO0BKLXJVK19tPUg/Q18jJHA3KH0pZH1adiR4XjBgTHBQ
WE93CnptM1ZPWEduWiRkP3xGJWV1SVlPYCNuPHFuP31gbFA9d0JMPVJLK3R0bFdrcUlHUVlORntM
OGUwXnR+Pyt7ZF82OQp6O3VpT3wlfWpuPmZIPj4qdjdFX21LUCRjJHVgaCtOP1h8YWlicElpeEJD
anZMSW5xVkNAWE5JLWhIRE9JK2ZKODwKej5BZC0zYWk+JWFvajZ3OWYyQlRtXjNgXkl2KEV8YzRF
ND9reyVybVVQcCheeWY7PF97YW1pZylkP3g0OXRWPzxGCno4Jk1PJUsrYkthJjRGV19wWGo/eXMl
QU5UPlItNVIoelgjI3p2Wm9wVWMtfGcrKmRlcyZpRGglZUFgYlA+ZT01OAp6YVh2MklyTTYzdC1y
bGQjPHUzemglZVE2ZHBtMW4lVnBzdC1iWWU3Zl9rWXgwWnlxbEFDXyVHMEdGKzhMZ1dsVmQKekpN
WiNeI1k9bG1EJipRXmNmOGF3O2Jxc04pJSFkYE9KV19mNH05SipAfWQocUUjZyg+OHxqd0hpXi15
WCtoXlhCCnoxVyleQiNDTWwmVyQyNX4tfGplQGBENTBeZzxhJm9lT2BGez5mKSNxdEhMK3BpI3Bk
PWpfNEdtbUU2aW81VFdmSgp6ND5+a0ttPG9RWTYxakQqemszc04zcD0qWSkycGkyJVd3MGhoXkJt
RUdkWUNNJV5rMzw/c3drJlEqSEI/SWA5MjcKelFXbWBAekduMUtlbkdzdGRBUi1rc1c8bUtXXmI9
QWFoe3A9RyFnJHtjVVJVQmh4b0lJPStkKkRURUMkKUtCP1RACnomKXJ0SWBCOzAyOzs2TyVmeiFE
ITkoM0hIYTktU1ZAeElEOFZ7I1lDUFcrcygrU2s5UkR5bzVERDlnTz8peXcrPQpMbSp1N1JJYHNW
Py1ieSpfCgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBmNjE2
YTc0YjQxN2Y2MWU5YWEzZGQyNWM4YmU4NmM5ZTJhMmZkMjhhLi42MGI3MjJjM2M5NDljN2I4NWU2
NGQyZjNkYTZiZjM1N2JjODBiYWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocy5tbQpAQCAtMjkwLDYwICsyOTAsNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzV2l0aFByZXdhcm1pbmcpCiAgICAgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nOjpZZXMpOwogfQogCi1URVNUKFdl
YktpdCwgQ3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCi17Ci0g
ICAgLy8gQ29weSB0aGUgYmFrZWQgZGF0YWJhc2UgZmlsZXMgdG8gdGhlIGRhdGFiYXNlIGRpcmVj
dG9yeQotICAgIE5TVVJMICp1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAIlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQiIHdpdGhFeHRlbnNpb246
QCJzcWxpdGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotCi0g
ICAgTlNVUkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0Nh
Y2hlcy9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3JrZXJz
LyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOwotICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOwotICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6c3dQYXRoLnBhdGhdKTsKLQotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZ
RVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVy
cm9yOm5pbF07Ci0KLSAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkgPSBzd1BhdGg7Ci0gICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5T
KFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0KLSAgICAvLyBGZXRjaCBTVyByZWNv
cmRzCi0gICAgYXV0byB3ZWJzaXRlRGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBp
bml0V2l0aEFycmF5OkBbV0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
c11dKTsKLSAgICBzdGF0aWMgYm9vbCByZWFkeVRvQ29udGludWU7Ci0gICAgW2RhdGFTdG9yZSBm
ZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3Jkcykgewot
ICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlU
b0NvbnRpbnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlYWR5VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAv
LyBGZXRjaCByZWNvcmRzIGFnYWluLCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2Ug
dG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgotICAgIFtk
YXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJl
Y29yZHMpIHsKLSAgICAgICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAg
ICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmls
OwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICBy
ZWFkeVRvQ29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3Jkcywg
cmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVl
c3QgaXMgaW4gZmxpZ2h0LgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNp
dGVEYXRhVHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21w
bGV0aW9uSGFuZGxlcjpeKCkgewotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAg
IH1dOwotICAgIGRhdGFTdG9yZSA9IG5pbDsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlYWR5VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAv
LyBUaGUgcmVjb3JkcyBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sg
c2hvdWxkIGhhdmUgYmVlbiBtYWRlLgotICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRv
IHZlcmlmeSB0aGV5IGFyZSBnb25lLgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNP
ZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5
PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9F
USgwVSwgZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVl
OwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVl
KTsKLX0KLQogVEVTVChXZWJLaXQsIEN1c3RvbURhdGFTdG9yZURlc3Ryb3lXaGlsZUZldGNoaW5n
TmV0d29ya1Byb2Nlc3NEYXRhKQogewogICAgIE5TVVJMICpjb29raWVTdG9yYWdlRmlsZSA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0
LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvQ29va2llU3RvcmFnZS9Db29raWUuRmls
ZSIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6Tk9dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424708</attachid>
            <date>2021-03-30 15:50:26 -0700</date>
            <delta_ts>2021-03-30 15:52:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210330155025.patch</filename>
            <type>text/plain</type>
            <size>119402</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzOGUyZGNmODQ0MmJiNTQzNTYyY2E2
ODRlZTEwZGU3NDNkYjA5NDUuLmUwOWUwYzhlNjcxMzJjYTRlMjhlZmU5ODg0NmU4YzkwZmY3ZDYx
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpyZWFkT3JNYWtlU2FsdCk6CisgICAgICAg
IE1vdmUgcmVhZE9yTWFrZVNhbHQoKSBmcm9tIE5ldHdvcmtDYWNoZURhdGEgdG8gRmlsZVN5c3Rl
bSBzbyB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldworICAgICAgICBTV1NjcmlwdFN0
b3JhZ2UuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpNYXBwZWRGaWxlRGF0YSk6CisgICAgICAgIFVwZGF0ZSBNYXBw
ZWRGaWxlRGF0YSdzIG9wZXJhdG9yIGJvb2woKSB0byByZXR1cm4gdHJ1ZSBpZiBtYXBwaW5nIHN1
Y2NlZWRlZCBidXQgdGhlIGZpbGUgc2l6ZQorICAgICAgICB3YXMgMC4gSXQgaXMgdXNlZnVsIHRv
IGRpc3Rpbmd1aXNoIGFuIGVycm9yIGZyb20gdGhlIGZpbGUgYmVpbmcgZW1wdHkgKHdoaWNoIGlz
IGEgdmFsaWQgY2FzZSkuCisKIDIwMjEtMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgdGVybWluYXRlX3dpdGhfcmVhc29uIGlu
c3RlYWQgb2YgeHBjX2Nvbm5lY3Rpb25fa2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2NDAwNWYxNjlkNzhj
MDhlMWRjMmE4YjlmODE1NjE1ZThjMjczYjkuLjZjNzMzYzQwMTVkMzNiYTljYTA5ODgxYjU1YWRi
NmZkM2Y0YzBiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYgQEAKKzIwMjEtMDMtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBz
Y3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAg
IDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdvcmsgcHJvY2VzcyB3b3VsZCBzdG9yZSBz
ZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRlIGRhdGFiYXNlLgorICAgICAgICBXaGVu
IHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMsIHdlIHdvdWxkIGxvYWQgYWxsIHRob3Nl
IHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAgICAgaW50byBtZW1vcnkuIFRoaXMgd291
bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4K
KworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhlIGFwcHJvYWNoIGlzIHRoaXMgcGF0
Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2VwYXJhdGUKKyAgICAgICAgZmlsZXMgb24g
dGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVuLCB3aGVuIGxvYWRpbmcgdGhlbSwgd2Ug
Y2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBhbmQgZ3JlYXRseSByZWR1Y2UgZGlydHkg
bWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2VydmljZSB3b3JrZXIgcHJv
Y2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MpIGFsc28ga2VlcHMgYQor
ICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGZvciB0
aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcuIE1vcmUKKyAgICAgICAgd29yayB3aWxs
IGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZXh0ZW5k
IHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRob3NlIHNjcmlwdHMuIFRoaXMg
d291bGQKKyAgICAgICAgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2FnZSBvbiB0aGUgV2ViQ29udGVu
dC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3ZWxsLiBJIGFtCisgICAgICAgIGRvaW5n
IHRoaXMgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNlIHBhdGNoIHNpemUgYW5kIGZhY2lsaXRh
dGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlcmUgc2hvdWxkIGJlIG5vIFdl
Yi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2VkCisgICAgICAgIGRpcnR5
IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gc2VydmljZSB3b3JrZXJz
IGFyZSB1c2VkLgorCisgICAgICAgIEkgZGlkIG1hbnVhbCBtZW1vcnkgdGVzdGluZyB3aXRoIGEg
dmVyeSBsYXJnZSBzZXJ2aWNlIHdvcmtlciB0aGF0IGhhZCBvbmUgfjEwME1CIG1haW4KKyAgICAg
ICAgc2NyaXB0LCBpbXBvcnRpbmcgYW5vdGhlciB+MTAwTUIgc2NyaXB0LgorCisgICAgICAgIEhl
cmUgYXJlIHRoZSBtZW1vcnkgcmVzdWx0cyB3aXRob3V0IG15IGNoYW5nZToKKyAgICAgICAgLSBO
ZXR3b3JraW5nIChEaXJ0eSk6IDIzOE1CIChjb2xkKSAvIDMzMU1CICh3YXJtKQorICAgICAgICAt
IFdlYkNvbnRlbnQgKERpcnR5KTogNDQxTUIgKGNvbGQpIC8gODU3TUIgKHdhcm0pCisKKyAgICAg
ICAgSGVyZSBhcmUgdGhlIG1lbW9yeSByZXN1bHRzIHdpdGggbXkgY2hhbmdlOgorICAgICAgICAt
IE5ldHdvcmtpbmcgKERpcnR5KTogMjJNQiAoY29sZCkgLyAxNE1CICh3YXJtKQorICAgICAgICAt
IFdlYkNvbnRlbnQgKERpcnR5KTogNDQwTUIgKGNvbGQpIC8gNDM4TUIgKHdhcm0pCisKKyAgICAg
ICAgVGhpcyBzaG93cyB0aGF0IEFMTCBtZW1vcnkgZnJvbSB0aGUgc2NyaXB0cyBpbiB0aGUgbmV0
d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBtYXJrZWQKKyAgICAgICAgYXMgZGlydHkuIFdlIGFs
c28gc2VlIGEgc2lnbmlmaWNhbnQgcHJvZ3Jlc3Npb24gaW4gdGhlIFdlYlByb2Nlc3MgaW4gdGhl
IHdhcm0gY2FzZSwgc2luY2UKKyAgICAgICAgdGhlIHNjcmlwdHMgYXJlIGNvbWluZyBmcm9tIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgYXMgc2hhcmVkIG1lbW9yeSBpbiB0aGlzIGNhc2UuIFRoZXJlIGlz
CisgICAgICAgIG5vIHByb2dyZXNzaW9uIGluIHRoZSBXZWJQcm9jZXNzIGluIHRoZSBjb2xkIGNh
c2UgeWV0LCBzaW5jZSB0aGUgc2NyaXB0IHdlcmUganVzdAorICAgICAgICBkb3dubG9hZGVkIGFu
ZCBhcmUgY29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzLiBJ
biBhIGZvbGxvdy11cCwgdGhlCisgICAgICAgIG5ldHdvcmsgcHJvY2VzcyBjb3VsZCBzZW5kIHNo
YXJlZCBtZW1vcnkgYmFjayB0byB0aGUgV2ViUHJvY2VzcywgYWZ0ZXIgc2F2aW5nIHRoZSBzY3Jp
cHRzCisgICAgICAgIHRvIGRpc2ssIHNvIHRoYXQgdGhlIFdlYlByb2Nlc3MgY2FuIHJlcGxhY2Ug
dGhlIGNvcGllcyBvZiBpdHMgc2NyaXB0cyBhbmQgc2F2ZSBtb3JlIG1lbW9yeS4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MgdG8gdGhlIHByb2pl
Y3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckFnZW50OjpnZXRJbml0aWFs
aXphdGlvbkluZm8pOgorICAgICAgICBDb252ZXJ0IHRoZSBzY3JpcHQgdHlwZSBmcm9tIFNoYXJl
ZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgRml4IGFzc2VydGlvbnMgdGhhdCB3ZXJlIGhpdHRpbmcgd2hlbiBjb21wYXJpbmcgdG8g
ZW1wdHkgU2hhcmVkQnVmZmVycyAob2Zmc2V0IHdvdWxkIGJlIDAKKyAgICAgICAgYW5kIHNpemUg
d291bGQgYmUgMCkuIFRoaXMgd2FzIGNhdWdodCBieSBBUEkgdGVzdHMgc2luY2Ugd2UgaGF2ZSBz
b21lIHNlcnZpY2Ugd29ya2VyIEFQSQorICAgICAgICB0ZXN0cyB0aGF0IHVzZSBlbXB0eSB3b3Jr
ZXIgc2NyaXB0cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkp
OgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9uIGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZl
ciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJzYSwgaW4gdGhlCisgICAgICAgIHNlcnZpY2Ug
d29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRv
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1RvU2NyaXB0QnVmZmVyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNo
YXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5IGNhbiBob2xkCisgICAg
ICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0gQWRkIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkg
LyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxpdHkgZnVuY3Rpb25zIHRvCisgICAgICAgICAg
Y29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9tIHNjcmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0
byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNUYWJsZVNjaGVtYSk6Cisg
ICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEgYW5kIGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3
ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNp
ZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVhZCwgdGhvc2Ugc2NyaXB0cworICAgICAgICBh
cmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZpbGVzeXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFn
ZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNv
ZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1
Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRhCisgICAgICAgIG1lbWJlcnMgb2YgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCwgZXhjZXB0IGZvciB0aGUgYWN0dWFs
CisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5vdyBzYXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRl
ZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAgICAgIGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhh
c2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ugd2Ugbm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAg
ICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJjZXMgaW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0
aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJhdGVseSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisK
KyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0U291cmNlcyk6CisgICAgICAgIFV0aWxpdHkg
ZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRvIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlw
dEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0aG91dCB0aGUgc2NyaXB0CisgICAgICAgIHNv
dXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNRTGl0ZSBkYXRhYmFzZS4KKworICAgICAgICAo
V2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2spOgorICAgICAgICBVdGlsaXR5
IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hNYXAgb2YgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBmcm9tIGEgSGFzTWFwIG9mIEltcG9ydGVkU2Ny
aXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhlIFNRTGl0ZURhdGFiYXNlLiBUaGUKKyAgICAg
ICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBT
V1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0
aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNrZ3JvdW5kIHF1ZXVlIGZvciB0aHJlYWQtc2Fm
ZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3Rv
cmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIFJldHVybnMgdGhlIHBhdGggb24gdGhlIGZp
bGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBhcmUgc3RvcmVkLgorCisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSk6CisgICAg
ICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkgYSBTV1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVy
biBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxs
KToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFyIGFsbCB0aGUgc2VydmljZSB3b3JrZXIgc2Ny
aXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRoZSBkYXRhYmFzZSwKKyAgICAgICAgbm93IHRo
YXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKyAgICAgICAgLSBTdG9wIHN0b3Jpbmcg
dGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxpdGUgZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0
b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZp
YSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0gSW1wcm92ZSBsb2dnaW5nCisgICAgICAgIC0g
V2hlbiBkb25lIHN0b3JpbmcgdGhlIHNjcmlwdHMgdG8gZGlzaywgc2VuZCB0aGVzZSBuZXcgbW1h
cCdkIHZlcnNpb25zIGJhY2sgdG8gdGhlCisgICAgICAgICAgU1dTZXJ2ZXJXb3JrZXIgb24gdGhl
IG1haW4gdGhyZWFkLCBzbyB0aGF0IGl0IGNhbiByZXBsYWNlIGl0J3MgaGVhdnkgc2NyaXB0IHNv
dXJjZXMgd2l0aAorICAgICAgICAgIHRoZXNlIG9uZXMuIFRoaXMgaGVscHMgcmVkdWNlIG1lbW9y
eSB1c2FnZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9y
dFJlY29yZHMpOgorICAgICAgICAtIExvYWQgdGhlIHNjcmlwdCBzb3VyY2VzIGZyb20gdGhlIGRp
c2sgdmlhIFNXU2NyaXB0U3RvcmFnZSwgbm93IHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyCisgICAg
ICAgICAgc3RvcmVkIGluIHRoZSBTUUxpdGUgZGF0YWJhc2UuCisgICAgICAgIC0gSW1wcm92ZSBs
b2dnaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25TdG9yZTo6ZGlkU2F2
ZVdvcmtlclNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuaDoKKyAgICAgICAgUGFzcyBzY3JpcHRzIHRoYXQgd2VyZSBzYXZl
ZCB0byBkaXNrIGZyb20gdGhlIHN0b3JlIHRvIHRoZSBTV1NlcnZlcldvcmtlciBzbyB0aGF0IGl0
CisgICAgICAgIGNhbiByZXBsYWNlIGl0cyBzY3JpcHRzIHNvdXJjZXMgd2l0aCB0aG9zZSBuZXcg
bW1hcCdkIHZlcnNpb24sIGluIG9yZGVyIHRvIHNhdmUgbWVtb3J5LgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omhhc2hVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpT
V1NjcmlwdFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZWdp
c3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9y
YWdlOjpzY3JpcHRQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oOiBBZGRlZC4KKyAgICAgICAg
QWRkIFNXU2NyaXB0U3RvcmFnZSB0byBkZWFsIHdpdGggdGhlIHN0b3JhZ2UgLyByZXRyaWV2YWwg
b2YgU2VydmljZQorICAgICAgICBXb3JrZXIgc2NyaXB0cyB0byAvIGZyb20gZGlzaywgYXMgZmls
ZXMgb24gdGhlIGZpbGUgc3lzdGVtLiBXaGVuCisgICAgICAgIGdvaW5nIGEgcmV0cmlldmFsLCB3
ZSByZXR1cm4gYSBzY3JpcHQgYXMgYSBTaGFyZWRCdWZmZXIgd2hpY2ggdXN1YWxseSBjb250YWlu
cworICAgICAgICBtbWFwJ2QoKSBkYXRhICh3ZSBkb24ndCB1c2UgbW1hcCgpIGZvciBmaWxlcyB0
aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIFBBR0VfU0laRSkuCisgICAgICAgIFRoZSBzY3JpcHRz
IHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVzaWRlIHRoZSBkYXRhYmFzZS4gVGhlIHNj
cmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBvcmlnaW4gKHVzaW5nIFNIQTI1NiBvZiB0
aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lIHdpdGggc2FsdCksIGFuZCB0aGVuIGJ5IHJlZ2lzdHJh
dGlvbiAoYnkKKyAgICAgICAgdXNpbmcgU0hBMjU2IG9mIHRoZSByZWdpc3RyYXRpb24gc2NvcGUg
YXMgc3ViZm9sZGVyIG5hbWUgd2l0aCBzYWx0KS4gVGhlIGZpbGUgbmFtZSBmb3IgdGhlIHNjcmlw
dAorICAgICAgICBpcyBhIFNIQTI1NiBvZiB0aGUgc2NyaXB0IFVSTCB3aXRoIHNhbHQuCisKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgIFBh
c3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0aGUg
U1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0
cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZl
IG1lbW9yeS4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6Cisg
ICAgICAgIENvbnZlcnQgc2NyaXB0IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAg
ICAgICAgQ29udmVydCBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRT
Y3JpcHRSZXNvdXJjZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgVGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgZm9yIGNvbnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRh
a2luZworICAgICAgICBhbGwgaXRzIGRhdGEgbWVtYmVycyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJz
LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHQgY29uc3QpOgorICAgICAgICBVc2UgU2hh
cmVkQnVmZmVyIHR5cGUgZm9yIHNjcmlwdCBpbnN0ZWFkIG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0
IHdlIGNhbiBob2xkIG9uIHRoZQorICAgICAgICBtbWFwJ2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9y
eSB1c2FnZS4KKwogMjAyMS0wMy0zMCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIE5vdyBQbGF5aW5nIGNvbnRlbnQgaXNuJ3QgdXBkYXRlZCB3aGVuIG1lZGlh
IHNlc3Npb24ncyBNZXRhZGF0YSBpcyBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NzA3OGVmMmQzMWVk
ODU4MGJlMjMwNTg5NjZmMzU3OTA3ZGNiMTI3Li5jODQ0NjkzNTk2ZWMzOGJmY2I5NmM5OWU2Mzkx
OWZkN2ZiYjQ0Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgc2Ny
aXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgwOAorICAgICAgICA8
cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0U2NyaXB0UmVzb3Vy
Y2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBwYXNzIHRoZSBJbXBv
cnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVj
dG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAgICAgICBEcm9wIGRl
bGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5kIHVzZSB0aGUgZXhp
c3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoKSBpbiB3
dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6Om1hcFRvRmls
ZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhlIG1hcFRvRmlsZSgpIGxvZ2ljIHRv
IFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIFVwZGF0ZSBTaGFy
ZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlzdGluZ3Vpc2ggYSBudWxsIFNoYXJl
ZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBXZSBub3cgdXNlIFNoYXJlZEJ1ZmZl
ciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291cmNlcworICAgICAgICBhbmQgaXQg
aXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0byBiZSBlbXB0eSAoYW5kIHRoZXkg
YXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0cykuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3Vy
Y2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNlIElQQworICAgICAgICBmb3IgY29u
dmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0ZWRTY3JpcHQgZGF0YSBtZW1iZXJz
IHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMzAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBOb3cgUGxheWluZyBjb250ZW50IGlzbid0IHVwZGF0ZWQgd2hlbiBt
ZWRpYSBzZXNzaW9uJ3MgTWV0YWRhdGEgaXMgbW9kaWZpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5k
ZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2YTFmZjBiZS4uMDM0NjIwNmYyMjJl
ZDAwNTUyYmIzZGM0MTBmMmE4MmUyMjk5NzA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KQEAgLTMxOSw2ICszMjAsNyBAQCBib29sIE1hcHBlZEZp
bGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIEZpbGVPcGVu
TW9kZSBvcGVuTQogICAgIH0KIAogICAgIGlmICghc2l6ZSkgeworICAgICAgICBtX2lzVmFsaWQg
PSB0cnVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM0Nyw2ICszNDksNyBA
QCBib29sIE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIEZpbGVPcGVuTW9kZSBvcGVuTQogCiAgICAgbV9maWxlRGF0YSA9IGRhdGE7CiAgICAg
bV9maWxlU2l6ZSA9IHNpemU7CisgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDA4LDUgKzQxMSwxMDEgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgIioiX3Mp
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChmaWxlSXNE
aXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAg
ICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBGdW5jdGlvbjx2b2lkKGNvbnN0IEZ1
bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+Jik+JiYgYXBwbHksIFBsYXRmb3Jt
RmlsZUhhbmRsZSogb3V0cHV0SGFuZGxlKQoreworICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZp
bGVFeGlzdHMgPSB0cnVlOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZp
bGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyLCBmYWlsSWZGaWxlRXhpc3RzKTsKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVG
aWxlKGhhbmRsZSwgYnl0ZXNTaXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjpt
YWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKKyAgICBib29sIHN1Y2Nlc3M7Cisg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShoYW5kbGUsIEZpbGVTeXN0
ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
U2hhcmVkLCBzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
dm9pZCogbWFwID0gY29uc3RfY2FzdDx2b2lkKj4obWFwcGVkRmlsZS5kYXRhKCkpOworICAgIHVp
bnQ4X3QqIG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFwKTsKKworICAgIGFwcGx5
KFsmbWFwRGF0YV0oY29uc3QgdWludDhfdCogY2h1bmssIHNpemVfdCBjaHVua1NpemUpIHsKKyAg
ICAgICAgbWVtY3B5KG1hcERhdGEsIGNodW5rLCBjaHVua1NpemUpOworICAgICAgICBtYXBEYXRh
ICs9IGNodW5rU2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisKKyNpZiBPUyhX
SU5ET1dTKQorICAgIERXT1JEIG9sZFByb3RlY3Rpb247CisgICAgVmlydHVhbFByb3RlY3QobWFw
LCBieXRlc1NpemUsIEZJTEVfTUFQX1JFQUQsICZvbGRQcm90ZWN0aW9uKTsKKyAgICBGbHVzaFZp
ZXdPZkZpbGUobWFwLCBieXRlc1NpemUpOworI2Vsc2UKKyAgICAvLyBEcm9wIHRoZSB3cml0ZSBw
ZXJtaXNzaW9uLgorICAgIG1wcm90ZWN0KG1hcCwgYnl0ZXNTaXplLCBQUk9UX1JFQUQpOworCisg
ICAgLy8gRmx1c2ggKGFzeW5jaHJvbm91c2x5KSB0byBmaWxlLCB0dXJuaW5nIHRoaXMgaW50byBj
bGVhbiBtZW1vcnkuCisgICAgbXN5bmMobWFwLCBieXRlc1NpemUsIE1TX0FTWU5DKTsKKyNlbmRp
ZgorCisgICAgaWYgKG91dHB1dEhhbmRsZSkKKyAgICAgICAgKm91dHB1dEhhbmRsZSA9IGhhbmRs
ZTsKKyAgICBlbHNlCisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisg
ICAgcmV0dXJuIG1hcHBlZEZpbGU7Cit9CisKK3N0YXRpYyBTYWx0IG1ha2VTYWx0KCkKK3sKKyAg
ICBTYWx0IHNhbHQ7CisgICAgc3RhdGljX2Fzc2VydChzYWx0LnNpemUoKSA9PSA4LCAiU2FsdCBz
aXplIik7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPigmc2FsdFswXSkgPSBjcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgICpyZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICBy
ZXR1cm4gc2FsdDsKK30KKworT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpKSB7Cisg
ICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgICAgIFNhbHQgc2FsdDsKKyAgICAgICAgYXV0byBi
eXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3RlbTo6cmVhZEZyb21G
aWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXpl
KCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgICAgICBpZiAo
Ynl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHNhbHQ7CisKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKKyAgICB9CisKKyAgICBTYWx0IHNh
bHQgPSBtYWtlU2FsdCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVt
OjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlLCBGaWxlU3lz
dGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNlcik7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpp
c0hhbmRsZVZhbGlkKGZpbGUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYm9vbCBzdWNj
ZXNzID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZp
bGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpKSA9
PSBzYWx0LnNpemUoKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHNhbHQ7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdmNmI5YzMyMTQ3MjM4NGVmNGM0Li5k
YTVlMzk1ZTVkYTVjMzZhMDRkMzI0ZjhiYjk5ZTQxZGMwNzA3NDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
CkBAIC0xNDQsNiArMTQ0LDkgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKIAogaW5saW5lIGJvb2wgaXNI
YW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFu
ZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAordXNpbmcgU2FsdCA9IHN0ZDo6
YXJyYXk8dWludDhfdCwgOD47CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8U2FsdD4gcmVh
ZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKKwogLy8gUHJlZml4IGlzIHdoYXQgdGhl
IGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsK
IFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vz
c1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwpAQCAtMTkw
LDE0ICsxOTMsMTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmaWxlbmFtZUZvckRpc3Bs
YXkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByb2Ft
aW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29s
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKIFdURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqY3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpOwotV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYK
IAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJik7CisKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3Ry
aW5nJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzU2FmZVRvVXNlTWVtb3J5TWFwRm9y
UGF0aChjb25zdCBTdHJpbmcmKTsKQEAgLTIxNiw3ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOwogICAgIE1hcHBlZEZpbGVEYXRhJiBv
cGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX2ZpbGVEYXRhOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGNvbnN0IHZvaWQqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KIApAQCAtMjI3LDYgKzIzMCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG1fZmlsZVNp
emUgeyAwIH07CisgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIE1h
cHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBN
YXBwZWRGaWxlTW9kZSBtYXBNb2RlLCBib29sJiBzdWNjZXNzKQpAQCAtMjQyLDYgKzI0Niw3IEBA
IGlubGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgRmlsZU9wZW5Nb2RlIG9wCiBpbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZp
bGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCiAgICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCiAgICAgLCBtX2ZpbGVTaXplKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCisgICAgLCBtX2lzVmFsaWQoc3RkOjpleGNo
YW5nZShvdGhlci5tX2lzVmFsaWQsIGZhbHNlKSkKIHsKIH0KIApAQCAtMjQ5LDkgKzI1NCwxNCBA
QCBpbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVk
RmlsZURhdGEmJiBvdGhlcikKIHsKICAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhl
ci5tX2ZpbGVEYXRhLCBudWxscHRyKTsKICAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShv
dGhlci5tX2ZpbGVTaXplLCAwKTsKKyAgICBtX2lzVmFsaWQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1faXNWYWxpZCwgZmFsc2UpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8gVGhpcyBjcmVh
dGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBzIGl0LCB3cml0ZSB0aGUgcHJvdmlkZWQgZGF0
YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVkIGZpbGUuCisvLyBUaGlzIGZ1bmN0aW9uIGZh
aWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIGF0IHRoZSBkZXN0aW5hdGlvbiBwYXRoLgor
V1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9v
bChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKT4mJiBhcHBseSxQbGF0Zm9ybUZpbGVIYW5kbGUq
ID0gbnVsbHB0cik7CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNGRkNDYzZTAyM2FkZDZlYzI0YWNkZDE5OGY5
OTFhMGZmZjcxMWUzLi4zZTAxNzUzYjZlM2I3MjRjZmQ4NzMyNjc4ODY1NzkyNWQ3NTE0MTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjY4NSw2ICsyNjg1LDcgQEAgd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCit3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGEwNDAwYzM3MDdiYTYzMThkOTgwMDg3MTc5ZjdiZGZlODUwOTlkZDkuLjM5NzFmMzBj
MDc5OWU3NDk1ODlhOTAwNWFlODQyODg3OGYyYmRjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzEsNiArMTI3MSw3IEBA
CiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0
QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYwRTMw
NzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9u
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlz
c2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3
MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkx
IC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUy
MUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdp
bmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0Iw
MDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0
MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5o
ICovOyB9OwpAQCAtODI0MSw2ICs4MjQyLDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhF
IC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVy
dGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBD
M0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2MEU1OURGMDA2
RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3
M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2Vy
dmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2Jz
ZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFBQTIwODEw
OTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIx
QUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNzE4LDYgKzIwNzIxLDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4
NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdF
MkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJE
IC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyog
U1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyog
U1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNX
U2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIu
aCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAgKi8sCkBAIC0zNTMwOCw2ICszNTMxMyw3IEBACiAJCQkJNDY2NThEQzkxRkEyNEI4NzAwRjdE
RDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNFMjE0
MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpv
YlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRERUQgLyog
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2Vu
dC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4MjUzNjkxM2QxMS4uNGEz
ZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2Vy
QWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQ
cm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNlcnZpY2VXb3JrCiAgICAg
ICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGVudGlmaWVyKCkp
CiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5z
ZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0VXJsKG1fc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0VVJMLnN0cmlu
ZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJl
YWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENvbnRlbnQoc2NyaXB0QnVm
ZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERh
dGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJjNGFhOTgzYzg3M2NmMTNkNTQzZGQxYzc2
NjRjY2Y2NjVkYWE5Li41ODdiYWViMTFlNDM0N2JjNjBlYTIzMjk4MjU1ZTM5NThmMWM4N2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTcwLDE1ICs3MCwx
NSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFw
cGVkQnVmZmVyKQogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRG
aWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCiB7Ci0gICAgYm9v
bCBtYXBwaW5nU3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRG
aWxlRGF0YShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgbWFw
cGluZ1N1Y2Nlc3MpOwotCi0gICAgaWYgKCFtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLQotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsK
KyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5n
U3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Cisg
ICAgfQorICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxl
UGF0aCk7CiB9CiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rv
cjxjaGFyPiYmIHZlY3RvcikKQEAgLTI4MSw4ICsyODEsOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8IHRoaXNT
ZWdtZW50LnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVChvdGhlck9mZnNldCA8IG90aGVyU2VnbWVu
dC5zaXplKCkpOworICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8PSB0aGlzU2VnbWVudC5zaXpl
KCkpOworICAgICAgICBBU1NFUlQob3RoZXJPZmZzZXQgPD0gb3RoZXJTZWdtZW50LnNpemUoKSk7
CiAKICAgICAgICAgc2l6ZV90IHRoaXNSZW1haW5pbmcgPSB0aGlzU2VnbWVudC5zaXplKCkgLSB0
aGlzT2Zmc2V0OwogICAgICAgICBzaXplX3Qgb3RoZXJSZW1haW5pbmcgPSBvdGhlclNlZ21lbnQu
c2l6ZSgpIC0gb3RoZXJPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CmluZGV4IDIzYmY1YThlZGI0YzFlMzAyOWI3Y2I0NzQ5ZWFjZDU1MDFiYTkxOTQuLjNjMjIzYTJm
ZjM5NjllNjkzNjg2MzJjODA4YTI3Mzk3ZDlmMjc0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCkBAIC02OCw3ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZp
bGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNo
YXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAogICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDRkNDc0ZjE2
ZTU4OGRkMDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUxMDA0MGJlMjg1OTIxMGI3MmNl
ZDIzMTgyYWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTYwLDcgKzYx
LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRSZXNv
dXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2Ut
PnNjcmlwdCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVmZmVyVG9TdHJp
bmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwg
PSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlN
RVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAg
ICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
ZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWlt
ZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1f
cmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9TY3JpcHRCdWZmZXIo
c2NyaXB0KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQog
I2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5k
ZXggMTZkZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTliNWVkZi4uMWVhNTkwMWJkOWQy
ZmQ5Yzc5M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgam9iRGF0YUlkZW50aWZpZXIs
CiAgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwKICAgICAgICAgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRlZENvcHkoKSwKKyAgICAgICAg
c2NyaXB0LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5mby5pc29sYXRlZENvcHkoKSwK
ICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29weSgpLAogICAgICAgICBy
ZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYgKzQ4LDIwIEBAIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGF1
dG8gaXQgPSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVuZCgpOyArK2l0KQorICAgICAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5zZWdtZW50LT5kYXRhKCksIGl0
LT5zZWdtZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
CitSZWY8U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2NWVlNDgwYTk2MWIxMGYxZGJk
YzdlLi44NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYwZTU5MmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZmZXIm
KTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYp
OworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3QgSW1wb3J0
ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAgU3RyaW5n
IG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENv
cHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbXBvcnRlZFNjcmlw
dCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29weSgpLCByZXNwb25z
ZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
ewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAgICAgICAgICBPcHRp
b25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAgICAgZGVjb2RlciA+
PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJl
Z2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHNjcmlw
dDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3Ry
aW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7Cisg
ICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMg
Y29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAgICAgICAg
V1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1vdmUoKnNj
cmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAgICAgICAgIFdURk1v
dmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShyZWZlcnJlclBvbGlj
eSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVlNjkzZjI3N2Y2NTU4
M2U3YTRlMDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEwZjNhMDlkNDI1Mjc0ZTZlZWJl
MjY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0
dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdn
ZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlk
YkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDog
V29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29y
a2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigp
LCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90
b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVu
dGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwg
ZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBX
b3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9y
aWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0
UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCisgICAgOiBX
b3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3Jr
ZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCks
IFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9ub3Rv
bmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9TdHJpbmcoZGF0YS5z
Y3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5y
ZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNv
bm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVB
bGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1f
d29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgp
KQogICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBoZWFydEJlYXRUaW1lb3V0
Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmlu
ZGV4IGNlZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4OTRiMTQuLmQ4ODVhMjM3MGYz
MDUyNTk3MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgi
CisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgpAQCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBj
b25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBz
Y2hlbWFWZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hl
bWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3ICs2Miw2IEBAIHN0YXRpYyBj
b25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQog
ICAgICAgICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMIgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwiCi0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwi
CiAgICAgICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgog
ICAgICAgICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMIgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbk9s
ZERhdGFiYXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFzZUZpbGVuYW1lRnJvbVZlcnNp
b24odmVyc2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7Cisg
ICAgVVJMIHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlwZTsKKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAg
eworICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBlOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbXBvcnRlZFNjcmlw
dEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0
aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsK
KyAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKKyAgICAgICAgZGVjb2Rl
ciA+PiBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3Zl
KCpyZXNwb25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCptaW1lVHlwZSkKKyAgICAgICAg
fX07CisgICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJp
YnV0ZXM+IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sKKyAgICBIYXNoTWFwPFVSTCwg
SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2NyaXB0czsKKyAgICBmb3IgKGF1
dG8mIHBhaXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3JpcHRzLmFkZChwYWlyLmtleSwg
SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5yZXNwb25zZVVSTCwgcGFpci52
YWx1ZS5taW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91dFNjcmlwdHM7Cit9CisKK3N0
YXRpYyBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dD4gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3JpcHRTdG9yYWdlJiBzY3JpcHRT
dG9yYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25L
ZXksIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+JiYgbWFwKQoreworICAg
IEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiBp
bXBvcnRlZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbWFwKSB7CisgICAgICAgIGF1
dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKHJlZ2lzdHJhdGlvbktl
eSwgcGFpci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2NyaXB0KSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OnBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQgdG8gcmV0cmlldmUgaW1wb3J0
ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGltcG9ydGVk
U2NyaXB0cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQgeyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92ZShwYWlyLnZhbHVlLnJlc3Bv
bnNlVVJMKSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9KTsKKyAgICB9CisgICAgcmV0
dXJuIGltcG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9uRGF0YWJhc2U6OlJlZ2lzdHJh
dGlvbkRhdGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwgU3RyaW5nJiYgZGF0YWJhc2VE
aXJlY3RvcnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU2VydmljZVdv
cmtlciBJL08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwpKQogICAgICwgbV9zdG9y
ZShtYWtlV2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkgQEAgUmVnaXN0cmF0aW9uRGF0
YWJhc2U6On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBiZSBkZXN0cm95ZWQgb24gdGhl
IGJhY2tncm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNlKQotICAgICAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2RhdGFiYXNlKV0geyB9KTsKKyAg
ICAvLyBUaGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQgdG8gYmUgZGVzdHJveWVkIG9u
IHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRhYmFzZSB8fCBtX3NjcmlwdFN0
b3JhZ2UpCisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3Zl
KG1fZGF0YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZShtX3NjcmlwdFN0b3JhZ2UpXSB7
IH0pOwogfQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwb3N0VGFza1RvV29ya1F1ZXVl
KEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIzNSwxOSBAQCBib29sIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmls
ZW5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFzZURpcmVjdG9yeSwgeyAiU2Ny
aXB0cyIsICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYgUmVnaXN0cmF0aW9uRGF0YWJh
c2U6OnNjcmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAg
IGlmICghbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBtYWtlVW5p
cXVlPFNXU2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICByZXR1
cm4gKm1fc2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1w
b3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
QEAgLTMzMyw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6Y2xlYXJBbGwo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKIHsKICAgICBwb3N0
VGFza1RvV29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2RhdGFiYXNlID0gbnVsbHB0cjsK
KyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAogICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZpbGVQYXRoKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2NyaXB0U3RvcmFnZURpcmVjdG9y
eSgpKTsKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVj
dG9yeShkYXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsKIAogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTM1MiwxMiArNDE3LDEz
IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMoY29uc3QgVmVjdG9y
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNh
Y3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBTUUxp
dGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMg
KD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICBTUUxpdGVT
dGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKICAgICBpZiAoc3FsLnByZXBh
cmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdv
cmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzdG9yZSByZWdpc3RyYXRpb24g
ZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9yYWdlKCk7
CiAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVkUmVnaXN0cmF0aW9ucykgewog
ICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiREVMRVRFIEZST00gUmVj
b3JkcyBXSEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElU
RV9PSwpAQCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9Q
dXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gcmVtb3Zl
IHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNjcmlwdFN0b3JhZ2UuY2xlYXIo
cmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGRhdGEgOiB1cGRhdGVkUmVn
aXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNzcEVuY29k
ZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LmVuY29kZShjc3BFbmNvZGVy
KTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNvZGUgdGhlIHNjcmlwdCBzb3Vy
Y2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGluIHRo
ZSBTY3JpcHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgd2UgbmVlZCB0byBzdHJp
cCB0aGUgc2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2RpbmcgdGhlIHNjcmlwdFJlc291
cmNlTWFwLgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNl
TWFwRW5jb2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2Ny
aXB0UmVzb3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlciA8PCBzdHJp
cFNjcmlwdFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7CiAKICAgICAgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwogICAgICAgICBjZXJ0
aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpAQCAtMzg1LDIxICs0
NTQsMzYgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBW
ZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHx8IHNxbC5iaW5k
RG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQo
NiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNo
ZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDcsIGRhdGEuc2Ny
aXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4
dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZFRl
eHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSwot
ICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BF
bmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmlu
ZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCksIHNj
cmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlcigp
LCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAg
ICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2Vy
VHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDksIGNzcEVu
Y29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FM
SVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlwdFJlc291cmNlTWFw
RW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIGNlcnRpZmljYXRl
SW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgp
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQg
dG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIs
IG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICAvLyBTYXZlIHNj
cmlwdHMgdG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5z
dG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCk7
CisgICAgICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAgaWYgKCFtYWluU2NyaXB0KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNoTWFwPFVSTCwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDog
ZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlw
dCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtleSwg
KnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlwdCk7
CisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAgICAgICAgICAgICAgaW1wb3J0
ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkpLCBXVEZNb3ZlKGltcG9ydGVk
U2NyaXB0KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRh
dGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQgPSBtYWluU2NyaXB0LnJlbGVh
c2VOb25OdWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQorICAgICAgICAgICAgICAgIG1f
c3RvcmUtPmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworICAgICAg
ICB9KTsKICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKLQotICAgIExPRyhTZXJ2
aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAo
JXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0
aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMu
c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNl
V29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0
aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25z
LnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1w
b3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKKyAgICBSRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29y
ZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZS
T00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBy
ZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJsZSAoIiwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwpAQCAtNDE0
LDYgKzQ5OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkcygp
CiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBmb3IgKDsgcmVzdWx0ID09IFNR
TElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBJbXBvcnRp
bmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgYXV0byBrZXkg
PSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkoc3FsLmdldENv
bHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9IFVSTCB7IFVSTCgpLCBzcWwu
Z2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3BlUGF0aCA9IHNxbC5nZXRDb2x1
bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0VXBkYXRlQ2hlY2tUaW1lID0g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5Eb3VibGUoNCkpOwogICAgICAg
ICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVWaWFDYWNoZShzcWwuZ2V0Q29s
dW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsgVVJMKCksIHNxbC5n
ZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0ID0gc3FsLmdldENvbHVtblRl
eHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwu
Z2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29y
a2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNW
ZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CisgICAgICAgIHNxbC5nZXRDb2x1
bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CiAgICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lE
YXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkpOwogICAgICAgICBP
cHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRTZWN1
cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6ZSgp
KSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAg
ICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICAgICAgaWYgKCFj
b250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZh
aWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJlZmVy
cmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAgICAgICBhdXRvIHJlZmVycmVy
UG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3Rv
cigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAgT3B0aW9uYWw8SGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+PiBzY3JpcHRSZXNv
dXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMCwgc2NyaXB0UmVz
b3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogCiAgICAgICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291
cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpOwogICAgICAg
ICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewotICAgICAgICAgICAgc2NyaXB0
UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwOwotICAgICAgICAgICAgaWYg
KCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJMLCBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRz
OworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNl
TWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwV2l0
aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNl
V29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBk
ZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIpOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXAg
PSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRTdG9yYWdlKCksICprZXksIFdU
Rk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9EYXRhOwotICAgICAgICBzcWwu
Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUluZm9EYXRhKTsKKyAgICAgICAg
c3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CiAgICAg
ICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCiAgICAgICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZp
Y2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YS5zaXplKCkpOwogICAgICAg
ICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKLSAgICAgICAgaWYg
KCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlmaWNhdGVJbmZvKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY2VydGlmaWNhdGVJbmZvIik7
CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFZhbGlkYXRl
IHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIElmIGFueSBwYXJ0
IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0aGlzIHJlZ2lzdHJhdGlvbi4K
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4gZXJyb3Igc2tpcHBpbmcgKmFs
bCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlk
KCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlk
KCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgaWYgKCFr
ZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2Fj
aGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwg
IlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIHBh
cnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UoKS5yZXRyaWV2ZSgqa2V5
LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAgICAgaWYgKCFzY3Jp
cHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdp
c3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIHJldHJpZXZlIG1haW4g
c2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gd29y
a2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAg
ICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0
YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2
aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1v
dmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAg
ICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpu
dWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUo
c2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3Vy
aXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwg
KndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OworICAgICAg
ICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5yZWxl
YXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50
U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRV
UkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKIAog
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdURk1vdmUo
Y29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAppbmRleCBkNmFlZDZiNDBlNjA0
NjI2ZTNhMWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2MjFkYjM0Mjg3N2FmMzRjNzFl
NDViOThiOTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0zOCw2ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3RvcmU7CiBjbGFzcyBT
UUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
KTsKQEAgLTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydFJlY29yZHNJZk5l
Y2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwor
ICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOworICAgIFN0cmluZyBzY3JpcHRT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBsaWVzIHRvIHRoZSBtYWluIHRo
cmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFdvcmtRdWV1
ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRpb25TdG9yZT4gbV9zdG9yZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBtX3NjcmlwdFN0b3JhZ2U7CiAg
ICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VGaWxl
UGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRhY2FiYTI5MWZkMmE0M2IzZWI0
MDE2MTQzOGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2IyMmFmYjBlMDU3NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBAIHZvaWQgUmVnaXN0cmF0aW9u
U3RvcmU6OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmJiBkCiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFdURk1vdmUoZGF0
YSkpOwogfQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1Rv
RGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2VydmVyLmRpZFNhdmVXb3JrZXJT
Y3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQp
LCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvblN0b3Jl
OjpkYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2ZXIucmVnaXN0cmF0aW9uU3Rv
cmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCmluZGV4IDc1NDNlYzEz
YjNkY2Y3MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4Y2VlYjBlMmY2MDdlNzA3ZTdi
YjQwMWZlNDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNlKFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CiAgICAg
dm9pZCBkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgpOworICAgIHZvaWQgZGlkU2F2
ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
IGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9z
ZXJ2ZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGEzNTg2YTE2N2EyNzcx
ZjFmZTJmMTM0OTczNzYzNzA1NjNiNmRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0wLDAgKzEs
MTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXU2Ny
aXB0U3RvcmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3Qu
aD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CisjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIHNob3VsZFVzZUZpbGVN
YXBwaW5nKHNpemVfdCBmaWxlU2l6ZSkKK3sKKyAgICByZXR1cm4gZmlsZVNpemUgPj0gcGFnZVNp
emUoKTsKK30KKworU1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnkpCisgICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCisgICAgLCBtX3NhbHQo
RmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVPcihGaWxlU3lzdGVt
OjpTYWx0KCkpKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworfQorCitTdHJpbmcg
U1dTY3JpcHRTdG9yYWdlOjpzaGEySGFzaChjb25zdCBTdHJpbmcmIGlucHV0KSBjb25zdAorewor
ICAgIGF1dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVzKG1fc2FsdC5k
YXRhKCksIG1fc2FsdC5zaXplKCkpOworICAgIGF1dG8gaW5wdXRVdGY4ID0gaW5wdXQudXRmOCgp
OworICAgIGNyeXB0by0+YWRkQnl0ZXMoaW5wdXRVdGY4LmRhdGEoKSwgaW5wdXRVdGY4Lmxlbmd0
aCgpKTsKKyAgICBhdXRvIGhhc2ggPSBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7CisgICAgcmV0dXJu
IFdURjo6YmFzZTY0VVJMRW5jb2RlKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7Cit9CisKK1N0
cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHNoYTJIYXNoKGlucHV0LnN0cmluZygpKTsKK30KKworU3RyaW5nIFNXU2Ny
aXB0U3RvcmFnZTo6c2FsdFBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kaXJlY3RvcnksICJzYWx0Iik7Cit9CisKK1N0cmlu
ZyBTV1NjcmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3RvcnksIHsgc2hh
Mkhhc2gocmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBzaGEySGFzaChy
ZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6
OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdp
c3RyYXRpb25LZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFy
ZWRCdWZmZXImIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAg
IGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3Jp
cHRVUkwpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKHNjcmlwdFBhdGgpKTsKKworICAgIGF1dG8gaXRlcmF0ZU92ZXJCdWZmZXJB
bmRXcml0ZURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KT4mIHdyaXRlRGF0YSkgeworICAgICAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYmVnaW4o
KTsgaXQgIT0gc2NyaXB0LmVuZCgpOyArK2l0KQorICAgICAgICAgICAgd3JpdGVEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGl0LT5zZWdtZW50LT5kYXRhKCkpLCBpdC0+c2Vn
bWVudC0+c2l6ZSgpKTsKKyAgICB9OworCisgICAgaWYgKCFzaG91bGRVc2VGaWxlTWFwcGluZyhz
Y3JpcHQuc2l6ZSgpKSkgeworICAgICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6
IEZhaWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om9wZW5GaWxlKCkgZmFpbGVkIiwgc2Ny
aXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKFsmXShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoaGFuZGxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6
ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4gc2NyaXB0LmNvcHkoKTsK
KyAgICB9CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGVsZXRlIHRoZSBmaWxlIGJlZm9yZSB3cml0
aW5nIGFzIHRoZXJlIG1heSBiZSBjb2RlIHVzaW5nIGEgbW1hcCdkIHZlcnNpb24gb2YgdGhpcyBm
aWxlLgorICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2NyaXB0UGF0aCk7CisgICAgYXV0byBt
YXBwZWRGaWxlID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHNjcmlwdFBhdGgsIHNjcmlwdC5zaXpl
KCksIFdURk1vdmUoaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEpKTsKKyAgICBpZiAoIW1h
cHBlZEZpbGUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNX
U2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om1h
cFRvRmlsZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShtYXBwZWRGaWxlKSk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNXU2NyaXB0U3Rv
cmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0
cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7CisgICAg
aWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShzY3JpcHRQYXRoLCBmaWxlU2l6ZSkpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6
cmV0cmlldmU6IEZhaWx1cmUgdG8gcmV0cmlldmUgJXMsIEZpbGVTeXN0ZW06OmdldEZpbGVTaXpl
KCkgZmFpbGVkIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxl
IG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNj
cmlwdG9ycyBvcGVuPworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwg
c2hvdWxkVXNlRmlsZU1hcHBpbmcoZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworfQor
Cit2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gdGhpcy0+cmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7CisgICAg
Ym9vbCByZXN1bHQgPSBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdpc3Ry
YXRpb25EaXJlY3RvcnkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNlcnZp
Y2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlw
dHMgZm9yIHJlZ2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCku
dXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ZjAxMzBj
NWU1ODY5OWZjMGQyNTdhNmViOTcwNGI0NzU2MDM4NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CisKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBzY3JpcHQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZl
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCk7CisgICAgdm9pZCBjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7
CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJM
KSBjb25zdDsKKyAgICBTdHJpbmcgc2FsdFBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgc2hhMkhh
c2goY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgU3RyaW5nIHNoYTJIYXNoKGNvbnN0IFVSTCYp
IGNvbnN0OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5OworICAgIEZpbGVTeXN0ZW06OlNhbHQg
bV9zYWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5N2Q2NGYx
ZDY1ODY5NGIzLi5kY2UyMDE2ZmMxNTM4MzAwZmZhYTExNzU5ZWFlMzM0MDhjNGY5ZTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cApAQCAtMTc2LDYgKzE3NiwxMiBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9t
U3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICB9KTsKIH0KIAordm9p
ZCBTV1NlcnZlcjo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNj
cmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0
cykKK3sKKyAgICBpZiAoYXV0byB3b3JrZXIgPSB3b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRTYXZlU2NyaXB0c1RvRGlzayhXVEZNb3ZlKG1h
aW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFNXU2VydmVy
OjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYm
IHJlZ2lzdHJhdGlvbikKIHsKICAgICBtX29yaWdpblN0b3JlLT5hZGQocmVnaXN0cmF0aW9uLT5r
ZXkoKS50b3BPcmlnaW4oKSk7CkBAIC02MzMsNyArNjM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVt
b3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBTZXIKIAogdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29u
c3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQog
ewotICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBq
b2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlw
dFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihz
Y3JpcHQpLCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQ
b2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOwog
fQogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBiYTFiNDEzNTAzNTQwZGNlODg1Y2Q0NDhiM2Y3YzA0Mjhk
YjhjYjE3Li43OTZiZTg1ZTNlNTQ3NzI2ODZlOTU0ODA4NDVmMDQ1NDhjNWQ5NTAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0x
OTAsNiArMTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5
UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQgYWRkUmVnaXN0cmF0
aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKKyAgICB2b2lkIGRpZFNh
dmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
JiBpbXBvcnRlZFNjcmlwdHMpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21w
bGV0ZSgpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3Blbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4MDJhNDgwMTE1MWE3MjhmYmM1YTJhNjkxMjRk
Yjk2M2M3NzJjYjBhLi41Y2EyNTI2OTExNDUzZGIwOGYxZjhmMjgzMmRiYzQwNDVlNjRhYTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Sm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVySm9i
UXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0
JiByZXN1bAogICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29ya2Vy
J3Mgc2NyaXB0IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRlIGZy
YWdtZW50cwogICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMgYSBi
eXRlLWZvci1ieXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNlJ3Mg
c291cmNlCiAgICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9i
LnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYg
cmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNhdGVz
TWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUlu
Zm8oKSkpIHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3
ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBz
Y3JpcHRCdWZmZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRpZmlj
YXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNh
dGVJbmZvKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNX
U2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNh
dGUgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0
aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9u
IGNsYXNzaWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtb
RUNNQVNjcmlwdENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IDJiOGZmNjg1ZTA0OTc5ZmNkYzczZTczMjBkZjNmNGRhNjRjNzYyZGYuLjEyMDA1
MTY5OGJmOTM5ODE4ZTRkNDNlODVjNjk1NzMwMGJhN2RjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29yCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYm
IHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9pZCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAgICAgaWYg
KGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZp
ZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJl
c291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1v
dmUobWltZVR5cGUpIH0pOworICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1v
dmUoc2NyaXB0VVJMKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5k
ZXggNDY1OWY5ZjlmYTZjNmJhYThkZTk2OGQzOTE1ZmUzM2M0ZTMxMjY2OC4uOWJlMzQ0NDkxZjA2
MTNmYWUxNDBlNzk4NTFiNzEwYTNiMzJiMmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhj
ZXB0aW9uRGF0YT4mJik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVz
b3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYg
c2NyaXB0LCBVUkwmJiByZXNwb25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCmluZGV4IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlhNjY3
MDUuLjYxM2JiNzJjNTg4ZDhhMTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6
ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9CiAKIC8v
IEZJWE1FOiBVc2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRlbnRTZWN1
cml0eVBvbGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0
VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZp
Y2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0
eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1h
cCkKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgU2hh
cmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiAgICAg
OiBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXko
cmVnaXN0cmF0aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQdHIocmVn
aXN0cmF0aW9uKSkKQEAgLTIzOCw2ICsyMzgsMjEgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0
U2NyaXB0UmVzb3VyY2UoVVJMJiYgdXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG8K
ICAgICBtX3NjcmlwdFJlc291cmNlTWFwLnNldChXVEZNb3ZlKHVybCksIFdURk1vdmUoc2NyaXB0
KSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxT
aGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICAvLyBUaGUgc2NyaXB0cyB3ZXJlIHNhdmVk
IHRvIGRpc2ssIHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdkIHZlcnNpb24gdG8g
c2F2ZSBtZW1vcnkuCisgICAgQVNTRVJUKG1haW5TY3JpcHQuZ2V0KCkgPT0gbV9zY3JpcHQuZ2V0
KCkpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50aWNh
bC4KKyAgICBtX3NjcmlwdCA9IFdURk1vdmUobWFpblNjcmlwdCk7CisgICAgZm9yIChhdXRvJiBw
YWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX3NjcmlwdFJlc291
cmNlTWFwLmZpbmQocGFpci5rZXkpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV9zY3JpcHRSZXNv
dXJjZU1hcC5lbmQoKSk7CisgICAgICAgIGlmIChpdCA9PSBtX3NjcmlwdFJlc291cmNlTWFwLmVu
ZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNj
cmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2Ny
aXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShw
YWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNraXBXYWl0aW5n
KCkKIHsKICAgICBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRl
eCAzNzhmYmE2NTdlOGJiZjQ4NDFlNTZjYmY4NjU2MWY4ZWNjMzExMDIwLi5jNDVkYWRiY2FiODE5
NzZiNzZmMGJlNTMxNGYzYjcxZjc3YjZiMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXIuZ2V0
KCk7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVS
TCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsgfQotICAgIGNv
bnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KKyAgICBTaGFy
ZWRCdWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRp
ZmljYXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS50eXBlOyB9CiAKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50aWZp
ZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICB2b2lk
IG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNl
V29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNv
dXJjZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsK
KyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNj
cmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0
cyk7CiAKICAgICB2b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBpc1NraXBXYWl0aW5nRmxh
Z1NldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0KQEAgLTEyNyw3
ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIAog
cHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRl
SW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmlu
ZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYp
OworICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVm
ZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKICAg
ICB2b2lkIGNhbGxXaGVuQWN0aXZhdGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0xNDAs
NyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1f
cmVnaXN0cmF0aW9uS2V5OwogICAgIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IG1fcmVn
aXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJpbmcgbV9z
Y3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlmaWNhdGVJ
bmZvIG1fY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBv
bGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGYzYjc1YTVlYmEzZmQ3M2Y1MjY4NDQ2MTIzOTc4
NWU1NDQ2OTM3YTIuLmQ4ZDk0MzQwODQ1ZGQ4NWIzNmRjODkyOWFiMWU2MjcxODg5MzI4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmluZENsaWVudEJ5SWRl
bnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogICAgIE1hdGNoQWxs
KHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4gKE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKLSAgICBTZXRTY3Jp
cHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBV
Ukwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1l
VHlwZSkKKyAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBt
ZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBz
b3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYWI3
YWJjMjU3NjVhZDQyOGYyYTE1N2M2MTc5NGQyMjU4NjE3YmI0Ny4uYzkyODY2YmYyMWQ0NWIwYjFi
NTBkYmFlNzE2NzJmNzRkMTZiMTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMjMzLDcgKzIz
Myw3IEBAIHVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBT
dHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9v
dFBhdGgsICJzYWx0Il9zKTsKLSAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0UGF0
aCk7CisgICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgp
OwogICAgIGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM3NCw3ICszNzQsNyBA
QCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
ICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCByb290UGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewog
ICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocm9vdFBhdGgpOwogICAgICAg
ICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cm9vdFBhdGgsICJzYWx0Il9zKTsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzYWx0ID0gcmVhZE9yTWFrZVNhbHQo
c2FsdFBhdGgpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNhbHQgPSBGaWxlU3lzdGVtOjpy
ZWFkT3JNYWtlU2FsdChzYWx0UGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzAyLDcgKzcwMiw3IEBAIHZv
aWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNp
emVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGlj
TGlua3M6Ok5vKSkKLSAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShm
aWxlbmFtZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03NDksMTggKzc0
OSwxOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAvLyBJZiBjYWNo
ZSBzYWx0IGlzIGluaXRpYWxpemVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNoLCBzb21lIGNh
Y2hlIGZpbGVzIGhhdmUgcHJvYmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkgY29ycnVwdGVk
LgogICAgICAgICAgICAgQVNTRVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBjYWNoZXNSb290
UGF0aCgqZm9sZGVyT3JpZ2luKSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNp
dmVseU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0g
V1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAgZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxiYWNrQWdn
cmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAgICAgfSk7
CiAgICAgfQogfQogCi12b2lkIEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJh
Y2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxv
Y2spOwotICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCmluZGV4IDE5NDRhNWM3OTJkOGQ3OTllMjlkYWJjODQ2NjY3YjY2ODYy
YmI3ZjkuLjQ0MDllN2I0OTZhYjhjZjY0NmM5YTBmZmFlZGY1NzM0YzBmZjFlODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbENh
Y2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVh
ckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5G
cm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJh
Y2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJl
YWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAg
ICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA2NmY3NmViMmQ2
ZmM3ZDk4ZGNlOGFlMDYyY2ZiYWYwZmY1MDM2Yjc5Li40OTY4NjE5ZmZjMTY2MzJjZTQzNmUxOTE1
M2VjZmI1NDQ1NzdmOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmICFPUyhXSU5ET1dTKQog
I2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC00MCw0MSArNDEsOSBAQCBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKIAogRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25z
dAogewotICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOwotICAgIGF1
dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2Vy
LCBmYWlsSWZGaWxlRXhpc3RzKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
aGFuZGxlKSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgbV9zaXplKSkgewot
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICB9Ci0gICAgCi0gICAgRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZv
clBhdGgocGF0aCk7Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRX
cml0ZSwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7Ci0gICAg
aWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwot
ICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHZvaWQqIG1hcCA9IGNvbnN0X2Nhc3Q8
dm9pZCo+KG1hcHBlZEZpbGUuZGF0YSgpKTsKLSAgICB1aW50OF90KiBtYXBEYXRhID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KG1hcCk7Ci0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1aW50OF90
KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0YSwgYnl0
ZXMsIGJ5dGVzU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gYnl0ZXNTaXplOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9KTsKLQotI2lmIE9TKFdJTkRPV1MpCi0gICAgRFdPUkQgb2xkUHJv
dGVjdGlvbjsKLSAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwgRklMRV9NQVBfUkVBRCwg
Jm9sZFByb3RlY3Rpb24pOwotICAgIEZsdXNoVmlld09mRmlsZShtYXAsIG1fc2l6ZSk7Ci0jZWxz
ZQotICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCi0gICAgbXByb3RlY3QobWFwLCBt
X3NpemUsIFBST1RfUkVBRCk7Ci0KLSAgICAvLyBGbHVzaCAoYXN5bmNocm9ub3VzbHkpIHRvIGZp
bGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KLSAgICBtc3luYyhtYXAsIG1fc2l6
ZSwgTVNfQVNZTkMpOwotI2VuZGlmCi0KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOworICAgIGF1dG8gYXBwbHlEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgdWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVyKSB7IGFwcGx5KGFwcGxpZXIpOyB9Owor
ICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShwYXRoLCBzaXplKCks
IFdURk1vdmUoYXBwbHlEYXRhKSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIERhdGE6OmFkb3B0TWFw
KFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKQEAgLTEzNSw0MCArMTA0LDUgQEAg
Ym9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAgICAgcmV0dXJu
ICFtZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBhLnNpemUoKSk7CiB9CiAKLXN0YXRpYyBTYWx0
IG1ha2VTYWx0KCkKLXsKLSAgICBTYWx0IHNhbHQ7Ci0gICAgc3RhdGljX2Fzc2VydChzYWx0LnNp
emUoKSA9PSA4LCAiU2FsdCBzaXplIik7Ci0gICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
Pigmc2FsdFswXSkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgICpyZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKTsKLSAgICByZXR1cm4gc2FsdDsKLX0KLQotT3B0aW9uYWw8U2FsdD4gcmVhZE9y
TWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKHBhdGgpKSB7Ci0gICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgICAgIFNhbHQgc2Fs
dDsKLSAgICAgICAgYXV0byBieXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmls
ZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQu
ZGF0YSgpKSwgc2FsdC5zaXplKCkpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHNhbHQ7Ci0KLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKLSAg
ICB9Ci0KLSAgICBTYWx0IHNhbHQgPSBtYWtlU2FsdCgpOwotICAgIGF1dG8gZmlsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUsIEZp
bGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyKTsKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBib29s
IHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkpLCBzYWx0LnNpemUo
KSkpID09IHNhbHQuc2l6ZSgpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKLSAg
ICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gc2FsdDsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmgKaW5kZXggZWQxOTFkYzdkZTIyYmE2YmFmODM2OWRlYzhlYzM2YmU4NzAxOGVhNi4u
Njc1MjZjYWQ5NjA3MTRhODhjMWMwOTNlNGE5YzM4ODE0NmI4MGU5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAg
LTExMiw5ICsxMTIsNyBAQCBEYXRhIGFkb3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCk7CiBEYXRhIG1hcEZpbGUoY29uc3Qg
Y2hhciogcGF0aCk7CiBEYXRhIG1hcEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAotdXNpbmcg
U2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47Ci0KLU9wdGlvbmFsPFNhbHQ+IHJlYWRPck1h
a2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7Cit1c2luZyBTYWx0ID0gRmlsZVN5c3RlbTo6U2Fs
dDsKIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiwgY29uc3QgU2FsdCYpOwog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzNkZTA0MmNkZjQ0
YjBmYmE0MjNjYzlkZDdhZmM1Li43YTk5NjE0ZjIzMzViMTUwYzljYWIyMjJjOTM1ZDBiYmVmNjlj
ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTYyLDIzICs2Miw2IEBAIHZvaWQg
dHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBECiAgICAgfQogfQogCi12b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXRo
LCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsK
LSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwYXRoLCBuYW1lKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNh
c2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGly
ZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlS
ZWN1cnNpdmVseShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8vIFRo
aXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQogRmlsZVRpbWVzIGZpbGVU
aW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2E1ZjhjYzRmZTM4YTk1NjFjZTFjOGI2MWMxMGM3NDc5
Y2E4NzQyZi4uYzBiNGU4MWI0NzM3NWEwN2ZmOTliZWI0MjEwZGEwMTU4MjJjNzM1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNo
ZSB7CiBlbnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmlsZSB9Owog
dm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+Jik7CiAK
LXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQog
c3RydWN0IEZpbGVUaW1lcyB7CiAgICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2FsbFRpbWUg
bW9kaWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBlMmM2ZDIw
MjVhOTZiMjVlYzFlNTZjNDhhZjhkNi4uN2FlZmIzMWMxYWZhNjI3MjQ4NThkODE5NDdhOTFiZDNl
OThmNWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8
d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Jh
bmRvbU51bWJlci5oPgpAQCAtMjA2LDcgKzIwNyw3IEBAIFJlZlB0cjxTdG9yYWdlPiBTdG9yYWdl
OjpvcGVuKGNvbnN0IFN0cmluZyYgYmFzZUNhY2hlUGF0aCwgTW9kZSBtb2RlLCBzaXplX3QgY2Fw
CiAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERp
cmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
YXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgpKTsK
KyAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChtYWtlU2FsdEZpbGVQ
YXRoKGNhY2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMo
KQogICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAgICAgTE9H
KE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNo
ZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAKLSAg
ICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKKyAg
ICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZlcnNpb25Q
YXRoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5ZTMxMjk3MTk2ZGExMTU1ZjBiMjJjMzE4
MGEwM2M4MzA0ODZlMzcyLi5mNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYwODk4OWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZv
aWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVuY29kZXIgPDwg
aXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2NF90
IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZlclNpemU7
CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTIgKzE0OSwy
NCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAgZGVjb2RlciA+
PiBpc051bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNWU4ZjcwOTA2MWI0MmQxOGFjOTY5MThlNTk4ZmQ4
MjE0MGM0MjhjZC4uMWUwMWE1ZDRlN2E3YjgzMTRhMjMxNGFhODdmNGRkMmRkMzJlYjEwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQu
c2NyaXB0LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsKKyAgICBt
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDRiZjk4NGRiOGM2YjZhY2QzNjJlMjM3NjkxMzA1N2RlNWFiM2IxYzIu
LjYzMTQ1MDRmN2E4OThkNGMwMDA4MTFiYzA4YTljZWEwMjY3ZTdjNjAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAy
MS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZp
Y2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4
MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzOiBSZW1v
dmVkLgorICAgICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtlciByZWdp
c3RyYXRpb24gZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZCBhbmQg
aXQgaXMgYSBwYWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lzdGVtOjpkZWxl
dGVOb25FbXB0eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBpdAorICAgICAg
ICBoYWQgbm8gdGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3ZSBub3cgaGF2
ZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNlcnZpY2Ugd29y
a2VyIHRlc3RzIHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2UgaW5zdGVh
ZCBvZiB2ZXJzaW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBkYXRhYmFzZSBz
Y2hlbWUgYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUgdGVzdCB0aGF0
IHdhcyByZWx5aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFiYXNlIGZpbGUg
KHdpdGggb2xkIHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWljYWxseSBnZW5l
cmF0ZSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0IHJlZ2lzdGVy
cyBhIHNlcnZpY2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjkgIENhbWVyb24gTWND
b3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBjYWxsaW5nIGB4Y29k
ZWJ1aWxkIC1zaG93c2Rrc2Agd2hlcmUgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGMzYWJlOTkzNTcwNTY5MzgyODg0MjY1NzA5ZWE4ZjVkYzU2ZWZiZmYuLmZiYTAzMmM4NTgz
YjlmMTg3ODgxOGJhNjQ5NjkzNDZjNGUwNGI3MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNjksNyArMjY5LDYgQEAKIAkJNDZBNDRBNTQyNUE3ODMwMzAwRjYxRTE2IC8qIHdlYmF1ZGlv
LWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTQ0QTUzMjVBNzgyREQwMEY2MUUxNiAvKiB3
ZWJhdWRpby1jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UuaHRtbCAqLzsgfTsKIAkJNDZBNDZBMUEy
NTc1NjQ1NjAwQTFCMTE4IC8qIFNlc3Npb25TdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDZBMTkyNTc1NjQ1NjAwQTFCMTE4IC8qIFNl
c3Npb25TdG9yYWdlLm1tICovOyB9OwogCQk0NkE5MTE1OTIxMDhFNjc4MDA3OEQ0MEQgLyogQ3Vz
dG9tVXNlckFnZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBOTExNTgyMTA4RTY2QjAwNzhENDBEIC8qIEN1c3RvbVVzZXJBZ2VudC5tbSAqLzsg
fTsKLQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OwogCQk0NkJCRUExQjI1Rjk4MzU3
MDBENDk4N0EgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQTZBMTUxMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3Bw
ICovOyB9OwogCQk0NkMxRUE5ODI1NzU4ODIwMDA1RTQwOUUgLyogYWxlcnQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMxRUE5NzI1
NzU4ODA1MDA1RTQwOUUgLyogYWxlcnQuaHRtbCAqLzsgfTsKIAkJNDZDM0FFQjMyM0QwRTUyOTAw
MUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzNBRUIyMjNEMEU1MEYwMDFCMDY4MCAvKiBiZWZv
cmV1bmxvYWQuaHRtbCAqLzsgfTsKQEAgLTE2NjIsNyArMTY2MSw2IEBACiAJCQkJQkM5MDk3ODQx
MjU1NzFDRjAwMDgzNzU2IC8qIHNpbXBsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY0RjQwNUJEMUQ0QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlk
ZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEyM0YyMTI2
NjE1NjcwMEM5RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNENGQ0REQTI0OUZDOUU0MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTIwNDcsNyArMjA0NSw2IEBACiAJCTQ2M0Y0NzIyMjU1QjQ5
QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3NEaWRUZXJt
aW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRDNzY0QzIzMERGODMy
MDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9
ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJTaW1wbGVTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3RpZnktcmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBHZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MDQ4LDcgKzQwNDUsNiBAQAogCQkJCUY0RTNEODA3MjBGNzA4RTQw
MDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgKi8sCiAJ
CQkJRjRGQzA3NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25l
Lmh0bWwgKi8sCiAJCQkJQzlCNEFEMjkxRUNBNkVBNTAwRjVGRUEwIC8qIHNpbGVuY2UtbG9uZy5t
NGEgKi8sCi0JCQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3
MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlG
NENGQ0REODI0OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAqLywKIAkJCQk5MzYwMjcw
NTI1QTNCMjhFMDAzNjc2NzAgLyogc3BlZWNocmVjb2duaXRpb24tYmFzaWMuaHRtbCAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzZjYWYy
YWQ0MzcyNjYzZDJiZTMxMWJjZmI2M2EwNGQwYzBkMDFmNi4uOGY2NTFkM2VhZTM0MzI5NzUxYWMz
NjFkZDdlMDY0Y2I2MzdlMzc1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKQEAgLTE1MSw0ICsxNTEsMjkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBvcGVuRXhpc3RpbmdGaWxlQW5kRmFpbElmRmlsZUV4aXN0cykKICAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKTsKIH0KIAorVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBkZWxldGVOb25FbXB0eURpcmVjdG9yeSkKK3sKKyAgICBhdXRvIGNyZWF0ZVRlc3RU
aWxlID0gW10oY29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIGF1dG8gZmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOworICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVI
YW5kbGUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmls
ZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICB9OworCisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIHRlbXBvcmFyeUZpbGU7CisgICAgYXV0byB0ZW1wb3JhcnlU
ZXN0Rm9sZGVyID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5VGVzdCIsIHRlbXBvcmFyeUZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZSh0ZW1wb3JhcnlGaWxlKTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRl
bXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIgfSkpKTsKKyAgICBjcmVhdGVUZXN0VGls
ZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRl
ciwgImZpbGUxLnR4dCIpKTsKKyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUyLnR4dCIpKTsKKyAg
ICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRl
bXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlMy50eHQiIH0pKTsKKyAgICBj
cmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBv
cmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlNC50eHQiIH0pKTsKKyAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZv
bGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5
VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJh
c2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0KaW5kZXggN2Y0YWM5NmZhN2M3M2E4NDIyYTRjNGU4ZmY3ZTYxMDVlOWU4ODBk
Zi4uMjM3ODhlYWUxNDM2N2FlMmYxYTQxNjRlYjRjOWZiYTE0MzA5NDQ3MSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0KQEAgLTE5NTYsNyArMTk1Niw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFN1
c3BlbmROZXR3b3JrUHJvY2VzcykKICAgICBhdXRvIHBhdGggPSBzdG9yZS5fY29uZmlndXJhdGlv
bi5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5wYXRoOwogCiAgICAgTlNVUkwq
IGRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNd
OwotICAgIE5TVVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl07CisgICAgTlNV
UkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXTsKIAogICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd0RCUGF0
aC5wYXRoXSk7CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFRFU1QoV2ViS2l0LCBTZXJ2aWNlV29y
a2VyRGF0YWJhc2VXaXRoUmVjb3Jkc1RhYmxlQnV0VW5leHBlY3RlZFNjaGVtYSkKICAgICBFWFBF
Q1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OnN3UGF0aC5wYXRoXSk7CiAKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVT
IGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJv
cjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVS
TDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKIAogICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3
UGF0aDsKQEAgLTIzNTUsNiArMjM1NSw3NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBDbGVhckRP
TUNhY2hlQWxzb0luY2x1ZGVzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpCiAgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CiB9CiAKK1RFU1QoU2VydmljZVdvcmtlcnMsIEN1c3RvbURhdGFT
dG9yZVBhdGhzVmVyc3VzQ29tcGxldGlvbkhhbmRsZXJzKQoreworICAgIE5TVVJMICpzd1BhdGgg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJL1dlYktpdC9TZXJ2aWNlV29ya2Vycy8iIHN0cmluZ0J5RXhwYW5k
aW5nVGlsZGVJblBhdGhdXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJl
bW92ZUl0ZW1BdFVSTDpzd1BhdGggZXJyb3I6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7
CisKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmls
IGVycm9yOm5pbF07CisKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzd1BhdGg7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsK
KworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJd
OworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICJ0ZXh0
L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEJ5dGVzIH0sCisgICAgfSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7Cisg
ICAgd2hpbGUgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucy02LnNxbGl0ZTMiXS5wYXRoXSAmJiArK3RpbWVvdXQgPCAyMCkKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6W3N3UGF0aCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0
ZTMiXS5wYXRoXSk7CisKKyAgICAvLyBGZXRjaCBTVyByZWNvcmRzCisgICAgYXV0byB3ZWJzaXRl
RGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbV0tXZWJz
aXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsKKyAgICBzdGF0aWMgYm9v
bCByZWFkeVRvQ29udGludWU7CisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dl
YnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUs
IGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBGZXRjaCByZWNvcmRzIGFnYWlu
LCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hp
bGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVj
b3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9
IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxz
ZTsKKworICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFzaW5nIG91ciByZWZlcmVu
Y2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAg
IGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIGRhdGFTdG9yZSA9
IG5pbDsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBUaGUgcmVjb3JkcyBzaG91bGQg
aGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxkIGhhdmUgYmVlbiBtYWRl
LgorICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlmeSB0aGV5IGFyZSBnb25l
LgorICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlw
ZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQg
Kj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgZGF0YVJlY29yZHMuY291
bnQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKK30KKwogVEVTVChTZXJ2aWNl
V29ya2VycywgV2ViUHJvY2Vzc0NhY2hlKQogewogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2Fs
bG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTQuc3FsaXRlMyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYTA1ZGM0NmUzYTJjY2ViMzRlZjlhNzY4Y2QwOWViM2Q4YWYyNDE1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDIwNDgwCnpjbWVIT2N+fSF5KlV2X1A1
TSZqUU1hUDlyQWh9XzhMcWRwdnZXUzJ2QjZMVXdHTWJIPDJeY0xecW9QKnBnOFBQdQp6WHN1aC15
Nip9cVImQ3ZfYj1TSnJUMUJnTXNvJE4xQVhyPTRAQTtuaGQ7aUdiV2JTaEFKP0gtSnozMHczWFVz
QFgKeiN3aVJiKURTOV5MYyRvMTM+SiRLaXkjYUpnOVVGWmMkK1VLT21OSEBfQHdpI1RgWXptOUk8
ekokemEoPkZ6aDI3CnpqPChqb1FnMT1QZmBBMTkzaiE3ZEVDXlQtdXBuU1R6PUQ3VWYmVkg1Q085
I3otTXplK2xsMnJAcHVgNFhHN1RYbwp6OHlfc20wSTRgcmllIXI4bEJHeXZBcmRlZyg8N1BFTDc3
TnU4b2FaVGxhYUprTTNSPTtDcGsleWlTIVhDQl9tbT4Kek4kRllBN1VjdF57Z2NIS1gpdk44QEZI
QkBOKU4jWkRicn1OdE8zY2I1PmdzJStDU0AzaUlQOzdSKnE3Yk0xamVNCnpYV31YaGlCSFItMmx0
bWwyfVgzcjc2V2xxZzMxKEZ0S3lJezBAcVVpTH5zKmpzfndoVmh+WEhLc25AcDdUYyVNewp6bjN+
R0tXSTYoO14hK3RUVCY3M2psR0ViO1poITw8aCFGJXZHP01AUSlZMjB9NHshaVJZSUtBUU9GXn0q
R0xUXmUKemcleyM3MnotKmRQfTImMVU8aXhyRjd7JEZhSjN2OEteN35hUmlCVVFEMip8bi0/JDko
TVU0cUkrKXA8MnAwYkJHCnooPjlwX3w1K3t6MHV9QDsydmB1WEFZZWhqZmBBMnFlfkd7ZVUjMWZv
KWdqOC1EYFUyY1J+TEtsdkV2ZEk2czBCZQp6UmRUaFUyJldYZjBzKmVjJm8+ciE3WWJWeDMoMytE
M0xgMXVLZEFrbkxtPDl6Knc2TEs1VDdLS1J6cHphLX1nWTQKejNXa3YrcllzYm9hPUVrd3pXT0hQ
Qnp5ekxoeVpfRk87Vl4qPV51O34+ZU1teypRZig5bmojUHgjWH1IZFFjI05HCnpSRjt+O2w+eDhf
TDFncGBKfUgyOWhkUksmTUMyYlJwY0Y5SylaU1FjWUVQM0I3Xk5mQnJkRzU3Vng9LSpoX05ITwp6
KjFyaF98S05gbDhlZTd3M1E3ZWZ7NzV4UD42TXMzTXZAPGBNWVVRdUBRK3NFRHpwZC1ROT5DMGlV
UHR5Z3B7SEwKejhLVHFfWCN+VHhNSVleYDIhZStaZFNRVl5yPjY5WUBDUEh2UjtnOGI3PSl2Zypn
I1p7NXZAe19ZRTVZLXBARCFtCnpjSE19Pyg3K3pYUjlQVD16O3FlQmQ0RG1fZyV+QU17T3YzZzde
JjUkPD1KcjYxfmc3RmoxYkJjcnU4NW91d29ydAp6dFJHSWNzVEdOdD1VWFQ9dU1ibj5LbT04bXFJ
d2M4MTUlP2IhQVBVVGtnN21PQTwoeytwKEtXQTNLM0UjbFZQTmgKejNgem1aTl56d1VRSl5JbFFp
M1hWbjZWak5oeTw3IUF7fjQ2TFVocGZEYTYmNyt8MGdkeHRZbHQ1a2ZFfT8yfSY3Cnped3FjfGpo
T3VIQFpQZ34majNON155Y21uNns8JUhGaG9hVWF6dnc2PmZ3KmZCck1HY1FrRyhmOGlTUlQxfGpM
dQp6JGRucDJNKDRCOzA2R1pgYyliWTt4VUN1bUdgMis1YSlpVlAqb0s3dTJBRn09UDQhQlFZNyM8
WD82T3g9VVNRLUEKeig2fkJpSWh2WmF2VWReRiVyX3J3PDktKUZhYSUkYSt7RGt3elpvfXI5bnhJ
c3N9WDg1VWduQ2pLbW9MSztvPnJECno0SjRwQik4O3laNnFyYGhkcmV7OWJBUjROT15uU1ZsdERx
dDAlMCotQWMzOUA1fF4ya2U3IWpWcExGUCh6TCtOdgp6PEM3c1dBVit+NnA5PS1vREpkM3sxMDRC
d3M5TDdiNU0meWhYQ3sqWW9jUHZxajYhaUczQWlFI3tSaTZlOWlpVngKenJhKy15Z15FczdpcGlO
d0Nne1RGbTAkIzNzRT4hbnlAeSpVMm44VDJHKnJ8cnlqeGZ8S15XKjMoSmVGd2AwK1Y3CnpIMmcq
RmZqOGU+XjQ9U2VOdVgqe2l4UVl4MktoMzlmJSQtTVlldGxXKi1JUCleOCRSSDtWfklpMklnXj90
bW9QVwp6YWhYPEQpX309YHdMNChaNzY2Q0Y7bkFhblZSPWhyLVphc2NVa2ReajFTfCt4NVU/TyVM
Qk44NTFweH5KNzZkRV4KelNQLXh2QEwhRVVCJThHVFVwU2xMbjVAUURSPWFVcigtclMjZTlmfWZe
Km53TmxOVkd3Wnkhd2JATmg4c0NQZEw3CnpEbSorUURoSDZENyRnQih1Mm9QUUhwfG5CIUV5Y0dA
NDNnVHFufU5tYGMyJCpae2FZPCU0encka04zdU1XRl5IfAp6enA5TU4zRTZlblhTVCVRYCFTM15h
ajBASzdsbFRFJGNTejxRK3V2JCpZZD5qN3hxbDFvZlUmXmZabW89fDJEWnYKejE7QE9YUEo0TEJr
QTNPWWlGeClSOHh+Smk0UWZjZF9wVn4qeDFtWUwtRVIlLWU4MVA2bXErakJobzV1aWhQfjNjCnpC
dDFnPHcrV1FwUnJoc1RKJEJ4UyM3VTxXWk8/RHwjJnd6MyNhbE4rNUFKWG8pdXRWPkN3Wnd5PG5z
a1RFWkVCawp6QDl9YyU+X0lfc3NwOV9wamIxT0p4MUwlUVFAZE1ESXJebmY0UVZeKmw7YEhvbn0y
aGc4OEBUSUZlPmZeT0U5JWwKej19cTljPG0tfTdOclRKczJSI1RvYUJCUnV5KmomKlF6eUZqWExi
MDZkUjZeNjw7eW88KE5fPGEtfGNnNyE2I24jCnorVEhOantkI15+KDZrQDxocHZWJT9wZDRoYDFS
NEUpaT4paFlgKH5kK0BibFJ5ckxtQ1h6Y2lrblVraTVTdUszVgp6enAkY3hwOTVsR1VAN0BGVEta
Y1I5RGAwRFItVllmJF5pKTkxJUFoM2BYPEhubn5KSjF6QVpeQUdpY3UtMGxpQjYKekNXPHMlJlVY
X0RMSXUmYEtwK3hATVRTS1BMO3huQzU2WnllXlgtbE8+KGpKIUFiPURabjdATkllQV5ePkdPaXZE
Cno5cDwkMjNBKHx1Rj80dThPckw+fEc/cUI/P008eDJJIVluIW1xazstR01Ydl9GSCluPntjb2dt
O2tRWDNRMFYhRgp6dT9LbEZoOEVJPHU2JjAkQmBPPktyX3hsN1RCXzFnYFYzdmNGaWJ8I3c5dlUw
aGU4TFExajxHYyg4V2ZQam00UTUKejlTMT5gMTVxVXxob0FKJiNxTkEoM0gtYlZlb3YjNmopMmgp
a3slTFc7bCswfClBZmY9SWdMQzg5ZjdOS0RyMlFMCnotITNCfklaO0RXWThwclQ3Ny1pVEZQRVcq
OztTK1Y5WCQkMzxeYnB4I3xle3t1TEl3QDVmK2d2dTtIYDlMcz17dgp6MkF6cnVXM2l5YXVvdklh
RDJnMURMJjdXKUxKOSZvMz1TdkQkQ3RzZUYqKXFtT2IhcEdJN353bmtJbS1UZW9+JnUKekVQb2x0
VkZEJU9aVSFfRkJeNj8yNSZUTXdRbTlDZiZVYkZBaXBQdGZxZHB9Kl5kbntBQTFSQX5PVVRAPHNj
bEIwCnpTT2c0d0hsTj9AbjxUakE/NEVFOCo1U1psNFM8MmBRTj9DNFMlMlEqQThjTnI3MT1AYyFP
cjR2VTA3S2VxUEQ8PQp6JmhUOUxrUVl2U0lndW9fT3c8bXopNVVmIWote29nMHkoVXJTcW8kdWx9
SEZlPXFrMzBVc0RTeFU/YEdeN2J5QGkKek4kUXxgUkU4bUBISGIqV3B1TXwyXnNobz8wKnFHPCUh
WXorUU1kP30wKzBpU3dVbyNPSU1NeXZ4YlAlIWBOMDFlCnpyTiZXXzgqcnJ5dHpHT2hQJkx3cldg
VjxSP1Y1PzdmSyFST2Y/ISZEZnlmPVNIT2JoOTdRWnBfMlplYGoqR3xtPQp6VkgmbFcwfFM9eFNo
UU4oNnd+V0xYeFZRcyNeP1RXelNMPCgoZUA+cTE4YSVNVmRDcElrRkQkV0RBO31hPCNGa1EKekE1
NyUrdH5kMDJFdHRHQTxAKTFfYCFSRnZyKis7P3U9SHJmb0pCUWBLNC1JNT4+KDZ5PytwMDhyPVZs
YFloVkEhCno0eTEmP3JYKHdHS3deemc/dE9PVD5Sc0hSSGZ+R3lyQSVkcz1IMyhCe1otbU5LZ2p2
bmxGJilmIUdWaU1jWHt7Ugp6Q3VoLV9GX1NqKDN4MD9WdyUoVFRnWSZkclE/dGhAcyRMRy1wU0dz
diRAeHhteCF6R2UqfVohTiluNXhaI2N0MTcKekB+K2w0czBAd1JJbDRofHtxZVEjUUB6WDc4SVBs
QCYjbnpXPUNGUllYV2N2Wm9tKkMqIWs/VEA5eSY0OHMkPiRHCnooeSQwanpSY2ZwcSkrR2lzNH5P
TEMhMSM7VzNpYkc9NWhvM1RWUC14MXwxLVhLQWt4cHotYFAmazA7PG02U1UjTAp6KGAjeEs0Xk94
fUlkbnRIVkpCJXB6TmNfKllJaVYtdTZFKjNmR35WODVlOXpPWDQ3S2V5YExoM1R+aUlORzF4WG0K
elo0S19gYXYwbnA4b3dFJjdvPyVCaVJPYzEoMXZGMnorfUdUYU0mIVhEd0N8ZjlDe0ArWlNBSE0z
K1FPXzRqZVU1CnpnN0IpKURvX3I/b1JrJkBpRGlUYHRpPXV4a190MzVNMWg3dElpTi1sRFQpKzhu
bUBNK3wwa2BJWHxAUFEzTTMkawp6WWY+KDZsfjV+bzFwI0teU1dHdT5iNDI7Vy02KWp3JmoyPURa
cVptaS0yN25kSUNDUXlXKygrWig4Wmh3JXlOJiQKejBjbThVd3VOWFFySFA3RkU7Ykp2ckZUNXBm
PjNEUUAkYG5MX2p9V0pIfD0oYjckUUxkSzBQS0U4aEk5PXdea1h+CnpxKFJUP1NzV0lPZXlIRyRH
bTk3e2o2TiV9OV9uN3JNOEtCbiRAc0h8R04paU13ZkFrKF82Y2pBelJ+YG5OYFNHRQp6OylsV3ha
WkpeN1crVlY5dDBVdj88KDspWmRSRm9IN2hmTSpRQHlIZSFwdz11PjVDQEJKMXd7N1VTZ3QmRVgx
d1kKeiZ0dzBpaiZsZChiYkI8IypYITYkQktfYHxGd0xeQ3RsSVJHVGVgbnM9b3A9KFF0UUU0VD9X
cVd5LWZKemd7dTV8CnpYRnU3eHtyeUd7SnY9VH5lYldKa3BKPX1BX1pqKjIwcjQhUCZeZncjUz4p
dmw/ezMma3stTlYlKTFHPndjTVBYOAp6S2JkdVNeTVNIMThKQWN7UU91Sm92bDBWcy1GaHljZlVu
cmJjNHdhS2RCYmkwdDhwSDNeLSVuejRJRk96QChzYDUKekdXQ2xHczx1YXNuOWk+bWRFQ3FZKm8o
P1phU1FHTEk2S0FhY0g/a3VufSY8SF9QJj8mU3UoT049Ung0bDZaNih5CnppT35mOXpNPWNvKVdg
Rl9GUnFweXY0ZW0tNT1NMSFsSW0+d3ViektQUmFsP3Qqej96bUA3RFYqe2J9eC1pNmQ+Wgp6azJL
ZUo9Qz9PUyE+Kl5qWj03LTF1WGEzc0FmWnM8PXI7S0JKSXtHcm1pSnFBRUFhJWB1LU1obCQ3WHYm
WnI/R1MKejVucyVqbTZ+Kld8SUd0PSs2I05+KjckTz5jVjQrKU19M3tTQWhQMjFDak8mU2NLejF0
dTA9MmoqTnM9RlNOMTR6CnpTYUljRCpHJCY5Rjc7YDxOOGFIaWlzamUhTWVGQjBpdSRHXjg1QE16
aEFTNDxCQTB4SlVZc3BGKXR6WkczOVUoNwp6O28/Kmg2VERlJW5ERz1aXklKYzdVRC1fYzFySjxM
Q2RfO0RaMTJYcXtucXxHZUN9TklsYHwmb3hJTz13V2I7S3YKemw8bEQmJTlNZi1uZjNmSFRefE9h
Mys7cHZaTSZyZ2lneEZ7P2xSPXsoKV8ydDdDYzxKPE1XI0tHd2xDeFZBdCk1Cnp6eF81TDhqSz1s
QT5YWVl2NFVnWll5ayQmTXlUWiRHQGhIQjgrVTZpPVJSI3Y/R0s5RUtENiE5NGAyaHptWiNMZQp6
S1IxSXdBbHcpNS0wV29ETUlSb1ModCplVGpmUUdHR2V1enswQXJHLUxsVH51KGFvfnw1MnR1KkMr
RjdkIWg+RDcKel4ocyNPZ352UU9jVC1zPktnP30/VDxvSW5FLXpoTFZqV1dwdkw/M01rdjYrYyZn
PjNaMTItUkpiXlpGfXs5byoxCnpGVnZtdkxEYWllS0F5NEI+OHRncD4kZ2p+VSRuRDNjVyV6fSpz
dHEtOTtHYksmKSF6dlUkTmwlPVJjbDRWJTFeUQp6eXJZK0VIWDZvPDlBMzkjQHNXMGhsQGxFRDtz
PHEmbipLSzhpSmdzcVh3TElwUXp+b3JxQFZQXmQ4SjJPKm1BM1kKeng/S1VzN3BAS0pZKExgZ3M1
XlBaK3hvYFh5ZEp5RiYyOEN8JmR3PmZGSTNwOSl6dktDZEJTfkRgfWhjS2JjUyFZCnpRe0tGVkdP
dTxPbCE2eV5AWmY7Tlc4SEc5eDg0fGY7N1MjO3k8X3ooS2FGZU9qXlpQYVJFd1NfM0xEdFpzfSZV
KQp6IW58OUpDbnF4ckRtKkUwWmM+M1pmRDFKdHtrcXhXS3dfNCtifDhoRGxgPlQyMGxARGNzYDdw
YDt8YHA3NUM+d2IKelZ5YiRVY1FAO0VMaXhkZ1dMfTBYNnVFUkR5IyRTbFRuVCM3b2d0aF41RHI0
UUBVMGtPe0h0XjZ7b0JGRVl9KiFaCno3YUw9MGFyVm83M0N5JGV7WEFgMGs3ZT9wKzdFVzEoZF9q
MmU5bU97OW80bm1IJEk5N2VXI0IqcER6NGpjKVZOWAp6VEd7aXtZVVRJXlEmeHtIOXpXeiFjPFAz
MmBpajhnQSFDTzlJdHtzQHVsYStXO1BUKmtgTH4wTSVicyFPNG5IJF4KelBfSUFFaDx0TkJxUUBg
NHYoKWYqPlg3LU8pRHQ1cko+TzBebWJDaCp8Qzl5OW8wISQtI0NBV1BpKEl6UFRiKzxKCnpJYDNs
UXJ8Z1N3cnpCTylfbHR7dGMpcjReTSRYSTV0YjZXcm98UUx6P0pzcD43Q0lCSjJGfCtoWlhjTXkx
XmV0cQp6ckBxVSFUR0hqd2d4YTlqRHxNXlpoUFhYMClCQTZGY3lOaUdeQEcoRCZNPW9GMGI8JnhG
PDI2Q2RoRCYkenhfT18Kek45b3FzZi16UU5EZjYqQUh8RmE4dXRofkBQeXNSVkM7V3t3QlJqVWVf
SWRsR259TmFNREJzSFhRM0Zpd3diJWVuCnpDUU8zRzJDJiF3JX1qJXFEJVdCSVNabn1gNGJiR2x3
YiVkXzh7bDdoQCs+eGgjUmpuMDBSUUpVemB1T3w9TlE7Vwp6cTJ1QlozPXlwfUpOPyhAYFZGJi1U
e1BXSnw4I3ZILV9xdSRsYSY/WUtrdksla3M9WHtXRW41JEBER0V6cnRFKU0Kem4lMCFvO3A0Wi1K
Rm1+fngqWll7eTdKb1h2QXZJO0BKLXJVK19tPUg/Q18jJHA3KH0pZH1adiR4XjBgTHBQWE93Cnpt
M1ZPWEduWiRkP3xGJWV1SVlPYCNuPHFuP31gbFA9d0JMPVJLK3R0bFdrcUlHUVlORntMOGUwXnR+
Pyt7ZF82OQp6O3VpT3wlfWpuPmZIPj4qdjdFX21LUCRjJHVgaCtOP1h8YWlicElpeEJDanZMSW5x
VkNAWE5JLWhIRE9JK2ZKODwKej5BZC0zYWk+JWFvajZ3OWYyQlRtXjNgXkl2KEV8YzRFND9reyVy
bVVQcCheeWY7PF97YW1pZylkP3g0OXRWPzxGCno4Jk1PJUsrYkthJjRGV19wWGo/eXMlQU5UPlIt
NVIoelgjI3p2Wm9wVWMtfGcrKmRlcyZpRGglZUFgYlA+ZT01OAp6YVh2MklyTTYzdC1ybGQjPHUz
emglZVE2ZHBtMW4lVnBzdC1iWWU3Zl9rWXgwWnlxbEFDXyVHMEdGKzhMZ1dsVmQKekpNWiNeI1k9
bG1EJipRXmNmOGF3O2Jxc04pJSFkYE9KV19mNH05SipAfWQocUUjZyg+OHxqd0hpXi15WCtoXlhC
CnoxVyleQiNDTWwmVyQyNX4tfGplQGBENTBeZzxhJm9lT2BGez5mKSNxdEhMK3BpI3BkPWpfNEdt
bUU2aW81VFdmSgp6ND5+a0ttPG9RWTYxakQqemszc04zcD0qWSkycGkyJVd3MGhoXkJtRUdkWUNN
JV5rMzw/c3drJlEqSEI/SWA5MjcKelFXbWBAekduMUtlbkdzdGRBUi1rc1c8bUtXXmI9QWFoe3A9
RyFnJHtjVVJVQmh4b0lJPStkKkRURUMkKUtCP1RACnomKXJ0SWBCOzAyOzs2TyVmeiFEITkoM0hI
YTktU1ZAeElEOFZ7I1lDUFcrcygrU2s5UkR5bzVERDlnTz8peXcrPQpMbSp1N1JJYHNWPy1ieSpf
CgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBmNjE2YTc0YjQx
N2Y2MWU5YWEzZGQyNWM4YmU4NmM5ZTJhMmZkMjhhLi42MGI3MjJjM2M5NDljN2I4NWU2NGQyZjNk
YTZiZjM1N2JjODBiYWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQpAQCAtMjkwLDYwICsyOTAsNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzV2l0aFByZXdhcm1pbmcpCiAgICAgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
KFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nOjpZZXMpOwogfQogCi1URVNUKFdlYktpdCwg
Q3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCi17Ci0gICAgLy8g
Q29weSB0aGUgYmFrZWQgZGF0YWJhc2UgZmlsZXMgdG8gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeQot
ICAgIE5TVVJMICp1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
IlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQiIHdpdGhFeHRlbnNpb246QCJzcWxp
dGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotCi0gICAgTlNV
UkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9j
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3JrZXJzLyIgc3Ry
aW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOwotICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQ
YXRoLnBhdGhdKTsKLQotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0
cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5p
bF07Ci0KLSAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSBzd1BhdGg7Ci0gICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0KLSAgICAvLyBGZXRjaCBTVyByZWNvcmRzCi0g
ICAgYXV0byB3ZWJzaXRlRGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0
aEFycmF5OkBbV0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsK
LSAgICBzdGF0aWMgYm9vbCByZWFkeVRvQ29udGludWU7Ci0gICAgW2RhdGFTdG9yZSBmZXRjaERh
dGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAg
ICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRp
bnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5
VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBGZXRj
aCByZWNvcmRzIGFnYWluLCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhl
IGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgotICAgIFtkYXRhU3Rv
cmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJl
YWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFz
aW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMg
aW4gZmxpZ2h0LgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRh
VHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwot
ICAgIGRhdGFTdG9yZSA9IG5pbDsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5
VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBUaGUg
cmVjb3JkcyBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxk
IGhhdmUgYmVlbiBtYWRlLgotICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlm
eSB0aGV5IGFyZSBnb25lLgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVz
OndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vi
c2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgwVSwg
ZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAg
IH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLX0K
LQogVEVTVChXZWJLaXQsIEN1c3RvbURhdGFTdG9yZURlc3Ryb3lXaGlsZUZldGNoaW5nTmV0d29y
a1Byb2Nlc3NEYXRhKQogewogICAgIE5TVVJMICpjb29raWVTdG9yYWdlRmlsZSA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvQ29va2llU3RvcmFnZS9Db29raWUuRmlsZSIgc3Ry
aW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6Tk9dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424709</attachid>
            <date>2021-03-30 15:53:02 -0700</date>
            <delta_ts>2021-03-30 19:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210330155301.patch</filename>
            <type>text/plain</type>
            <size>119403</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzOGUyZGNmODQ0MmJiNTQzNTYyY2E2
ODRlZTEwZGU3NDNkYjA5NDUuLmUwOWUwYzhlNjcxMzJjYTRlMjhlZmU5ODg0NmU4YzkwZmY3ZDYx
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lz
dGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1z
LgorICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2Nv
YSBhbmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxl
KToKKyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3
b3JrQ2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAg
IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRo
ZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgor
CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpyZWFkT3JNYWtlU2FsdCk6CisgICAgICAg
IE1vdmUgcmVhZE9yTWFrZVNhbHQoKSBmcm9tIE5ldHdvcmtDYWNoZURhdGEgdG8gRmlsZVN5c3Rl
bSBzbyB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldworICAgICAgICBTV1NjcmlwdFN0
b3JhZ2UuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpNYXBwZWRGaWxlRGF0YSk6CisgICAgICAgIFVwZGF0ZSBNYXBw
ZWRGaWxlRGF0YSdzIG9wZXJhdG9yIGJvb2woKSB0byByZXR1cm4gdHJ1ZSBpZiBtYXBwaW5nIHN1
Y2NlZWRlZCBidXQgdGhlIGZpbGUgc2l6ZQorICAgICAgICB3YXMgMC4gSXQgaXMgdXNlZnVsIHRv
IGRpc3Rpbmd1aXNoIGFuIGVycm9yIGZyb20gdGhlIGZpbGUgYmVpbmcgZW1wdHkgKHdoaWNoIGlz
IGEgdmFsaWQgY2FzZSkuCisKIDIwMjEtMDMtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgdGVybWluYXRlX3dpdGhfcmVhc29uIGlu
c3RlYWQgb2YgeHBjX2Nvbm5lY3Rpb25fa2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2NDAwNWYxNjlkNzhj
MDhlMWRjMmE4YjlmODE1NjE1ZThjMjczYjkuLjZjNzMzYzQwMTVkMzNiYTljYTA5ODgxYjU1YWRi
NmZkM2Y0YzBiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYgQEAKKzIwMjEtMDMtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBz
Y3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAg
IDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdvcmsgcHJvY2VzcyB3b3VsZCBzdG9yZSBz
ZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRlIGRhdGFiYXNlLgorICAgICAgICBXaGVu
IHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMsIHdlIHdvdWxkIGxvYWQgYWxsIHRob3Nl
IHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAgICAgaW50byBtZW1vcnkuIFRoaXMgd291
bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4K
KworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgdGhlIGFwcHJvYWNoIGlzIHRoaXMgcGF0
Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2VwYXJhdGUKKyAgICAgICAgZmlsZXMgb24g
dGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVuLCB3aGVuIGxvYWRpbmcgdGhlbSwgd2Ug
Y2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBhbmQgZ3JlYXRseSByZWR1Y2UgZGlydHkg
bWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2VydmljZSB3b3JrZXIgcHJv
Y2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50IHByb2Nlc3MpIGFsc28ga2VlcHMgYQor
ICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGZvciB0
aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcuIE1vcmUKKyAgICAgICAgd29yayB3aWxs
IGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZXh0ZW5k
IHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRob3NlIHNjcmlwdHMuIFRoaXMg
d291bGQKKyAgICAgICAgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2FnZSBvbiB0aGUgV2ViQ29udGVu
dC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3ZWxsLiBJIGFtCisgICAgICAgIGRvaW5n
IHRoaXMgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNlIHBhdGNoIHNpemUgYW5kIGZhY2lsaXRh
dGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhlcmUgc2hvdWxkIGJlIG5vIFdl
Yi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2VkCisgICAgICAgIGRpcnR5
IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9jZXNzIHdoZW4gc2VydmljZSB3b3JrZXJz
IGFyZSB1c2VkLgorCisgICAgICAgIEkgZGlkIG1hbnVhbCBtZW1vcnkgdGVzdGluZyB3aXRoIGEg
dmVyeSBsYXJnZSBzZXJ2aWNlIHdvcmtlciB0aGF0IGhhZCBvbmUgfjEwME1CIG1haW4KKyAgICAg
ICAgc2NyaXB0LCBpbXBvcnRpbmcgYW5vdGhlciB+MTAwTUIgc2NyaXB0LgorCisgICAgICAgIEhl
cmUgYXJlIHRoZSBtZW1vcnkgcmVzdWx0cyB3aXRob3V0IG15IGNoYW5nZToKKyAgICAgICAgLSBO
ZXR3b3JraW5nIChEaXJ0eSk6IDIzOE1CIChjb2xkKSAvIDMzMU1CICh3YXJtKQorICAgICAgICAt
IFdlYkNvbnRlbnQgKERpcnR5KTogNDQxTUIgKGNvbGQpIC8gODU3TUIgKHdhcm0pCisKKyAgICAg
ICAgSGVyZSBhcmUgdGhlIG1lbW9yeSByZXN1bHRzIHdpdGggbXkgY2hhbmdlOgorICAgICAgICAt
IE5ldHdvcmtpbmcgKERpcnR5KTogMjJNQiAoY29sZCkgLyAxNE1CICh3YXJtKQorICAgICAgICAt
IFdlYkNvbnRlbnQgKERpcnR5KTogNDQwTUIgKGNvbGQpIC8gNDM4TUIgKHdhcm0pCisKKyAgICAg
ICAgVGhpcyBzaG93cyB0aGF0IEFMTCBtZW1vcnkgZnJvbSB0aGUgc2NyaXB0cyBpbiB0aGUgbmV0
d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBtYXJrZWQKKyAgICAgICAgYXMgZGlydHkuIFdlIGFs
c28gc2VlIGEgc2lnbmlmaWNhbnQgcHJvZ3Jlc3Npb24gaW4gdGhlIFdlYlByb2Nlc3MgaW4gdGhl
IHdhcm0gY2FzZSwgc2luY2UKKyAgICAgICAgdGhlIHNjcmlwdHMgYXJlIGNvbWluZyBmcm9tIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgYXMgc2hhcmVkIG1lbW9yeSBpbiB0aGlzIGNhc2UuIFRoZXJlIGlz
CisgICAgICAgIG5vIHByb2dyZXNzaW9uIGluIHRoZSBXZWJQcm9jZXNzIGluIHRoZSBjb2xkIGNh
c2UgeWV0LCBzaW5jZSB0aGUgc2NyaXB0IHdlcmUganVzdAorICAgICAgICBkb3dubG9hZGVkIGFu
ZCBhcmUgY29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIE5ldHdvcmtQcm9jZXNzLiBJ
biBhIGZvbGxvdy11cCwgdGhlCisgICAgICAgIG5ldHdvcmsgcHJvY2VzcyBjb3VsZCBzZW5kIHNo
YXJlZCBtZW1vcnkgYmFjayB0byB0aGUgV2ViUHJvY2VzcywgYWZ0ZXIgc2F2aW5nIHRoZSBzY3Jp
cHRzCisgICAgICAgIHRvIGRpc2ssIHNvIHRoYXQgdGhlIFdlYlByb2Nlc3MgY2FuIHJlcGxhY2Ug
dGhlIGNvcGllcyBvZiBpdHMgc2NyaXB0cyBhbmQgc2F2ZSBtb3JlIG1lbW9yeS4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MgdG8gdGhlIHByb2pl
Y3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckFnZW50OjpnZXRJbml0aWFs
aXphdGlvbkluZm8pOgorICAgICAgICBDb252ZXJ0IHRoZSBzY3JpcHQgdHlwZSBmcm9tIFNoYXJl
ZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgRml4IGFzc2VydGlvbnMgdGhhdCB3ZXJlIGhpdHRpbmcgd2hlbiBjb21wYXJpbmcgdG8g
ZW1wdHkgU2hhcmVkQnVmZmVycyAob2Zmc2V0IHdvdWxkIGJlIDAKKyAgICAgICAgYW5kIHNpemUg
d291bGQgYmUgMCkuIFRoaXMgd2FzIGNhdWdodCBieSBBUEkgdGVzdHMgc2luY2Ugd2UgaGF2ZSBz
b21lIHNlcnZpY2Ugd29ya2VyIEFQSQorICAgICAgICB0ZXN0cyB0aGF0IHVzZSBlbXB0eSB3b3Jr
ZXIgc2NyaXB0cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkp
OgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9uIGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZl
ciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJzYSwgaW4gdGhlCisgICAgICAgIHNlcnZpY2Ug
d29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRv
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1RvU2NyaXB0QnVmZmVyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNo
YXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5IGNhbiBob2xkCisgICAg
ICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0gQWRkIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkg
LyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxpdHkgZnVuY3Rpb25zIHRvCisgICAgICAgICAg
Y29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9tIHNjcmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0
byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNUYWJsZVNjaGVtYSk6Cisg
ICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEgYW5kIGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3
ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNp
ZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVhZCwgdGhvc2Ugc2NyaXB0cworICAgICAgICBh
cmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZpbGVzeXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFn
ZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNv
ZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1
Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRhCisgICAgICAgIG1lbWJlcnMgb2YgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCwgZXhjZXB0IGZvciB0aGUgYWN0dWFs
CisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5vdyBzYXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRl
ZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAgICAgIGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhh
c2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ugd2Ugbm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAg
ICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJjZXMgaW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0
aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJhdGVseSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisK
KyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0U291cmNlcyk6CisgICAgICAgIFV0aWxpdHkg
ZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRvIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlw
dEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0aG91dCB0aGUgc2NyaXB0CisgICAgICAgIHNv
dXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNRTGl0ZSBkYXRhYmFzZS4KKworICAgICAgICAo
V2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2spOgorICAgICAgICBVdGlsaXR5
IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hNYXAgb2YgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBmcm9tIGEgSGFzTWFwIG9mIEltcG9ydGVkU2Ny
aXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhlIFNRTGl0ZURhdGFiYXNlLiBUaGUKKyAgICAg
ICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBT
V1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0
aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNrZ3JvdW5kIHF1ZXVlIGZvciB0aHJlYWQtc2Fm
ZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3Rv
cmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIFJldHVybnMgdGhlIHBhdGggb24gdGhlIGZp
bGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBhcmUgc3RvcmVkLgorCisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZSk6CisgICAg
ICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkgYSBTV1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVy
biBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxs
KToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFyIGFsbCB0aGUgc2VydmljZSB3b3JrZXIgc2Ny
aXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRoZSBkYXRhYmFzZSwKKyAgICAgICAgbm93IHRo
YXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKyAgICAgICAgLSBTdG9wIHN0b3Jpbmcg
dGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxpdGUgZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0
b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZp
YSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0gSW1wcm92ZSBsb2dnaW5nCisgICAgICAgIC0g
V2hlbiBkb25lIHN0b3JpbmcgdGhlIHNjcmlwdHMgdG8gZGlzaywgc2VuZCB0aGVzZSBuZXcgbW1h
cCdkIHZlcnNpb25zIGJhY2sgdG8gdGhlCisgICAgICAgICAgU1dTZXJ2ZXJXb3JrZXIgb24gdGhl
IG1haW4gdGhyZWFkLCBzbyB0aGF0IGl0IGNhbiByZXBsYWNlIGl0J3MgaGVhdnkgc2NyaXB0IHNv
dXJjZXMgd2l0aAorICAgICAgICAgIHRoZXNlIG9uZXMuIFRoaXMgaGVscHMgcmVkdWNlIG1lbW9y
eSB1c2FnZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9y
dFJlY29yZHMpOgorICAgICAgICAtIExvYWQgdGhlIHNjcmlwdCBzb3VyY2VzIGZyb20gdGhlIGRp
c2sgdmlhIFNXU2NyaXB0U3RvcmFnZSwgbm93IHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyCisgICAg
ICAgICAgc3RvcmVkIGluIHRoZSBTUUxpdGUgZGF0YWJhc2UuCisgICAgICAgIC0gSW1wcm92ZSBs
b2dnaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25TdG9yZTo6ZGlkU2F2
ZVdvcmtlclNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuaDoKKyAgICAgICAgUGFzcyBzY3JpcHRzIHRoYXQgd2VyZSBzYXZl
ZCB0byBkaXNrIGZyb20gdGhlIHN0b3JlIHRvIHRoZSBTV1NlcnZlcldvcmtlciBzbyB0aGF0IGl0
CisgICAgICAgIGNhbiByZXBsYWNlIGl0cyBzY3JpcHRzIHNvdXJjZXMgd2l0aCB0aG9zZSBuZXcg
bW1hcCdkIHZlcnNpb24sIGluIG9yZGVyIHRvIHNhdmUgbWVtb3J5LgorCisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Omhhc2hVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpT
V1NjcmlwdFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZWdp
c3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9y
YWdlOjpzY3JpcHRQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oOiBBZGRlZC4KKyAgICAgICAg
QWRkIFNXU2NyaXB0U3RvcmFnZSB0byBkZWFsIHdpdGggdGhlIHN0b3JhZ2UgLyByZXRyaWV2YWwg
b2YgU2VydmljZQorICAgICAgICBXb3JrZXIgc2NyaXB0cyB0byAvIGZyb20gZGlzaywgYXMgZmls
ZXMgb24gdGhlIGZpbGUgc3lzdGVtLiBXaGVuCisgICAgICAgIGdvaW5nIGEgcmV0cmlldmFsLCB3
ZSByZXR1cm4gYSBzY3JpcHQgYXMgYSBTaGFyZWRCdWZmZXIgd2hpY2ggdXN1YWxseSBjb250YWlu
cworICAgICAgICBtbWFwJ2QoKSBkYXRhICh3ZSBkb24ndCB1c2UgbW1hcCgpIGZvciBmaWxlcyB0
aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIFBBR0VfU0laRSkuCisgICAgICAgIFRoZSBzY3JpcHRz
IHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVzaWRlIHRoZSBkYXRhYmFzZS4gVGhlIHNj
cmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBvcmlnaW4gKHVzaW5nIFNIQTI1NiBvZiB0
aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lIHdpdGggc2FsdCksIGFuZCB0aGVuIGJ5IHJlZ2lzdHJh
dGlvbiAoYnkKKyAgICAgICAgdXNpbmcgU0hBMjU2IG9mIHRoZSByZWdpc3RyYXRpb24gc2NvcGUg
YXMgc3ViZm9sZGVyIG5hbWUgd2l0aCBzYWx0KS4gVGhlIGZpbGUgbmFtZSBmb3IgdGhlIHNjcmlw
dAorICAgICAgICBpcyBhIFNIQTI1NiBvZiB0aGUgc2NyaXB0IFVSTCB3aXRoIHNhbHQuCisKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgIFBh
c3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlzayBmcm9tIHRoZSBzdG9yZSB0byB0aGUg
U1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAgICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0
cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZl
IG1lbW9yeS4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6Cisg
ICAgICAgIENvbnZlcnQgc2NyaXB0IGZyb20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAg
ICAgICAgQ29udmVydCBzY3JpcHQgZnJvbSBTaGFyZWRCdWZmZXIgdG8gU3RyaW5nLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRT
Y3JpcHRSZXNvdXJjZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgVGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgZm9yIGNvbnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRh
a2luZworICAgICAgICBhbGwgaXRzIGRhdGEgbWVtYmVycyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJz
LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHQgY29uc3QpOgorICAgICAgICBVc2UgU2hh
cmVkQnVmZmVyIHR5cGUgZm9yIHNjcmlwdCBpbnN0ZWFkIG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0
IHdlIGNhbiBob2xkIG9uIHRoZQorICAgICAgICBtbWFwJ2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9y
eSB1c2FnZS4KKwogMjAyMS0wMy0zMCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgogCiAgICAgICAgIE5vdyBQbGF5aW5nIGNvbnRlbnQgaXNuJ3QgdXBkYXRlZCB3aGVuIG1lZGlh
IHNlc3Npb24ncyBNZXRhZGF0YSBpcyBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0NzA3OGVmMmQzMWVk
ODU4MGJlMjMwNTg5NjZmMzU3OTA3ZGNiMTI3Li5jODQ0NjkzNTk2ZWMzOGJmY2I5NmM5OWU2Mzkx
OWZkN2ZiYjQ0Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgc2Ny
aXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzgwOAorICAgICAgICA8
cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFBhc3MgYSBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBpbiB0aGUgU2V0U2NyaXB0UmVzb3Vy
Y2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2UgdXNlZCB0byBwYXNzIHRoZSBJbXBv
cnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVj
dG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMpOgorICAgICAgICBEcm9wIGRl
bGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50YXRpb24gYW5kIHVzZSB0aGUgZXhp
c3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoKSBpbiB3
dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6Om1hcFRvRmls
ZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhlIG1hcFRvRmlsZSgpIGxvZ2ljIHRv
IFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIFVwZGF0ZSBTaGFy
ZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlzdGluZ3Vpc2ggYSBudWxsIFNoYXJl
ZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBXZSBub3cgdXNlIFNoYXJlZEJ1ZmZl
ciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291cmNlcworICAgICAgICBhbmQgaXQg
aXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0byBiZSBlbXB0eSAoYW5kIHRoZXkg
YXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0cykuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3Vy
Y2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNlIElQQworICAgICAgICBmb3IgY29u
dmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0ZWRTY3JpcHQgZGF0YSBtZW1iZXJz
IHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMzAgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBOb3cgUGxheWluZyBjb250ZW50IGlzbid0IHVwZGF0ZWQgd2hlbiBt
ZWRpYSBzZXNzaW9uJ3MgTWV0YWRhdGEgaXMgbW9kaWZpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5k
ZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2YTFmZjBiZS4uMDM0NjIwNmYyMjJl
ZDAwNTUyYmIzZGM0MTBmMmE4MmUyMjk5NzA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KQEAgLTMxOSw2ICszMjAsNyBAQCBib29sIE1hcHBlZEZp
bGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIEZpbGVPcGVu
TW9kZSBvcGVuTQogICAgIH0KIAogICAgIGlmICghc2l6ZSkgeworICAgICAgICBtX2lzVmFsaWQg
PSB0cnVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM0Nyw2ICszNDksNyBA
QCBib29sIE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIEZpbGVPcGVuTW9kZSBvcGVuTQogCiAgICAgbV9maWxlRGF0YSA9IGRhdGE7CiAgICAg
bV9maWxlU2l6ZSA9IHNpemU7CisgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDA4LDUgKzQxMSwxMDEgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgIioiX3Mp
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChmaWxlSXNE
aXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAg
ICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBGdW5jdGlvbjx2b2lkKGNvbnN0IEZ1
bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+Jik+JiYgYXBwbHksIFBsYXRmb3Jt
RmlsZUhhbmRsZSogb3V0cHV0SGFuZGxlKQoreworICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZp
bGVFeGlzdHMgPSB0cnVlOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZp
bGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyLCBmYWlsSWZGaWxlRXhpc3RzKTsKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVG
aWxlKGhhbmRsZSwgYnl0ZXNTaXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjpt
YWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKKyAgICBib29sIHN1Y2Nlc3M7Cisg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShoYW5kbGUsIEZpbGVTeXN0
ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
U2hhcmVkLCBzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
dm9pZCogbWFwID0gY29uc3RfY2FzdDx2b2lkKj4obWFwcGVkRmlsZS5kYXRhKCkpOworICAgIHVp
bnQ4X3QqIG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFwKTsKKworICAgIGFwcGx5
KFsmbWFwRGF0YV0oY29uc3QgdWludDhfdCogY2h1bmssIHNpemVfdCBjaHVua1NpemUpIHsKKyAg
ICAgICAgbWVtY3B5KG1hcERhdGEsIGNodW5rLCBjaHVua1NpemUpOworICAgICAgICBtYXBEYXRh
ICs9IGNodW5rU2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisKKyNpZiBPUyhX
SU5ET1dTKQorICAgIERXT1JEIG9sZFByb3RlY3Rpb247CisgICAgVmlydHVhbFByb3RlY3QobWFw
LCBieXRlc1NpemUsIEZJTEVfTUFQX1JFQUQsICZvbGRQcm90ZWN0aW9uKTsKKyAgICBGbHVzaFZp
ZXdPZkZpbGUobWFwLCBieXRlc1NpemUpOworI2Vsc2UKKyAgICAvLyBEcm9wIHRoZSB3cml0ZSBw
ZXJtaXNzaW9uLgorICAgIG1wcm90ZWN0KG1hcCwgYnl0ZXNTaXplLCBQUk9UX1JFQUQpOworCisg
ICAgLy8gRmx1c2ggKGFzeW5jaHJvbm91c2x5KSB0byBmaWxlLCB0dXJuaW5nIHRoaXMgaW50byBj
bGVhbiBtZW1vcnkuCisgICAgbXN5bmMobWFwLCBieXRlc1NpemUsIE1TX0FTWU5DKTsKKyNlbmRp
ZgorCisgICAgaWYgKG91dHB1dEhhbmRsZSkKKyAgICAgICAgKm91dHB1dEhhbmRsZSA9IGhhbmRs
ZTsKKyAgICBlbHNlCisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworCisg
ICAgcmV0dXJuIG1hcHBlZEZpbGU7Cit9CisKK3N0YXRpYyBTYWx0IG1ha2VTYWx0KCkKK3sKKyAg
ICBTYWx0IHNhbHQ7CisgICAgc3RhdGljX2Fzc2VydChzYWx0LnNpemUoKSA9PSA4LCAiU2FsdCBz
aXplIik7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPigmc2FsdFswXSkgPSBjcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgICpyZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICBy
ZXR1cm4gc2FsdDsKK30KKworT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpKSB7Cisg
ICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgICAgIFNhbHQgc2FsdDsKKyAgICAgICAgYXV0byBi
eXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3RlbTo6cmVhZEZyb21G
aWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXpl
KCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgICAgICBpZiAo
Ynl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHNhbHQ7CisKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKKyAgICB9CisKKyAgICBTYWx0IHNh
bHQgPSBtYWtlU2FsdCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVt
OjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlLCBGaWxlU3lz
dGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNlcik7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpp
c0hhbmRsZVZhbGlkKGZpbGUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYm9vbCBzdWNj
ZXNzID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZp
bGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpKSA9
PSBzYWx0LnNpemUoKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHNhbHQ7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdmNmI5YzMyMTQ3MjM4NGVmNGM0Li5j
ODlmMWFkOWJjNmEyMTYxNTRmZTdlNjg0NzcwYmZlNTY4ZWZiMjEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
CkBAIC0xNDQsNiArMTQ0LDkgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKIAogaW5saW5lIGJvb2wgaXNI
YW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFu
ZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAordXNpbmcgU2FsdCA9IHN0ZDo6
YXJyYXk8dWludDhfdCwgOD47CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8U2FsdD4gcmVh
ZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKKwogLy8gUHJlZml4IGlzIHdoYXQgdGhl
IGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9KTsK
IFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uID0gRmlsZUFjY2Vz
c1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFsc2UpOwpAQCAtMTkw
LDE0ICsxOTMsMTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmaWxlbmFtZUZvckRpc3Bs
YXkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByb2Ft
aW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29s
IGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKIFdURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAqY3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpOwotV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYK
IAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJik7CisKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVhbFBhdGgoY29uc3QgU3Ry
aW5nJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzU2FmZVRvVXNlTWVtb3J5TWFwRm9y
UGF0aChjb25zdCBTdHJpbmcmKTsKQEAgLTIxNiw3ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOwogICAgIE1hcHBlZEZpbGVEYXRhJiBv
cGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX2ZpbGVEYXRhOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGNvbnN0IHZvaWQqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVEYXRhOyB9CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsZVNpemU7IH0KIApAQCAtMjI3LDYgKzIzMCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkKiBtX2ZpbGVEYXRhIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG1fZmlsZVNp
emUgeyAwIH07CisgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIE1h
cHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBN
YXBwZWRGaWxlTW9kZSBtYXBNb2RlLCBib29sJiBzdWNjZXNzKQpAQCAtMjQyLDYgKzI0Niw3IEBA
IGlubGluZSBNYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgRmlsZU9wZW5Nb2RlIG9wCiBpbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZp
bGVEYXRhKE1hcHBlZEZpbGVEYXRhJiYgb3RoZXIpCiAgICAgOiBtX2ZpbGVEYXRhKHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9maWxlRGF0YSwgbnVsbHB0cikpCiAgICAgLCBtX2ZpbGVTaXplKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9maWxlU2l6ZSwgMCkpCisgICAgLCBtX2lzVmFsaWQoc3RkOjpleGNo
YW5nZShvdGhlci5tX2lzVmFsaWQsIGZhbHNlKSkKIHsKIH0KIApAQCAtMjQ5LDkgKzI1NCwxNCBA
QCBpbmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVk
RmlsZURhdGEmJiBvdGhlcikKIHsKICAgICBtX2ZpbGVEYXRhID0gc3RkOjpleGNoYW5nZShvdGhl
ci5tX2ZpbGVEYXRhLCBudWxscHRyKTsKICAgICBtX2ZpbGVTaXplID0gc3RkOjpleGNoYW5nZShv
dGhlci5tX2ZpbGVTaXplLCAwKTsKKyAgICBtX2lzVmFsaWQgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1faXNWYWxpZCwgZmFsc2UpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAorLy8gVGhpcyBjcmVh
dGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBzIGl0LCB3cml0ZSB0aGUgcHJvdmlkZWQgZGF0
YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVkIGZpbGUuCisvLyBUaGlzIGZ1bmN0aW9uIGZh
aWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIGF0IHRoZSBkZXN0aW5hdGlvbiBwYXRoLgor
V1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9v
bChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKT4mJiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxl
KiA9IG51bGxwdHIpOworCiB9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtSW1wbAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjRkZDQ2M2UwMjNhZGQ2ZWMyNGFjZGQxOThm
OTkxYTBmZmY3MTFlMy4uM2UwMTc1M2I2ZTNiNzI0Y2ZkODczMjY3ODg2NTc5MjVkNzUxNDE1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTI2ODUsNiArMjY4NSw3IEBAIHdvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvblN0b3JlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcAor
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhMDQwMGMzNzA3YmE2MzE4ZDk4MDA4NzE3OWY3YmRmZTg1MDk5ZGQ5Li4zOTcxZjMw
YzA3OTllNzQ5NTg5YTkwMDVhZTg0Mjg4NzhmMmJkY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjcxLDYgKzEyNzEsNyBA
QAogCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBDQkYzNDFE
NEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi87IH07CiAJCTQ2MEUz
MDc3MjIyRjRGMDMwMDlBMDYwNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lv
blN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjVFREQ5RjIyMkY0RUMzMDBCNDZFMTYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1p
c3Npb25TdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2MjE4QUNCMUY3MkQ2NEUwMDU3NEZCRSAvKiBET01IaWdoUmVzVGltZVN0YW1wLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkUwMTZBRDFG
NzJENjFFMDAyODJCMkMgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2MjczQ0FGMjYwRTU5RUYwMDZGQUE5
MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MjczQ0FDMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjM1
MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4MTA5MEIwMEMyODkyMiAvKiBX
aW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNFQjYyMTFCODc4OUNC
MDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovOyB9OwogCQk0NjUzMDdEMDFEQjZFRTQ4MDBF
NDEzN0MgLyogSlNVSUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlFdmVudEluaXQu
aCAqLzsgfTsKQEAgLTgyNDEsNiArODI0Miw4IEBACiAJCTQ2MENCRjMzMUQ0QkNDRkUwMDkyRTg4
RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNET01XaW5kb3dQcm9wZXJ0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2luZG93UHJvcGVy
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRDE5NDQxRkNFMjFERDAw
QzNEQjg1IC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyNzNDQUMyNjBFNTlERjAw
NkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTV1NjcmlwdFN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYy
NzNDQUUyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNl
cnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9i
c2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUEyMDgx
MDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdpbmRvd1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzUy
MUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDcxOCw2ICsyMDcyMSw4IEBACiAJCQkJNTFCOTE0MEIxRkQyNzgyNTAwRUUy
ODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggKi8sCiAJCQkJNDE1MUU1QjkxRkJBNEM3NjAwRTQ3
RTJEIC8qIFNXT3JpZ2luU3RvcmUuY3BwICovLAogCQkJCTQxNTFFNUI3MUZCQTRDNzUwMEU0N0Uy
RCAvKiBTV09yaWdpblN0b3JlLmggKi8sCisJCQkJNDYyNzNDQUUyNjBFNTlERjAwNkZBQTkxIC8q
IFNXU2NyaXB0U3RvcmFnZS5jcHAgKi8sCisJCQkJNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8q
IFNXU2NyaXB0U3RvcmFnZS5oICovLAogCQkJCTUxN0E1MkVGMUY0NzUzNTkwMERDREMwQSAvKiBT
V1NlcnZlci5jcHAgKi8sCiAJCQkJNTE3QTUyRUUxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVy
LmggKi8sCiAJCQkJODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUu
Y3BwICovLApAQCAtMzUzMDgsNiArMzUzMTMsNyBAQAogCQkJCTQ2NjU4REM5MUZBMjRCODcwMEY3
REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMTFBOUVDRTIx
NDAzQTVDMDBDRkIyMEEgLyogU3dpdGNoaW5nR1BVQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTUxRTVCQjFGQkE0QzdBMDBFNDdFMkQgLyogU1dPcmlnaW5TdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJK
b2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1OTcxRjRBNjg2RjAwQjU0REVEIC8q
IFNXU2VydmVyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdl
bnQuY3BwCmluZGV4IDIxYjMwZWUyOTQ3MjZiMjNjMjdhYjIwNDU2ZTU5ODI1MzY5MTNkMTEuLjRh
M2U3ZTk3ODFmZjZhMWNmNzM4NzdjNTVlMGM5NjkzMDQwZDdjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtl
ckFnZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8
UHJvdG9jb2w6OlNlcnZpY2VXb3JrZXI6OkNvbmZpZ3VyYXRpb24+PiBTZXJ2aWNlV29yawogICAg
ICAgICAuc2V0VGFyZ2V0SWQobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaWRlbnRpZmllcigp
KQogICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4obV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
c2VjdXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSkKICAgICAgICAgLnNldFVybChtX3NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdFVSTC5zdHJp
bmcoKSkKLSAgICAgICAgLnNldENvbnRlbnQobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkuY29udGV4dERhdGEoKS5zY3JpcHQpCisgICAgICAgIC5zZXRDb250ZW50KHNjcmlwdEJ1
ZmZlclRvU3RyaW5nKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHRE
YXRhKCkuc2NyaXB0KSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNTFiYzRhYTk4M2M4NzNjZjEzZDU0M2RkMWM3
NjY0Y2NmNjY1ZGFhOS4uNTg3YmFlYjExZTQzNDdiYzYwZWEyMzI5ODI1NWUzOTU4ZjFjODdjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC03MCwxNSArNzAs
MTUgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKIH0KICNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVk
RmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQogewotICAgIGJv
b2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVk
RmlsZURhdGEoZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIG1h
cHBpbmdTdWNjZXNzKTsKLQotICAgIGlmICghbWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci0KLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkp
OworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7
CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGlu
Z1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwor
ICAgIH0KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmls
ZVBhdGgpOwogfQogCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0
b3I8Y2hhcj4mJiB2ZWN0b3IpCkBAIC0yODEsOCArMjgxLDggQEAgYm9vbCBTaGFyZWRCdWZmZXI6
Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRoaXNPZmZzZXQgPCB0aGlz
U2VnbWVudC5zaXplKCkpOwotICAgICAgICBBU1NFUlQob3RoZXJPZmZzZXQgPCBvdGhlclNlZ21l
bnQuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHRoaXNPZmZzZXQgPD0gdGhpc1NlZ21lbnQuc2l6
ZSgpKTsKKyAgICAgICAgQVNTRVJUKG90aGVyT2Zmc2V0IDw9IG90aGVyU2VnbWVudC5zaXplKCkp
OwogCiAgICAgICAgIHNpemVfdCB0aGlzUmVtYWluaW5nID0gdGhpc1NlZ21lbnQuc2l6ZSgpIC0g
dGhpc09mZnNldDsKICAgICAgICAgc2l6ZV90IG90aGVyUmVtYWluaW5nID0gb3RoZXJTZWdtZW50
LnNpemUoKSAtIG90aGVyT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAppbmRleCAyM2JmNWE4ZWRiNGMxZTMwMjliN2NiNDc0OWVhY2Q1NTAxYmE5MTk0Li4zYzIyM2Ey
ZmYzOTY5ZTY5MzY4NjMyYzgwOGEyNzM5N2Q5ZjI3NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtNjgsNyArNjgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcik7IH0KICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KICAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwor
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorCisgICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpT
aGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CiAKICAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3RvcjxjaGFyPiYmKTsKICAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA0ZDQ3NGYx
NmU1ODhkZDAwZmIzOWQ1NjBmNjQxM2M2MmE5Mzg2ZWYyLi5hNGJlMTAwNDBiZTI4NTkyMTBiNzJj
ZWQyMzE4MmFmMDY0N2E3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBAIC02MCw3ICs2
MSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAKICAgICBpZiAoaXNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdFJlc291cmNlID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2NyaXB0UmVz
b3VyY2UodXJsKSkgewotICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdFJlc291cmNl
LT5zY3JpcHQpOworICAgICAgICAgICAgbV9zY3JpcHQuYXBwZW5kKHNjcmlwdEJ1ZmZlclRvU3Ry
aW5nKCpzY3JpcHRSZXNvdXJjZS0+c2NyaXB0KSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlVVJM
ID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25zZU1J
TUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKQEAgLTEwMSw3ICsxMDIsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtl
clNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAog
ICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVU
eXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
TmV0d29ya0Vycm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBKYXZhU2NyaXB0IG1p
bWUgdHlwZSJfcyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHNjcmlwdCgpLCBtX3Jlc3BvbnNlVVJMLCBt
X3Jlc3BvbnNlTUlNRVR5cGUgfSk7CisgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHN0cmluZ1RvU2NyaXB0QnVmZmVy
KHNjcmlwdCgpKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0K
ICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmlu
ZGV4IDE2ZGYyZDgyNDlmODdmNmFlNDM3M2UyNjU2MjNjM2Q4YTk5YjVlZGYuLjFlYTU5MDFiZDlk
MmZkOWM3OTNiMmQ1YWUwZTI3MGU4M2M4ZTcyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBA
IC0zNyw3ICszNyw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgICAgIGpvYkRhdGFJZGVudGlmaWVy
LAogICAgICAgICByZWdpc3RyYXRpb24uaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLAotICAgICAgICBzY3JpcHQuaXNvbGF0ZWRDb3B5KCksCisgICAgICAg
IHNjcmlwdC0+Y29weSgpLAogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCks
CiAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS5pc29sYXRlZENvcHkoKSwKICAgICAgICAg
cmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCkBAIC00OCw2ICs0OCwyMCBAQCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHko
KSBjb25zdAogICAgIH07CiB9CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChh
dXRvIGl0ID0gYnVmZmVyLmJlZ2luKCk7IGl0ICE9IGJ1ZmZlci5lbmQoKTsgKytpdCkKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBp
dC0+c2VnbWVudC0+c2l6ZSgpKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KworUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5nVG9TY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKaW5kZXggM2FkNWQ0YTEyNjk1YjY5ZWUxNjVlZTQ4MGE5NjFiMTBmMWRi
ZGM3ZS4uODQ1NDFkNDYyYThiNzBhNGIzM2QzYTIzNjcwYWJiMjQ2MGU1OTJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOSwxMyArNDAsMTYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitTdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hhcmVkQnVmZmVy
Jik7CitSZWY8U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
KTsKKwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgc3RydWN0IEltcG9y
dGVkU2NyaXB0IHsKLSAgICAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2NyaXB0OwogICAgICAgICBVUkwgcmVzcG9uc2VVUkw7CiAgICAgICAgIFN0cmlu
ZyBtaW1lVHlwZTsKIAotICAgICAgICBJbXBvcnRlZFNjcmlwdCBpc29sYXRlZENvcHkoKSBjb25z
dCB7IHJldHVybiB7IHNjcmlwdC5pc29sYXRlZENvcHkoKSwgcmVzcG9uc2VVUkwuaXNvbGF0ZWRD
b3B5KCksIG1pbWVUeXBlLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICAgICAgSW1wb3J0ZWRTY3Jp
cHQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBzY3JpcHQtPmNvcHkoKSwgcmVzcG9u
c2VVUkwuaXNvbGF0ZWRDb3B5KCksIG1pbWVUeXBlLmlzb2xhdGVkQ29weSgpIH07IH0KIAogICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgICAgICB7CkBAIC01NCw3ICs1OCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgewogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxJbXBvcnRlZFNjcmlwdD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gc2NyaXB0OworICAgICAgICAgICAgT3B0
aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IHNjcmlwdDsKICAgICAgICAgICAgIGRlY29kZXIg
Pj4gc2NyaXB0OwogICAgICAgICAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKQEAgLTgwLDcgKzg0LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7CiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
PiBqb2JEYXRhSWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBy
ZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXI7Ci0gICAgU3RyaW5nIHNjcmlwdDsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBzY3Jp
cHQ7CiAgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0
cmluZyByZWZlcnJlclBvbGljeTsKQEAgLTEyMCw4ICsxMjQsOSBAQCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlYwogICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICBTdHJpbmcgc2NyaXB0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2NyaXB0KSkKKyAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gc2NyaXB0Owor
ICAgIGRlY29kZXIgPj4gc2NyaXB0OworICAgIGlmICghc2NyaXB0KQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKQEAgLTE1Nyw3ICsxNjIsNyBAQCBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlYwogICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciksCiAgICAgICAg
IFdURk1vdmUoKnJlZ2lzdHJhdGlvbiksCiAgICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSwKLSAgICAgICAgV1RGTW92ZShzY3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpz
Y3JpcHQpLAogICAgICAgICBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLAogICAgICAgICBXVEZN
b3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSksCiAgICAgICAgIFdURk1vdmUocmVmZXJyZXJQb2xp
Y3kpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBkNzBmNGY1ZTY5M2YyNzdmNjU1
ODNlN2E0ZTA3NjE0NTNjNTRlZmFkLi5hNjg0YzcyMGY2ODNmM2QxMGYzYTA5ZDQyNTI3NGU2ZWVi
ZTI2ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNl
dHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVn
Z2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBp
ZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6
IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdv
cmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIo
KSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBNb25v
dG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRl
bnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJveHks
IGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BP
cmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tl
dFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQorICAgIDog
V29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29y
a2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigp
LCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90
b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVu
dGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKGRhdGEu
c2NyaXB0KSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEu
cmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJD
b25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRl
QWxsRW5hYmxlZCgpKQogICAgICwgbV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBt
X3dvcmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQo
KSkKICAgICAsIG1faGVhcnRCZWF0VGltZW91dChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCktPnNob3VsZFVzZVNob3J0VGltZW91dCgpID8gaGVhcnRCZWF0VGltZW91
dEZvclRlc3QgOiBoZWFydEJlYXRUaW1lb3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApp
bmRleCBjZWU4Y2M4YzA4YmUwYjFiN2Y1NDExMGE2Y2IzMTc0NmU5ODk0YjE0Li5kODg1YTIzNzBm
MzA1MjU5NzExMTdhYjk4MzkzZWUxNTQwODQ3OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFuc2FjdGlvbi5o
IgorI2luY2x1ZGUgIlNXU2NyaXB0U3RvcmFnZS5oIgogI2luY2x1ZGUgIlNXU2VydmVyLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KQEAgLTQ5LDcgKzUwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
Y29uc3QgdWludDY0X3Qgc2NoZW1hVmVyc2lvbiA9IDU7CitzdGF0aWMgY29uc3QgdWludDY0X3Qg
c2NoZW1hVmVyc2lvbiA9IDY7CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2No
ZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogewpAQCAtNjEsNyArNjIsNiBAQCBzdGF0aWMg
Y29uc3QgU3RyaW5nIHJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkK
ICAgICAgICAgIiwgbGFzdFVwZGF0ZUNoZWNrVGltZSBET1VCTEUgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCIKICAgICAgICAgIiwgdXBkYXRlVmlhQ2FjaGUgVEVYVCBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMIgogICAgICAgICAiLCBzY3JpcHRVUkwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMIgotICAgICAgICAiLCBzY3JpcHQgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgogICAgICAgICAiLCB3b3JrZXJUeXBlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCIK
ICAgICAgICAgIiwgY29udGVudFNlY3VyaXR5UG9saWN5IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCIKICAgICAgICAgIiwgcmVmZXJyZXJQb2xpY3kgVEVYVCBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMIgpAQCAtMTA3LDYgKzEwNyw1NiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW5P
bGREYXRhYmFzZXMoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKICAgICAgICAgU1FM
aXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZGF0YWJhc2VGaWxlbmFtZUZyb21WZXJz
aW9uKHZlcnNpb24pKSk7CiB9CiAKK3N0cnVjdCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgewor
ICAgIFVSTCByZXNwb25zZVVSTDsKKyAgICBTdHJpbmcgbWltZVR5cGU7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgZW5jb2RlciA8PCByZXNwb25zZVVSTCA8PCBtaW1lVHlwZTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3Jp
cHRBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9w
dGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAgIGRlY29kZXIgPj4gcmVzcG9uc2VVUkw7
CisgICAgICAgIGlmICghcmVzcG9uc2VVUkwpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGU7CisgICAgICAgIGRlY29k
ZXIgPj4gbWltZVR5cGU7CisgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eworICAgICAgICAgICAgV1RGTW92
ZSgqcmVzcG9uc2VVUkwpLAorICAgICAgICAgICAgV1RGTW92ZSgqbWltZVR5cGUpCisgICAgICAg
IH19OworICAgIH0KK307CisKK3N0YXRpYyBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRy
aWJ1dGVzPiBzdHJpcFNjcmlwdFNvdXJjZXMoY29uc3QgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiBtYXApCit7CisgICAgSGFzaE1hcDxVUkws
IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4gbWFwV2l0aG91dFNjcmlwdHM7CisgICAgZm9yIChh
dXRvJiBwYWlyIDogbWFwKQorICAgICAgICBtYXBXaXRob3V0U2NyaXB0cy5hZGQocGFpci5rZXks
IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7IHBhaXIudmFsdWUucmVzcG9uc2VVUkwsIHBhaXIu
dmFsdWUubWltZVR5cGUgfSk7CisgICAgcmV0dXJuIG1hcFdpdGhvdXRTY3JpcHRzOworfQorCitz
dGF0aWMgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+IHBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrKFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0
U3RvcmFnZSwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiYmIG1hcCkKK3sKKyAg
ICBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4g
aW1wb3J0ZWRTY3JpcHRzOworICAgIGZvciAoYXV0byYgcGFpciA6IG1hcCkgeworICAgICAgICBh
dXRvIGltcG9ydGVkU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5yZXRyaWV2ZShyZWdpc3RyYXRpb25L
ZXksIHBhaXIua2V5KTsKKyAgICAgICAgaWYgKCFpbXBvcnRlZFNjcmlwdCkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNl
Ojpwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzazogRmFpbGVkIHRvIHJldHJpZXZlIGltcG9y
dGVkIHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgcGFpci5rZXkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpbXBvcnRl
ZFNjcmlwdHMuYWRkKHBhaXIua2V5LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0IHsgV1RGTW92ZShpbXBvcnRlZFNjcmlwdCksIFdURk1vdmUocGFpci52YWx1ZS5yZXNw
b25zZVVSTCksIFdURk1vdmUocGFpci52YWx1ZS5taW1lVHlwZSkgfSk7CisgICAgfQorICAgIHJl
dHVybiBpbXBvcnRlZFNjcmlwdHM7Cit9CisKIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpSZWdpc3Ry
YXRpb25EYXRhYmFzZShSZWdpc3RyYXRpb25TdG9yZSYgc3RvcmUsIFN0cmluZyYmIGRhdGFiYXNl
RGlyZWN0b3J5KQogICAgIDogbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlNlcnZpY2VX
b3JrZXIgSS9PIFRocmVhZCIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsKSkKICAgICAsIG1fc3Rv
cmUobWFrZVdlYWtQdHIoc3RvcmUpKQpAQCAtMTI0LDkgKzE3NCw5IEBAIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjp+UmVnaXN0cmF0aW9uRGF0YWJhc2UoKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKLSAgICAvLyBUaGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUgZGVzdHJveWVkIG9uIHRo
ZSBiYWNrZ3JvdW5kIHRocmVhZC4KLSAgICBpZiAobV9kYXRhYmFzZSkKLSAgICAgICAgbV93b3Jr
UXVldWUtPmRpc3BhdGNoKFtkYXRhYmFzZSA9IFdURk1vdmUobV9kYXRhYmFzZSldIHsgfSk7Cisg
ICAgLy8gVGhlIGRhdGFiYXNlICYgc2NyaXB0U3RvcmFnZSBuZWVkIHRvIGJlIGRlc3Ryb3llZCBv
biB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgaWYgKG1fZGF0YWJhc2UgfHwgbV9zY3JpcHRT
dG9yYWdlKQorICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92
ZShtX2RhdGFiYXNlKSwgc2NyaXB0U3RvcmFnZSA9IFdURk1vdmUobV9zY3JpcHRTdG9yYWdlKV0g
eyB9KTsKIH0KIAogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6cG9zdFRhc2tUb1dvcmtRdWV1
ZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKQEAgLTE4NSw2ICsyMzUsMTkgQEAgYm9vbCBSZWdp
c3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgZnVsbEZp
bGVuYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCitTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJh
c2U6OnNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fZGF0YWJhc2VEaXJlY3RvcnksIHsgIlNj
cmlwdHMiLCAiVjEiIH0pOworfQorCitTV1NjcmlwdFN0b3JhZ2UmIFJlZ2lzdHJhdGlvbkRhdGFi
YXNlOjpzY3JpcHRTdG9yYWdlKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoIW1fc2NyaXB0U3RvcmFnZSkKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbWFrZVVu
aXF1ZTxTV1NjcmlwdFN0b3JhZ2U+KHNjcmlwdFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgcmV0
dXJuICptX3NjcmlwdFN0b3JhZ2U7Cit9CisKIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Omlt
cG9ydFJlY29yZHNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CkBAIC0zMzMsOCArMzk2LDEwIEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxs
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiB7CiAgICAgcG9z
dFRhc2tUb1dvcmtRdWV1ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9kYXRhYmFzZSA9IG51bGxwdHI7
CisgICAgICAgIG1fc2NyaXB0U3RvcmFnZSA9IG51bGxwdHI7CiAKICAgICAgICAgU1FMaXRlRmls
ZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2VGaWxlUGF0aCk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHNjcmlwdFN0b3JhZ2VEaXJlY3Rv
cnkoKSk7CiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJl
Y3RvcnkoZGF0YWJhc2VEaXJlY3RvcnlJc29sYXRlZENvcHkoKSk7CiAKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0zNTIsMTIgKzQxNywx
MyBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3Rv
cjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKCptX2RhdGFiYXNlKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgU1FM
aXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIFJlY29yZHMgVkFMVUVT
ICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CisgICAgU1FMaXRl
U3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIFJlY29yZHMgVkFMVUVTICg/
LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CiAgICAgaWYgKHNxbC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VX
b3JrZXIsICJGYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8gc3RvcmUgcmVnaXN0cmF0aW9u
IGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
cigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKKyAgICBhdXRvJiBzY3JpcHRTdG9yYWdlID0gdGhpcy0+c2NyaXB0U3RvcmFnZSgp
OwogICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogcmVtb3ZlZFJlZ2lzdHJhdGlvbnMpIHsK
ICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIFJl
Y29yZHMgV0hFUkUga2V5ID0gPyIpOwogICAgICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0sKQEAgLTM2NiwxNCArNDMyLDE3IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRv
UHVzaENoYW5nZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVkIHRvIHJlbW92
ZSByZWdpc3RyYXRpb24gZGF0YSBmcm9tIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRh
YmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBzY3JpcHRTdG9yYWdlLmNsZWFy
KHJlZ2lzdHJhdGlvbik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBkYXRhIDogdXBkYXRlZFJl
Z2lzdHJhdGlvbnMpIHsKICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjc3BFbmNv
ZGVyOwogICAgICAgICBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeS5lbmNvZGUoY3NwRW5jb2Rl
cik7CiAKKyAgICAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgZW5jb2RlIHRoZSBzY3JpcHQgc291
cmNlcyB0byB0aGUgZGF0YWJhc2UuIFRoZXkgd2lsbCBiZSBzdG9yZWQgc2VwYXJhdGVseSBpbiB0
aGUgU2NyaXB0U3RvcmFnZS4KKyAgICAgICAgLy8gQXMgYSByZXN1bHQsIHdlIG5lZWQgdG8gc3Ry
aXAgdGhlIHNjcmlwdCBzb3VyY2VzIGhlcmUgYmVmb3JlIGVuY29kaW5nIHRoZSBzY3JpcHRSZXNv
dXJjZU1hcC4KICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBzY3JpcHRSZXNvdXJj
ZU1hcEVuY29kZXI7Ci0gICAgICAgIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlciA8PCBkYXRhLnNj
cmlwdFJlc291cmNlTWFwOworICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIgPDwgc3Ry
aXBTY3JpcHRTb3VyY2VzKGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApOwogCiAgICAgICAgIFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXIgY2VydGlmaWNhdGVJbmZvRW5jb2RlcjsKICAgICAgICAgY2Vy
dGlmaWNhdGVJbmZvRW5jb2RlciA8PCBkYXRhLmNlcnRpZmljYXRlSW5mbzsKQEAgLTM4NSwyMSAr
NDU0LDM2IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMoY29uc3Qg
VmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgICAgICAgICB8fCBzcWwuYmlu
ZERvdWJsZSg1LCBkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZS5zZWNvbmRzU2luY2VF
cG9jaCgpLnZhbHVlKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0
KDYsIHVwZGF0ZVZpYUNhY2hlVG9TdHJpbmcoZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2Fj
aGUpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg3LCBkYXRhLnNj
cmlwdFVSTC5zdHJpbmcoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZFRl
eHQoOCwgZGF0YS5zY3JpcHQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJpbmRU
ZXh0KDksIHdvcmtlclR5cGVUb1N0cmluZyhkYXRhLndvcmtlclR5cGUpKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMCwgY3NwRW5jb2Rlci5idWZmZXIoKSwgY3Nw
RW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLmJp
bmRUZXh0KDExLCBkYXRhLnJlZmVycmVyUG9saWN5KSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAg
IHx8IHNxbC5iaW5kQmxvYigxMiwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBz
Y3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgICAgIHx8IHNxbC5iaW5kQmxvYigxMywgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIo
KSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSworICAg
ICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDgsIHdvcmtlclR5cGVUb1N0cmluZyhkYXRhLndvcmtl
clR5cGUpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYig5LCBjc3BF
bmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoMTAsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDExLCBzY3JpcHRSZXNvdXJjZU1h
cEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBjZXJ0aWZpY2F0
ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUo
KSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuc3RlcCgpICE9IFNRTElURV9ET05F
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiRmFpbGVk
IHRvIHN0b3JlIHJlZ2lzdHJhdGlvbiBkYXRhIGludG8gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisKKyAgICAgICAgLy8gU2F2ZSBz
Y3JpcHRzIHRvIGRpc2suCisgICAgICAgIGF1dG8gbWFpblNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uu
c3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQp
OworICAgICAgICBBU1NFUlQobWFpblNjcmlwdCk7CisgICAgICAgIGlmICghbWFpblNjcmlwdCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IGRhdGEuc2NyaXB0UmVzb3VyY2VNYXApIHsKKyAgICAgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3Jp
cHQgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXks
ICpwYWlyLnZhbHVlLnNjcmlwdCk7CisgICAgICAgICAgICBBU1NFUlQoaW1wb3J0ZWRTY3JpcHQp
OworICAgICAgICAgICAgaWYgKGltcG9ydGVkU2NyaXB0KQorICAgICAgICAgICAgICAgIGltcG9y
dGVkU2NyaXB0cy5hZGQoY3Jvc3NUaHJlYWRDb3B5KHBhaXIua2V5KSwgV1RGTW92ZShpbXBvcnRl
ZFNjcmlwdCkpOworICAgICAgICB9CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBk
YXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtYWluU2NyaXB0ID0gbWFpblNjcmlwdC5yZWxl
YXNlTm9uTnVsbCgpLCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAobV9zdG9yZSkKKyAgICAgICAgICAgICAgICBt
X3N0b3JlLT5kaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgV1RGTW92ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKKyAgICAg
ICAgfSk7CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7Ci0KLSAgICBMT0coU2Vy
dmljZVdvcmtlciwgIlVwZGF0ZWQgU2VydmljZVdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2Ug
KCV6dSBhZGRlZC91cGRhdGVkIHJlZ2lzdHJhdGlvbnMgYW5kICV6dSByZW1vdmVkIHJlZ2lzdHJh
dGlvbnMiLCB1cGRhdGVkUmVnaXN0cmF0aW9ucy5zaXplKCksIHJlbW92ZWRSZWdpc3RyYXRpb25z
LnNpemUoKSk7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlVwZGF0ZWQgU2Vydmlj
ZVdvcmtlciByZWdpc3RyYXRpb24gZGF0YWJhc2UgKCV6dSBhZGRlZC91cGRhdGVkIHJlZ2lzdHJh
dGlvbnMgYW5kICV6dSByZW1vdmVkIHJlZ2lzdHJhdGlvbnMiLCB1cGRhdGVkUmVnaXN0cmF0aW9u
cy5zaXplKCksIHJlbW92ZWRSZWdpc3RyYXRpb25zLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTQwNyw2ICs0OTEsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Omlt
cG9ydFJlY29yZHMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCisgICAgUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNv
cmRzOiIpOwogICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fZGF0YWJhc2UsICJTRUxFQ1QgKiBG
Uk9NIFJlY29yZHM7Il9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gcHJlcGFyZSBzdGF0ZW1lbnQgdG8g
cmV0cmlldmUgcmVnaXN0cmF0aW9ucyBmcm9tIHJlY29yZHMgdGFibGUgKCIsIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvcigpLCAiKSAtICIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKQEAgLTQx
NCw2ICs0OTksNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMo
KQogICAgIGludCByZXN1bHQgPSBzcWwuc3RlcCgpOwogCiAgICAgZm9yICg7IHJlc3VsdCA9PSBT
UUxJVEVfUk9XOyByZXN1bHQgPSBzcWwuc3RlcCgpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogSW1wb3J0
aW5nIGEgcmVnaXN0cmF0aW9uIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIGF1dG8ga2V5
ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KHNxbC5nZXRD
b2x1bW5UZXh0KDApKTsKICAgICAgICAgYXV0byBvcmlnaW5VUkwgPSBVUkwgeyBVUkwoKSwgc3Fs
LmdldENvbHVtblRleHQoMSkgfTsKICAgICAgICAgYXV0byBzY29wZVBhdGggPSBzcWwuZ2V0Q29s
dW1uVGV4dCgyKTsKQEAgLTQyMiw1MiArNTA4LDY4IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gbGFzdFVwZGF0ZUNoZWNrVGltZSA9
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzcWwuZ2V0Q29sdW1uRG91YmxlKDQpKTsKICAgICAg
ICAgYXV0byB1cGRhdGVWaWFDYWNoZSA9IHN0cmluZ1RvVXBkYXRlVmlhQ2FjaGUoc3FsLmdldENv
bHVtblRleHQoNSkpOwogICAgICAgICBhdXRvIHNjcmlwdFVSTCA9IFVSTCB7IFVSTCgpLCBzcWwu
Z2V0Q29sdW1uVGV4dCg2KSB9OwotICAgICAgICBhdXRvIHNjcmlwdCA9IHNxbC5nZXRDb2x1bW5U
ZXh0KDcpOwotICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdUb1dvcmtlclR5cGUoc3Fs
LmdldENvbHVtblRleHQoOCkpOworICAgICAgICBhdXRvIHdvcmtlclR5cGUgPSBzdHJpbmdUb1dv
cmtlclR5cGUoc3FsLmdldENvbHVtblRleHQoNykpOwogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhOwotICAgICAgICBzcWwuZ2V0Q29sdW1uQmxvYkFz
VmVjdG9yKDksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEpOworICAgICAgICBzcWwuZ2V0Q29s
dW1uQmxvYkFzVmVjdG9yKDgsIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEpOwogICAgICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YS5kYXRhKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6ZSgpKTsKICAgICAgICAg
T3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAgICAgICAgIGlmIChjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhLnNpemUo
KSkgewogICAgICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2VjdXJpdHlQb2xpY3k7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAgICAgICAgICAgIGlmICgh
Y29udGVudFNlY3VyaXR5UG9saWN5KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBG
YWlsZWQgdG8gZGVjb2RlIGNvbnRlbnRTZWN1cml0eVBvbGljeSIpOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXV0byByZWZl
cnJlclBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDEwKTsKKyAgICAgICAgYXV0byByZWZlcnJl
clBvbGljeSA9IHNxbC5nZXRDb2x1bW5UZXh0KDkpOwogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBzY3JpcHRSZXNvdXJjZU1hcERhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0
b3IoMTEsIHNjcmlwdFJlc291cmNlTWFwRGF0YSk7Ci0gICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8
VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Pj4gc2NyaXB0UmVz
b3VyY2VNYXA7CisgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTAsIHNjcmlwdFJl
c291cmNlTWFwRGF0YSk7CisgICAgICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAogICAgICAgICBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNv
dXJjZU1hcERhdGEuZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGEuc2l6ZSgpKTsKICAgICAg
ICAgaWYgKHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpIHsKLSAgICAgICAgICAgIHNjcmlw
dFJlc291cmNlTWFwRGVjb2RlciA+PiBzY3JpcHRSZXNvdXJjZU1hcDsKLSAgICAgICAgICAgIGlm
ICghc2NyaXB0UmVzb3VyY2VNYXApCisgICAgICAgICAgICBPcHRpb25hbDxIYXNoTWFwPFVSTCwg
SW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0
czsKKyAgICAgICAgICAgIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlciA+PiBzY3JpcHRSZXNvdXJj
ZU1hcFdpdGhvdXRTY3JpcHRzOworICAgICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcFdp
dGhvdXRTY3JpcHRzKSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vydmlj
ZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8g
ZGVjb2RlIHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMiKTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjcmlwdFJlc291cmNlTWFw
ID0gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soc2NyaXB0U3RvcmFnZSgpLCAqa2V5LCBX
VEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gY2VydGlmaWNhdGVJbmZvRGF0YTsKLSAgICAgICAgc3Fs
LmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMiwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CisgICAgICAg
IHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMTEsIGNlcnRpZmljYXRlSW5mb0RhdGEpOwogICAg
ICAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKIAogICAgICAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNlcnRpZmljYXRlSW5mb0RlY29kZXIoY2VydGlm
aWNhdGVJbmZvRGF0YS5kYXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGEuc2l6ZSgpKTsKICAgICAg
ICAgY2VydGlmaWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgICAgIGlm
ICghY2VydGlmaWNhdGVJbmZvKQorICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRpZmljYXRlSW5mbyIp
OwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAogICAgICAgICAvLyBWYWxpZGF0
ZSB0aGUgaW5wdXQgZm9yIHRoaXMgcmVnaXN0cmF0aW9uLgogICAgICAgICAvLyBJZiBhbnkgcGFy
dCBvZiB0aGlzIGlucHV0IGlzIGludmFsaWQsIGxldCdzIHNraXAgdGhpcyByZWdpc3RyYXRpb24u
CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgcmV0dXJuIGFuIGVycm9yIHNraXBwaW5nICph
bGwqIHJlZ2lzdHJhdGlvbnM/Ci0gICAgICAgIGlmICgha2V5IHx8ICFvcmlnaW5VUkwuaXNWYWxp
ZCgpIHx8ICF0b3BPcmlnaW4gfHwgIXVwZGF0ZVZpYUNhY2hlIHx8ICFzY3JpcHRVUkwuaXNWYWxp
ZCgpIHx8ICF3b3JrZXJUeXBlIHx8ICFzY29wZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIGlmICgh
a2V5IHx8ICFvcmlnaW5VUkwuaXNWYWxpZCgpIHx8ICF0b3BPcmlnaW4gfHwgIXVwZGF0ZVZpYUNh
Y2hlIHx8ICFzY3JpcHRVUkwuaXNWYWxpZCgpIHx8ICF3b3JrZXJUeXBlIHx8ICFzY29wZVVSTC5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIs
ICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBw
YXJ0IG9mIHRoZSByZWdpc3RyYXRpb24iKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBzY3JpcHQgPSBzY3JpcHRTdG9yYWdlKCkucmV0cmlldmUoKmtl
eSwgc2NyaXB0VVJMKTsKKyAgICAgICAgQVNTRVJUKHNjcmlwdCk7CisgICAgICAgIGlmICghc2Ny
aXB0KSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byByZXRyaWV2ZSBtYWlu
IHNjcmlwdCBmb3IgJXMgZnJvbSBkaXNrIiwgc2NyaXB0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHdv
cmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAg
ICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRh
dGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2Vy
dmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVu
dGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZN
b3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAg
ICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6
bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3Zl
KHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1
cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCks
ICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAg
ICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVs
bG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHQucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVu
dFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0
VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CiAK
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9uVG9TdG9yZShXVEZNb3Zl
KGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKaW5kZXggZDZhZWQ2YjQwZTYw
NDYyNmUzYTFmZmJjMzVlYmE0MzEyZThlYzdkYS4uNTcwNzUyNjY5NjIxZGIzNDI4NzdhZjM0Yzcx
ZTQ1Yjk4YjkwYTE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaApAQCAtMzgsNiArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlZ2lzdHJhdGlvblN0b3JlOwogY2xhc3Mg
U1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTV1NjcmlwdFN0b3JhZ2U7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9y
eSk7CkBAIC03Miw2ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRSZWNvcmRzSWZO
ZWNlc3NhcnkoKTsKICAgICBib29sIGRvUHVzaENoYW5nZXMoY29uc3QgVmVjdG9yPFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YT4mLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleT4mKTsKICAgICB2b2lkIGRvQ2xlYXJPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsK
KyAgICBTV1NjcmlwdFN0b3JhZ2UmIHNjcmlwdFN0b3JhZ2UoKTsKKyAgICBTdHJpbmcgc2NyaXB0
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gUmVwbGllcyB0byB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYmKTsKQEAgLTgwLDYgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXb3JrUXVl
dWU+IG1fd29ya1F1ZXVlOwogICAgIFdlYWtQdHI8UmVnaXN0cmF0aW9uU3RvcmU+IG1fc3RvcmU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNXU2NyaXB0U3RvcmFnZT4gbV9zY3JpcHRTdG9yYWdlOwog
ICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RhdGFiYXNlRmls
ZVBhdGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1Jl
Z2lzdHJhdGlvblN0b3JlLmNwcAppbmRleCAwYmE4ODcxOWYzNGY0YWNhYmEyOTFmZDJhNDNiM2Vi
NDAxNjE0MzhhLi45MjExNTZhYzE2MmM0MmI0Y2JkMjRlMjE1ZDdiMjJhZmIwZTA1NzRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1Jl
Z2lzdHJhdGlvblN0b3JlLmNwcApAQCAtMTI4LDYgKzEyOCwxMSBAQCB2b2lkIFJlZ2lzdHJhdGlv
blN0b3JlOjphZGRSZWdpc3RyYXRpb25Gcm9tRGF0YWJhc2UoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiYgZAogICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShXVEZNb3ZlKGRh
dGEpKTsKIH0KIAordm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNU
b0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICBtX3NlcnZlci5kaWRTYXZlV29ya2Vy
U2NyaXB0c1RvRGlzayhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92ZShtYWluU2NyaXB0
KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKwogdm9pZCBSZWdpc3RyYXRpb25TdG9y
ZTo6ZGF0YWJhc2VGYWlsZWRUb09wZW4oKQogewogICAgIG1fc2VydmVyLnJlZ2lzdHJhdGlvblN0
b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAppbmRleCA3NTQzZWMx
M2IzZGNmNzEwOGI0MjExZDY2ZTAxYzg3NzAwN2NlOTc4Li4yNjg3OGNlZWIwZTJmNjA3ZTcwN2U3
YmI0MDFmZTQyMWNkMTFlOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCkBAIC02Myw2ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmJik7CiAgICAgdm9pZCBkYXRhYmFzZUZhaWxlZFRvT3BlbigpOwogICAg
IHZvaWQgZGF0YWJhc2VPcGVuZWRBbmRSZWNvcmRzSW1wb3J0ZWQoKTsKKyAgICB2b2lkIGRpZFNh
dmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
JiBpbXBvcnRlZFNjcmlwdHMpOwogCiAgICAgU1dTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1f
c2VydmVyOyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRhMzU4NmExNjdhMjc3
MWYxZmUyZjEzNDk3Mzc2MzcwNTYzYjZkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMCwwICsx
LDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTV1Nj
cmlwdFN0b3JhZ2UuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0
Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNl
NjQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBzaG91bGRVc2VGaWxl
TWFwcGluZyhzaXplX3QgZmlsZVNpemUpCit7CisgICAgcmV0dXJuIGZpbGVTaXplID49IHBhZ2VT
aXplKCk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KQorICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQorICAgICwgbV9zYWx0
KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKCkpLnZhbHVlT3IoRmlsZVN5c3Rl
bTo6U2FsdCgpKSkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKK30KKworU3RyaW5n
IFNXU2NyaXB0U3RvcmFnZTo6c2hhMkhhc2goY29uc3QgU3RyaW5nJiBpbnB1dCkgY29uc3QKK3sK
KyAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgY3J5cHRvLT5hZGRCeXRlcyhtX3NhbHQu
ZGF0YSgpLCBtX3NhbHQuc2l6ZSgpKTsKKyAgICBhdXRvIGlucHV0VXRmOCA9IGlucHV0LnV0Zjgo
KTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVzKGlucHV0VXRmOC5kYXRhKCksIGlucHV0VXRmOC5sZW5n
dGgoKSk7CisgICAgYXV0byBoYXNoID0gY3J5cHRvLT5jb21wdXRlSGFzaCgpOworICAgIHJldHVy
biBXVEY6OmJhc2U2NFVSTEVuY29kZShoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkpOworfQorCitT
dHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzaGEySGFzaChjb25zdCBVUkwmIGlucHV0KSBjb25zdAor
eworICAgIHJldHVybiBzaGEySGFzaChpbnB1dC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBTV1Nj
cmlwdFN0b3JhZ2U6OnNhbHRQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGlyZWN0b3J5LCAic2FsdCIpOworfQorCitTdHJp
bmcgU1dTY3JpcHRTdG9yYWdlOjpyZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KSBjb25zdAoreworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fZGlyZWN0b3J5LCB7IHNo
YTJIYXNoKHJlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKS50b1N0cmluZygpKSwgc2hhMkhhc2go
cmVnaXN0cmF0aW9uS2V5LnNjb3BlKCkpIH0pOworfQorCitTdHJpbmcgU1dTY3JpcHRTdG9yYWdl
OjpzY3JpcHRQYXRoKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJh
dGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWdpc3RyYXRpb25EaXJlY3RvcnkocmVn
aXN0cmF0aW9uS2V5KSwgc2hhMkhhc2goc2NyaXB0VVJMKSk7Cit9CisKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hh
cmVkQnVmZmVyJiBzY3JpcHQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2Ny
aXB0VVJMKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShzY3JpcHRQYXRoKSk7CisKKyAgICBhdXRvIGl0ZXJhdGVPdmVyQnVmZmVy
QW5kV3JpdGVEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNp
emVfdCk+JiB3cml0ZURhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJlZ2lu
KCk7IGl0ICE9IHNjcmlwdC5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIHdyaXRlRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpdC0+c2VnbWVudC0+ZGF0YSgpKSwgaXQtPnNl
Z21lbnQtPnNpemUoKSk7CisgICAgfTsKKworICAgIGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmco
c2NyaXB0LnNpemUoKSkpIHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0b3Jl
OiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjpvcGVuRmlsZSgpIGZhaWxlZCIsIHNj
cmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorICAgICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YShbJl0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGhhbmRsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNp
emUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0pOworICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHNjcmlwdC5jb3B5KCk7
CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIHdlIGRlbGV0ZSB0aGUgZmlsZSBiZWZvcmUgd3Jp
dGluZyBhcyB0aGVyZSBtYXkgYmUgY29kZSB1c2luZyBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRoaXMg
ZmlsZS4KKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHNjcmlwdFBhdGgpOworICAgIGF1dG8g
bWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShzY3JpcHRQYXRoLCBzY3JpcHQuc2l6
ZSgpLCBXVEZNb3ZlKGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKSk7CisgICAgaWYgKCFt
YXBwZWRGaWxlKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJT
V1NjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjpt
YXBUb0ZpbGUoKSBmYWlsZWQiLCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUobWFwcGVkRmlsZSkpOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0
b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lz
dHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwpCit7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CisKKyAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lz
dHJhdGlvbktleSwgc2NyaXB0VVJMKTsKKyAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOworICAg
IGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoc2NyaXB0UGF0aCwgZmlsZVNpemUpKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6
OnJldHJpZXZlOiBGYWlsdXJlIHRvIHJldHJpZXZlICVzLCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6
ZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmls
ZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVz
Y3JpcHRvcnMgb3Blbj8KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUs
IHNob3VsZFVzZUZpbGVNYXBwaW5nKGZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmls
ZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKK30K
Kwordm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKK3sKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9IHRoaXMtPnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25LZXkpOworICAg
IGJvb2wgcmVzdWx0ID0gRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocmVnaXN0
cmF0aW9uRGlyZWN0b3J5KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRighcmVzdWx0LCBTZXJ2
aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9yYWdlOjpjbGVhcjogRmFpbHVyZSB0byBjbGVhciBzY3Jp
cHRzIGZvciByZWdpc3RyYXRpb24gJXMiLCByZWdpc3RyYXRpb25LZXkudG9EYXRhYmFzZUtleSgp
LnV0ZjgoKS5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWYwMTMw
YzVlNTg2OTlmYzBkMjU3YTZlYjk3MDRiNDc1NjAzODU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OworY2xhc3MgU2hhcmVk
QnVmZmVyOworCitjbGFzcyBTV1NjcmlwdFN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNXU2NyaXB0U3RvcmFnZShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSk7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdG9yZShjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXRyaWV2
ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgVVJMJiBzY3JpcHRV
UkwpOworICAgIHZvaWQgY2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
OworCitwcml2YXRlOgorICAgIFN0cmluZyByZWdpc3RyYXRpb25EaXJlY3RvcnkoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGNvbnN0OworICAgIFN0cmluZyBzY3JpcHRQYXRo
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCkgY29uc3Q7CisgICAgU3RyaW5nIHNhbHRQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIHNoYTJI
YXNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFN0cmluZyBzaGEySGFzaChjb25zdCBVUkwm
KSBjb25zdDsKKworICAgIFN0cmluZyBtX2RpcmVjdG9yeTsKKyAgICBGaWxlU3lzdGVtOjpTYWx0
IG1fc2FsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3ODFkMzBhYmRiNGE5OTdkNjRm
MWQ2NTg2OTRiMy4uZGNlMjAxNmZjMTUzODMwMGZmYWExMTc1OWVhZTMzNDA4YzRmOWU1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKQEAgLTE3Niw2ICsxNzYsMTIgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJv
bVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgfSk7CiB9CiAKK3Zv
aWQgU1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5T
Y3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlw
dHMpCit7CisgICAgaWYgKGF1dG8gd29ya2VyID0gd29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV1RGTW92ZSht
YWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKwogdm9pZCBTV1NlcnZl
cjo6YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4m
JiByZWdpc3RyYXRpb24pCiB7CiAgICAgbV9vcmlnaW5TdG9yZS0+YWRkKHJlZ2lzdHJhdGlvbi0+
a2V5KCkudG9wT3JpZ2luKCkpOwpAQCAtNjMzLDcgKzYzOSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNv
bnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkK
IHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsg
am9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3Vy
aXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3Jp
cHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc3RyaW5nVG9TY3JpcHRCdWZmZXIo
c2NyaXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVy
UG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsK
IH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmgKaW5kZXggYmExYjQxMzUwMzU0MGRjZTg4NWNkNDQ4YjNmN2MwNDI4
ZGI4Y2IxNy4uNzk2YmU4NWUzZTU0NzcyNjg2ZTk1NDgwODQ1ZjA0NTQ4YzVkOTUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAt
MTkwLDYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25SZWFk
eVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAgICB2b2lkIGFkZFJlZ2lzdHJh
dGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7CisgICAgdm9pZCBkaWRT
YXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29t
cGxldGUoKTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4o
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggODAyYTQ4MDExNTFhNzI4ZmJjNWEyYTY5MTI0
ZGI5NjNjNzcyY2IwYS4uNWNhMjUyNjkxMTQ1M2RiMDhmMWY4ZjI4MzJkYmM0MDQ1ZTY0YWE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTV1NlcnZlckpv
YlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYgcmVzdWwKICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIG5ld2VzdFdvcmtl
cidzIHNjcmlwdCB1cmwgZXF1YWxzIGpvYidzIHNjcmlwdCB1cmwgd2l0aCB0aGUgZXhjbHVkZSBm
cmFnbWVudHMKICAgICAvLyBmbGFnIHNldCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0ZXh0IGlzIGEg
Ynl0ZS1mb3ItYnl0ZSBtYXRjaCB3aXRoIG5ld2VzdFdvcmtlcidzIHNjcmlwdCByZXNvdXJjZSdz
IHNvdXJjZQogICAgIC8vIHRleHQsIHRoZW46Ci0gICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpv
Yi5zY3JpcHRVUkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYm
IHJlc3VsdC5zY3JpcHQgPT0gbmV3ZXN0V29ya2VyLT5zY3JpcHQoKSAmJiBkb0NlcnRpZmljYXRl
c01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJ
bmZvKCkpKSB7CisgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpvYi5zY3JpcHRVUkwpICYmIG5l
d2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYmIHJlc3VsdC5zY3JpcHQgPT0g
c2NyaXB0QnVmZmVyVG9TdHJpbmcobmV3ZXN0V29ya2VyLT5zY3JpcHQoKSkgJiYgZG9DZXJ0aWZp
Y2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNlcnRpZmlj
YXRlSW5mbygpKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkLCBzY3JpcHQgYW5kIGNlcnRpZmlj
YXRlIGFyZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJlZ2lzdHJh
dGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICAvLyBGSVhNRTogZm9yIG5v
biBjbGFzc2ljIHNjcmlwdHMsIGNoZWNrIHRoZSBzY3JpcHTigJlzIG1vZHVsZSByZWNvcmQncyBb
W0VDTUFTY3JpcHRDb2RlXV0uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAppbmRleCAyYjhmZjY4NWUwNDk3OWZjZGM3M2U3MzIwZGYzZjRkYTY0Yzc2MmRmLi4xMjAw
NTE2OThiZjkzOTgxOGU0ZDQzZTg1YzY5NTczMDBiYTdkY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCB2b2lkIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJpbmcm
JiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSkKK3ZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYgc2NyaXB0KQogewogICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgd29ya2VyLT5zZXRTY3JpcHRS
ZXNvdXJjZShXVEZNb3ZlKHNjcmlwdFVSTCksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQgeyBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUocmVzcG9uc2VVUkwpLCBXVEZN
b3ZlKG1pbWVUeXBlKSB9KTsKKyAgICAgICAgd29ya2VyLT5zZXRTY3JpcHRSZXNvdXJjZShXVEZN
b3ZlKHNjcmlwdFVSTCksIFdURk1vdmUoc2NyaXB0KSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmlu
ZGV4IDQ2NTlmOWY5ZmE2YzZiYWE4ZGU5NjhkMzkxNWZlMzNjNGUzMTI2NjguLjliZTM0NDQ5MWYw
NjEzZmFlMTQwZTc5ODUxYjcxMGEzYjMyYjJiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElk
ZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4
Y2VwdGlvbkRhdGE+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJl
c291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYm
IHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAppbmRleCAzYmEzNmEzZjk1YTU3ZWJhMTc4NThjZTYyZGVlZTc4YWM5YTY2
NzA1Li42MTNiYjcyYzU4OGQ4YTE3MGIxZTRiYjJiNzkwYzAzMDBiZTFmNDRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcApAQCAtNDksNyArNDksNyBAQCBTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJXb3JrZXI6
OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZgogfQogCiAv
LyBGSVhNRTogVXNlIHItdmFsdWUgcmVmZXJlbmNlcyBmb3Igc2NyaXB0IGFuZCBjb250ZW50U2Vj
dXJpdHlQb2xpY3kKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2Vy
dmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
dHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VN
YXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFNo
YXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogICAg
IDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5
KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFrUHRyKHJl
Z2lzdHJhdGlvbikpCkBAIC0yMzgsNiArMjM4LDIxIEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNl
dFNjcmlwdFJlc291cmNlKFVSTCYmIHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
CiAgICAgbV9zY3JpcHRSZXNvdXJjZU1hcC5zZXQoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHNjcmlw
dCkpOwogfQogCit2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWY8
U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8gVGhlIHNjcmlwdHMgd2VyZSBzYXZl
ZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAnZCB2ZXJzaW9uIHRv
IHNhdmUgbWVtb3J5LgorICAgIEFTU0VSVChtYWluU2NyaXB0LmdldCgpID09IG1fc2NyaXB0Lmdl
dCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGlj
YWwuCisgICAgbV9zY3JpcHQgPSBXVEZNb3ZlKG1haW5TY3JpcHQpOworICAgIGZvciAoYXV0byYg
cGFpciA6IGltcG9ydGVkU2NyaXB0cykgeworICAgICAgICBhdXRvIGl0ID0gbV9zY3JpcHRSZXNv
dXJjZU1hcC5maW5kKHBhaXIua2V5KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fc2NyaXB0UmVz
b3VyY2VNYXAuZW5kKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9zY3JpcHRSZXNvdXJjZU1hcC5l
bmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoKml0LT52YWx1ZS5z
Y3JpcHQgPT0gKnBhaXIudmFsdWUpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNj
cmlwdHMgYXJlIGlkZW50aWNhbC4KKyAgICAgICAgaXQtPnZhbHVlLnNjcmlwdCA9IFdURk1vdmUo
cGFpci52YWx1ZSk7CisgICAgfQorfQorCiB2b2lkIFNXU2VydmVyV29ya2VyOjpza2lwV2FpdGlu
ZygpCiB7CiAgICAgbV9pc1NraXBXYWl0aW5nRmxhZ1NldCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5k
ZXggMzc4ZmJhNjU3ZThiYmY0ODQxZTU2Y2JmODY1NjFmOGVjYzMxMTAyMC4uYzQ1ZGFkYmNhYjgx
OTc2Yjc2ZjBiZTUzMTRmM2I3MWY3N2I2YjI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtODAsNyArODAs
NyBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2ZXIqIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyLmdl
dCgpOyB9CiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25LZXk7IH0KICAgICBjb25zdCBV
UkwmIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zY3JpcHRVUkw7IH0KLSAgICBj
b25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CisgICAgU2hh
cmVkQnVmZmVyJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogICAgIGNvbnN0
IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0
aWZpY2F0ZUluZm87IH0KICAgICBXb3JrZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEudHlwZTsgfQogCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlm
aWVyKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgdm9p
ZCBtYXRjaEFsbChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgU2Vydmlj
ZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpOwogICAgIHZvaWQgc2V0U2NyaXB0UmVz
b3VyY2UoVVJMJiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJik7
CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5T
Y3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlw
dHMpOwogCiAgICAgdm9pZCBza2lwV2FpdGluZygpOwogICAgIGJvb2wgaXNTa2lwV2FpdGluZ0Zs
YWdTZXQoKSBjb25zdCB7IHJldHVybiBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0OyB9CkBAIC0xMjcs
NyArMTI4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCk7CiAK
IHByaXZhdGU6Ci0gICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0
ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJp
bmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYm
KTsKKyAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwg
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCiAg
ICAgdm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIoYm9vbCBzdWNjZXNzKTsKIApAQCAtMTQw
LDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBt
X3JlZ2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiBtX3Jl
Z2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7Ci0gICAgU3RyaW5nIG1f
c2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0OwogICAgIENlcnRpZmljYXRl
SW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXJQ
b2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBmM2I3NWE1ZWJhM2ZkNzNmNTI2ODQ0NjEyMzk3
ODVlNTQ0NjkzN2EyLi5kOGQ5NDM0MDg0NWRkODViMzZkYzg5MjlhYjFlNjI3MTg4OTMyODlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEZpbmRDbGllbnRCeUlk
ZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKICAgICBNYXRjaEFs
bCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xhaW0oV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpIC0+IChP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpIEFzeW5jCi0gICAgU2V0U2Ny
aXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
VVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWlt
ZVR5cGUpCisgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMg
bWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcg
c291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGFi
N2FiYzI1NzY1YWQ0MjhmMmExNTdjNjE3OTRkMjI1ODYxN2JiNDcuLmM5Mjg2NmJmMjFkNDViMGIx
YjUwZGJhZTcxNjcyZjc0ZDE2YjE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTIzMyw3ICsy
MzMsNyBAQCB1aW50NjRfdCBFbmdpbmU6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3RQYXRo
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
U3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJv
b3RQYXRoLCAic2FsdCJfcyk7Ci0gICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBh
dGgpOworICAgIGF1dG8gc2FsdCA9IEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRo
KTsKICAgICBpZiAoIXNhbHQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zNzQsNyArMzc0LDcg
QEAgdm9pZCBFbmdpbmU6OmluaXRpYWxpemUoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2sp
CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgcm9vdFBhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJvb3RQYXRoKTsKICAgICAg
ICAgU3RyaW5nIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJvb3RQYXRoLCAic2FsdCJfcyk7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2FsdCA9IHJlYWRPck1ha2VTYWx0
KHNhbHRQYXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzYWx0ID0gRmlsZVN5c3RlbTo6
cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTcwMiw3ICs3MDIsNyBAQCB2
b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxT
aXplRmlsZUxvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CiAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6
ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpObykpCi0gICAgICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHko
ZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGZpbGVuYW1lKTsKICAgICAgICAgfQogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpAQCAtNzQ5LDE4ICs3
NDksMTggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmb2xkZXJQYXQKIAogICAgICAgICAgICAgLy8gSWYgY2Fj
aGUgc2FsdCBpcyBpbml0aWFsaXplZCBhbmQgdGhlIHBhdGhzIGRvIG5vdCBtYXRjaCwgc29tZSBj
YWNoZSBmaWxlcyBoYXZlIHByb2JhYmx5IGJlIHJlbW92ZWQgb3IgcGFydGlhbGx5IGNvcnJ1cHRl
ZC4KICAgICAgICAgICAgIEFTU0VSVCghbV9zYWx0IHx8IGZvbGRlclBhdGggPT0gY2FjaGVzUm9v
dFBhdGgoKmZvbGRlck9yaWdpbikpOwotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKKyAgICAgICAgICAgIGRlbGV0ZU5v
bkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRlclBhdGgsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CiAgICAgICAgIH0p
OwogICAgIH0KIH0KIAotdm9pZCBFbmdpbmU6OmRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25C
YWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gcGF0aC5pc29s
YXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsU2l6ZUZpbGVM
b2NrKTsKLSAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkocGF0aCk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHBhdGgpOwogCiAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAxOTQ0YTVjNzkyZDhkNzk5ZTI5ZGFiYzg0NjY2N2I2Njg2
MmJiN2Y5Li40NDA5ZTdiNDk2YWI4Y2Y2NDZjOWEwZmZhZWRmNTczNGMwZmYxZTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJBbGxD
YWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xl
YXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2lu
RnJvbURpc2soY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5T25C
YWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhy
ZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAog
ICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwog
ICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5kZXggNjZmNzZlYjJk
NmZjN2Q5OGRjZThhZTA2MmNmYmFmMGZmNTAzNmI3OS4uNDk2ODYxOWZmYzE2NjMyY2U0MzZlMTkx
NTNlY2ZiNTQ0NTc3ZjlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiAhT1MoV0lORE9XUykK
ICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtNDAsNDEgKzQxLDkgQEAgbmFtZXNwYWNlIE5ldHdv
cmtDYWNoZSB7CiAKIERhdGEgRGF0YTo6bWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3QKIHsKLSAgICBjb25zdGV4cHIgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gdHJ1ZTsKLSAgICBh
dXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVP
cGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNl
ciwgZmFpbElmRmlsZUV4aXN0cyk7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlk
KGhhbmRsZSkgfHwgIUZpbGVTeXN0ZW06OnRydW5jYXRlRmlsZShoYW5kbGUsIG1fc2l6ZSkpIHsK
LSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiB7
IH07Ci0gICAgfQotICAgIAotICAgIEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBG
b3JQYXRoKHBhdGgpOwotICAgIGJvb2wgc3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBtYXBwZWRGaWxlKGhhbmRsZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFk
V3JpdGUsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwotICAg
IGlmICghc3VjY2VzcykgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsK
LSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Ci0KLSAgICB2b2lkKiBtYXAgPSBjb25zdF9jYXN0
PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7Ci0gICAgdWludDhfdCogbWFwRGF0YSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihtYXApOwotICAgIGFwcGx5KFsmbWFwRGF0YV0oY29uc3QgdWludDhf
dCogYnl0ZXMsIHNpemVfdCBieXRlc1NpemUpIHsKLSAgICAgICAgbWVtY3B5KG1hcERhdGEsIGJ5
dGVzLCBieXRlc1NpemUpOwotICAgICAgICBtYXBEYXRhICs9IGJ5dGVzU2l6ZTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0KLSNpZiBPUyhXSU5ET1dTKQotICAgIERXT1JEIG9sZFBy
b3RlY3Rpb247Ci0gICAgVmlydHVhbFByb3RlY3QobWFwLCBtX3NpemUsIEZJTEVfTUFQX1JFQUQs
ICZvbGRQcm90ZWN0aW9uKTsKLSAgICBGbHVzaFZpZXdPZkZpbGUobWFwLCBtX3NpemUpOwotI2Vs
c2UKLSAgICAvLyBEcm9wIHRoZSB3cml0ZSBwZXJtaXNzaW9uLgotICAgIG1wcm90ZWN0KG1hcCwg
bV9zaXplLCBQUk9UX1JFQUQpOwotCi0gICAgLy8gRmx1c2ggKGFzeW5jaHJvbm91c2x5KSB0byBm
aWxlLCB0dXJuaW5nIHRoaXMgaW50byBjbGVhbiBtZW1vcnkuCi0gICAgbXN5bmMobWFwLCBtX3Np
emUsIE1TX0FTWU5DKTsKLSNlbmRpZgotCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZTsKKyAgICBhdXRvIGFwcGx5RGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29s
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgeyBhcHBseShhcHBsaWVyKTsgfTsK
KyAgICBhdXRvIG1hcHBlZEZpbGUgPSBGaWxlU3lzdGVtOjptYXBUb0ZpbGUocGF0aCwgc2l6ZSgp
LCBXVEZNb3ZlKGFwcGx5RGF0YSksICZoYW5kbGUpOwogICAgIHJldHVybiBEYXRhOjphZG9wdE1h
cChXVEZNb3ZlKG1hcHBlZEZpbGUpLCBoYW5kbGUpOwogfQogCkBAIC0xMzUsNDAgKzEwNCw1IEBA
IGJvb2wgYnl0ZXNFcXVhbChjb25zdCBEYXRhJiBhLCBjb25zdCBEYXRhJiBiKQogICAgIHJldHVy
biAhbWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgYS5zaXplKCkpOwogfQogCi1zdGF0aWMgU2Fs
dCBtYWtlU2FsdCgpCi17Ci0gICAgU2FsdCBzYWx0OwotICAgIHN0YXRpY19hc3NlcnQoc2FsdC5z
aXplKCkgPT0gOCwgIlNhbHQgc2l6ZSIpOwotICAgICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90
Kj4oJnNhbHRbMF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSAgICAqcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KCZzYWx0WzRdKSA9IGNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tTnVtYmVyKCk7Ci0gICAgcmV0dXJuIHNhbHQ7Ci19Ci0KLU9wdGlvbmFsPFNhbHQ+IHJlYWRP
ck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhwYXRoKSkgewotICAgICAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmls
ZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwotICAgICAgICBTYWx0IHNh
bHQ7Ci0gICAgICAgIGF1dG8gYnl0ZXNSZWFkID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZp
bGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihzYWx0
LmRhdGEoKSksIHNhbHQuc2l6ZSgpKSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlKTsKLSAgICAgICAgaWYgKGJ5dGVzUmVhZCA9PSBzYWx0LnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiBzYWx0OwotCi0gICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7Ci0g
ICAgfQotCi0gICAgU2FsdCBzYWx0ID0gbWFrZVNhbHQoKTsKLSAgICBhdXRvIGZpbGUgPSBGaWxl
U3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlLCBG
aWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNlcik7Ci0gICAgaWYgKCFGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYm9v
bCBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXpl
KCkpKSA9PSBzYWx0LnNpemUoKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7Ci0g
ICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIHNhbHQ7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YS5oCmluZGV4IGVkMTkxZGM3ZGUyMmJhNmJhZjgzNjlkZWM4ZWMzNmJlODcwMThlYTYu
LjY3NTI2Y2FkOTYwNzE0YTg4YzFjMDkzZTRhOWMzODgxNDZiODBlOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCkBA
IC0xMTIsOSArMTEyLDcgQEAgRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOwogRGF0YSBtYXBGaWxlKGNvbnN0
IGNoYXIqIHBhdGgpOwogRGF0YSBtYXBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKLXVzaW5n
IFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDg+OwotCi1PcHRpb25hbDxTYWx0PiByZWFkT3JN
YWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOwordXNpbmcgU2FsdCA9IEZpbGVTeXN0ZW06OlNh
bHQ7CiBTSEExOjpEaWdlc3QgY29tcHV0ZVNIQTEoY29uc3QgRGF0YSYsIGNvbnN0IFNhbHQmKTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2EwZWM1ZTE0ZjMzZGUwNDJjZGY0
NGIwZmJhNDIzY2M5ZGQ3YWZjNS4uN2E5OTYxNGYyMzM1YjE1MGM5Y2FiMjIyYzkzNWQwYmJlZjY5
YzgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02MiwyMyArNjIsNiBAQCB2b2lk
IHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgRAogICAgIH0KIH0KIAotdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1
cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgdHJhdmVyc2VEaXJlY3RvcnkocGF0
aCwgWyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7
Ci0gICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocGF0aCwgbmFtZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBj
YXNlIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERp
cmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5OgotICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoZW50cnlQYXRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvLyBU
aGlzIGRvZXNuJ3QgZm9sbG93IHN5bWxpbmtzLgotICAgICAgICB9Ci0gICAgfSk7Ci0gICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Ci19Ci0KIEZpbGVUaW1lcyBmaWxl
VGltZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oCmluZGV4IDdhNWY4Y2M0ZmUzOGE5NTYxY2UxYzhiNjFjMTBjNzQ3
OWNhODc0MmYuLmMwYjRlODFiNDczNzVhMDdmZjk5YmViNDIxMGRhMDE1ODIyYzczNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmls
ZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oCkBAIC0zMyw4ICszMyw2IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewogZW51bSBjbGFzcyBEaXJlY3RvcnlFbnRyeVR5cGUgeyBEaXJlY3RvcnksIEZpbGUgfTsK
IHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYpOwog
Ci12b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0K
IHN0cnVjdCBGaWxlVGltZXMgewogICAgIFdhbGxUaW1lIGNyZWF0aW9uOwogICAgIFdhbGxUaW1l
IG1vZGlmaWNhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGVkZGMwYmUyOWUwZTJjNmQy
MDI1YTk2YjI1ZWMxZTU2YzQ4YWY4ZDYuLjdhZWZiMzFjMWFmYTYyNzI0ODU4ZDgxOTQ3YTkxYmQz
ZTk4ZjVmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgogI2luY2x1ZGUgPHd0Zi9S
YW5kb21OdW1iZXIuaD4KQEAgLTIwNiw3ICsyMDcsNyBAQCBSZWZQdHI8U3RvcmFnZT4gU3RvcmFn
ZTo6b3Blbihjb25zdCBTdHJpbmcmIGJhc2VDYWNoZVBhdGgsIE1vZGUgbW9kZSwgc2l6ZV90IGNh
cAogICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1ha2VWZXJzaW9uZWRE
aXJlY3RvcnlQYXRoKGNhY2hlUGF0aCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gc2FsdCA9IHJlYWRPck1ha2VTYWx0KG1ha2VTYWx0RmlsZVBhdGgoY2FjaGVQYXRoKSk7
CisgICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxl
UGF0aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0xMTkzLDcgKzExOTQsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0ZU9sZFZlcnNpb25z
KCkKICAgICAgICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBkZWxldGluZyBvbGQgY2Fj
aGUgdmVyc2lvbiwgcGF0aCAlcyIsIG9sZFZlcnNpb25QYXRoLnV0ZjgoKS5kYXRhKCkpOwogCi0g
ICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShvbGRWZXJzaW9uUGF0aCk7Cisg
ICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShvbGRWZXJzaW9u
UGF0aCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggOWUzMTI5NzE5NmRhMTE1NWYwYjIyYzMx
ODBhMDNjODMwNDg2ZTM3Mi4uZjZjMTRiNWMzN2VlMGMyMjhmYTU4NjI1MjU5ZmU4NzA2MDg5ODlh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xMjIsNyArMTIyLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyB2
b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKIHsKLSAgICB1aW50NjRfdCBidWZmZXJTaXplID0gYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiAwOworICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsKKyAgICBlbmNvZGVyIDw8
IGlzTnVsbDsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50NjRf
dCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAgICAgZW5jb2RlciA8PCBidWZmZXJTaXpl
OwogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDEyICsxNDks
MjQgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiB7CisgICAgT3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAgIGRlY29kZXIg
Pj4gaXNOdWxsOworICAgIGlmICghaXNOdWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoKmlzTnVsbCkgeworICAgICAgICBidWZmZXIgPSBudWxscHRyOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKICAgICB1aW50NjRfdCBidWZmZXJTaXplID0gMDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoIWJ1ZmZlclNpemUpCisgICAgaWYgKCFidWZmZXJTaXplKSB7CisgICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
IAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIGlmICghZGVjb2Rlci5idWZmZXJJ
c0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDVlOGY3MDkwNjFiNDJkMThhYzk2OTE4ZTU5OGZk
ODIxNDBjNDI4Y2QuLjFlMDFhNWQ0ZTdhN2I4MzE0YTIzMTRhYTg3ZjRkZDJkZDMyZWIxMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlVwogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQmIHNjcmlwdCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwgc2NyaXB0
LnNjcmlwdCwgc2NyaXB0LnJlc3BvbnNlVVJMLCBzY3JpcHQubWltZVR5cGUgfSwgMCk7CisgICAg
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpTZXRTY3JpcHRSZXNvdXJjZSB7IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCB1cmwsIHNjcmlwdCB9LCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA0YmY5ODRkYjhjNmI2YWNkMzYyZTIzNzY5MTMwNTdkZTVhYjNiMWMy
Li42MzE0NTA0ZjdhODk4ZDRjMDAwODExYmMwOGE5Y2VhMDI2N2U3YzYwIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2
aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIz
ODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMzogUmVt
b3ZlZC4KKyAgICAgICAgRHJvcCBvdXRkYXRlZCBwcmUtYmFrZWQgc2VydmljZSB3b3JrZXIgcmVn
aXN0cmF0aW9uIGRhdGFiYXNlIGFzIGl0IGlzIG5vIGxvbmdlcgorICAgICAgICBuZWVkZWQgYW5k
IGl0IGlzIGEgcGFpbiB0byBrZWVwIHVwIHRvIGRhdGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZSBmb3IgRmlsZVN5c3RlbTo6ZGVs
ZXRlTm9uRW1wdHlEaXJlY3RvcnkoKS4gSXQgaXMgbm90IGEgbmV3IEFQSSBidXQgaXQKKyAgICAg
ICAgaGFkIG5vIHRlc3RzLCBpdCB1c2VkIG1vcmUgaW4gdGhpcyBwYXRjaCBhbmQgd2Ugbm93IGhh
dmUgYW4gaW1wbGVtZW50YXRpb24gb24gYWxsIHN1cHBvcnRlZAorICAgICAgICBwbGF0Zm9ybXMu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3Jr
ZXJCYXNpYy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgLSBUd2VhayBzZXJ2aWNlIHdv
cmtlciB0ZXN0cyBzbyB0aGF0IHRoZXkgZXhwZWN0IGEgdmVyc2lvbiA2IGRhdGFiYXNlIGluc3Rl
YWQgb2YgdmVyc2lvbiA1LAorICAgICAgICAgIHNpbmNlIEkgdXBkYXRlZCB0aGUgZGF0YWJhc2Ug
c2NoZW1lIGFuZCBidW1wZWQgdGhlIHZlcnNpb24uCisgICAgICAgIC0gVXBkYXRlIHRlc3QgdGhh
dCB3YXMgcmVseWluZyBvbiBhIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtlciBkYXRhYmFzZSBmaWxl
ICh3aXRoIG9sZCBzY2hlbWEpIGFuZAorICAgICAgICAgIGhhdmUgaXQgZHluYW1pY2FsbHkgZ2Vu
ZXJhdGUgdGhlIGRhdGFiYXNlIGluc3RlYWQgYnkgbG9hZGluZyBhIHBhZ2UgdGhhdCByZWdpc3Rl
cnMgYSBzZXJ2aWNlCisgICAgICAgICAgd29ya2VyLgorCiAyMDIxLTAzLTI5ICBDYW1lcm9uIE1j
Q29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgY2FsbGluZyBgeGNv
ZGVidWlsZCAtc2hvd3Nka3NgIHdoZXJlIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjM2FiZTk5MzU3MDU2OTM4Mjg4NDI2NTcwOWVhOGY1ZGM1NmVmYmZmLi5mYmEwMzJjODU4
M2I5ZjE4Nzg4MThiYTY0OTY5MzQ2YzRlMDRiNzMzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjY5LDcgKzI2OSw2IEBACiAJCTQ2QTQ0QTU0MjVBNzgzMDMwMEY2MUUxNiAvKiB3ZWJhdWRp
by1jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkE0NEE1MzI1QTc4MkREMDBGNjFFMTYgLyog
d2ViYXVkaW8tY3JlYXRlTWVkaWFFbGVtZW50U291cmNlLmh0bWwgKi87IH07CiAJCTQ2QTQ2QTFB
MjU3NTY0NTYwMEExQjExOCAvKiBTZXNzaW9uU3RvcmFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTQ2QTE5MjU3NTY0NTYwMEExQjExOCAvKiBT
ZXNzaW9uU3RvcmFnZS5tbSAqLzsgfTsKIAkJNDZBOTExNTkyMTA4RTY3ODAwNzhENDBEIC8qIEN1
c3RvbVVzZXJBZ2VudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QTkxMTU4MjEwOEU2NkIwMDc4RDQwRCAvKiBDdXN0b21Vc2VyQWdlbnQubW0gKi87
IH07Ci0JCTQ2QUU1QTM3MjBGOTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucy00LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLzsgfTsKIAkJNDZCQkVBMUIyNUY5ODM1
NzAwRDQ5ODdBIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNw
cCAqLzsgfTsKIAkJNDZDMUVBOTgyNTc1ODgyMDAwNUU0MDlFIC8qIGFsZXJ0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDMUVBOTcy
NTc1ODgwNTAwNUU0MDlFIC8qIGFsZXJ0Lmh0bWwgKi87IH07CiAJCTQ2QzNBRUIzMjNEMEU1Mjkw
MDFCMDY4MCAvKiBiZWZvcmV1bmxvYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMzQUVCMjIzRDBFNTBGMDAxQjA2ODAgLyogYmVm
b3JldW5sb2FkLmh0bWwgKi87IH07CkBAIC0xNjYyLDcgKzE2NjEsNiBAQAogCQkJCUJDOTA5Nzg0
MTI1NTcxQ0YwMDA4Mzc1NiAvKiBzaW1wbGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk1MUU1QzcwMjE5MTlDM0IyMDBEOEIzRTEgLyogc2ltcGxlMi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTUxRTVDNzAzMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCi0JCQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4NzNFIC8qIFNpbXBs
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlGNEY0MDVCRDFENEMwRDFDMDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZp
ZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMDFBMjNGMjEy
NjYxNTY3MDBDOUVENTUgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJRjRDRkNEREEyNDlGQzlFNDAwNTI3NDgyIC8qIFNwYWNlT25seS5vdGYgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCkBAIC0yMDQ3LDcgKzIwNDUsNiBAQAogCQk0NjNGNDcyMjI1NUI0
OUI2MDBEOUUwQ0MgLyogVmlzaWJpbGl0eVN0YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVmlzaWJpbGl0eVN0YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjQ3QjEyNTFFQkEzQjczMDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1pbmF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9jZXNzRGlkVGVy
bWluYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0Qzc2NEMyMzBERjgz
MjAwQUZCMDIwIC8qIEJhZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGgg
PSAiQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiU2ltcGxlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY1RTI4MDYyNTVCMkE2OTAwNjNBNzg3IC8qIEdQVVByb2Nlc3MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVQcm9jZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjZDMzg0MjIxMDYzN0NFMDA2QTg4REUgLyogbm90aWZ5LXJlc291cmNl
TG9hZE9ic2VydmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm90aWZ5LXJl
c291cmNlTG9hZE9ic2VydmVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQgLyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gR2V0U2Vzc2lvbkNvb2tpZS5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDA0OCw3ICs0MDQ1LDYgQEAKIAkJCQlGNEUzRDgwNzIwRjcwOEU0
MDA3QjU4QzUgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUtYXJ0aWNsZS5odG1sICovLAog
CQkJCUY0RkMwNzc2MjBGMDEwODEwMENBMDQzQyAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9u
ZS5odG1sICovLAogCQkJCUM5QjRBRDI5MUVDQTZFQTUwMEY1RkVBMCAvKiBzaWxlbmNlLWxvbmcu
bTRhICovLAotCQkJCTQ2NTZBNzU3MjBGOTA1NEYwMDAyRTIxRiAvKiBTaW1wbGVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMgKi8sCiAJCQkJRjRGNDA1QkIxRDRDMENGODAwN0E5
NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8sCiAJCQkJ
RjRDRkNERDgyNDlGQzlEOTAwNTI3NDgyIC8qIFNwYWNlT25seS5vdGYgKi8sCiAJCQkJOTM2MDI3
MDUyNUEzQjI4RTAwMzY3NjcwIC8qIHNwZWVjaHJlY29nbml0aW9uLWJhc2ljLmh0bWwgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDc2Y2Fm
MmFkNDM3MjY2M2QyYmUzMTFiY2ZiNjNhMDRkMGMwZDAxZjYuLjhmNjUxZDNlYWUzNDMyOTc1MWFj
MzYxZGQ3ZTA2NGNiNjM3ZTM3NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwCkBAIC0xNTEsNCArMTUxLDI5IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgb3BlbkV4aXN0aW5nRmlsZUFuZEZhaWxJZkZpbGVFeGlzdHMpCiAgICAgRVhQRUNUX0ZBTFNF
KEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSk7CiB9CiAKK1RFU1RfRihGaWxlU3lz
dGVtVGVzdCwgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkpCit7CisgICAgYXV0byBjcmVhdGVUZXN0
VGlsZSA9IFtdKGNvbnN0IFN0cmluZyYgcGF0aCkgeworICAgICAgICBhdXRvIGZpbGVIYW5kbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxl
SGFuZGxlKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIEZp
bGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgfTsKKworICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSB0ZW1wb3JhcnlGaWxlOworICAgIGF1dG8gdGVtcG9yYXJ5
VGVzdEZvbGRlciA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJkZWxldGVOb25FbXB0
eURpcmVjdG9yeVRlc3QiLCB0ZW1wb3JhcnlGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUodGVtcG9yYXJ5RmlsZSk7CisKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0
ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiIH0pKSk7CisgICAgY3JlYXRlVGVzdFRp
bGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRlc3RGb2xk
ZXIsICJmaWxlMS50eHQiKSk7CisgICAgY3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBvcmFyeVRlc3RGb2xkZXIsICJmaWxlMi50eHQiKSk7Cisg
ICAgY3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0
ZW1wb3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiLCAiZmlsZTMudHh0IiB9KSk7CisgICAg
Y3JlYXRlVGVzdFRpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyh0ZW1w
b3JhcnlUZXN0Rm9sZGVyLCB7ICJzdWJmb2xkZXIiLCAiZmlsZTQudHh0IiB9KSk7CisgICAgRVhQ
RUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHRlbXBvcmFyeVRlc3RG
b2xkZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBvcmFy
eVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeSh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5VGVzdEZvbGRlcikpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJC
YXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdv
cmtlckJhc2ljLm1tCmluZGV4IDdmNGFjOTZmYTdjNzNhODQyMmE0YzRlOGZmN2U2MTA1ZTllODgw
ZGYuLjIzNzg4ZWFlMTQzNjdhZTJmMWE0MTY0ZWI0YzlmYmExNDMwOTQ0NzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2lj
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdv
cmtlckJhc2ljLm1tCkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBT
dXNwZW5kTmV0d29ya1Byb2Nlc3MpCiAgICAgYXV0byBwYXRoID0gc3RvcmUuX2NvbmZpZ3VyYXRp
b24uX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkucGF0aDsKIAogICAgIE5TVVJM
KiBkaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICBOU1VSTCAqc3dEQlBhdGggPSBbZGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdOworICAgIE5T
VVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl07CiAKICAgICBFWFBFQ1RfVFJV
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dEQlBh
dGgucGF0aF0pOwogCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBURVNUKFdlYktpdCwgU2VydmljZVdv
cmtlckRhdGFiYXNlV2l0aFJlY29yZHNUYWJsZUJ1dFVuZXhwZWN0ZWRTY2hlbWEpCiAgICAgRVhQ
RUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0
aDpzd1BhdGgucGF0aF0pOwogCiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
cmVhdGVEaXJlY3RvcnlBdFVSTDpzd1BhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllF
UyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl0gZXJy
b3I6bmlsXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJdGVtQXRV
Ukw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLTYuc3FsaXRlMyJdIGVycm9yOm5pbF07CiAKICAgICBhdXRv
IHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBz
d1BhdGg7CkBAIC0yMzU1LDYgKzIzNTUsNzcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgQ2xlYXJE
T01DYWNoZUFsc29JbmNsdWRlc1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKQogICAgIHJlYWR5
VG9Db250aW51ZSA9IGZhbHNlOwogfQogCitURVNUKFNlcnZpY2VXb3JrZXJzLCBDdXN0b21EYXRh
U3RvcmVQYXRoc1ZlcnN1c0NvbXBsZXRpb25IYW5kbGVycykKK3sKKyAgICBOU1VSTCAqc3dQYXRo
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5X
ZWJLaXQuVGVzdFdlYktpdEFQSS9XZWJLaXQvU2VydmljZVdvcmtlcnMvIiBzdHJpbmdCeUV4cGFu
ZGluZ1RpbGRlSW5QYXRoXV07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBy
ZW1vdmVJdGVtQXRVUkw6c3dQYXRoIGVycm9yOm5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd1BhdGgucGF0aF0p
OworCisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlB
dFVSTDpzd1BhdGggd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5p
bCBlcnJvcjpuaWxdOworCisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3dQYXRoOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07
CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ci
XTsKKworICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAidGV4
dC9odG1sIiwgbWFpbkJ5dGVzIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
LCBzY3JpcHRCeXRlcyB9LAorICAgIH0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIHVuc2lnbmVkIHRpbWVvdXQgPSAwOwor
ICAgIHdoaWxlICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQ
YXRoOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0ucGF0aF0gJiYgKyt0aW1lb3V0IDwgMjApCisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOltzd1BhdGggVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxp
dGUzIl0ucGF0aF0pOworCisgICAgLy8gRmV0Y2ggU1cgcmVjb3JkcworICAgIGF1dG8gd2Vic2l0
ZURhdGFUeXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpAW1dLV2Vi
c2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNdXSk7CisgICAgc3RhdGljIGJv
b2wgcmVhZHlUb0NvbnRpbnVlOworICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDFV
LCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwor
ICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gRmV0Y2ggcmVjb3JkcyBhZ2Fp
biwgdGhpcyB0aW1lIHJlbGVhc2luZyBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIHN0b3JlIHdo
aWxlIHRoZSByZXF1ZXN0IGlzIGluIGZsaWdodC4KKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVY
UEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOworICAgICAgICByZWFkeVRvQ29udGludWUg
PSB0cnVlOworICAgIH1dOworICAgIGRhdGFTdG9yZSA9IG5pbDsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFs
c2U7CisKKyAgICAvLyBEZWxldGUgYWxsIFNXIHJlY29yZHMsIHJlbGVhc2luZyBvdXIgcmVmZXJl
bmNlIHRvIHRoZSBkYXRhIHN0b3JlIHdoaWxlIHRoZSByZXF1ZXN0IGlzIGluIGZsaWdodC4KKyAg
ICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIG1v
ZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsK
KyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBkYXRhU3RvcmUg
PSBuaWw7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeVRvQ29udGludWUpOwor
ICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOworCisgICAgLy8gVGhlIHJlY29yZHMgc2hvdWxk
IGhhdmUgYmVlbiBkZWxldGVkLCBhbmQgdGhlIGNhbGxiYWNrIHNob3VsZCBoYXZlIGJlZW4gbWFk
ZS4KKyAgICAvLyBOb3cgcmVmZXRjaCB0aGUgcmVjb3JkcyB0byB2ZXJpZnkgdGhleSBhcmUgZ29u
ZS4KKyAgICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5
cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3Jk
ICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMFUsIGRhdGFSZWNvcmRzLmNv
dW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cit9CisKIFRFU1QoU2Vydmlj
ZVdvcmtlcnMsIFdlYlByb2Nlc3NDYWNoZSkKIHsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9ucy00LnNxbGl0ZTMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGEwNWRjNDZlM2EyY2NlYjM0ZWY5YTc2OGNkMDllYjNkOGFmMjQx
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMDQ4MAp6Y21lSE9jfn0heSpVdl9Q
NU0malFNYVA5ckFofV84THFkcHZ2V1MydkI2TFV3R01iSDwyXmNMXnFvUCpwZzhQUHUKelhzdWgt
eTYqfXFSJkN2X2I9U0pyVDFCZ01zbyROMUFYcj00QEE7bmhkO2lHYldiU2hBSj9ILUp6MzB3M1hV
c0BYCnojd2lSYilEUzleTGMkbzEzPkokS2l5I2FKZzlVRlpjJCtVS09tTkhAX0B3aSNUYFl6bTlJ
PHpKJHphKD5GemgyNwp6ajwoam9RZzE9UGZgQTE5M2ohN2RFQ15ULXVwblNUej1EN1VmJlZINUNP
OSN6LU16ZStsbDJyQHB1YDRYRzdUWG8Kejh5X3NtMEk0YHJpZSFyOGxCR3l2QXJkZWcoPDdQRUw3
N051OG9hWlRsYWFKa00zUj07Q3BrJXlpUyFYQ0JfbW0+CnpOJEZZQTdVY3Ree2djSEtYKXZOOEBG
SEJATilOI1pEYnJ9TnRPM2NiNT5ncyUrQ1NAM2lJUDs3UipxN2JNMWplTQp6WFd9WGhpQkhSLTJs
dG1sMn1YM3I3NldscWczMShGdEt5SXswQHFVaUx+cypqc353aFZoflhIS3NuQHA3VGMlTXsKem4z
fkdLV0k2KDteISt0VFQmNzNqbEdFYjtaaCE8PGghRiV2Rz9NQFEpWTIwfTR7IWlSWUlLQVFPRl59
KkdMVF5lCnpnJXsjNzJ6LSpkUH0yJjFVPGl4ckY3eyRGYUozdjhLXjd+YVJpQlVRRDIqfG4tPyQ5
KE1VNHFJKylwPDJwMGJCRwp6KD45cF98NSt7ejB1fUA7MnZgdVhBWWVoamZgQTJxZX5He2VVIzFm
bylnajgtRGBVMmNSfkxLbHZFdmRJNnMwQmUKelJkVGhVMiZXWGYwcyplYyZvPnIhN1liVngzKDMr
RDNMYDF1S2RBa25MbTw5eip3NkxLNVQ3S0tSenB6YS19Z1k0CnozV2t2K3JZc2JvYT1Fa3d6V09I
UEJ6eXpMaHlaX0ZPO1ZeKj1edTt+PmVNbXsqUWYoOW5qI1B4I1h9SGRRYyNORwp6UkY7fjtsPng4
X0wxZ3BgSn1IMjloZFJLJk1DMmJScGNGOUspWlNRY1lFUDNCN15OZkJyZEc1N1Z4PS0qaF9OSE8K
eioxcmhffEtOYGw4ZWU3dzNRN2Vmezc1eFA+Nk1zM012QDxgTVlVUXVAUStzRUR6cGQtUTk+QzBp
VVB0eWdwe0hMCno4S1RxX1gjflR4TUlZXmAyIWUrWmRTUVZecj42OVlAQ1BIdlI7ZzhiNz0pdmcq
ZyNaezV2QHtfWUU1WS1wQEQhbQp6Y0hNfT8oNyt6WFI5UFQ9ejtxZUJkNERtX2clfkFNe092M2c3
XiY1JDw9SnI2MX5nN0ZqMWJCY3J1ODVvdXdvcnQKenRSR0ljc1RHTnQ9VVhUPXVNYm4+S209OG1x
SXdjODE1JT9iIUFQVVRrZzdtT0E8KHsrcChLV0EzSzNFI2xWUE5oCnozYHptWk5eendVUUpeSWxR
aTNYVm42VmpOaHk8NyFBe340NkxVaHBmRGE2JjcrfDBnZHh0WWx0NWtmRX0/Mn0mNwp6XndxY3xq
aE91SEBaUGd+JmozTjdeeWNtbjZ7PCVIRmhvYVVhenZ3Nj5mdypmQnJNR2NRa0coZjhpU1JUMXxq
THUKeiRkbnAyTSg0QjswNkdaYGMpYlk7eFVDdW1HYDIrNWEpaVZQKm9LN3UyQUZ9PVA0IUJRWTcj
PFg/Nk94PVVTUS1BCnooNn5CaUlodlphdlVkXkYlcl9ydzw5LSlGYWElJGEre0Rrd3pab31yOW54
SXNzfVg4NVVnbkNqS21vTEs7bz5yRAp6NEo0cEIpODt5WjZxcmBoZHJlezliQVI0Tk9eblNWbHRE
cXQwJTAqLUFjMzlANXxeMmtlNyFqVnBMRlAoekwrTnYKejxDN3NXQVYrfjZwOT0tb0RKZDN7MTA0
QndzOUw3YjVNJnloWEN7KllvY1B2cWo2IWlHM0FpRSN7Umk2ZTlpaVZ4CnpyYSsteWdeRXM3aXBp
TndDZ3tURm0wJCMzc0U+IW55QHkqVTJuOFQyRypyfHJ5anhmfEteVyozKEplRndgMCtWNwp6SDJn
KkZmajhlPl40PVNlTnVYKntpeFFZeDJLaDM5ZiUkLU1ZZXRsVyotSVApXjgkUkg7Vn5JaTJJZ14/
dG1vUFcKemFoWDxEKV99PWB3TDQoWjc2NkNGO25BYW5WUj1oci1aYXNjVWtkXmoxU3wreDVVP08l
TEJOODUxcHh+Sjc2ZEVeCnpTUC14dkBMIUVVQiU4R1RVcFNsTG41QFFEUj1hVXIoLXJTI2U5Zn1m
Xipud05sTlZHd1p5IXdiQE5oOHNDUGRMNwp6RG0qK1FEaEg2RDckZ0IodTJvUFFIcHxuQiFFeWNH
QDQzZ1Rxbn1ObWBjMiQqWnthWTwlNHp3JGtOM3VNV0ZeSHwKenpwOU1OM0U2ZW5YU1QlUWAhUzNe
YWowQEs3bGxURSRjU3o8USt1diQqWWQ+ajd4cWwxb2ZVJl5mWm1vPXwyRFp2CnoxO0BPWFBKNExC
a0EzT1lpRngpUjh4fkppNFFmY2RfcFZ+KngxbVlMLUVSJS1lODFQNm1xK2pCaG81dWloUH4zYwp6
QnQxZzx3K1dRcFJyaHNUSiRCeFMjN1U8V1pPP0R8IyZ3ejMjYWxOKzVBSlhvKXV0Vj5Dd1p3eTxu
c2tURVpFQmsKekA5fWMlPl9JX3NzcDlfcGpiMU9KeDFMJVFRQGRNRElyXm5mNFFWXipsO2BIb259
MmhnODhAVElGZT5mXk9FOSVsCno9fXE5YzxtLX03TnJUSnMyUiNUb2FCQlJ1eSpqJipRenlGalhM
YjA2ZFI2XjY8O3lvPChOXzxhLXxjZzchNiNuIwp6K1RITmp7ZCNefig2a0A8aHB2ViU/cGQ0aGAx
UjRFKWk+KWhZYCh+ZCtAYmxSeXJMbUNYemNpa25Va2k1U3VLM1YKenpwJGN4cDk1bEdVQDdARlRL
WmNSOURgMERSLVZZZiReaSk5MSVBaDNgWDxIbm5+SkoxekFaXkFHaWN1LTBsaUI2CnpDVzxzJSZV
WF9ETEl1JmBLcCt4QE1UU0tQTDt4bkM1Nlp5ZV5YLWxPPihqSiFBYj1EWm43QE5JZUFeXj5HT2l2
RAp6OXA8JDIzQSh8dUY/NHU4T3JMPnxHP3FCPz9NPHgySSFZbiFtcWs7LUdNWHZfRkgpbj57Y29n
bTtrUVgzUTBWIUYKenU/S2xGaDhFSTx1NiYwJEJgTz5Lcl94bDdUQl8xZ2BWM3ZjRmlifCN3OXZV
MGhlOExRMWo8R2MoOFdmUGptNFE1Cno5UzE+YDE1cVV8aG9BSiYjcU5BKDNILWJWZW92IzZqKTJo
KWt7JUxXO2wrMHwpQWZmPUlnTEM4OWY3TktEcjJRTAp6LSEzQn5JWjtEV1k4cHJUNzctaVRGUEVX
Kjs7UytWOVgkJDM8XmJweCN8ZXt7dUxJd0A1ZitndnU7SGA5THM9e3YKejJBenJ1VzNpeWF1b3ZJ
YUQyZzFETCY3VylMSjkmbzM9U3ZEJEN0c2VGKilxbU9iIXBHSTd+d25rSW0tVGVvfiZ1CnpFUG9s
dFZGRCVPWlUhX0ZCXjY/MjUmVE13UW05Q2YmVWJGQWlwUHRmcWRwfSpeZG57QUExUkF+T1VUQDxz
Y2xCMAp6U09nNHdIbE4/QG48VGpBPzRFRTgqNVNabDRTPDJgUU4/QzRTJTJRKkE4Y05yNzE9QGMh
T3I0dlUwN0tlcVBEPD0KeiZoVDlMa1FZdlNJZ3VvX093PG16KTVVZiFqLXtvZzB5KFVyU3FvJHVs
fUhGZT1xazMwVXNEU3hVP2BHXjdieUBpCnpOJFF8YFJFOG1ASEhiKldwdU18Ml5zaG8/MCpxRzwl
IVl6K1FNZD99MCswaVN3VW8jT0lNTXl2eGJQJSFgTjAxZQp6ck4mV184KnJyeXR6R09oUCZMd3JX
YFY8Uj9WNT83ZkshUk9mPyEmRGZ5Zj1TSE9iaDk3UVpwXzJaZWBqKkd8bT0KelZIJmxXMHxTPXhT
aFFOKDZ3fldMWHhWUXMjXj9UV3pTTDwoKGVAPnExOGElTVZkQ3BJa0ZEJFdEQTt9YTwjRmtRCnpB
NTclK3R+ZDAyRXR0R0E8QCkxX2AhUkZ2ciorOz91PUhyZm9KQlFgSzQtSTU+Pig2eT8rcDA4cj1W
bGBZaFZBIQp6NHkxJj9yWCh3R0t3XnpnP3RPT1Q+UnNIUkhmfkd5ckElZHM9SDMoQntaLW1OS2dq
dm5sRiYpZiFHVmlNY1h7e1IKekN1aC1fRl9TaigzeDA/VnclKFRUZ1kmZHJRP3RoQHMkTEctcFNH
c3YkQHh4bXghekdlKn1aIU4pbjV4WiNjdDE3CnpAfitsNHMwQHdSSWw0aHx7cWVRI1FAelg3OElQ
bEAmI256Vz1DRlJZWFdjdlpvbSpDKiFrP1RAOXkmNDhzJD4kRwp6KHkkMGp6UmNmcHEpK0dpczR+
T0xDITEjO1czaWJHPTVobzNUVlAteDF8MS1YS0FreHB6LWBQJmswOzxtNlNVI0wKeihgI3hLNF5P
eH1JZG50SFZKQiVwek5jXypZSWlWLXU2RSozZkd+Vjg1ZTl6T1g0N0tleWBMaDNUfmlJTkcxeFht
CnpaNEtfYGF2MG5wOG93RSY3bz8lQmlST2MxKDF2RjJ6K31HVGFNJiFYRHdDfGY5Q3tAK1pTQUhN
MytRT180amVVNQp6ZzdCKSlEb19yP29SayZAaURpVGB0aT11eGtfdDM1TTFoN3RJaU4tbERUKSs4
bm1ATSt8MGtgSVh8QFBRM00zJGsKellmPig2bH41fm8xcCNLXlNXR3U+YjQyO1ctNilqdyZqMj1E
WnFabWktMjduZElDQ1F5VysoK1ooOFpodyV5TiYkCnowY204VXd1TlhRckhQN0ZFO2JKdnJGVDVw
Zj4zRFFAJGBuTF9qfVdKSHw9KGI3JFFMZEswUEtFOGhJOT13XmtYfgp6cShSVD9Tc1dJT2V5SEck
R205N3tqNk4lfTlfbjdyTThLQm4kQHNIfEdOKWlNd2ZBayhfNmNqQXpSfmBuTmBTR0UKejspbFd4
WlpKXjdXK1ZWOXQwVXY/PCg7KVpkUkZvSDdoZk0qUUB5SGUhcHc9dT41Q0BCSjF3ezdVU2d0JkVY
MXdZCnomdHcwaWombGQoYmJCPCMqWCE2JEJLX2B8RndMXkN0bElSR1RlYG5zPW9wPShRdFFFNFQ/
V3FXeS1mSnpne3U1fAp6WEZ1N3h7cnlHe0p2PVR+ZWJXSmtwSj19QV9aaioyMHI0IVAmXmZ3I1M+
KXZsP3szJmt7LU5WJSkxRz53Y01QWDgKektiZHVTXk1TSDE4SkFje1FPdUpvdmwwVnMtRmh5Y2ZV
bnJiYzR3YUtkQmJpMHQ4cEgzXi0lbno0SUZPekAoc2A1CnpHV0NsR3M8dWFzbjlpPm1kRUNxWSpv
KD9aYVNRR0xJNktBYWNIP2t1bn0mPEhfUCY/JlN1KE9OPVJ4NGw2WjYoeQp6aU9+Zjl6TT1jbylX
YEZfRlJxcHl2NGVtLTU9TTEhbEltPnd1YnpLUFJhbD90Kno/em1AN0RWKntifXgtaTZkPloKemsy
S2VKPUM/T1MhPipealo9Ny0xdVhhM3NBZlpzPD1yO0tCSkl7R3JtaUpxQUVBYSVgdS1NaGwkN1h2
JlpyP0dTCno1bnMlam02fipXfElHdD0rNiNOfio3JE8+Y1Y0KylNfTN7U0FoUDIxQ2pPJlNjS3ox
dHUwPTJqKk5zPUZTTjE0egp6U2FJY0QqRyQmOUY3O2A8TjhhSGlpc2plIU1lRkIwaXUkR144NUBN
emhBUzQ8QkEweEpVWXNwRil0elpHMzlVKDcKejtvPypoNlREZSVuREc9Wl5JSmM3VUQtX2Mxcko8
TENkXztEWjEyWHF7bnF8R2VDfU5JbGB8Jm94SU89d1diO0t2CnpsPGxEJiU5TWYtbmYzZkhUXnxP
YTMrO3B2Wk0mcmdpZ3hGez9sUj17KClfMnQ3Q2M8SjxNVyNLR3dsQ3hWQXQpNQp6enhfNUw4aks9
bEE+WFlZdjRVZ1pZeWskJk15VFokR0BoSEI4K1U2aT1SUiN2P0dLOUVLRDYhOTRgMmh6bVojTGUK
ektSMUl3QWx3KTUtMFdvRE1JUm9TKHQqZVRqZlFHR0dldXp7MEFyRy1MbFR+dShhb358NTJ0dSpD
K0Y3ZCFoPkQ3CnpeKHMjT2d+dlFPY1Qtcz5LZz99P1Q8b0luRS16aExWaldXcHZMPzNNa3Y2K2Mm
Zz4zWjEyLVJKYl5aRn17OW8qMQp6RlZ2bXZMRGFpZUtBeTRCPjh0Z3A+JGdqflUkbkQzY1clen0q
c3RxLTk7R2JLJikhenZVJE5sJT1SY2w0ViUxXlEKenlyWStFSFg2bzw5QTM5I0BzVzBobEBsRUQ7
czxxJm4qS0s4aUpnc3FYd0xJcFF6fm9ycUBWUF5kOEoyTyptQTNZCnp4P0tVczdwQEtKWShMYGdz
NV5QWit4b2BYeWRKeUYmMjhDfCZkdz5mRkkzcDkpenZLQ2RCU35EYH1oY0tiY1MhWQp6UXtLRlZH
T3U8T2whNnleQFpmO05XOEhHOXg4NHxmOzdTIzt5PF96KEthRmVPal5aUGFSRXdTXzNMRHRac30m
VSkKeiFufDlKQ25xeHJEbSpFMFpjPjNaZkQxSnR7a3F4V0t3XzQrYnw4aERsYD5UMjBsQERjc2A3
cGA7fGBwNzVDPndiCnpWeWIkVWNRQDtFTGl4ZGdXTH0wWDZ1RVJEeSMkU2xUblQjN29ndGheNURy
NFFAVTBrT3tIdF42e29CRkVZfSohWgp6N2FMPTBhclZvNzNDeSRle1hBYDBrN2U/cCs3RVcxKGRf
ajJlOW1PezlvNG5tSCRJOTdlVyNCKnBEejRqYylWTlgKelRHe2l7WVVUSV5RJnh7SDl6V3ohYzxQ
MzJgaWo4Z0EhQ085SXR7c0B1bGErVztQVCprYEx+ME0lYnMhTzRuSCReCnpQX0lBRWg8dE5CcVFA
YDR2KClmKj5YNy1PKUR0NXJKPk8wXm1iQ2gqfEM5eTlvMCEkLSNDQVdQaShJelBUYis8Sgp6SWAz
bFFyfGdTd3J6Qk8pX2x0e3RjKXI0Xk0kWEk1dGI2V3JvfFFMej9Kc3A+N0NJQkoyRnwraFpYY015
MV5ldHEKenJAcVUhVEdIandneGE5akR8TV5aaFBYWDApQkE2RmN5TmlHXkBHKEQmTT1vRjBiPCZ4
RjwyNkNkaEQmJHp4X09fCnpOOW9xc2YtelFORGY2KkFIfEZhOHV0aH5AUHlzUlZDO1d7d0JSalVl
X0lkbEdufU5hTURCc0hYUTNGaXd3YiVlbgp6Q1FPM0cyQyYhdyV9aiVxRCVXQklTWm59YDRiYkds
d2IlZF84e2w3aEArPnhoI1JqbjAwUlFKVXpgdU98PU5RO1cKenEydUJaMz15cH1KTj8oQGBWRiYt
VHtQV0p8OCN2SC1fcXUkbGEmP1lLa3ZLJWtzPVh7V0VuNSRAREdFenJ0RSlNCnpuJTAhbztwNFot
SkZtfn54KlpZe3k3Sm9YdkF2STtASi1yVStfbT1IP0NfIyRwNyh9KWR9WnYkeF4wYExwUFhPdwp6
bTNWT1hHblokZD98RiVldUlZT2Ajbjxxbj99YGxQPXdCTD1SSyt0dGxXa3FJR1FZTkZ7TDhlMF50
fj8re2RfNjkKejt1aU98JX1qbj5mSD4+KnY3RV9tS1AkYyR1YGgrTj9YfGFpYnBJaXhCQ2p2TElu
cVZDQFhOSS1oSERPSStmSjg8Cno+QWQtM2FpPiVhb2o2dzlmMkJUbV4zYF5JdihFfGM0RTQ/a3sl
cm1VUHAoXnlmOzxfe2FtaWcpZD94NDl0Vj88Rgp6OCZNTyVLK2JLYSY0RldfcFhqP3lzJUFOVD5S
LTVSKHpYIyN6dlpvcFVjLXxnKypkZXMmaURoJWVBYGJQPmU9NTgKemFYdjJJck02M3QtcmxkIzx1
M3poJWVRNmRwbTFuJVZwc3QtYlllN2Zfa1l4MFp5cWxBQ18lRzBHRis4TGdXbFZkCnpKTVojXiNZ
PWxtRCYqUV5jZjhhdzticXNOKSUhZGBPSldfZjR9OUoqQH1kKHFFI2coPjh8andIaV4teVgraF5Y
Qgp6MVcpXkIjQ01sJlckMjV+LXxqZUBgRDUwXmc8YSZvZU9gRns+ZikjcXRITCtwaSNwZD1qXzRH
bW1FNmlvNVRXZkoKejQ+fmtLbTxvUVk2MWpEKnprM3NOM3A9KlkpMnBpMiVXdzBoaF5CbUVHZFlD
TSVeazM8P3N3ayZRKkhCP0lgOTI3CnpRV21gQHpHbjFLZW5Hc3RkQVIta3NXPG1LV15iPUFhaHtw
PUchZyR7Y1VSVUJoeG9JST0rZCpEVEVDJClLQj9UQAp6JilydElgQjswMjs7Nk8lZnohRCE5KDNI
SGE5LVNWQHhJRDhWeyNZQ1BXK3MoK1NrOVJEeW81REQ5Z08/KXl3Kz0KTG0qdTdSSWBzVj8tYnkq
XwoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggZjYxNmE3NGI0
MTdmNjFlOWFhM2RkMjVjOGJlODZjOWUyYTJmZDI4YS4uNjBiNzIyYzNjOTQ5YzdiODVlNjRkMmYz
ZGE2YmYzNTdiYzgwYmFkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0KQEAgLTI5MCw2MCArMjkwLDYgQEAgVEVTVChXZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRoc1dpdGhQcmV3YXJtaW5nKQogICAgIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cyhTaG91bGRFbmFibGVQcm9jZXNzUHJld2FybWluZzo6WWVzKTsKIH0KIAotVEVTVChXZWJLaXQs
IEN1c3RvbURhdGFTdG9yZVBhdGhzVmVyc3VzQ29tcGxldGlvbkhhbmRsZXJzKQotewotICAgIC8v
IENvcHkgdGhlIGJha2VkIGRhdGFiYXNlIGZpbGVzIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkK
LSAgICBOU1VSTCAqdXJsMSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00IiB3aXRoRXh0ZW5zaW9uOkAic3Fs
aXRlMyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLQotICAgIE5T
VVJMICpzd1BhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9DYWNoZXMv
Y29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL1dlYktpdC9TZXJ2aWNlV29ya2Vycy8iIHN0
cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpzd1BhdGggZXJyb3I6bmlsXTsKLSAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3
UGF0aC5wYXRoXSk7Ci0KLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0
ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0
dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJvcjpu
aWxdOwotCi0gICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gc3dQYXRoOwotICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwotCi0gICAgLy8gRmV0Y2ggU1cgcmVjb3Jkcwot
ICAgIGF1dG8gd2Vic2l0ZURhdGFUeXBlcyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdp
dGhBcnJheTpAW1dLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNdXSk7
Ci0gICAgc3RhdGljIGJvb2wgcmVhZHlUb0NvbnRpbnVlOwotICAgIFtkYXRhU3RvcmUgZmV0Y2hE
YXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAgICAg
ICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJlYWR5VG9Db250
aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFk
eVRvQ29udGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwotCi0gICAgLy8gRmV0
Y2ggcmVjb3JkcyBhZ2FpbiwgdGhpcyB0aW1lIHJlbGVhc2luZyBvdXIgcmVmZXJlbmNlIHRvIHRo
ZSBkYXRhIHN0b3JlIHdoaWxlIHRoZSByZXF1ZXN0IGlzIGluIGZsaWdodC4KLSAgICBbZGF0YVN0
b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRz
KSB7Ci0gICAgICAgIEVYUEVDVF9FUSgxVSwgZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICBy
ZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwotICAgIGRhdGFTdG9yZSA9IG5pbDsKLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Ci0gICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBEZWxldGUgYWxsIFNXIHJlY29yZHMsIHJlbGVh
c2luZyBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIHN0b3JlIHdoaWxlIHRoZSByZXF1ZXN0IGlz
IGluIGZsaWdodC4KLSAgICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSk7Ci0gICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp3ZWJzaXRlRGF0
YVR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKLSAgICB9XTsK
LSAgICBkYXRhU3RvcmUgPSBuaWw7Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFk
eVRvQ29udGludWUpOwotICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwotCi0gICAgLy8gVGhl
IHJlY29yZHMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkLCBhbmQgdGhlIGNhbGxiYWNrIHNob3Vs
ZCBoYXZlIGJlZW4gbWFkZS4KLSAgICAvLyBOb3cgcmVmZXRjaCB0aGUgcmVjb3JkcyB0byB2ZXJp
ZnkgdGhleSBhcmUgZ29uZS4KLSAgICBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dl
YnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1RfRVEoMFUs
IGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKLSAg
ICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Ci19
Ci0KIFRFU1QoV2ViS2l0LCBDdXN0b21EYXRhU3RvcmVEZXN0cm95V2hpbGVGZXRjaGluZ05ldHdv
cmtQcm9jZXNzRGF0YSkKIHsKICAgICBOU1VSTCAqY29va2llU3RvcmFnZUZpbGUgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0Nvb2tpZVN0b3JhZ2UvQ29va2llLkZpbGUiIHN0
cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5Ok5PXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424729</attachid>
            <date>2021-03-30 19:53:45 -0700</date>
            <delta_ts>2021-03-30 20:05:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210330195344.patch</filename>
            <type>text/plain</type>
            <size>118034</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzOGUyZGNmODQ0MmJiNTQzNTYyY2E2
ODRlZTEwZGU3NDNkYjA5NDUuLjYyMjEzYjJiMTJkMzczZTkxNzdmOGM4M2VjYWM2NjRmMzc5Nzk0
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiB3dGYvRmls
ZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1zLgor
ICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2NvYSBh
bmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxlKToK
KyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3b3Jr
Q2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAgIGl0
IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNyZWF0
ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRoZSBw
cm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgorCisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpyZWFkT3JNYWtlU2FsdCk6CisgICAgICAgIE1v
dmUgcmVhZE9yTWFrZVNhbHQoKSBmcm9tIE5ldHdvcmtDYWNoZURhdGEgdG8gRmlsZVN5c3RlbSBz
byB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldworICAgICAgICBTV1NjcmlwdFN0b3Jh
Z2UuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisKIDIwMjEtMDMtMjkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBV
c2UgdGVybWluYXRlX3dpdGhfcmVhc29uIGluc3RlYWQgb2YgeHBjX2Nvbm5lY3Rpb25fa2lsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDE2NDAwNWYxNjlkNzhjMDhlMWRjMmE4YjlmODE1NjE1ZThjMjczYjkuLjVj
NDdiNThkNjFiZTUyYWZhYTg0M2Q1MjU3YTk3ZmNmMmU3OTZmODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4g
dGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdv
cmsgcHJvY2VzcyB3b3VsZCBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRl
IGRhdGFiYXNlLgorICAgICAgICBXaGVuIHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMs
IHdlIHdvdWxkIGxvYWQgYWxsIHRob3NlIHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAg
ICAgaW50byBtZW1vcnkuIFRoaXMgd291bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwg
dGhlIGFwcHJvYWNoIGlzIHRoaXMgcGF0Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2Vw
YXJhdGUKKyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVu
LCB3aGVuIGxvYWRpbmcgdGhlbSwgd2UgY2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBh
bmQgZ3JlYXRseSByZWR1Y2UgZGlydHkgbWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhh
dCB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MpIGFsc28ga2VlcHMgYQorICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2
aWNlIHdvcmtlciBzY3JpcHRzIGZvciB0aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcu
IE1vcmUKKyAgICAgICAgd29yayB3aWxsIGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gZXh0ZW5kIHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRo
ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9u
IG9mIHRob3NlIHNjcmlwdHMuIFRoaXMgd291bGQKKyAgICAgICAgcmVkdWNlIGRpcnR5IG1lbW9y
eSB1c2FnZSBvbiB0aGUgV2ViQ29udGVudC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3
ZWxsLiBJIGFtCisgICAgICAgIGRvaW5nIHRoaXMgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNl
IHBhdGNoIHNpemUgYW5kIGZhY2lsaXRhdGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgdGhlcmUgc2hvdWxkIGJlIG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEg
ZGVjcmVhc2VkCisgICAgICAgIGRpcnR5IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9j
ZXNzIHdoZW4gc2VydmljZSB3b3JrZXJzIGFyZSB1c2VkLgorCisgICAgICAgIEkgZGlkIG1hbnVh
bCBtZW1vcnkgdGVzdGluZyB3aXRoIGEgdmVyeSBsYXJnZSBzZXJ2aWNlIHdvcmtlciB0aGF0IGhh
ZCBvbmUgfjEwME1CIG1haW4KKyAgICAgICAgc2NyaXB0LCBpbXBvcnRpbmcgYW5vdGhlciB+MTAw
TUIgc2NyaXB0LgorCisgICAgICAgIEhlcmUgYXJlIHRoZSBtZW1vcnkgcmVzdWx0cyB3aXRob3V0
IG15IGNoYW5nZToKKyAgICAgICAgLSBOZXR3b3JraW5nIChEaXJ0eSk6IDIzOE1CIChjb2xkKSAv
IDMzMU1CICh3YXJtKQorICAgICAgICAtIFdlYkNvbnRlbnQgKERpcnR5KTogNDQxTUIgKGNvbGQp
IC8gODU3TUIgKHdhcm0pCisKKyAgICAgICAgSGVyZSBhcmUgdGhlIG1lbW9yeSByZXN1bHRzIHdp
dGggbXkgY2hhbmdlOgorICAgICAgICAtIE5ldHdvcmtpbmcgKERpcnR5KTogMjJNQiAoY29sZCkg
LyAxNE1CICh3YXJtKQorICAgICAgICAtIFdlYkNvbnRlbnQgKERpcnR5KTogNDQwTUIgKGNvbGQp
IC8gNDM4TUIgKHdhcm0pCisKKyAgICAgICAgVGhpcyBzaG93cyB0aGF0IEFMTCBtZW1vcnkgZnJv
bSB0aGUgc2NyaXB0cyBpbiB0aGUgbmV0d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBtYXJrZWQK
KyAgICAgICAgYXMgZGlydHkuIFdlIGFsc28gc2VlIGEgc2lnbmlmaWNhbnQgcHJvZ3Jlc3Npb24g
aW4gdGhlIFdlYlByb2Nlc3MgaW4gdGhlIHdhcm0gY2FzZSwgc2luY2UKKyAgICAgICAgdGhlIHNj
cmlwdHMgYXJlIGNvbWluZyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MgYXMgc2hhcmVkIG1lbW9y
eSBpbiB0aGlzIGNhc2UuIFRoZXJlIGlzCisgICAgICAgIG5vIHByb2dyZXNzaW9uIGluIHRoZSBX
ZWJQcm9jZXNzIGluIHRoZSBjb2xkIGNhc2UgeWV0LCBzaW5jZSB0aGUgc2NyaXB0IHdlcmUganVz
dAorICAgICAgICBkb3dubG9hZGVkIGFuZCBhcmUgY29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3Mg
dG8gdGhlIE5ldHdvcmtQcm9jZXNzLiBJbiBhIGZvbGxvdy11cCwgdGhlCisgICAgICAgIG5ldHdv
cmsgcHJvY2VzcyBjb3VsZCBzZW5kIHNoYXJlZCBtZW1vcnkgYmFjayB0byB0aGUgV2ViUHJvY2Vz
cywgYWZ0ZXIgc2F2aW5nIHRoZSBzY3JpcHRzCisgICAgICAgIHRvIGRpc2ssIHNvIHRoYXQgdGhl
IFdlYlByb2Nlc3MgY2FuIHJlcGxhY2UgdGhlIGNvcGllcyBvZiBpdHMgc2NyaXB0cyBhbmQgc2F2
ZSBtb3JlIG1lbW9yeS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBTV1NjcmlwdFN0
b3JhZ2UgY2xhc3MgdG8gdGhlIHByb2plY3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckFnZW50OjpnZXRJbml0aWFsaXphdGlvbkluZm8pOgorICAgICAgICBDb252ZXJ0IHRo
ZSBzY3JpcHQgdHlwZSBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgRml4IGFzc2VydGlvbnMgdGhhdCB3ZXJlIGhp
dHRpbmcgd2hlbiBjb21wYXJpbmcgdG8gZW1wdHkgU2hhcmVkQnVmZmVycyAob2Zmc2V0IHdvdWxk
IGJlIDAKKyAgICAgICAgYW5kIHNpemUgd291bGQgYmUgMCkuIFRoaXMgd2FzIGNhdWdodCBieSBB
UEkgdGVzdHMgc2luY2Ugd2UgaGF2ZSBzb21lIHNlcnZpY2Ugd29ya2VyIEFQSQorICAgICAgICB0
ZXN0cyB0aGF0IHVzZSBlbXB0eSB3b3JrZXIgc2NyaXB0cy4KKworICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9uIGZy
b20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJzYSwg
aW4gdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlu
Z1RvU2NyaXB0QnVmZmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAg
ICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywgc28g
dGhhdCB0aGV5IGNhbiBob2xkCisgICAgICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0gQWRk
IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkgLyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxpdHkg
ZnVuY3Rpb25zIHRvCisgICAgICAgICAgY29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVuIFN0
cmluZyBhbmQgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9tIHNj
cmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEgYW5k
IGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAgIHNl
cnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNpZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVhZCwg
dGhvc2Ugc2NyaXB0cworICAgICAgICBhcmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZpbGVz
eXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFnZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRT
Y3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNvZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IEltcG9y
dGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRhCisg
ICAgICAgIG1lbWJlcnMgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCwgZXhjZXB0IGZvciB0aGUgYWN0dWFsCisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5vdyBz
YXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAgICAg
IGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ugd2Ug
bm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAgICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJjZXMg
aW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJhdGVs
eSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0U291
cmNlcyk6CisgICAgICAgIFV0aWxpdHkgZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAgb2Yg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRvIGEg
SGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0aG91
dCB0aGUgc2NyaXB0CisgICAgICAgIHNvdXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNRTGl0
ZSBkYXRhYmFzZS4KKworICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJv
bURpc2spOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hNYXAg
b2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBmcm9t
IGEgSGFzTWFwIG9mIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhlIFNR
TGl0ZURhdGFiYXNlLiBUaGUKKyAgICAgICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUgZmV0
Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAgICAg
ICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNrZ3Jv
dW5kIHF1ZXVlIGZvciB0aHJlYWQtc2FmZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIFJl
dHVybnMgdGhlIHBhdGggb24gdGhlIGZpbGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIgc2Ny
aXB0cyBhcmUgc3RvcmVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6c2NyaXB0U3RvcmFnZSk6CisgICAgICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkgYSBT
V1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVybiBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0
cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFyIGFs
bCB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRoZSBk
YXRhYmFzZSwKKyAgICAgICAgbm93IHRoYXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHkuCisK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToK
KyAgICAgICAgLSBTdG9wIHN0b3JpbmcgdGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxpdGUg
ZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAgZmls
ZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0gSW1w
cm92ZSBsb2dnaW5nCisgICAgICAgIC0gV2hlbiBkb25lIHN0b3JpbmcgdGhlIHNjcmlwdHMgdG8g
ZGlzaywgc2VuZCB0aGVzZSBuZXcgbW1hcCdkIHZlcnNpb25zIGJhY2sgdG8gdGhlCisgICAgICAg
ICAgU1dTZXJ2ZXJXb3JrZXIgb24gdGhlIG1haW4gdGhyZWFkLCBzbyB0aGF0IGl0IGNhbiByZXBs
YWNlIGl0J3MgaGVhdnkgc2NyaXB0IHNvdXJjZXMgd2l0aAorICAgICAgICAgIHRoZXNlIG9uZXMu
IFRoaXMgaGVscHMgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAtIExvYWQgdGhlIHNj
cmlwdCBzb3VyY2VzIGZyb20gdGhlIGRpc2sgdmlhIFNXU2NyaXB0U3RvcmFnZSwgbm93IHRoYXQg
dGhleSBhcmUgbm8gbG9uZ2VyCisgICAgICAgICAgc3RvcmVkIGluIHRoZSBTUUxpdGUgZGF0YWJh
c2UuCisgICAgICAgIC0gSW1wcm92ZSBsb2dnaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oOgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZWdpc3RyYXRpb25TdG9yZTo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2spOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaDoKKyAgICAgICAgUGFz
cyBzY3JpcHRzIHRoYXQgd2VyZSBzYXZlZCB0byBkaXNrIGZyb20gdGhlIHN0b3JlIHRvIHRoZSBT
V1NlcnZlcldvcmtlciBzbyB0aGF0IGl0CisgICAgICAgIGNhbiByZXBsYWNlIGl0cyBzY3JpcHRz
IHNvdXJjZXMgd2l0aCB0aG9zZSBuZXcgbW1hcCdkIHZlcnNpb24sIGluIG9yZGVyIHRvIHNhdmUg
bWVtb3J5LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc2hVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTY3JpcHRTdG9yYWdlOjpyZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OmNsZWFyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFNXU2NyaXB0U3RvcmFnZSB0byBkZWFsIHdpdGgg
dGhlIHN0b3JhZ2UgLyByZXRyaWV2YWwgb2YgU2VydmljZQorICAgICAgICBXb3JrZXIgc2NyaXB0
cyB0byAvIGZyb20gZGlzaywgYXMgZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtLiBXaGVuCisgICAg
ICAgIGdvaW5nIGEgcmV0cmlldmFsLCB3ZSByZXR1cm4gYSBzY3JpcHQgYXMgYSBTaGFyZWRCdWZm
ZXIgd2hpY2ggdXN1YWxseSBjb250YWlucworICAgICAgICBtbWFwJ2QoKSBkYXRhICh3ZSBkb24n
dCB1c2UgbW1hcCgpIGZvciBmaWxlcyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIFBBR0VfU0la
RSkuCisgICAgICAgIFRoZSBzY3JpcHRzIHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVz
aWRlIHRoZSBkYXRhYmFzZS4gVGhlIHNjcmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBv
cmlnaW4gKHVzaW5nIFNIQTI1NiBvZiB0aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lIHdpdGggc2Fs
dCksIGFuZCB0aGVuIGJ5IHJlZ2lzdHJhdGlvbiAoYnkKKyAgICAgICAgdXNpbmcgU0hBMjU2IG9m
IHRoZSByZWdpc3RyYXRpb24gc2NvcGUgYXMgc3ViZm9sZGVyIG5hbWUgd2l0aCBzYWx0KS4gVGhl
IGZpbGUgbmFtZSBmb3IgdGhlIHNjcmlwdAorICAgICAgICBpcyBhIFNIQTI1NiBvZiB0aGUgc2Ny
aXB0IFVSTCB3aXRoIHNhbHQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2Ny
aXB0c1RvRGlzayk6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlz
ayBmcm9tIHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAg
ICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2
ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0IGZyb20gU3RyaW5n
IHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpz
Y3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQgZnJvbSBTaGFyZWRC
dWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAg
VGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgZm9yIGNv
bnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRzIGRhdGEgbWVtYmVy
cyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtl
cjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHQg
Y29uc3QpOgorICAgICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNjcmlwdCBpbnN0ZWFk
IG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQorICAgICAgICBtbWFw
J2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0zMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdyBQbGF5aW5nIGNvbnRlbnQg
aXNuJ3QgdXBkYXRlZCB3aGVuIG1lZGlhIHNlc3Npb24ncyBNZXRhZGF0YSBpcyBtb2RpZmllZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0NzA3OGVmMmQzMWVkODU4MGJlMjMwNTg5NjZmMzU3OTA3ZGNiMTI3Li4wMjcx
ZWQzNTAyMDYxMmVjMTI5ZTEyZmE3NjE4N2Y3NGJmM2I2ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ0IEBACisyMDIxLTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgU2VydmljZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBu
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzgwOAorICAgICAgICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAg
IFBhc3MgYSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBp
biB0aGUgU2V0U2NyaXB0UmVzb3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2Ug
dXNlZCB0byBwYXNzIHRoZSBJbXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zy
b21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2Fj
aGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lv
bnMpOgorICAgICAgICBEcm9wIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50
YXRpb24gYW5kIHVzZSB0aGUgZXhpc3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnkoKSBpbiB3dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkRhdGE6Om1hcFRvRmlsZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhl
IG1hcFRvRmlsZSgpIGxvZ2ljIHRvIFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIFVwZGF0ZSBTaGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlz
dGluZ3Vpc2ggYSBudWxsIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBX
ZSBub3cgdXNlIFNoYXJlZEJ1ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291
cmNlcworICAgICAgICBhbmQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0
byBiZSBlbXB0eSAoYW5kIHRoZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0
cykuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNl
IElQQworICAgICAgICBmb3IgY29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0
ZWRTY3JpcHQgZGF0YSBtZW1iZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMzAgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3cgUGxheWluZyBjb250ZW50
IGlzbid0IHVwZGF0ZWQgd2hlbiBtZWRpYSBzZXNzaW9uJ3MgTWV0YWRhdGEgaXMgbW9kaWZpZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2
YTFmZjBiZS4uMDM0NjIwNmYyMjJlZDAwNTUyYmIzZGM0MTBmMmE4MmUyMjk5NzA3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KQEAgLTMxOSw2ICsz
MjAsNyBAQCBib29sIE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIEZpbGVPcGVuTW9kZSBvcGVuTQogICAgIH0KIAogICAgIGlmICghc2l6ZSkg
eworICAgICAgICBtX2lzVmFsaWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTM0Nyw2ICszNDksNyBAQCBib29sIE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIEZpbGVPcGVuTW9kZSBvcGVuTQogCiAgICAgbV9m
aWxlRGF0YSA9IGRhdGE7CiAgICAgbV9maWxlU2l6ZSA9IHNpemU7CisgICAgbV9pc1ZhbGlkID0g
dHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDA4LDUgKzQxMSwxMDEgQEAgU3RyaW5n
IGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3RE
aXJlY3RvcnkocGF0aCwgIioiX3MpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7
CisgICAgICAgIGlmIChmaWxlSXNEaXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGlj
TGlua3M6Ok5vKSkKKyAgICAgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAg
IHJldHVybiBkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRG
aWxlRGF0YSBtYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+
Jik+JiYgYXBwbHksIFBsYXRmb3JtRmlsZUhhbmRsZSogb3V0cHV0SGFuZGxlKQoreworICAgIGNv
bnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOworICAgIGF1dG8gaGFuZGxlID0g
RmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFk
V3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyLCBmYWlsSWZGaWxl
RXhpc3RzKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCAh
RmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgYnl0ZXNTaXplKSkgeworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsK
KyAgICBib29sIHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVk
RmlsZShoYW5kbGUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3Mp
IHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQorCisgICAgdm9pZCogbWFwID0gY29uc3RfY2FzdDx2b2lkKj4obWFwcGVk
RmlsZS5kYXRhKCkpOworICAgIHVpbnQ4X3QqIG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4obWFwKTsKKworICAgIGFwcGx5KFsmbWFwRGF0YV0oY29uc3QgdWludDhfdCogY2h1bmssIHNp
emVfdCBjaHVua1NpemUpIHsKKyAgICAgICAgbWVtY3B5KG1hcERhdGEsIGNodW5rLCBjaHVua1Np
emUpOworICAgICAgICBtYXBEYXRhICs9IGNodW5rU2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfSk7CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIERXT1JEIG9sZFByb3RlY3Rpb247Cisg
ICAgVmlydHVhbFByb3RlY3QobWFwLCBieXRlc1NpemUsIEZJTEVfTUFQX1JFQUQsICZvbGRQcm90
ZWN0aW9uKTsKKyAgICBGbHVzaFZpZXdPZkZpbGUobWFwLCBieXRlc1NpemUpOworI2Vsc2UKKyAg
ICAvLyBEcm9wIHRoZSB3cml0ZSBwZXJtaXNzaW9uLgorICAgIG1wcm90ZWN0KG1hcCwgYnl0ZXNT
aXplLCBQUk9UX1JFQUQpOworCisgICAgLy8gRmx1c2ggKGFzeW5jaHJvbm91c2x5KSB0byBmaWxl
LCB0dXJuaW5nIHRoaXMgaW50byBjbGVhbiBtZW1vcnkuCisgICAgbXN5bmMobWFwLCBieXRlc1Np
emUsIE1TX0FTWU5DKTsKKyNlbmRpZgorCisgICAgaWYgKG91dHB1dEhhbmRsZSkKKyAgICAgICAg
Km91dHB1dEhhbmRsZSA9IGhhbmRsZTsKKyAgICBlbHNlCisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOworCisgICAgcmV0dXJuIG1hcHBlZEZpbGU7Cit9CisKK3N0YXRpYyBT
YWx0IG1ha2VTYWx0KCkKK3sKKyAgICBTYWx0IHNhbHQ7CisgICAgc3RhdGljX2Fzc2VydChzYWx0
LnNpemUoKSA9PSA4LCAiU2FsdCBzaXplIik7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPigmc2FsdFswXSkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgICpy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIoKTsKKyAgICByZXR1cm4gc2FsdDsKK30KKworT3B0aW9uYWw8U2FsdD4gcmVh
ZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKHBhdGgpKSB7CisgICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgICAgIFNhbHQg
c2FsdDsKKyAgICAgICAgYXV0byBieXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4o
RmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNh
bHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGUpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIHNhbHQ7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsK
KyAgICB9CisKKyAgICBTYWx0IHNhbHQgPSBtYWtlU2FsdCgpOworICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpKTsKKyAgICBh
dXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OldyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNlcik7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYm9vbCBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0
YSgpKSwgc2FsdC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgcmV0dXJuIHNhbHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdm
NmI5YzMyMTQ3MjM4NGVmNGM0Li45YTlkOWNhMDZlMmUzY2JlZjQyZWRmNjVlZTAzZDhjNWU4OGFj
YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0xNDQsNiArMTQ0LDkgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIq
KTsKIAogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0K
IAordXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47CitXVEZfRVhQT1JUX1BSSVZB
VEUgT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKKwog
Ly8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBu
b3QgdGhlIGZ1bGwgcGF0aC4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0
cmluZyYgc3VmZml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQ
ZXJtaXNzaW9uID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhp
c3RzID0gZmFsc2UpOwpAQCAtMTkwLDE0ICsxOTMsMTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwog
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIFdURl9FWFBPUlRfUFJJVkFURSBO
U1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVm
aXgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJik7CiAjZW5kaWYKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgcmVhbFBhdGgoY29uc3QgU3RyaW5nJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
U2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChjb25zdCBTdHJpbmcmKTsKQEAgLTI1Miw2ICsyNTUs
MTAgQEAgaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6b3BlcmF0b3I9KE1h
cHBlZEZpbGVEYXRhJiYgb3RoZXIpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCisvLyBUaGlzIGNy
ZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRlIHRoZSBwcm92aWRlZCBk
YXRhIHRvIGl0IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KKy8vIFRoaXMgZnVuY3Rpb24g
ZmFpbHMgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIGZpbGUgYXQgdGhlIGRlc3RpbmF0aW9uIHBhdGgu
CitXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxi
b29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5k
bGUqID0gbnVsbHB0cik7CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNGRkNDYzZTAyM2FkZDZlYzI0YWNkZDE5
OGY5OTFhMGZmZjcxMWUzLi4zZTAxNzUzYjZlM2I3MjRjZmQ4NzMyNjc4ODY1NzkyNWQ3NTE0MTVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4NSw2ICsyNjg1LDcgQEAgd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uU3RvcmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3Bw
Cit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Sm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGEwNDAwYzM3MDdiYTYzMThkOTgwMDg3MTc5ZjdiZGZlODUwOTlkZDkuLjM5NzFm
MzBjMDc5OWU3NDk1ODlhOTAwNWFlODQyODg3OGYyYmRjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzEsNiArMTI3MSw3
IEBACiAJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0
MUQ0QkNDRkUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYw
RTMwNzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNz
aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVy
bWlzc2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFE
MUY3MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlFRjAwNkZB
QTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
MzUyMUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8q
IFdpbmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5
Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgw
MEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5p
dC5oICovOyB9OwpAQCAtODI0MSw2ICs4MjQyLDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJF
ODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9w
ZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJv
cGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMURE
MDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2MEU1OURG
MDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9i
c2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2Vy
T2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFBQTIw
ODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYz
NTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNzE4LDYgKzIwNzIxLDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3ODI1MDBF
RTI4NTkgLyogUmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBF
NDdFMkQgLyogU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3
RTJEIC8qIFNXT3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEg
LyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEg
LyogU1dTY3JpcHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8q
IFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2
ZXIuaCAqLywKIAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAgKi8sCkBAIC0zNTMwOCw2ICszNTMxMyw3IEBACiAJCQkJNDY2NThEQzkxRkEyNEI4NzAw
RjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNF
MjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNTFFNUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyogU1dTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZl
ckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRERUQg
LyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJB
Z2VudC5jcHAKaW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4MjUzNjkxM2QxMS4u
NGEzZTdlOTc4MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29y
a2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJl
ZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNlcnZpY2VXb3JrCiAg
ICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGVudGlmaWVy
KCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0VXJsKG1fc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0VVJMLnN0
cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50
aHJlYWQoKS5jb250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENvbnRlbnQoc2NyaXB0
QnVmZmVyVG9TdHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4
dERhdGEoKS5zY3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJjNGFhOTgzYzg3M2NmMTNkNTQzZGQx
Yzc2NjRjY2Y2NjVkYWE5Li41ODdiYWViMTFlNDM0N2JjNjBlYTIzMjk4MjU1ZTM5NThmMWM4N2Mw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTcwLDE1ICs3
MCwxNSBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYg
bWFwcGVkQnVmZmVyKQogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBw
ZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCiB7Ci0gICAg
Ym9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlRGF0YShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwg
bWFwcGluZ1N1Y2Nlc3MpOwotCi0gICAgaWYgKCFtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLQotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
IHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBw
aW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
CisgICAgfQorICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShm
aWxlUGF0aCk7CiB9CiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZl
Y3RvcjxjaGFyPiYmIHZlY3RvcikKQEAgLTI4MSw4ICsyODEsOCBAQCBib29sIFNoYXJlZEJ1ZmZl
cjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8IHRo
aXNTZWdtZW50LnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVChvdGhlck9mZnNldCA8IG90aGVyU2Vn
bWVudC5zaXplKCkpOworICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8PSB0aGlzU2VnbWVudC5z
aXplKCkpOworICAgICAgICBBU1NFUlQob3RoZXJPZmZzZXQgPD0gb3RoZXJTZWdtZW50LnNpemUo
KSk7CiAKICAgICAgICAgc2l6ZV90IHRoaXNSZW1haW5pbmcgPSB0aGlzU2VnbWVudC5zaXplKCkg
LSB0aGlzT2Zmc2V0OwogICAgICAgICBzaXplX3Qgb3RoZXJSZW1haW5pbmcgPSBvdGhlclNlZ21l
bnQuc2l6ZSgpIC0gb3RoZXJPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCmluZGV4IDIzYmY1YThlZGI0YzFlMzAyOWI3Y2I0NzQ5ZWFjZDU1MDFiYTkxOTQuLjNjMjIz
YTJmZjM5NjllNjkzNjg2MzJjODA4YTI3Mzk3ZDlmMjc0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02OCw3ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisKKyAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAog
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDRkNDc0
ZjE2ZTU4OGRkMDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUxMDA0MGJlMjg1OTIxMGI3
MmNlZDIzMTgyYWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTYwLDcg
KzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRS
ZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3Vy
Y2UtPnNjcmlwdCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVmZmVyVG9T
dHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VV
UkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNl
TUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29y
a2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
CiAgICAgICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOZXR3b3JrRXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQg
bWltZSB0eXBlIl9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkws
IG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9TY3JpcHRCdWZm
ZXIoc2NyaXB0KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAg
fQogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAK
aW5kZXggMTZkZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTliNWVkZi4uMWVhNTkwMWJk
OWQyZmQ5Yzc5M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgam9iRGF0YUlkZW50aWZp
ZXIsCiAgICAgICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwKICAgICAgICAgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRlZENvcHkoKSwKKyAgICAg
ICAgc2NyaXB0LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5mby5pc29sYXRlZENvcHko
KSwKICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29weSgpLAogICAgICAg
ICByZWZlcnJlclBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYgKzQ4LDIwIEBAIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3Ig
KGF1dG8gaXQgPSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVuZCgpOyArK2l0KQorICAg
ICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5zZWdtZW50LT5kYXRhKCks
IGl0LT5zZWdtZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
fQorCitSZWY8U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKK3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOworICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2NWVlNDgwYTk2MWIxMGYx
ZGJkYzdlLi44NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYwZTU5MmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZm
ZXImKTsKK1JlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmlu
ZyYpOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3QgSW1w
b3J0ZWRTY3JpcHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAgU3Ry
aW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNv
bnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29sYXRl
ZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbXBvcnRlZFNj
cmlwdCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29weSgpLCByZXNw
b25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAg
ICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgewotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAgICAgICAgICBP
cHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAgICAgZGVjb2Rl
ciA+PiBzY3JpcHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
IHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHNj
cmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAg
U3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzY3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7
CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMgY29udGVudFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAgICAg
ICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtl
cklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1vdmUo
KnNjcmlwdCksCiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAgICAgICAgIFdU
Rk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShyZWZlcnJlclBv
bGljeSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVlNjkzZjI3N2Y2
NTU4M2U3YTRlMDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEwZjNhMDlkNDI1Mjc0ZTZl
ZWJlMjY4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBA
IHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdv
cmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYg
c2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVi
dWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkq
IGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAg
IDogV29ya2VyVGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNl
d29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmll
cigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5pc09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1v
bm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3Jl
ZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94
eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgp
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRv
cE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29j
a2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCisgICAg
OiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3
b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVy
KCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9u
b3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVk
ZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9TdHJpbmcoZGF0
YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0
YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlk
YkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVh
dGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAs
IG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJl
ZCgpKQogICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBoZWFydEJlYXRUaW1l
b3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
CmluZGV4IGNlZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4OTRiMTQuLmQ4ODVhMjM3
MGYzMDUyNTk3MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9u
LmgiCisjaW5jbHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgpAQCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBjb25zdCB1aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRpYyBjb25zdCB1aW50NjRf
dCBzY2hlbWFWZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVT
Y2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3ICs2Miw2IEBAIHN0YXRp
YyBjb25zdCBTdHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KQogICAgICAgICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMIgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwiCi0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCiAgICAgICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgogICAgICAgICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05G
TElDVCBGQUlMIgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVh
bk9sZERhdGFiYXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogICAgICAgICBT
UUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFzZUZpbGVuYW1lRnJvbVZl
cnNpb24odmVyc2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7
CisgICAgVVJMIHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlwZTsKKworICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBlOworICAgIH0K
KworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbXBvcnRlZFNj
cmlwdEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAg
T3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVS
TDsKKyAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKKyAgICAgICAgZGVj
b2RlciA+PiBtaW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZN
b3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCptaW1lVHlwZSkKKyAgICAg
ICAgfX07CisgICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0
dHJpYnV0ZXM+IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFwPFVSTCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sKKyAgICBIYXNoTWFwPFVS
TCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2NyaXB0czsKKyAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3JpcHRzLmFkZChwYWlyLmtl
eSwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5yZXNwb25zZVVSTCwgcGFp
ci52YWx1ZS5taW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91dFNjcmlwdHM7Cit9CisK
K3N0YXRpYyBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD4gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3JpcHRTdG9yYWdlJiBzY3Jp
cHRTdG9yYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXksIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+JiYgbWFwKQorewor
ICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0
PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbWFwKSB7CisgICAgICAg
IGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKHJlZ2lzdHJhdGlv
bktleSwgcGFpci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2NyaXB0KSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJh
c2U6OnBvcHVsYXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQgdG8gcmV0cmlldmUgaW1w
b3J0ZWQgc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGltcG9y
dGVkU2NyaXB0cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQgeyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92ZShwYWlyLnZhbHVlLnJl
c3BvbnNlVVJMKSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9KTsKKyAgICB9CisgICAg
cmV0dXJuIGltcG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9uRGF0YWJhc2U6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwgU3RyaW5nJiYgZGF0YWJh
c2VEaXJlY3RvcnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU2Vydmlj
ZVdvcmtlciBJL08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwpKQogICAgICwgbV9z
dG9yZShtYWtlV2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkgQEAgUmVnaXN0cmF0aW9u
RGF0YWJhc2U6On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBiZSBkZXN0cm95ZWQgb24g
dGhlIGJhY2tncm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNlKQotICAgICAgICBtX3dv
cmtRdWV1ZS0+ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2RhdGFiYXNlKV0geyB9KTsK
KyAgICAvLyBUaGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQgdG8gYmUgZGVzdHJveWVk
IG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRhYmFzZSB8fCBtX3Njcmlw
dFN0b3JhZ2UpCisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZN
b3ZlKG1fZGF0YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZShtX3NjcmlwdFN0b3JhZ2Up
XSB7IH0pOwogfQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwb3N0VGFza1RvV29ya1F1
ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIzNSwxOSBAQCBib29sIFJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxs
RmlsZW5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFzZURpcmVjdG9yeSwgeyAi
U2NyaXB0cyIsICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYgUmVnaXN0cmF0aW9uRGF0
YWJhc2U6OnNjcmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmICghbV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBtYWtl
VW5pcXVlPFNXU2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBy
ZXR1cm4gKm1fc2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKQEAgLTMzMyw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6Y2xlYXJB
bGwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKIHsKICAgICBw
b3N0VGFza1RvV29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2RhdGFiYXNlID0gbnVsbHB0
cjsKKyAgICAgICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAogICAgICAgICBTUUxpdGVG
aWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZpbGVQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2NyaXB0U3RvcmFnZURpcmVj
dG9yeSgpKTsKICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURp
cmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsKIAogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTM1MiwxMiArNDE3
LDEzIEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMoY29uc3QgVmVj
dG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJh
bnNhY3Rpb24oKm1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBT
UUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxV
RVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICBTUUxp
dGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMg
KD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKICAgICBpZiAoc3FsLnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2Vydmlj
ZVdvcmtlciwgIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzdG9yZSByZWdpc3RyYXRp
b24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9yYWdl
KCk7CiAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVkUmVnaXN0cmF0aW9ucykg
ewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiREVMRVRFIEZST00g
UmVjb3JkcyBXSEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNR
TElURV9PSwpAQCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6
ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gcmVt
b3ZlIHJlZ2lzdHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNjcmlwdFN0b3JhZ2UuY2xl
YXIocmVnaXN0cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGRhdGEgOiB1cGRhdGVk
UmVnaXN0cmF0aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNzcEVu
Y29kZXI7CiAgICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LmVuY29kZShjc3BFbmNv
ZGVyKTsKIAorICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNvZGUgdGhlIHNjcmlwdCBz
b3VyY2VzIHRvIHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGlu
IHRoZSBTY3JpcHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgd2UgbmVlZCB0byBz
dHJpcCB0aGUgc2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2RpbmcgdGhlIHNjcmlwdFJl
c291cmNlTWFwLgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNjcmlwdFJlc291
cmNlTWFwRW5jb2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEu
c2NyaXB0UmVzb3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlciA8PCBz
dHJpcFNjcmlwdFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7CiAKICAgICAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwogICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpAQCAtMzg1LDIx
ICs0NTQsMzYgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHx8IHNxbC5i
aW5kRG91YmxlKDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRl
eHQoNiwgdXBkYXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFD
YWNoZSkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDcsIGRhdGEu
c2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5k
VGV4dCg4LCBkYXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmlu
ZFRleHQoOSwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBj
c3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwu
YmluZFRleHQoMTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAg
ICAgfHwgc3FsLmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCks
IHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAg
ICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZl
cigpLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29y
a2VyVHlwZSkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDksIGNz
cEVuY29kZXIuYnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlwdFJlc291cmNl
TWFwRW5jb2Rlci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUo
KSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIGNlcnRpZmlj
YXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6
ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWls
ZWQgdG8gc3RvcmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICAvLyBTYXZl
IHNjcmlwdHMgdG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0ID0gc2NyaXB0U3RvcmFn
ZS5zdG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlw
dCk7CisgICAgICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAgaWYgKCFtYWluU2NyaXB0
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNoTWFwPFVSTCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNj
cmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtl
eSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlw
dCk7CisgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAgICAgICAgICAgICAgaW1w
b3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkpLCBXVEZNb3ZlKGltcG9y
dGVkU2NyaXB0KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQgPSBtYWluU2NyaXB0LnJl
bGVhc2VOb25OdWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQorICAgICAgICAgICAgICAg
IG1fc3RvcmUtPmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworICAg
ICAgICB9KTsKICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKLQotICAgIExPRyhT
ZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFz
ZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0
cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlv
bnMuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2
aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0
cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRp
b25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKKyAgICBS
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJl
Y29yZHM6Iik7CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIlNFTEVDVCAq
IEZST00gUmVjb3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykK
ICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0
byByZXRyaWV2ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJsZSAoIiwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwpAQCAt
NDE0LDYgKzQ5OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jk
cygpCiAgICAgaW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBmb3IgKDsgcmVzdWx0ID09
IFNRTElURV9ST1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBJbXBv
cnRpbmcgYSByZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgYXV0byBr
ZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkoc3FsLmdl
dENvbHVtblRleHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9IFVSTCB7IFVSTCgpLCBz
cWwuZ2V0Q29sdW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3BlUGF0aCA9IHNxbC5nZXRD
b2x1bW5UZXh0KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRh
dGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0VXBkYXRlQ2hlY2tUaW1l
ID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5Eb3VibGUoNCkpOwogICAg
ICAgICBhdXRvIHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVWaWFDYWNoZShzcWwuZ2V0
Q29sdW1uVGV4dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsgVVJMKCksIHNx
bC5nZXRDb2x1bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0ID0gc3FsLmdldENvbHVt
blRleHQoNyk7Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShz
cWwuZ2V0Q29sdW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1Rv
V29ya2VyVHlwZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9i
QXNWZWN0b3IoOSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CisgICAgICAgIHNxbC5nZXRD
b2x1bW5CbG9iQXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CiAgICAgICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xp
Y3lEYXRhLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkpOwogICAgICAg
ICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6
ZSgpKSB7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsK
LSAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICAgICAgaWYg
KCFjb250ZW50U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6
IEZhaWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJl
ZmVycmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAgICAgICBhdXRvIHJlZmVy
cmVyUG9saWN5ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHNjcmlwdFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigxMSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAgT3B0aW9uYWw8SGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+PiBzY3JpcHRS
ZXNvdXJjZU1hcDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMCwgc2NyaXB0
UmVzb3VyY2VNYXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogCiAgICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJl
c291cmNlTWFwRGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpOwogICAg
ICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewotICAgICAgICAgICAgc2Ny
aXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwOwotICAgICAgICAgICAg
aWYgKCFzY3JpcHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJM
LCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3Jp
cHRzOworICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291
cmNlTWFwV2l0aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFw
V2l0aG91dFNjcmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2
aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0
byBkZWNvZGUgc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VN
YXAgPSBwb3B1bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRTdG9yYWdlKCksICprZXks
IFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpKTsKICAgICAgICAgfQog
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9EYXRhOwotICAgICAgICBz
cWwuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUluZm9EYXRhKTsKKyAgICAg
ICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CiAg
ICAgICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCiAgICAg
ICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0
aWZpY2F0ZUluZm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YS5zaXplKCkpOwogICAg
ICAgICBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKLSAgICAgICAg
aWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlmaWNhdGVJbmZvKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY2VydGlmaWNhdGVJbmZv
Iik7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFZhbGlk
YXRlIHRoZSBpbnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIElmIGFueSBw
YXJ0IG9mIHRoaXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0aGlzIHJlZ2lzdHJhdGlv
bi4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4gZXJyb3Igc2tpcHBpbmcg
KmFsbCogcmVnaXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1Zh
bGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1Zh
bGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgaWYg
KCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlh
Q2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJM
LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtl
ciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2Rl
IHBhcnQgb2YgdGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKworICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UoKS5yZXRyaWV2ZSgq
a2V5LCBzY3JpcHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAgICAgaWYgKCFz
Y3JpcHQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIHJldHJpZXZlIG1h
aW4gc2NyaXB0IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
d29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwog
ICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2Vy
RGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBT
ZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdU
Rk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9Owot
ICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNl
Y3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJM
KSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OworICAg
ICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpu
dWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250
ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3Jp
cHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsK
IAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdURk1v
dmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAppbmRleCBkNmFlZDZiNDBl
NjA0NjI2ZTNhMWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2MjFkYjM0Mjg3N2FmMzRj
NzFlNDViOThiOTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3RvcmU7CiBjbGFz
cyBTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVjdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5KTsKQEAgLTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydFJlY29yZHNJ
Zk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5PiYpOwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYp
OworICAgIFNXU2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOworICAgIFN0cmluZyBzY3Jp
cHRTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBsaWVzIHRvIHRoZSBtYWlu
IHRocmVhZC4KICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFdvcmtR
dWV1ZT4gbV93b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRpb25TdG9yZT4gbV9zdG9y
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBtX3NjcmlwdFN0b3JhZ2U7
CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VG
aWxlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRhY2FiYTI5MWZkMmE0M2Iz
ZWI0MDE2MTQzOGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2IyMmFmYjBlMDU3NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBAIHZvaWQgUmVnaXN0cmF0
aW9uU3RvcmU6OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkCiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFdURk1vdmUo
ZGF0YSkpOwogfQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0
c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2VydmVyLmRpZFNhdmVXb3Jr
ZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3Jp
cHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvblN0
b3JlOjpkYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2ZXIucmVnaXN0cmF0aW9u
U3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCmluZGV4IDc1NDNl
YzEzYjNkY2Y3MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4Y2VlYjBlMmY2MDdlNzA3
ZTdiYjQwMWZlNDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKQEAgLTYzLDYgKzYzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNlKFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CiAg
ICAgdm9pZCBkYXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgpOworICAgIHZvaWQgZGlk
U2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4g
bV9zZXJ2ZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGEzNTg2YTE2N2Ey
NzcxZjFmZTJmMTM0OTczNzYzNzA1NjNiNmRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0wLDAg
KzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNX
U2NyaXB0U3RvcmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdl
c3QuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIHNob3VsZFVzZUZp
bGVNYXBwaW5nKHNpemVfdCBmaWxlU2l6ZSkKK3sKKyAgICByZXR1cm4gZmlsZVNpemUgPj0gcGFn
ZVNpemUoKTsKK30KKworU1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnkpCisgICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCisgICAgLCBtX3Nh
bHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVPcihGaWxlU3lz
dGVtOjpTYWx0KCkpKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworfQorCitTdHJp
bmcgU1dTY3JpcHRTdG9yYWdlOjpzaGEySGFzaChjb25zdCBTdHJpbmcmIGlucHV0KSBjb25zdAor
eworICAgIGF1dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVzKG1fc2Fs
dC5kYXRhKCksIG1fc2FsdC5zaXplKCkpOworICAgIGF1dG8gaW5wdXRVdGY4ID0gaW5wdXQudXRm
OCgpOworICAgIGNyeXB0by0+YWRkQnl0ZXMoaW5wdXRVdGY4LmRhdGEoKSwgaW5wdXRVdGY4Lmxl
bmd0aCgpKTsKKyAgICBhdXRvIGhhc2ggPSBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7CisgICAgcmV0
dXJuIFdURjo6YmFzZTY0VVJMRW5jb2RlKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7Cit9CisK
K1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNoYTJIYXNoKGlucHV0LnN0cmluZygpKTsKK30KKworU3RyaW5nIFNX
U2NyaXB0U3RvcmFnZTo6c2FsdFBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kaXJlY3RvcnksICJzYWx0Iik7Cit9CisKK1N0
cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3RvcnksIHsg
c2hhMkhhc2gocmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBzaGEySGFz
aChyZWdpc3RyYXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3Jh
Z2U6OnNjcmlwdFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShy
ZWdpc3RyYXRpb25LZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBT
aGFyZWRCdWZmZXImIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBz
Y3JpcHRVUkwpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVt
OjpkaXJlY3RvcnlOYW1lKHNjcmlwdFBhdGgpKTsKKworICAgIGF1dG8gaXRlcmF0ZU92ZXJCdWZm
ZXJBbmRXcml0ZURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwg
c2l6ZV90KT4mIHdyaXRlRGF0YSkgeworICAgICAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYmVn
aW4oKTsgaXQgIT0gc2NyaXB0LmVuZCgpOyArK2l0KQorICAgICAgICAgICAgd3JpdGVEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGl0LT5zZWdtZW50LT5kYXRhKCkpLCBpdC0+
c2VnbWVudC0+c2l6ZSgpKTsKKyAgICB9OworCisgICAgaWYgKCFzaG91bGRVc2VGaWxlTWFwcGlu
ZyhzY3JpcHQuc2l6ZSgpKSkgeworICAgICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAg
ICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6c3Rv
cmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om9wZW5GaWxlKCkgZmFpbGVkIiwg
c2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisgICAgICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKFsmXShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoaGFuZGxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwg
c2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4gc2NyaXB0LmNvcHko
KTsKKyAgICB9CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGVsZXRlIHRoZSBmaWxlIGJlZm9yZSB3
cml0aW5nIGFzIHRoZXJlIG1heSBiZSBjb2RlIHVzaW5nIGEgbW1hcCdkIHZlcnNpb24gb2YgdGhp
cyBmaWxlLgorICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2NyaXB0UGF0aCk7CisgICAgYXV0
byBtYXBwZWRGaWxlID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHNjcmlwdFBhdGgsIHNjcmlwdC5z
aXplKCksIFdURk1vdmUoaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEpKTsKKyAgICBpZiAo
IW1hcHBlZEZpbGUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwg
IlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06
Om1hcFRvRmlsZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShtYXBwZWRGaWxlKSk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNXU2NyaXB0
U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sKKyAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVn
aXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOworICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShzY3JpcHRQYXRoLCBmaWxlU2l6ZSkpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFn
ZTo6cmV0cmlldmU6IEZhaWx1cmUgdG8gcmV0cmlldmUgJXMsIEZpbGVTeXN0ZW06OmdldEZpbGVT
aXplKCkgZmFpbGVkIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBm
aWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBk
ZXNjcmlwdG9ycyBvcGVuPworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0
ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwor
fQorCit2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGly
ZWN0b3J5ID0gdGhpcy0+cmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7Cisg
ICAgYm9vbCByZXN1bHQgPSBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdp
c3RyYXRpb25EaXJlY3RvcnkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNl
cnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNj
cmlwdHMgZm9yIHJlZ2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5
KCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ZjAx
MzBjNWU1ODY5OWZjMGQyNTdhNmViOTcwNGI0NzU2MDM4NTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CisKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5KTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJp
ZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCk7CisgICAgdm9pZCBjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
Jik7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBh
dGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0
VVJMKSBjb25zdDsKKyAgICBTdHJpbmcgc2FsdFBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgc2hh
Mkhhc2goY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgU3RyaW5nIHNoYTJIYXNoKGNvbnN0IFVS
TCYpIGNvbnN0OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5OworICAgIEZpbGVTeXN0ZW06OlNh
bHQgbV9zYWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5N2Q2
NGYxZDY1ODY5NGIzLi5kY2UyMDE2ZmMxNTM4MzAwZmZhYTExNzU5ZWFlMzM0MDhjNGY5ZTUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcApAQCAtMTc2LDYgKzE3NiwxMiBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25G
cm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICB9KTsKIH0KIAor
dm9pZCBTV1NlcnZlcjo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFp
blNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2Ny
aXB0cykKK3sKKyAgICBpZiAoYXV0byB3b3JrZXIgPSB3b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRTYXZlU2NyaXB0c1RvRGlzayhXVEZNb3Zl
KG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFNXU2Vy
dmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9u
PiYmIHJlZ2lzdHJhdGlvbikKIHsKICAgICBtX29yaWdpblN0b3JlLT5hZGQocmVnaXN0cmF0aW9u
LT5rZXkoKS50b3BPcmlnaW4oKSk7CkBAIC02MzMsNyArNjM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6
cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBTZXIKIAogdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Y29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFw
KQogewotICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
eyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNj
cmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCks
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZl
cihzY3JpcHQpLCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJy
ZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0p
OwogfQogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBiYTFiNDEzNTAzNTQwZGNlODg1Y2Q0NDhiM2Y3YzA0
MjhkYjhjYjE3Li43OTZiZTg1ZTNlNTQ3NzI2ODZlOTU0ODA4NDVmMDQ1NDhjNWQ5NTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBA
IC0xOTAsNiArMTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvblJl
YWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQgYWRkUmVnaXN0
cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKKyAgICB2b2lkIGRp
ZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRD
b21wbGV0ZSgpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3Bl
bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4MDJhNDgwMTE1MWE3MjhmYmM1YTJhNjkx
MjRkYjk2M2M3NzJjYjBhLi41Y2EyNTI2OTExNDUzZGIwOGYxZjhmMjgzMmRiYzQwNDVlNjRhYTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bAogICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29y
a2VyJ3Mgc2NyaXB0IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRl
IGZyYWdtZW50cwogICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMg
YSBieXRlLWZvci1ieXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNl
J3Mgc291cmNlCiAgICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwg
am9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUg
JiYgcmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNh
dGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0
ZUluZm8oKSkpIHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYg
bmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9
PSBzY3JpcHRCdWZmZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRp
ZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlm
aWNhdGVJbmZvKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlm
aWNhdGUgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0
cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Ig
bm9uIGNsYXNzaWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdz
IFtbRUNNQVNjcmlwdENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDJiOGZmNjg1ZTA0OTc5ZmNkYzczZTczMjBkZjNmNGRhNjRjNzYyZGYuLjEy
MDA1MTY5OGJmOTM5ODE4ZTRkNDNlODVjNjk1NzMwMGJhN2RjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29yCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmlu
ZyYmIHNjcmlwdCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9pZCBT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAgICAg
aWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50
aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNjcmlw
dFJlc291cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdU
Rk1vdmUobWltZVR5cGUpIH0pOworICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdU
Rk1vdmUoc2NyaXB0VVJMKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggNDY1OWY5ZjlmYTZjNmJhYThkZTk2OGQzOTE1ZmUzM2M0ZTMxMjY2OC4uOWJlMzQ0NDkx
ZjA2MTNmYWUxNDBlNzk4NTFiNzEwYTNiMzJiMmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0o
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
RXhjZXB0aW9uRGF0YT4mJik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0
UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5n
JiYgc2NyaXB0LCBVUkwmJiByZXNwb25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlh
NjY3MDUuLjYxM2JiNzJjNTg4ZDhhMTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtl
cjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9CiAK
IC8vIEZJWE1FOiBVc2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRlbnRT
ZWN1cml0eVBvbGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBz
ZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJj
ZU1hcCkKK1NXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBT
V1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwg
U2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiAg
ICAgOiBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRpb25L
ZXkocmVnaXN0cmF0aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQdHIo
cmVnaXN0cmF0aW9uKSkKQEAgLTIzOCw2ICsyMzgsMjEgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6
c2V0U2NyaXB0UmVzb3VyY2UoVVJMJiYgdXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG8KICAgICBtX3NjcmlwdFJlc291cmNlTWFwLnNldChXVEZNb3ZlKHVybCksIFdURk1vdmUoc2Ny
aXB0KSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICAvLyBUaGUgc2NyaXB0cyB3ZXJlIHNh
dmVkIHRvIGRpc2ssIHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdkIHZlcnNpb24g
dG8gc2F2ZSBtZW1vcnkuCisgICAgQVNTRVJUKG1haW5TY3JpcHQuZ2V0KCkgPT0gbV9zY3JpcHQu
Z2V0KCkpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50
aWNhbC4KKyAgICBtX3NjcmlwdCA9IFdURk1vdmUobWFpblNjcmlwdCk7CisgICAgZm9yIChhdXRv
JiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX3NjcmlwdFJl
c291cmNlTWFwLmZpbmQocGFpci5rZXkpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV9zY3JpcHRS
ZXNvdXJjZU1hcC5lbmQoKSk7CisgICAgICAgIGlmIChpdCA9PSBtX3NjcmlwdFJlc291cmNlTWFw
LmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVl
LnNjcmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUg
c2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92
ZShwYWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNraXBXYWl0
aW5nKCkKIHsKICAgICBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApp
bmRleCAzNzhmYmE2NTdlOGJiZjQ4NDFlNTZjYmY4NjU2MWY4ZWNjMzExMDIwLi5jNDVkYWRiY2Fi
ODE5NzZiNzZmMGJlNTMxNGYzYjcxZjc3YjZiMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXIu
Z2V0KCk7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0
IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsgfQotICAg
IGNvbnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KKyAgICBT
aGFyZWRCdWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgY29u
c3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2Nl
cnRpZmljYXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS50eXBlOyB9CiAKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50
aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICB2
b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2
aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3JpcHRS
ZXNvdXJjZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYm
KTsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFp
blNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2Ny
aXB0cyk7CiAKICAgICB2b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBpc1NraXBXYWl0aW5n
RmxhZ1NldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0KQEAgLTEy
Nyw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsK
IAogcHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmlj
YXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0
cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
JiYpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
LCBjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYg
cmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNo
TWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAK
ICAgICB2b2lkIGNhbGxXaGVuQWN0aXZhdGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0x
NDAsNyArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
IG1fcmVnaXN0cmF0aW9uS2V5OwogICAgIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IG1f
cmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJpbmcg
bV9zY3JpcHQ7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlmaWNh
dGVJbmZvIG1fY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJl
clBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGYzYjc1YTVlYmEzZmQ3M2Y1MjY4NDQ2MTIz
OTc4NWU1NDQ2OTM3YTIuLmQ4ZDk0MzQwODQ1ZGQ4NWIzNmRjODkyOWFiMWU2MjcxODg5MzI4OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmluZENsaWVudEJ5
SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogICAgIE1hdGNo
QWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4g
KE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKLSAgICBTZXRT
Y3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBt
aW1lVHlwZSkKKyAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmlu
ZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXgg
YWI3YWJjMjU3NjVhZDQyOGYyYTE1N2M2MTc5NGQyMjU4NjE3YmI0Ny4uYzkyODY2YmYyMWQ0NWIw
YjFiNTBkYmFlNzE2NzJmNzRkMTZiMTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMjMzLDcg
KzIzMyw3IEBAIHVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBh
dGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cm9vdFBhdGgsICJzYWx0Il9zKTsKLSAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0
UGF0aCk7CisgICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBh
dGgpOwogICAgIGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM3NCw3ICszNzQs
NyBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aykKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCByb290UGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUg
ewogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocm9vdFBhdGgpOwogICAg
ICAgICBTdHJpbmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocm9vdFBhdGgsICJzYWx0Il9zKTsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzYWx0ID0gcmVhZE9yTWFrZVNh
bHQoc2FsdFBhdGgpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNhbHQgPSBGaWxlU3lzdGVt
OjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzAyLDcgKzcwMiw3IEBA
IHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2Jh
bFNpemVGaWxlTG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlSXNEaXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03NDksMTgg
Kzc0OSwxOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3Jp
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAvLyBJZiBj
YWNoZSBzYWx0IGlzIGluaXRpYWxpemVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNoLCBzb21l
IGNhY2hlIGZpbGVzIGhhdmUgcHJvYmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkgY29ycnVw
dGVkLgogICAgICAgICAgICAgQVNTRVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBjYWNoZXNS
b290UGF0aCgqZm9sZGVyT3JpZ2luKSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1
cnNpdmVseU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAgZGVsZXRl
Tm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxiYWNr
QWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAgICAg
fSk7CiAgICAgfQogfQogCi12b2lkIEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlP
bkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmls
ZUxvY2spOwotICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDE5NDRhNWM3OTJkOGQ3OTllMjlkYWJjODQ2NjY3YjY2
ODYyYmI3ZjkuLjQ0MDllN2I0OTZhYjhjZjY0NmM5YTBmZmFlZGY1NzM0YzBmZjFlODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFs
bENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
bGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmln
aW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlP
bkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRU
aHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7
CiAgICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA2NmY3NmVi
MmQ2ZmM3ZDk4ZGNlOGFlMDYyY2ZiYWYwZmY1MDM2Yjc5Li40OTY4NjE5ZmZjMTY2MzJjZTQzNmUx
OTE1M2VjZmI1NDQ1NzdmOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
TnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmICFPUyhXSU5ET1dT
KQogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC00MCw0MSArNDEsOSBAQCBuYW1lc3BhY2UgTmV0
d29ya0NhY2hlIHsKIAogRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBj
b25zdAogewotICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOwotICAg
IGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpV
c2VyLCBmYWlsSWZGaWxlRXhpc3RzKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQoaGFuZGxlKSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgbV9zaXplKSkg
ewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9Ci0gICAgCi0gICAgRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1h
cEZvclBhdGgocGF0aCk7Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWRXcml0ZSwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7Ci0g
ICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHZvaWQqIG1hcCA9IGNvbnN0X2Nh
c3Q8dm9pZCo+KG1hcHBlZEZpbGUuZGF0YSgpKTsKLSAgICB1aW50OF90KiBtYXBEYXRhID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KG1hcCk7Ci0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1aW50
OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0YSwg
Ynl0ZXMsIGJ5dGVzU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gYnl0ZXNTaXplOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9KTsKLQotI2lmIE9TKFdJTkRPV1MpCi0gICAgRFdPUkQgb2xk
UHJvdGVjdGlvbjsKLSAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwgRklMRV9NQVBfUkVB
RCwgJm9sZFByb3RlY3Rpb24pOwotICAgIEZsdXNoVmlld09mRmlsZShtYXAsIG1fc2l6ZSk7Ci0j
ZWxzZQotICAgIC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCi0gICAgbXByb3RlY3QobWFw
LCBtX3NpemUsIFBST1RfUkVBRCk7Ci0KLSAgICAvLyBGbHVzaCAoYXN5bmNocm9ub3VzbHkpIHRv
IGZpbGUsIHR1cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KLSAgICBtc3luYyhtYXAsIG1f
c2l6ZSwgTVNfQVNZTkMpOwotI2VuZGlmCi0KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlOworICAgIGF1dG8gYXBwbHlEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJv
b2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVyKSB7IGFwcGx5KGFwcGxpZXIpOyB9
OworICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShwYXRoLCBzaXpl
KCksIFdURk1vdmUoYXBwbHlEYXRhKSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIERhdGE6OmFkb3B0
TWFwKFdURk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKQEAgLTEzNSw0MCArMTA0LDUg
QEAgYm9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAgICAgcmV0
dXJuICFtZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBhLnNpemUoKSk7CiB9CiAKLXN0YXRpYyBT
YWx0IG1ha2VTYWx0KCkKLXsKLSAgICBTYWx0IHNhbHQ7Ci0gICAgc3RhdGljX2Fzc2VydChzYWx0
LnNpemUoKSA9PSA4LCAiU2FsdCBzaXplIik7Ci0gICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPigmc2FsdFswXSkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgICpy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIoKTsKLSAgICByZXR1cm4gc2FsdDsKLX0KLQotT3B0aW9uYWw8U2FsdD4gcmVh
ZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKHBhdGgpKSB7Ci0gICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgICAgIFNhbHQg
c2FsdDsKLSAgICAgICAgYXV0byBieXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4o
RmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNh
bHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHNhbHQ7Ci0KLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsK
LSAgICB9Ci0KLSAgICBTYWx0IHNhbHQgPSBtYWtlU2FsdCgpOwotICAgIGF1dG8gZmlsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUs
IEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyKTsKLSAgICBpZiAoIUZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBi
b29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkpLCBzYWx0LnNp
emUoKSkpID09IHNhbHQuc2l6ZSgpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
LSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gc2Fs
dDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmgKaW5kZXggZWQxOTFkYzdkZTIyYmE2YmFmODM2OWRlYzhlYzM2YmU4NzAxOGVh
Ni4uNjc1MjZjYWQ5NjA3MTRhODhjMWMwOTNlNGE5YzM4ODE0NmI4MGU5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgK
QEAgLTExMiw5ICsxMTIsNyBAQCBEYXRhIGFkb3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCk7CiBEYXRhIG1hcEZpbGUoY29u
c3QgY2hhciogcGF0aCk7CiBEYXRhIG1hcEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAotdXNp
bmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47Ci0KLU9wdGlvbmFsPFNhbHQ+IHJlYWRP
ck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7Cit1c2luZyBTYWx0ID0gRmlsZVN5c3RlbTo6
U2FsdDsKIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiwgY29uc3QgU2FsdCYp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzNkZTA0MmNk
ZjQ0YjBmYmE0MjNjYzlkZDdhZmM1Li43YTk5NjE0ZjIzMzViMTUwYzljYWIyMjJjOTM1ZDBiYmVm
NjljODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTYyLDIzICs2Miw2IEBAIHZv
aWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBECiAgICAgfQogfQogCi12b2lkIGRlbGV0ZURpcmVjdG9yeVJl
Y3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICB0cmF2ZXJzZURpcmVjdG9yeShw
YXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUp
IHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwYXRoLCBuYW1lKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAg
IGNhc2UgRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3Rv
cnlSZWN1cnNpdmVseShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8v
IFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBG
aWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQogRmlsZVRpbWVzIGZp
bGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmgKaW5kZXggN2E1ZjhjYzRmZTM4YTk1NjFjZTFjOGI2MWMxMGM3
NDc5Y2E4NzQyZi4uYzBiNGU4MWI0NzM3NWEwN2ZmOTliZWI0MjEwZGEwMTU4MjJjNzM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CiBlbnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmlsZSB9
Owogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+Jik7
CiAKLXZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKTsK
LQogc3RydWN0IEZpbGVUaW1lcyB7CiAgICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2FsbFRp
bWUgbW9kaWZpY2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBlMmM2
ZDIwMjVhOTZiMjVlYzFlNTZjNDhhZjhkNi4uN2FlZmIzMWMxYWZhNjI3MjQ4NThkODE5NDdhOTFi
ZDNlOThmNWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVk
ZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L1JhbmRvbU51bWJlci5oPgpAQCAtMjA2LDcgKzIwNyw3IEBAIFJlZlB0cjxTdG9yYWdlPiBTdG9y
YWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgYmFzZUNhY2hlUGF0aCwgTW9kZSBtb2RlLCBzaXplX3Qg
Y2FwCiAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25l
ZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgp
KTsKKyAgICBhdXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChtYWtlU2FsdEZp
bGVQYXRoKGNhY2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKQEAgLTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lv
bnMoKQogICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAgICAg
TE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBj
YWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZlcnNp
b25QYXRoKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5ZTMxMjk3MTk2ZGExMTU1ZjBiMjJj
MzE4MGEwM2M4MzA0ODZlMzcyLi5mNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYwODk4
OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKQEAgLTEyMiw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGlj
IHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVuY29kZXIg
PDwgaXNOdWxsOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2
NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZlclNp
emU7CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTIgKzE0
OSwyNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAgZGVjb2Rl
ciA+PiBpc051bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICgqaXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICghYnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAgICAgYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNWU4ZjcwOTA2MWI0MmQxOGFjOTY5MThlNTk4
ZmQ4MjE0MGM0MjhjZC4uMWUwMWE1ZDRlN2E3YjgzMTRhMjMxNGFhODdmNGRkMmRkMzJlYjEwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6U2V0U2NyaXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3Jp
cHQuc2NyaXB0LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsKKyAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDRiZjk4NGRiOGM2YjZhY2QzNjJlMjM3NjkxMzA1N2RlNWFiM2Ix
YzIuLmIyMWU5NGU3YTM0NzcxY2U1MDI0MWNkZDYyYTcyZGIyZjk2Yjg3M2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAor
MjAyMS0wMy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNl
cnZpY2UgV29ya2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBw
cm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjM4MDgKKyAgICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBH
ZW9mZiBHYXJlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzOiBSZW1v
dmVkLgorICAgICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtlciByZWdp
c3RyYXRpb24gZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZCBhbmQg
aXQgaXMgYSBwYWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lzdGVtOjpkZWxl
dGVOb25FbXB0eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBpdAorICAgICAg
ICBoYWQgbm8gdGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3ZSBub3cgaGF2
ZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBsYXRmb3Jtcy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNlcnZpY2Ugd29y
a2VyIHRlc3RzIHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2UgaW5zdGVh
ZCBvZiB2ZXJzaW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBkYXRhYmFzZSBz
Y2hlbWUgYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUgdGVzdCB0aGF0
IHdhcyByZWx5aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFiYXNlIGZpbGUg
KHdpdGggb2xkIHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWljYWxseSBnZW5l
cmF0ZSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0IHJlZ2lzdGVy
cyBhIHNlcnZpY2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjkgIENhbWVyb24gTWND
b3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBjYWxsaW5nIGB4Y29k
ZWJ1aWxkIC1zaG93c2Rrc2Agd2hlcmUgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGMzYWJlOTkzNTcwNTY5MzgyODg0MjY1NzA5ZWE4ZjVkYzU2ZWZiZmYuLmZiYTAzMmM4NTgz
YjlmMTg3ODgxOGJhNjQ5NjkzNDZjNGUwNGI3MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNjksNyArMjY5LDYgQEAKIAkJNDZBNDRBNTQyNUE3ODMwMzAwRjYxRTE2IC8qIHdlYmF1ZGlv
LWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTQ0QTUzMjVBNzgyREQwMEY2MUUxNiAvKiB3
ZWJhdWRpby1jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UuaHRtbCAqLzsgfTsKIAkJNDZBNDZBMUEy
NTc1NjQ1NjAwQTFCMTE4IC8qIFNlc3Npb25TdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBNDZBMTkyNTc1NjQ1NjAwQTFCMTE4IC8qIFNl
c3Npb25TdG9yYWdlLm1tICovOyB9OwogCQk0NkE5MTE1OTIxMDhFNjc4MDA3OEQ0MEQgLyogQ3Vz
dG9tVXNlckFnZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBOTExNTgyMTA4RTY2QjAwNzhENDBEIC8qIEN1c3RvbVVzZXJBZ2VudC5tbSAqLzsg
fTsKLQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zLTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OwogCQk0NkJCRUExQjI1Rjk4MzU3
MDBENDk4N0EgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBQTZBMTUxMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3Bw
ICovOyB9OwogCQk0NkMxRUE5ODI1NzU4ODIwMDA1RTQwOUUgLyogYWxlcnQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMxRUE5NzI1
NzU4ODA1MDA1RTQwOUUgLyogYWxlcnQuaHRtbCAqLzsgfTsKIAkJNDZDM0FFQjMyM0QwRTUyOTAw
MUIwNjgwIC8qIGJlZm9yZXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzNBRUIyMjNEMEU1MEYwMDFCMDY4MCAvKiBiZWZv
cmV1bmxvYWQuaHRtbCAqLzsgfTsKQEAgLTE2NjIsNyArMTY2MSw2IEBACiAJCQkJQkM5MDk3ODQx
MjU1NzFDRjAwMDgzNzU2IC8qIHNpbXBsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUY0RjQwNUJEMUQ0QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlk
ZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEyM0YyMTI2
NjE1NjcwMEM5RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNENGQ0REQTI0OUZDOUU0MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTIwNDcsNyArMjA0NSw2IEBACiAJCTQ2M0Y0NzIyMjU1QjQ5
QjYwMEQ5RTBDQyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3NEaWRUZXJt
aW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRDNzY0QzIzMERGODMy
MDBBRkIwMjAgLyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9
ICJCYWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJTaW1wbGVTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjVFMjgwNjI1NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3RpZnktcmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSBHZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MDQ4LDcgKzQwNDUsNiBAQAogCQkJCUY0RTNEODA3MjBGNzA4RTQw
MDdCNThDNSAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgKi8sCiAJ
CQkJRjRGQzA3NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25l
Lmh0bWwgKi8sCiAJCQkJQzlCNEFEMjkxRUNBNkVBNTAwRjVGRUEwIC8qIHNpbGVuY2UtbG9uZy5t
NGEgKi8sCi0JCQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3
MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlG
NENGQ0REODI0OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAqLywKIAkJCQk5MzYwMjcw
NTI1QTNCMjhFMDAzNjc2NzAgLyogc3BlZWNocmVjb2duaXRpb24tYmFzaWMuaHRtbCAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzZjYWYy
YWQ0MzcyNjYzZDJiZTMxMWJjZmI2M2EwNGQwYzBkMDFmNi4uOGY2NTFkM2VhZTM0MzI5NzUxYWMz
NjFkZDdlMDY0Y2I2MzdlMzc1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKQEAgLTE1MSw0ICsxNTEsMjkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0
LCBvcGVuRXhpc3RpbmdGaWxlQW5kRmFpbElmRmlsZUV4aXN0cykKICAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKTsKIH0KIAorVEVTVF9GKEZpbGVTeXN0
ZW1UZXN0LCBkZWxldGVOb25FbXB0eURpcmVjdG9yeSkKK3sKKyAgICBhdXRvIGNyZWF0ZVRlc3RU
aWxlID0gW10oY29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIGF1dG8gZmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOworICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVI
YW5kbGUpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmls
ZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICB9OworCisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIHRlbXBvcmFyeUZpbGU7CisgICAgYXV0byB0ZW1wb3JhcnlU
ZXN0Rm9sZGVyID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5VGVzdCIsIHRlbXBvcmFyeUZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZSh0ZW1wb3JhcnlGaWxlKTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUodGVtcG9yYXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRl
bXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIgfSkpKTsKKyAgICBjcmVhdGVUZXN0VGls
ZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRl
ciwgImZpbGUxLnR4dCIpKTsKKyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUyLnR4dCIpKTsKKyAg
ICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRl
bXBvcmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlMy50eHQiIH0pKTsKKyAgICBj
cmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBv
cmFyeVRlc3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlNC50eHQiIH0pKTsKKyAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZv
bGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5
VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJh
c2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0KaW5kZXggN2Y0YWM5NmZhN2M3M2E4NDIyYTRjNGU4ZmY3ZTYxMDVlOWU4ODBk
Zi4uMjM3ODhlYWUxNDM2N2FlMmYxYTQxNjRlYjRjOWZiYTE0MzA5NDQ3MSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW0KQEAgLTE5NTYsNyArMTk1Niw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFN1
c3BlbmROZXR3b3JrUHJvY2VzcykKICAgICBhdXRvIHBhdGggPSBzdG9yZS5fY29uZmlndXJhdGlv
bi5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5wYXRoOwogCiAgICAgTlNVUkwq
IGRpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNd
OwotICAgIE5TVVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl07CisgICAgTlNV
UkwgKnN3REJQYXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXTsKIAogICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd0RCUGF0
aC5wYXRoXSk7CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFRFU1QoV2ViS2l0LCBTZXJ2aWNlV29y
a2VyRGF0YWJhc2VXaXRoUmVjb3Jkc1RhYmxlQnV0VW5leHBlY3RlZFNjaGVtYSkKICAgICBFWFBF
Q1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OnN3UGF0aC5wYXRoXSk7CiAKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVT
IGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJv
cjpuaWxdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVS
TDp1cmwxIHRvVVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKIAogICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3
UGF0aDsKQEAgLTIzNTUsNiArMjM1NSw3NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBDbGVhckRP
TUNhY2hlQWxzb0luY2x1ZGVzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpCiAgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CiB9CiAKK1RFU1QoU2VydmljZVdvcmtlcnMsIEN1c3RvbURhdGFT
dG9yZVBhdGhzVmVyc3VzQ29tcGxldGlvbkhhbmRsZXJzKQoreworICAgIE5TVVJMICpzd1BhdGgg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJL1dlYktpdC9TZXJ2aWNlV29ya2Vycy8iIHN0cmluZ0J5RXhwYW5k
aW5nVGlsZGVJblBhdGhdXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJl
bW92ZUl0ZW1BdFVSTDpzd1BhdGggZXJyb3I6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7
CisKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmls
IGVycm9yOm5pbF07CisKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzd1BhdGg7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsK
KworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJd
OworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICJ0ZXh0
L2h0bWwiLCBtYWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEJ5dGVzIH0sCisgICAgfSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7Cisg
ICAgd2hpbGUgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucy02LnNxbGl0ZTMiXS5wYXRoXSAmJiArK3RpbWVvdXQgPCAyMCkKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6W3N3UGF0aCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0
ZTMiXS5wYXRoXSk7CisKKyAgICAvLyBGZXRjaCBTVyByZWNvcmRzCisgICAgYXV0byB3ZWJzaXRl
RGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbV0tXZWJz
aXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsKKyAgICBzdGF0aWMgYm9v
bCByZWFkeVRvQ29udGludWU7CisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dl
YnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUs
IGRhdGFSZWNvcmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBGZXRjaCByZWNvcmRzIGFnYWlu
LCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hp
bGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVj
b3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9
IHRydWU7CisgICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxz
ZTsKKworICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFzaW5nIG91ciByZWZlcmVu
Y2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAg
IGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIGRhdGFTdG9yZSA9
IG5pbDsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7Cisg
ICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBUaGUgcmVjb3JkcyBzaG91bGQg
aGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxkIGhhdmUgYmVlbiBtYWRl
LgorICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlmeSB0aGV5IGFyZSBnb25l
LgorICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlw
ZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQg
Kj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgZGF0YVJlY29yZHMuY291
bnQpOworICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKK30KKwogVEVTVChTZXJ2aWNl
V29ya2VycywgV2ViUHJvY2Vzc0NhY2hlKQogewogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2Fs
bG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTQuc3FsaXRlMyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYTA1ZGM0NmUzYTJjY2ViMzRlZjlhNzY4Y2QwOWViM2Q4YWYyNDE1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDIwNDgwCnpjbWVIT2N+fSF5KlV2X1A1
TSZqUU1hUDlyQWh9XzhMcWRwdnZXUzJ2QjZMVXdHTWJIPDJeY0xecW9QKnBnOFBQdQp6WHN1aC15
Nip9cVImQ3ZfYj1TSnJUMUJnTXNvJE4xQVhyPTRAQTtuaGQ7aUdiV2JTaEFKP0gtSnozMHczWFVz
QFgKeiN3aVJiKURTOV5MYyRvMTM+SiRLaXkjYUpnOVVGWmMkK1VLT21OSEBfQHdpI1RgWXptOUk8
ekokemEoPkZ6aDI3CnpqPChqb1FnMT1QZmBBMTkzaiE3ZEVDXlQtdXBuU1R6PUQ3VWYmVkg1Q085
I3otTXplK2xsMnJAcHVgNFhHN1RYbwp6OHlfc20wSTRgcmllIXI4bEJHeXZBcmRlZyg8N1BFTDc3
TnU4b2FaVGxhYUprTTNSPTtDcGsleWlTIVhDQl9tbT4Kek4kRllBN1VjdF57Z2NIS1gpdk44QEZI
QkBOKU4jWkRicn1OdE8zY2I1PmdzJStDU0AzaUlQOzdSKnE3Yk0xamVNCnpYV31YaGlCSFItMmx0
bWwyfVgzcjc2V2xxZzMxKEZ0S3lJezBAcVVpTH5zKmpzfndoVmh+WEhLc25AcDdUYyVNewp6bjN+
R0tXSTYoO14hK3RUVCY3M2psR0ViO1poITw8aCFGJXZHP01AUSlZMjB9NHshaVJZSUtBUU9GXn0q
R0xUXmUKemcleyM3MnotKmRQfTImMVU8aXhyRjd7JEZhSjN2OEteN35hUmlCVVFEMip8bi0/JDko
TVU0cUkrKXA8MnAwYkJHCnooPjlwX3w1K3t6MHV9QDsydmB1WEFZZWhqZmBBMnFlfkd7ZVUjMWZv
KWdqOC1EYFUyY1J+TEtsdkV2ZEk2czBCZQp6UmRUaFUyJldYZjBzKmVjJm8+ciE3WWJWeDMoMytE
M0xgMXVLZEFrbkxtPDl6Knc2TEs1VDdLS1J6cHphLX1nWTQKejNXa3YrcllzYm9hPUVrd3pXT0hQ
Qnp5ekxoeVpfRk87Vl4qPV51O34+ZU1teypRZig5bmojUHgjWH1IZFFjI05HCnpSRjt+O2w+eDhf
TDFncGBKfUgyOWhkUksmTUMyYlJwY0Y5SylaU1FjWUVQM0I3Xk5mQnJkRzU3Vng9LSpoX05ITwp6
KjFyaF98S05gbDhlZTd3M1E3ZWZ7NzV4UD42TXMzTXZAPGBNWVVRdUBRK3NFRHpwZC1ROT5DMGlV
UHR5Z3B7SEwKejhLVHFfWCN+VHhNSVleYDIhZStaZFNRVl5yPjY5WUBDUEh2UjtnOGI3PSl2Zypn
I1p7NXZAe19ZRTVZLXBARCFtCnpjSE19Pyg3K3pYUjlQVD16O3FlQmQ0RG1fZyV+QU17T3YzZzde
JjUkPD1KcjYxfmc3RmoxYkJjcnU4NW91d29ydAp6dFJHSWNzVEdOdD1VWFQ9dU1ibj5LbT04bXFJ
d2M4MTUlP2IhQVBVVGtnN21PQTwoeytwKEtXQTNLM0UjbFZQTmgKejNgem1aTl56d1VRSl5JbFFp
M1hWbjZWak5oeTw3IUF7fjQ2TFVocGZEYTYmNyt8MGdkeHRZbHQ1a2ZFfT8yfSY3Cnped3FjfGpo
T3VIQFpQZ34majNON155Y21uNns8JUhGaG9hVWF6dnc2PmZ3KmZCck1HY1FrRyhmOGlTUlQxfGpM
dQp6JGRucDJNKDRCOzA2R1pgYyliWTt4VUN1bUdgMis1YSlpVlAqb0s3dTJBRn09UDQhQlFZNyM8
WD82T3g9VVNRLUEKeig2fkJpSWh2WmF2VWReRiVyX3J3PDktKUZhYSUkYSt7RGt3elpvfXI5bnhJ
c3N9WDg1VWduQ2pLbW9MSztvPnJECno0SjRwQik4O3laNnFyYGhkcmV7OWJBUjROT15uU1ZsdERx
dDAlMCotQWMzOUA1fF4ya2U3IWpWcExGUCh6TCtOdgp6PEM3c1dBVit+NnA5PS1vREpkM3sxMDRC
d3M5TDdiNU0meWhYQ3sqWW9jUHZxajYhaUczQWlFI3tSaTZlOWlpVngKenJhKy15Z15FczdpcGlO
d0Nne1RGbTAkIzNzRT4hbnlAeSpVMm44VDJHKnJ8cnlqeGZ8S15XKjMoSmVGd2AwK1Y3CnpIMmcq
RmZqOGU+XjQ9U2VOdVgqe2l4UVl4MktoMzlmJSQtTVlldGxXKi1JUCleOCRSSDtWfklpMklnXj90
bW9QVwp6YWhYPEQpX309YHdMNChaNzY2Q0Y7bkFhblZSPWhyLVphc2NVa2ReajFTfCt4NVU/TyVM
Qk44NTFweH5KNzZkRV4KelNQLXh2QEwhRVVCJThHVFVwU2xMbjVAUURSPWFVcigtclMjZTlmfWZe
Km53TmxOVkd3Wnkhd2JATmg4c0NQZEw3CnpEbSorUURoSDZENyRnQih1Mm9QUUhwfG5CIUV5Y0dA
NDNnVHFufU5tYGMyJCpae2FZPCU0encka04zdU1XRl5IfAp6enA5TU4zRTZlblhTVCVRYCFTM15h
ajBASzdsbFRFJGNTejxRK3V2JCpZZD5qN3hxbDFvZlUmXmZabW89fDJEWnYKejE7QE9YUEo0TEJr
QTNPWWlGeClSOHh+Smk0UWZjZF9wVn4qeDFtWUwtRVIlLWU4MVA2bXErakJobzV1aWhQfjNjCnpC
dDFnPHcrV1FwUnJoc1RKJEJ4UyM3VTxXWk8/RHwjJnd6MyNhbE4rNUFKWG8pdXRWPkN3Wnd5PG5z
a1RFWkVCawp6QDl9YyU+X0lfc3NwOV9wamIxT0p4MUwlUVFAZE1ESXJebmY0UVZeKmw7YEhvbn0y
aGc4OEBUSUZlPmZeT0U5JWwKej19cTljPG0tfTdOclRKczJSI1RvYUJCUnV5KmomKlF6eUZqWExi
MDZkUjZeNjw7eW88KE5fPGEtfGNnNyE2I24jCnorVEhOantkI15+KDZrQDxocHZWJT9wZDRoYDFS
NEUpaT4paFlgKH5kK0BibFJ5ckxtQ1h6Y2lrblVraTVTdUszVgp6enAkY3hwOTVsR1VAN0BGVEta
Y1I5RGAwRFItVllmJF5pKTkxJUFoM2BYPEhubn5KSjF6QVpeQUdpY3UtMGxpQjYKekNXPHMlJlVY
X0RMSXUmYEtwK3hATVRTS1BMO3huQzU2WnllXlgtbE8+KGpKIUFiPURabjdATkllQV5ePkdPaXZE
Cno5cDwkMjNBKHx1Rj80dThPckw+fEc/cUI/P008eDJJIVluIW1xazstR01Ydl9GSCluPntjb2dt
O2tRWDNRMFYhRgp6dT9LbEZoOEVJPHU2JjAkQmBPPktyX3hsN1RCXzFnYFYzdmNGaWJ8I3c5dlUw
aGU4TFExajxHYyg4V2ZQam00UTUKejlTMT5gMTVxVXxob0FKJiNxTkEoM0gtYlZlb3YjNmopMmgp
a3slTFc7bCswfClBZmY9SWdMQzg5ZjdOS0RyMlFMCnotITNCfklaO0RXWThwclQ3Ny1pVEZQRVcq
OztTK1Y5WCQkMzxeYnB4I3xle3t1TEl3QDVmK2d2dTtIYDlMcz17dgp6MkF6cnVXM2l5YXVvdklh
RDJnMURMJjdXKUxKOSZvMz1TdkQkQ3RzZUYqKXFtT2IhcEdJN353bmtJbS1UZW9+JnUKekVQb2x0
VkZEJU9aVSFfRkJeNj8yNSZUTXdRbTlDZiZVYkZBaXBQdGZxZHB9Kl5kbntBQTFSQX5PVVRAPHNj
bEIwCnpTT2c0d0hsTj9AbjxUakE/NEVFOCo1U1psNFM8MmBRTj9DNFMlMlEqQThjTnI3MT1AYyFP
cjR2VTA3S2VxUEQ8PQp6JmhUOUxrUVl2U0lndW9fT3c8bXopNVVmIWote29nMHkoVXJTcW8kdWx9
SEZlPXFrMzBVc0RTeFU/YEdeN2J5QGkKek4kUXxgUkU4bUBISGIqV3B1TXwyXnNobz8wKnFHPCUh
WXorUU1kP30wKzBpU3dVbyNPSU1NeXZ4YlAlIWBOMDFlCnpyTiZXXzgqcnJ5dHpHT2hQJkx3cldg
VjxSP1Y1PzdmSyFST2Y/ISZEZnlmPVNIT2JoOTdRWnBfMlplYGoqR3xtPQp6VkgmbFcwfFM9eFNo
UU4oNnd+V0xYeFZRcyNeP1RXelNMPCgoZUA+cTE4YSVNVmRDcElrRkQkV0RBO31hPCNGa1EKekE1
NyUrdH5kMDJFdHRHQTxAKTFfYCFSRnZyKis7P3U9SHJmb0pCUWBLNC1JNT4+KDZ5PytwMDhyPVZs
YFloVkEhCno0eTEmP3JYKHdHS3deemc/dE9PVD5Sc0hSSGZ+R3lyQSVkcz1IMyhCe1otbU5LZ2p2
bmxGJilmIUdWaU1jWHt7Ugp6Q3VoLV9GX1NqKDN4MD9WdyUoVFRnWSZkclE/dGhAcyRMRy1wU0dz
diRAeHhteCF6R2UqfVohTiluNXhaI2N0MTcKekB+K2w0czBAd1JJbDRofHtxZVEjUUB6WDc4SVBs
QCYjbnpXPUNGUllYV2N2Wm9tKkMqIWs/VEA5eSY0OHMkPiRHCnooeSQwanpSY2ZwcSkrR2lzNH5P
TEMhMSM7VzNpYkc9NWhvM1RWUC14MXwxLVhLQWt4cHotYFAmazA7PG02U1UjTAp6KGAjeEs0Xk94
fUlkbnRIVkpCJXB6TmNfKllJaVYtdTZFKjNmR35WODVlOXpPWDQ3S2V5YExoM1R+aUlORzF4WG0K
elo0S19gYXYwbnA4b3dFJjdvPyVCaVJPYzEoMXZGMnorfUdUYU0mIVhEd0N8ZjlDe0ArWlNBSE0z
K1FPXzRqZVU1CnpnN0IpKURvX3I/b1JrJkBpRGlUYHRpPXV4a190MzVNMWg3dElpTi1sRFQpKzhu
bUBNK3wwa2BJWHxAUFEzTTMkawp6WWY+KDZsfjV+bzFwI0teU1dHdT5iNDI7Vy02KWp3JmoyPURa
cVptaS0yN25kSUNDUXlXKygrWig4Wmh3JXlOJiQKejBjbThVd3VOWFFySFA3RkU7Ykp2ckZUNXBm
PjNEUUAkYG5MX2p9V0pIfD0oYjckUUxkSzBQS0U4aEk5PXdea1h+CnpxKFJUP1NzV0lPZXlIRyRH
bTk3e2o2TiV9OV9uN3JNOEtCbiRAc0h8R04paU13ZkFrKF82Y2pBelJ+YG5OYFNHRQp6OylsV3ha
WkpeN1crVlY5dDBVdj88KDspWmRSRm9IN2hmTSpRQHlIZSFwdz11PjVDQEJKMXd7N1VTZ3QmRVgx
d1kKeiZ0dzBpaiZsZChiYkI8IypYITYkQktfYHxGd0xeQ3RsSVJHVGVgbnM9b3A9KFF0UUU0VD9X
cVd5LWZKemd7dTV8CnpYRnU3eHtyeUd7SnY9VH5lYldKa3BKPX1BX1pqKjIwcjQhUCZeZncjUz4p
dmw/ezMma3stTlYlKTFHPndjTVBYOAp6S2JkdVNeTVNIMThKQWN7UU91Sm92bDBWcy1GaHljZlVu
cmJjNHdhS2RCYmkwdDhwSDNeLSVuejRJRk96QChzYDUKekdXQ2xHczx1YXNuOWk+bWRFQ3FZKm8o
P1phU1FHTEk2S0FhY0g/a3VufSY8SF9QJj8mU3UoT049Ung0bDZaNih5CnppT35mOXpNPWNvKVdg
Rl9GUnFweXY0ZW0tNT1NMSFsSW0+d3ViektQUmFsP3Qqej96bUA3RFYqe2J9eC1pNmQ+Wgp6azJL
ZUo9Qz9PUyE+Kl5qWj03LTF1WGEzc0FmWnM8PXI7S0JKSXtHcm1pSnFBRUFhJWB1LU1obCQ3WHYm
WnI/R1MKejVucyVqbTZ+Kld8SUd0PSs2I05+KjckTz5jVjQrKU19M3tTQWhQMjFDak8mU2NLejF0
dTA9MmoqTnM9RlNOMTR6CnpTYUljRCpHJCY5Rjc7YDxOOGFIaWlzamUhTWVGQjBpdSRHXjg1QE16
aEFTNDxCQTB4SlVZc3BGKXR6WkczOVUoNwp6O28/Kmg2VERlJW5ERz1aXklKYzdVRC1fYzFySjxM
Q2RfO0RaMTJYcXtucXxHZUN9TklsYHwmb3hJTz13V2I7S3YKemw8bEQmJTlNZi1uZjNmSFRefE9h
Mys7cHZaTSZyZ2lneEZ7P2xSPXsoKV8ydDdDYzxKPE1XI0tHd2xDeFZBdCk1Cnp6eF81TDhqSz1s
QT5YWVl2NFVnWll5ayQmTXlUWiRHQGhIQjgrVTZpPVJSI3Y/R0s5RUtENiE5NGAyaHptWiNMZQp6
S1IxSXdBbHcpNS0wV29ETUlSb1ModCplVGpmUUdHR2V1enswQXJHLUxsVH51KGFvfnw1MnR1KkMr
RjdkIWg+RDcKel4ocyNPZ352UU9jVC1zPktnP30/VDxvSW5FLXpoTFZqV1dwdkw/M01rdjYrYyZn
PjNaMTItUkpiXlpGfXs5byoxCnpGVnZtdkxEYWllS0F5NEI+OHRncD4kZ2p+VSRuRDNjVyV6fSpz
dHEtOTtHYksmKSF6dlUkTmwlPVJjbDRWJTFeUQp6eXJZK0VIWDZvPDlBMzkjQHNXMGhsQGxFRDtz
PHEmbipLSzhpSmdzcVh3TElwUXp+b3JxQFZQXmQ4SjJPKm1BM1kKeng/S1VzN3BAS0pZKExgZ3M1
XlBaK3hvYFh5ZEp5RiYyOEN8JmR3PmZGSTNwOSl6dktDZEJTfkRgfWhjS2JjUyFZCnpRe0tGVkdP
dTxPbCE2eV5AWmY7Tlc4SEc5eDg0fGY7N1MjO3k8X3ooS2FGZU9qXlpQYVJFd1NfM0xEdFpzfSZV
KQp6IW58OUpDbnF4ckRtKkUwWmM+M1pmRDFKdHtrcXhXS3dfNCtifDhoRGxgPlQyMGxARGNzYDdw
YDt8YHA3NUM+d2IKelZ5YiRVY1FAO0VMaXhkZ1dMfTBYNnVFUkR5IyRTbFRuVCM3b2d0aF41RHI0
UUBVMGtPe0h0XjZ7b0JGRVl9KiFaCno3YUw9MGFyVm83M0N5JGV7WEFgMGs3ZT9wKzdFVzEoZF9q
MmU5bU97OW80bm1IJEk5N2VXI0IqcER6NGpjKVZOWAp6VEd7aXtZVVRJXlEmeHtIOXpXeiFjPFAz
MmBpajhnQSFDTzlJdHtzQHVsYStXO1BUKmtgTH4wTSVicyFPNG5IJF4KelBfSUFFaDx0TkJxUUBg
NHYoKWYqPlg3LU8pRHQ1cko+TzBebWJDaCp8Qzl5OW8wISQtI0NBV1BpKEl6UFRiKzxKCnpJYDNs
UXJ8Z1N3cnpCTylfbHR7dGMpcjReTSRYSTV0YjZXcm98UUx6P0pzcD43Q0lCSjJGfCtoWlhjTXkx
XmV0cQp6ckBxVSFUR0hqd2d4YTlqRHxNXlpoUFhYMClCQTZGY3lOaUdeQEcoRCZNPW9GMGI8JnhG
PDI2Q2RoRCYkenhfT18Kek45b3FzZi16UU5EZjYqQUh8RmE4dXRofkBQeXNSVkM7V3t3QlJqVWVf
SWRsR259TmFNREJzSFhRM0Zpd3diJWVuCnpDUU8zRzJDJiF3JX1qJXFEJVdCSVNabn1gNGJiR2x3
YiVkXzh7bDdoQCs+eGgjUmpuMDBSUUpVemB1T3w9TlE7Vwp6cTJ1QlozPXlwfUpOPyhAYFZGJi1U
e1BXSnw4I3ZILV9xdSRsYSY/WUtrdksla3M9WHtXRW41JEBER0V6cnRFKU0Kem4lMCFvO3A0Wi1K
Rm1+fngqWll7eTdKb1h2QXZJO0BKLXJVK19tPUg/Q18jJHA3KH0pZH1adiR4XjBgTHBQWE93Cnpt
M1ZPWEduWiRkP3xGJWV1SVlPYCNuPHFuP31gbFA9d0JMPVJLK3R0bFdrcUlHUVlORntMOGUwXnR+
Pyt7ZF82OQp6O3VpT3wlfWpuPmZIPj4qdjdFX21LUCRjJHVgaCtOP1h8YWlicElpeEJDanZMSW5x
VkNAWE5JLWhIRE9JK2ZKODwKej5BZC0zYWk+JWFvajZ3OWYyQlRtXjNgXkl2KEV8YzRFND9reyVy
bVVQcCheeWY7PF97YW1pZylkP3g0OXRWPzxGCno4Jk1PJUsrYkthJjRGV19wWGo/eXMlQU5UPlIt
NVIoelgjI3p2Wm9wVWMtfGcrKmRlcyZpRGglZUFgYlA+ZT01OAp6YVh2MklyTTYzdC1ybGQjPHUz
emglZVE2ZHBtMW4lVnBzdC1iWWU3Zl9rWXgwWnlxbEFDXyVHMEdGKzhMZ1dsVmQKekpNWiNeI1k9
bG1EJipRXmNmOGF3O2Jxc04pJSFkYE9KV19mNH05SipAfWQocUUjZyg+OHxqd0hpXi15WCtoXlhC
CnoxVyleQiNDTWwmVyQyNX4tfGplQGBENTBeZzxhJm9lT2BGez5mKSNxdEhMK3BpI3BkPWpfNEdt
bUU2aW81VFdmSgp6ND5+a0ttPG9RWTYxakQqemszc04zcD0qWSkycGkyJVd3MGhoXkJtRUdkWUNN
JV5rMzw/c3drJlEqSEI/SWA5MjcKelFXbWBAekduMUtlbkdzdGRBUi1rc1c8bUtXXmI9QWFoe3A9
RyFnJHtjVVJVQmh4b0lJPStkKkRURUMkKUtCP1RACnomKXJ0SWBCOzAyOzs2TyVmeiFEITkoM0hI
YTktU1ZAeElEOFZ7I1lDUFcrcygrU2s5UkR5bzVERDlnTz8peXcrPQpMbSp1N1JJYHNWPy1ieSpf
CgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBmNjE2YTc0YjQx
N2Y2MWU5YWEzZGQyNWM4YmU4NmM5ZTJhMmZkMjhhLi42MGI3MjJjM2M5NDljN2I4NWU2NGQyZjNk
YTZiZjM1N2JjODBiYWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bQpAQCAtMjkwLDYwICsyOTAsNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzV2l0aFByZXdhcm1pbmcpCiAgICAgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
KFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nOjpZZXMpOwogfQogCi1URVNUKFdlYktpdCwg
Q3VzdG9tRGF0YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCi17Ci0gICAgLy8g
Q29weSB0aGUgYmFrZWQgZGF0YWJhc2UgZmlsZXMgdG8gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeQot
ICAgIE5TVVJMICp1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
IlNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQiIHdpdGhFeHRlbnNpb246QCJzcWxp
dGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotCi0gICAgTlNV
UkwgKnN3UGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9j
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3JrZXJzLyIgc3Ry
aW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF1dOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOwotICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQ
YXRoLnBhdGhdKTsKLQotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0
cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvcHlJdGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5p
bF07Ci0KLSAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSBzd1BhdGg7Ci0gICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0KLSAgICAvLyBGZXRjaCBTVyByZWNvcmRzCi0g
ICAgYXV0byB3ZWJzaXRlRGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0
aEFycmF5OkBbV0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsK
LSAgICBzdGF0aWMgYm9vbCByZWFkeVRvQ29udGludWU7Ci0gICAgW2RhdGFTdG9yZSBmZXRjaERh
dGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAg
ICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRp
bnVlID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5
VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBGZXRj
aCByZWNvcmRzIGFnYWluLCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhl
IGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgotICAgIFtkYXRhU3Rv
cmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJl
YWR5VG9Db250aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRv
Q29udGludWUgPSBmYWxzZTsKLQotICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFz
aW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMg
aW4gZmxpZ2h0LgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRh
VHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwot
ICAgIGRhdGFTdG9yZSA9IG5pbDsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5
VG9Db250aW51ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBUaGUg
cmVjb3JkcyBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxk
IGhhdmUgYmVlbiBtYWRlLgotICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlm
eSB0aGV5IGFyZSBnb25lLgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVz
OndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vi
c2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgwVSwg
ZGF0YVJlY29yZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAg
IH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLX0K
LQogVEVTVChXZWJLaXQsIEN1c3RvbURhdGFTdG9yZURlc3Ryb3lXaGlsZUZldGNoaW5nTmV0d29y
a1Byb2Nlc3NEYXRhKQogewogICAgIE5TVVJMICpjb29raWVTdG9yYWdlRmlsZSA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvQ29va2llU3RvcmFnZS9Db29raWUuRmlsZSIgc3Ry
aW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6Tk9dOwo=
</data>
<flag name="commit-queue"
          id="444476"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424730</attachid>
            <date>2021-03-30 19:58:07 -0700</date>
            <delta_ts>2021-03-30 21:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223808-20210330195806.patch</filename>
            <type>text/plain</type>
            <size>117911</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUzOGUyZGNmODQ0MmJiNTQzNTYyY2E2
ODRlZTEwZGU3NDNkYjA5NDUuLjYyMjEzYjJiMTJkMzczZTkxNzdmOGM4M2VjYWM2NjRmMzc5Nzk0
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVj
aCBtZW1vcnkgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiB3dGYvRmls
ZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeSk6CisgICAgICAgIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSgpIG9uIGFsbCBzdXBwb3J0ZWQgcGxhdGZvcm1zLgor
ICAgICAgICBXZSBwcmV2aW91c2x5IG9ubHkgaGFkIGltcGxlbWV0YXRpb25zIGZvciBDb2NvYSBh
bmQgV2luZG93cy4KKworICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxlKToK
KyAgICAgICAgTW92ZWQgbW9zdCBvZiB0aGUgbWFwVG9GaWxlKCkgbG9naWMgZnJvbSBOZXR3b3Jr
Q2FjaGVEYXRhOjptYXBUb0ZpbGUoKSB0byBGaWxlU3lzdGVtLCBzbyB0aGF0CisgICAgICAgIGl0
IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldyBTV1NjcmlwdFN0b3JhZ2UgY2xhc3MuIEl0IGNyZWF0
ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1tYXAncyBpdCwKKyAgICAgICAgd3JpdGVzIHRoZSBw
cm92aWRlZCBkYXRhIHRvIGl0IGFuZCB0aGVuIHJldHVybnMgdGhlIG1tYXAnZCBmaWxlLgorCisg
ICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpyZWFkT3JNYWtlU2FsdCk6CisgICAgICAgIE1v
dmUgcmVhZE9yTWFrZVNhbHQoKSBmcm9tIE5ldHdvcmtDYWNoZURhdGEgdG8gRmlsZVN5c3RlbSBz
byB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYnkgdGhlIG5ldworICAgICAgICBTV1NjcmlwdFN0b3Jh
Z2UuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisKIDIwMjEtMDMtMjkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBV
c2UgdGVybWluYXRlX3dpdGhfcmVhc29uIGluc3RlYWQgb2YgeHBjX2Nvbm5lY3Rpb25fa2lsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDE2NDAwNWYxNjlkNzhjMDhlMWRjMmE4YjlmODE1NjE1ZThjMjczYjkuLjVj
NDdiNThkNjFiZTUyYWZhYTg0M2Q1MjU3YTk3ZmNmMmU3OTZmODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMjEtMDMtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTZXJ2aWNlIFdvcmtlciBzY3JpcHRzIHVzZSB0b28gbXVjaCBtZW1vcnkgaW4g
dGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIzODA4CisgICAgICAgIDxyZGFyOi8vNzU2MzcwOTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgUHJldmlvdXNseSwgdGhlIG5ldHdv
cmsgcHJvY2VzcyB3b3VsZCBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGluIGEgU1FMaXRl
IGRhdGFiYXNlLgorICAgICAgICBXaGVuIHN0YXJ0aW5nIHRvIHVzZSBzZXJ2aWNlIHdvcmtlcnMs
IHdlIHdvdWxkIGxvYWQgYWxsIHRob3NlIHNjcmlwdHMgZnJvbSB0aGUgZGF0YWJhc2UKKyAgICAg
ICAgaW50byBtZW1vcnkuIFRoaXMgd291bGQgdXNlIGEgZGVjZW50IGFtb3VudCBvZiBtZW1vcnkg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwg
dGhlIGFwcHJvYWNoIGlzIHRoaXMgcGF0Y2ggaXMgdG8gc3RvcmUgdGhlIHNjcmlwdHMgYXMgc2Vw
YXJhdGUKKyAgICAgICAgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gaW5zdGVhZC4gVGhpcyB3aGVu
LCB3aGVuIGxvYWRpbmcgdGhlbSwgd2UgY2FuIHNpbXBseSBtbWFwKCkgdGhlbQorICAgICAgICBh
bmQgZ3JlYXRseSByZWR1Y2UgZGlydHkgbWVtb3J5IHVzYWdlLgorCisgICAgICAgIE5vdGUgdGhh
dCB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAod2hpY2ggbWF5IGJlIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MpIGFsc28ga2VlcHMgYQorICAgICAgICBjb3B5IG9mIHRoZSBpbXBvcnRlZCBzZXJ2
aWNlIHdvcmtlciBzY3JpcHRzIGZvciB0aGUgc2VydmljZSB3b3JrZXJzIGl0IGlzIHJ1bm5pbmcu
IE1vcmUKKyAgICAgICAgd29yayB3aWxsIGJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBidXQgd2Ug
c2hvdWxkIGJlIGFibGUgdG8gZXh0ZW5kIHRoZSBhcHByb2FjaCBzbyB0aGF0CisgICAgICAgIHRo
ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdvdWxkIG9ubHkgaGF2ZSBhIG1tYXAnZCB2ZXJzaW9u
IG9mIHRob3NlIHNjcmlwdHMuIFRoaXMgd291bGQKKyAgICAgICAgcmVkdWNlIGRpcnR5IG1lbW9y
eSB1c2FnZSBvbiB0aGUgV2ViQ29udGVudC9TZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc2lkZSBhcyB3
ZWxsLiBJIGFtCisgICAgICAgIGRvaW5nIHRoaXMgc2VwYXJhdGVseSB0aG91Z2ggdG8gcmVkdWNl
IHBhdGNoIHNpemUgYW5kIGZhY2lsaXRhdGUgcmV2aWV3LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgdGhlcmUgc2hvdWxkIGJlIG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEg
ZGVjcmVhc2VkCisgICAgICAgIGRpcnR5IG1lbW9yeSB1c2FnZSBpbiB0aGUgbmV0d29yayBwcm9j
ZXNzIHdoZW4gc2VydmljZSB3b3JrZXJzIGFyZSB1c2VkLgorCisgICAgICAgIEkgZGlkIG1hbnVh
bCBtZW1vcnkgdGVzdGluZyB3aXRoIGEgdmVyeSBsYXJnZSBzZXJ2aWNlIHdvcmtlciB0aGF0IGhh
ZCBvbmUgfjEwME1CIG1haW4KKyAgICAgICAgc2NyaXB0LCBpbXBvcnRpbmcgYW5vdGhlciB+MTAw
TUIgc2NyaXB0LgorCisgICAgICAgIEhlcmUgYXJlIHRoZSBtZW1vcnkgcmVzdWx0cyB3aXRob3V0
IG15IGNoYW5nZToKKyAgICAgICAgLSBOZXR3b3JraW5nIChEaXJ0eSk6IDIzOE1CIChjb2xkKSAv
IDMzMU1CICh3YXJtKQorICAgICAgICAtIFdlYkNvbnRlbnQgKERpcnR5KTogNDQxTUIgKGNvbGQp
IC8gODU3TUIgKHdhcm0pCisKKyAgICAgICAgSGVyZSBhcmUgdGhlIG1lbW9yeSByZXN1bHRzIHdp
dGggbXkgY2hhbmdlOgorICAgICAgICAtIE5ldHdvcmtpbmcgKERpcnR5KTogMjJNQiAoY29sZCkg
LyAxNE1CICh3YXJtKQorICAgICAgICAtIFdlYkNvbnRlbnQgKERpcnR5KTogNDQwTUIgKGNvbGQp
IC8gNDM4TUIgKHdhcm0pCisKKyAgICAgICAgVGhpcyBzaG93cyB0aGF0IEFMTCBtZW1vcnkgZnJv
bSB0aGUgc2NyaXB0cyBpbiB0aGUgbmV0d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBtYXJrZWQK
KyAgICAgICAgYXMgZGlydHkuIFdlIGFsc28gc2VlIGEgc2lnbmlmaWNhbnQgcHJvZ3Jlc3Npb24g
aW4gdGhlIFdlYlByb2Nlc3MgaW4gdGhlIHdhcm0gY2FzZSwgc2luY2UKKyAgICAgICAgdGhlIHNj
cmlwdHMgYXJlIGNvbWluZyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MgYXMgc2hhcmVkIG1lbW9y
eSBpbiB0aGlzIGNhc2UuIFRoZXJlIGlzCisgICAgICAgIG5vIHByb2dyZXNzaW9uIGluIHRoZSBX
ZWJQcm9jZXNzIGluIHRoZSBjb2xkIGNhc2UgeWV0LCBzaW5jZSB0aGUgc2NyaXB0IHdlcmUganVz
dAorICAgICAgICBkb3dubG9hZGVkIGFuZCBhcmUgY29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3Mg
dG8gdGhlIE5ldHdvcmtQcm9jZXNzLiBJbiBhIGZvbGxvdy11cCwgdGhlCisgICAgICAgIG5ldHdv
cmsgcHJvY2VzcyBjb3VsZCBzZW5kIHNoYXJlZCBtZW1vcnkgYmFjayB0byB0aGUgV2ViUHJvY2Vz
cywgYWZ0ZXIgc2F2aW5nIHRoZSBzY3JpcHRzCisgICAgICAgIHRvIGRpc2ssIHNvIHRoYXQgdGhl
IFdlYlByb2Nlc3MgY2FuIHJlcGxhY2UgdGhlIGNvcGllcyBvZiBpdHMgc2NyaXB0cyBhbmQgc2F2
ZSBtb3JlIG1lbW9yeS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBTV1NjcmlwdFN0
b3JhZ2UgY2xhc3MgdG8gdGhlIHByb2plY3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckFnZW50OjpnZXRJbml0aWFsaXphdGlvbkluZm8pOgorICAgICAgICBDb252ZXJ0IHRo
ZSBzY3JpcHQgdHlwZSBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgRml4IGFzc2VydGlvbnMgdGhhdCB3ZXJlIGhp
dHRpbmcgd2hlbiBjb21wYXJpbmcgdG8gZW1wdHkgU2hhcmVkQnVmZmVycyAob2Zmc2V0IHdvdWxk
IGJlIDAKKyAgICAgICAgYW5kIHNpemUgd291bGQgYmUgMCkuIFRoaXMgd2FzIGNhdWdodCBieSBB
UEkgdGVzdHMgc2luY2Ugd2UgaGF2ZSBzb21lIHNlcnZpY2Ugd29ya2VyIEFQSQorICAgICAgICB0
ZXN0cyB0aGF0IHVzZSBlbXB0eSB3b3JrZXIgc2NyaXB0cy4KKworICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICBBZGQgc29tZSBjb252ZXJzaW9uIGZy
b20gU3RyaW5nIHRvIFNoYXJlZEJ1ZmZlciB0byB0aGUgc2NyaXB0LCBhbmQgdmljZS12ZXJzYSwg
aW4gdGhlCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIGNhc2UuCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNjcmlwdEJ1ZmZlclRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlu
Z1RvU2NyaXB0QnVmZmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAg
ICAgLSBTdG9yZSBzY3JpcHRzIGFzIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIFN0cmluZywgc28g
dGhhdCB0aGV5IGNhbiBob2xkCisgICAgICAgICAgbW1hcCdkIGRhdGEuCisgICAgICAgIC0gQWRk
IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkgLyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIHV0aWxpdHkg
ZnVuY3Rpb25zIHRvCisgICAgICAgICAgY29udmVydCBzY3JpcHQgc291cmNlcyBiZXR3ZWVuIFN0
cmluZyBhbmQgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgQ29udmVydCBmcm9tIHNj
cmlwdCBmcm9tIFNoYXJlZEJ1ZmZlciB0byBTdHJpbmcuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgIFVwZGF0ZSBkYXRhYmFzZSBzY2hlbWEgYW5k
IGJ1bXAgdmVyc2lvbiBub3cgdGhhdCB3ZSBubyBsb25nZXIgc3RvcmUgdGhlCisgICAgICAgIHNl
cnZpY2Ugd29ya2VyIHNjcmlwdCBpbnNpZGUgdGhlIFNRTGl0ZSBkYXRhYmFzZS4gSW5zdGVhZCwg
dGhvc2Ugc2NyaXB0cworICAgICAgICBhcmUgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZpbGVz
eXN0ZW0gdmlhIFNXU2NyaXB0U3RvcmFnZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1wb3J0ZWRT
Y3JpcHRBdHRyaWJ1dGVzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzOjpkZWNvZGUpOgorICAgICAgICBJbnRyb2R1Y2UgbmV3IEltcG9y
dGVkU2NyaXB0QXR0cmlidXRlcyBzdHJ1Y3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBkYXRhCisg
ICAgICAgIG1lbWJlcnMgb2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCwgZXhjZXB0IGZvciB0aGUgYWN0dWFsCisgICAgICAgIHNjcmlwdCBzb3VyY2UuIFdlIG5vdyBz
YXZlIGEgSGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgaW4gdGhlCisgICAgICAg
IGRhdGFiYXNhZSBpbnN0ZWFkIG9mIEhhc2hNYXAgb2YgSW1wb3J0ZWRTY3JpcHQgc2luY2Ugd2Ug
bm8gbG9uZ2VyIHdhbnQgdG8KKyAgICAgICAgc3RvcmUgaW1wb3J0ZWQgc2NyaXB0IHNvdXJjZXMg
aW4gdGhlIGRhdGFiYXNlLCBidXQgcmF0aGVyIHN0b3JlIHRoZW0KKyAgICAgICAgc2VwYXJhdGVs
eSBvbiB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwU2NyaXB0U291
cmNlcyk6CisgICAgICAgIFV0aWxpdHkgZnVuY3Rpb24gdG8gY29udmVydCBhIEhhc2hNYXAgb2Yg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBpbnRvIGEg
SGFzaE1hcCBvZiBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgKGlkZW50aWNhbCBidXQgd2l0aG91
dCB0aGUgc2NyaXB0CisgICAgICAgIHNvdXJjZSksIHJlYWR5IHRvIHNhdmUgaW4gdGhlIFNRTGl0
ZSBkYXRhYmFzZS4KKworICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJv
bURpc2spOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIEhhc2hNYXAg
b2YgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAgICAgICBmcm9t
IGEgSGFzTWFwIG9mIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcywgY29taW5nIGZyb20gdGhlIFNR
TGl0ZURhdGFiYXNlLiBUaGUKKyAgICAgICAgbWlzc2luZyBzY3JpcHQgc291cmNlcyBhcmUgZmV0
Y2hlZCBmcm9tIHRoZSBkaXNrIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjp+UmVnaXN0cmF0aW9uRGF0YWJhc2UpOgorICAgICAg
ICBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUgU1dTY3JpcHRTdG9yYWdlIG9uIHRoZSBiYWNrZ3Jv
dW5kIHF1ZXVlIGZvciB0aHJlYWQtc2FmZXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6c2NyaXB0U3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIFJl
dHVybnMgdGhlIHBhdGggb24gdGhlIGZpbGVzeXN0ZW0gd2hlcmUgc2VydmljZSB3b3JrZXIgc2Ny
aXB0cyBhcmUgc3RvcmVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6c2NyaXB0U3RvcmFnZSk6CisgICAgICAgIENvbnN0cnVjdHMgKGlmIG5lY2Vzc2FyeSkgYSBT
V1NjcmlwdFN0b3JhZ2UgYW5kIHJldHVybiBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVnaXN0
cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNsZWFyIGFs
bCB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0cyBvbiBkaXNrIGluIGFkZGl0aW9uIHRvIHRoZSBk
YXRhYmFzZSwKKyAgICAgICAgbm93IHRoYXQgdGhleSBhcmUgc3RvcmVkIHNlcGFyYXRlbHkuCisK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToK
KyAgICAgICAgLSBTdG9wIHN0b3JpbmcgdGhlIHNjcmlwdCBzb3VyY2VzIGluIHRoZSBTUUxpdGUg
ZGF0YWJhc2UsIGFuZCBpbnN0ZWFkIHN0b3JlIHRoZW0gYXMgc2VwYXJhdGUKKyAgICAgICAgZmls
ZXMgb24gdGhlIGZpbGUgc3lzdGVtIHZpYSBTV1NjcmlwdFN0b3JhZ2UuCisgICAgICAgIC0gSW1w
cm92ZSBsb2dnaW5nCisgICAgICAgIC0gV2hlbiBkb25lIHN0b3JpbmcgdGhlIHNjcmlwdHMgdG8g
ZGlzaywgc2VuZCB0aGVzZSBuZXcgbW1hcCdkIHZlcnNpb25zIGJhY2sgdG8gdGhlCisgICAgICAg
ICAgU1dTZXJ2ZXJXb3JrZXIgb24gdGhlIG1haW4gdGhyZWFkLCBzbyB0aGF0IGl0IGNhbiByZXBs
YWNlIGl0J3MgaGVhdnkgc2NyaXB0IHNvdXJjZXMgd2l0aAorICAgICAgICAgIHRoZXNlIG9uZXMu
IFRoaXMgaGVscHMgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAtIExvYWQgdGhlIHNj
cmlwdCBzb3VyY2VzIGZyb20gdGhlIGRpc2sgdmlhIFNXU2NyaXB0U3RvcmFnZSwgbm93IHRoYXQg
dGhleSBhcmUgbm8gbG9uZ2VyCisgICAgICAgICAgc3RvcmVkIGluIHRoZSBTUUxpdGUgZGF0YWJh
c2UuCisgICAgICAgIC0gSW1wcm92ZSBsb2dnaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oOgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZWdpc3RyYXRpb25TdG9yZTo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2spOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaDoKKyAgICAgICAgUGFz
cyBzY3JpcHRzIHRoYXQgd2VyZSBzYXZlZCB0byBkaXNrIGZyb20gdGhlIHN0b3JlIHRvIHRoZSBT
V1NlcnZlcldvcmtlciBzbyB0aGF0IGl0CisgICAgICAgIGNhbiByZXBsYWNlIGl0cyBzY3JpcHRz
IHNvdXJjZXMgd2l0aCB0aG9zZSBuZXcgbW1hcCdkIHZlcnNpb24sIGluIG9yZGVyIHRvIHNhdmUg
bWVtb3J5LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc2hVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTY3JpcHRTdG9yYWdlOjpyZWdpc3RyYXRpb25EaXJlY3RvcnkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OmNsZWFyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFNXU2NyaXB0U3RvcmFnZSB0byBkZWFsIHdpdGgg
dGhlIHN0b3JhZ2UgLyByZXRyaWV2YWwgb2YgU2VydmljZQorICAgICAgICBXb3JrZXIgc2NyaXB0
cyB0byAvIGZyb20gZGlzaywgYXMgZmlsZXMgb24gdGhlIGZpbGUgc3lzdGVtLiBXaGVuCisgICAg
ICAgIGdvaW5nIGEgcmV0cmlldmFsLCB3ZSByZXR1cm4gYSBzY3JpcHQgYXMgYSBTaGFyZWRCdWZm
ZXIgd2hpY2ggdXN1YWxseSBjb250YWlucworICAgICAgICBtbWFwJ2QoKSBkYXRhICh3ZSBkb24n
dCB1c2UgbW1hcCgpIGZvciBmaWxlcyB0aGF0IGFyZSBzbWFsbGVyIHRoYW4gdGhlIFBBR0VfU0la
RSkuCisgICAgICAgIFRoZSBzY3JpcHRzIHJlc2lkZSBpbiBhIFNjcmlwdHMvIGZvbGRlciwgYmVz
aWRlIHRoZSBkYXRhYmFzZS4gVGhlIHNjcmlwdHMgYXJlIHNlcGFyYXRlZAorICAgICAgICBieSBv
cmlnaW4gKHVzaW5nIFNIQTI1NiBvZiB0aGUgb3JpZ2luIGFzIGZvbGRlciBuYW1lIHdpdGggc2Fs
dCksIGFuZCB0aGVuIGJ5IHJlZ2lzdHJhdGlvbiAoYnkKKyAgICAgICAgdXNpbmcgU0hBMjU2IG9m
IHRoZSByZWdpc3RyYXRpb24gc2NvcGUgYXMgc3ViZm9sZGVyIG5hbWUgd2l0aCBzYWx0KS4gVGhl
IGZpbGUgbmFtZSBmb3IgdGhlIHNjcmlwdAorICAgICAgICBpcyBhIFNIQTI1NiBvZiB0aGUgc2Ny
aXB0IFVSTCB3aXRoIHNhbHQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2Ny
aXB0c1RvRGlzayk6CisgICAgICAgIFBhc3Mgc2NyaXB0cyB0aGF0IHdlcmUgc2F2ZWQgdG8gZGlz
ayBmcm9tIHRoZSBzdG9yZSB0byB0aGUgU1dTZXJ2ZXJXb3JrZXIgc28gdGhhdCBpdAorICAgICAg
ICBjYW4gcmVwbGFjZSBpdHMgc2NyaXB0cyBzb3VyY2VzIHdpdGggdGhvc2UgbmV3IG1tYXAnZCB2
ZXJzaW9uLCBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4KKworICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIENvbnZlcnQgc2NyaXB0IGZyb20gU3RyaW5n
IHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpz
Y3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgQ29udmVydCBzY3JpcHQgZnJvbSBTaGFyZWRC
dWZmZXIgdG8gU3RyaW5nLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAg
VGFrZSBpbiBhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgZm9yIGNv
bnZlbmllbmNlLCBpbnN0ZWFkIG9mIHRha2luZworICAgICAgICBhbGwgaXRzIGRhdGEgbWVtYmVy
cyBhcyBzZXBhcmF0ZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtl
cjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHQg
Y29uc3QpOgorICAgICAgICBVc2UgU2hhcmVkQnVmZmVyIHR5cGUgZm9yIHNjcmlwdCBpbnN0ZWFk
IG9mIFN0cmluZyB0eXBlLCBzbyB0aGF0IHdlIGNhbiBob2xkIG9uIHRoZQorICAgICAgICBtbWFw
J2QgZGF0YSBhbmQgcmVkdWNlIG1lbW9yeSB1c2FnZS4KKwogMjAyMS0wMy0zMCAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdyBQbGF5aW5nIGNvbnRlbnQg
aXNuJ3QgdXBkYXRlZCB3aGVuIG1lZGlhIHNlc3Npb24ncyBNZXRhZGF0YSBpcyBtb2RpZmllZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0NzA3OGVmMmQzMWVkODU4MGJlMjMwNTg5NjZmMzU3OTA3ZGNiMTI3Li4wMjcx
ZWQzNTAyMDYxMmVjMTI5ZTEyZmE3NjE4N2Y3NGJmM2I2ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ0IEBACisyMDIxLTAzLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgU2VydmljZSBXb3JrZXIgc2NyaXB0cyB1c2UgdG9vIG11Y2ggbWVtb3J5IGluIHRoZSBu
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzgwOAorICAgICAgICA8cmRhcjovLzc1NjM3MDkzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAg
IFBhc3MgYSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHN0cnVjdCBp
biB0aGUgU2V0U2NyaXB0UmVzb3VyY2UgSVBDCisgICAgICAgIGZvciBjb252ZW5pZW5jZS4gV2Ug
dXNlZCB0byBwYXNzIHRoZSBJbXBvcnRlZFNjcmlwdCBkYXRhIG1lbWJlcnMgc2VwYXJhdGVseS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlc0Zy
b21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2Fj
aGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lv
bnMpOgorICAgICAgICBEcm9wIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KCkgaW1wbGVtZW50
YXRpb24gYW5kIHVzZSB0aGUgZXhpc3RpbmcKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9u
RW1wdHlEaXJlY3RvcnkoKSBpbiB3dGYgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkRhdGE6Om1hcFRvRmlsZSBjb25zdCk6CisgICAgICAgIE1vdmVkIHNvbWUgb2YgdGhl
IG1hcFRvRmlsZSgpIGxvZ2ljIHRvIFdURiwgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgorCisg
ICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6
OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIFVwZGF0ZSBTaGFyZWRCdWZmZXIncyBJUEMgYXJndW1lbnQgY29kZXIgdG8gZGlz
dGluZ3Vpc2ggYSBudWxsIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgYW4gZW1wdHkgb25lLiBX
ZSBub3cgdXNlIFNoYXJlZEJ1ZmZlciB0byBzdG9yZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgc291
cmNlcworICAgICAgICBhbmQgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBzY3JpcHQgc291cmNlcyB0
byBiZSBlbXB0eSAoYW5kIHRoZXkgYXJlIGluIHNvbWUgb2YKKyAgICAgICAgb3VyIEFQSSB0ZXN0
cykuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UpOgorICAgICAgICBQYXNzIGEgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzdHJ1Y3QgaW4gdGhlIFNldFNjcmlwdFJlc291cmNl
IElQQworICAgICAgICBmb3IgY29udmVuaWVuY2UuIFdlIHVzZWQgdG8gcGFzcyB0aGUgSW1wb3J0
ZWRTY3JpcHQgZGF0YSBtZW1iZXJzIHNlcGFyYXRlbHkuCisKIDIwMjEtMDMtMzAgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3cgUGxheWluZyBjb250ZW50
IGlzbid0IHVwZGF0ZWQgd2hlbiBtZWRpYSBzZXNzaW9uJ3MgTWV0YWRhdGEgaXMgbW9kaWZpZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggZmViZTQ1ZmU4YjVlOGZmMWJmZjFlNTM2OGVhNTEyMTM2
YTFmZjBiZS4uYmRmOTAyYTZiZDBhY2QwZTFiZTc1ZTlmNzY4OWNjMDJjZDYzZGU1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVNZXRhZGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KQEAgLTMxOCw5ICsz
MTksOCBAQCBib29sIE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIEZpbGVPcGVuTW9kZSBvcGVuTQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKCFzaXplKSB7CisgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9CiAKICAgICBpbnQgcGFnZVByb3RlY3Rpb24gPSBQUk9UX1JFQUQ7CiAgICAg
c3dpdGNoIChvcGVuTW9kZSkgewpAQCAtNDA4LDUgKzQwOCwxMDEgQEAgU3RyaW5nIGNyZWF0ZVRl
bXBvcmFyeVppcEFyY2hpdmUoY29uc3QgU3RyaW5nJikKIH0KICNlbmRpZgogCisjaWYgIVBMQVRG
T1JNKENPQ09BKSAmJiAhT1MoV0lORE9XUykKK2Jvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1dG8gZW50cmllcyA9IGxpc3REaXJlY3Rvcnko
cGF0aCwgIioiX3MpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7CisgICAgICAg
IGlmIChmaWxlSXNEaXJlY3RvcnkoZW50cnksIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5v
KSkKKyAgICAgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGVudHJ5KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZGVsZXRlRmlsZShlbnRyeSk7CisgICAgfQorICAgIHJldHVybiBk
ZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKK30KKyNlbmRpZgorCitNYXBwZWRGaWxlRGF0YSBt
YXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+Jik+JiYgYXBw
bHksIFBsYXRmb3JtRmlsZUhhbmRsZSogb3V0cHV0SGFuZGxlKQoreworICAgIGNvbnN0ZXhwciBi
b29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUsIEZp
bGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyLCBmYWlsSWZGaWxlRXhpc3RzKTsK
KyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCAhRmlsZVN5c3Rl
bTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgYnl0ZXNTaXplKSkgeworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBG
aWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKKyAgICBib29s
IHN1Y2Nlc3M7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZShoYW5k
bGUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZTo6U2hhcmVkLCBzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgdm9pZCogbWFwID0gY29uc3RfY2FzdDx2b2lkKj4obWFwcGVkRmlsZS5kYXRh
KCkpOworICAgIHVpbnQ4X3QqIG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFwKTsK
KworICAgIGFwcGx5KFsmbWFwRGF0YV0oY29uc3QgdWludDhfdCogY2h1bmssIHNpemVfdCBjaHVu
a1NpemUpIHsKKyAgICAgICAgbWVtY3B5KG1hcERhdGEsIGNodW5rLCBjaHVua1NpemUpOworICAg
ICAgICBtYXBEYXRhICs9IGNodW5rU2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7
CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIERXT1JEIG9sZFByb3RlY3Rpb247CisgICAgVmlydHVh
bFByb3RlY3QobWFwLCBieXRlc1NpemUsIEZJTEVfTUFQX1JFQUQsICZvbGRQcm90ZWN0aW9uKTsK
KyAgICBGbHVzaFZpZXdPZkZpbGUobWFwLCBieXRlc1NpemUpOworI2Vsc2UKKyAgICAvLyBEcm9w
IHRoZSB3cml0ZSBwZXJtaXNzaW9uLgorICAgIG1wcm90ZWN0KG1hcCwgYnl0ZXNTaXplLCBQUk9U
X1JFQUQpOworCisgICAgLy8gRmx1c2ggKGFzeW5jaHJvbm91c2x5KSB0byBmaWxlLCB0dXJuaW5n
IHRoaXMgaW50byBjbGVhbiBtZW1vcnkuCisgICAgbXN5bmMobWFwLCBieXRlc1NpemUsIE1TX0FT
WU5DKTsKKyNlbmRpZgorCisgICAgaWYgKG91dHB1dEhhbmRsZSkKKyAgICAgICAgKm91dHB1dEhh
bmRsZSA9IGhhbmRsZTsKKyAgICBlbHNlCisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOworCisgICAgcmV0dXJuIG1hcHBlZEZpbGU7Cit9CisKK3N0YXRpYyBTYWx0IG1ha2VT
YWx0KCkKK3sKKyAgICBTYWx0IHNhbHQ7CisgICAgc3RhdGljX2Fzc2VydChzYWx0LnNpemUoKSA9
PSA4LCAiU2FsdCBzaXplIik7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPigmc2Fs
dFswXSkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgICpyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIoKTsKKyAgICByZXR1cm4gc2FsdDsKK30KKworT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNh
bHQoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHBhdGgpKSB7CisgICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgICAgIFNhbHQgc2FsdDsKKyAg
ICAgICAgYXV0byBieXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgp
KSwgc2FsdC5zaXplKCkpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwor
ICAgICAgICBpZiAoYnl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJu
IHNhbHQ7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKKyAgICB9CisK
KyAgICBTYWx0IHNhbHQgPSBtYWtlU2FsdCgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpKTsKKyAgICBhdXRvIGZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNlcik7CisgICAgaWYgKCFG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgYm9vbCBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2Fs
dC5zaXplKCkpKSA9PSBzYWx0LnNpemUoKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZSk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJu
IHNhbHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCBhZWMxMTVkNjVkNGY4YTAyNGQyZTdmNmI5YzMyMTQ3
MjM4NGVmNGM0Li45YTlkOWNhMDZlMmUzY2JlZjQyZWRmNjVlZTAzZDhjNWU4OGFjYmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oCkBAIC0xNDQsNiArMTQ0LDkgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqKTsKIAogaW5s
aW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkg
eyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7IH0KIAordXNpbmcg
U2FsdCA9IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47CitXVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9u
YWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKKwogLy8gUHJlZml4
IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1
bGwgcGF0aC4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3Vm
Zml4ID0geyB9KTsKIFdURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9u
ID0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OkFsbCwgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0gZmFs
c2UpOwpAQCAtMTkwLDE0ICsxOTMsMTQgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmaWxl
bmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKIFdURl9FWFBPUlRfUFJJVkFURSBOU1N0cmluZyAq
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KE5TU3RyaW5nICpkaXJlY3RvcnlQcmVmaXgpOwotV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
Jik7CiAjZW5kaWYKIAorV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CisKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVhbFBh
dGgoY29uc3QgU3RyaW5nJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzU2FmZVRvVXNl
TWVtb3J5TWFwRm9yUGF0aChjb25zdCBTdHJpbmcmKTsKQEAgLTI1Miw2ICsyNTUsMTAgQEAgaW5s
aW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6b3BlcmF0b3I9KE1hcHBlZEZpbGVE
YXRhJiYgb3RoZXIpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCisvLyBUaGlzIGNyZWF0ZXMgdGhl
IGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRlIHRoZSBwcm92aWRlZCBkYXRhIHRvIGl0
IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KKy8vIFRoaXMgZnVuY3Rpb24gZmFpbHMgaWYg
dGhlcmUgaXMgYWxyZWFkeSBhIGZpbGUgYXQgdGhlIGRlc3RpbmF0aW9uIHBhdGguCitXVEZfRVhQ
T1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
c2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVs
bHB0cik7CisKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyNGRkNDYzZTAyM2FkZDZlYzI0YWNkZDE5OGY5OTFhMGZm
ZjcxMWUzLi4zZTAxNzUzYjZlM2I3MjRjZmQ4NzMyNjc4ODY1NzkyNWQ3NTE0MTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjY4NSw2ICsyNjg1LDcgQEAgd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3Rv
cmUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCit3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGEwNDAwYzM3MDdiYTYzMThkOTgwMDg3MTc5ZjdiZGZlODUwOTlkZDkuLjM5NzFmMzBjMDc5OWU3
NDk1ODlhOTAwNWFlODQyODg3OGYyYmRjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzEsNiArMTI3MSw3IEBACiAJCTQ2
MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MENCRjM0MUQ0QkNDRkUw
MDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuaCAqLzsgfTsKIAkJNDYwRTMwNzcyMjJG
NEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlG
MjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUw
MDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUyMUFEMjA4
MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1By
b3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1
MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0MTM3QyAv
KiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5oICovOyB9
OwpAQCAtODI0MSw2ICs4MjQyLDggQEAKIAkJNDYwQ0JGMzMxRDRCQ0NGRTAwOTJFODhFIC8qIEpT
RE9NV2luZG93UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NV2luZG93UHJvcGVydGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUg
LyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEg
LyogU1dTY3JpcHRTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNX
U2NyaXB0U3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjI3M0NBRTI2
MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2NyaXB0U3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM1MjFBQTIwODEwOTBCMDBD
Mjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUMyMDgx
MDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIwNzE4LDYgKzIwNzIxLDggQEAKIAkJCQk1MUI5MTQwQjFGRDI3ODI1MDBFRTI4NTkgLyog
UmVnaXN0cmF0aW9uU3RvcmUuaCAqLywKIAkJCQk0MTUxRTVCOTFGQkE0Qzc2MDBFNDdFMkQgLyog
U1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJNDE1MUU1QjcxRkJBNEM3NTAwRTQ3RTJEIC8qIFNX
T3JpZ2luU3RvcmUuaCAqLywKKwkJCQk0NjI3M0NBRTI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmNwcCAqLywKKwkJCQk0NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3Jp
cHRTdG9yYWdlLmggKi8sCiAJCQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVy
LmNwcCAqLywKIAkJCQk1MTdBNTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLywK
IAkJCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8s
CkBAIC0zNTMwOCw2ICszNTMxMyw3IEBACiAJCQkJNDY2NThEQzkxRkEyNEI4NzAwRjdERDU0IC8q
IFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNFMjE0MDNBNUMw
MENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTFF
NUJCMUZCQTRDN0EwMEU0N0UyRCAvKiBTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAK
aW5kZXggMjFiMzBlZTI5NDcyNmIyM2MyN2FiMjA0NTZlNTk4MjUzNjkxM2QxMS4uNGEzZTdlOTc4
MWZmNmExY2Y3Mzg3N2M1NWUwYzk2OTMwNDBkN2MzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2Nv
bDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNlcnZpY2VXb3JrCiAgICAgICAgIC5z
ZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGVudGlmaWVyKCkpCiAgICAg
ICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5zZWN1cml0
eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0VXJsKG1fc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLnRocmVhZCgpLmNvbnRleHREYXRhKCkuc2NyaXB0VVJMLnN0cmluZygpKQot
ICAgICAgICAuc2V0Q29udGVudChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5j
b250ZXh0RGF0YSgpLnNjcmlwdCkKKyAgICAgICAgLnNldENvbnRlbnQoc2NyaXB0QnVmZmVyVG9T
dHJpbmcobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuY29udGV4dERhdGEoKS5z
Y3JpcHQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA1MWJjNGFhOTgzYzg3M2NmMTNkNTQzZGQxYzc2NjRjY2Y2
NjVkYWE5Li41ODdiYWViMTFlNDM0N2JjNjBlYTIzMjk4MjU1ZTM5NThmMWM4N2MwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTcwLDE1ICs3MCwxNSBAQCBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogfQogI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9k
ZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCiB7Ci0gICAgYm9vbCBtYXBw
aW5nU3VjY2VzczsKLSAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0
YShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgbWFwcGluZ1N1
Y2Nlc3MpOwotCi0gICAgaWYgKCFtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKLQotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAg
aWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKKyAgICAg
ICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vz
cyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7
CiB9CiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3RvcjxjaGFy
PiYmIHZlY3RvcikKQEAgLTI4MSw4ICsyODEsOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0
b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8IHRoaXNTZWdtZW50
LnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVChvdGhlck9mZnNldCA8IG90aGVyU2VnbWVudC5zaXpl
KCkpOworICAgICAgICBBU1NFUlQodGhpc09mZnNldCA8PSB0aGlzU2VnbWVudC5zaXplKCkpOwor
ICAgICAgICBBU1NFUlQob3RoZXJPZmZzZXQgPD0gb3RoZXJTZWdtZW50LnNpemUoKSk7CiAKICAg
ICAgICAgc2l6ZV90IHRoaXNSZW1haW5pbmcgPSB0aGlzU2VnbWVudC5zaXplKCkgLSB0aGlzT2Zm
c2V0OwogICAgICAgICBzaXplX3Qgb3RoZXJSZW1haW5pbmcgPSBvdGhlclNlZ21lbnQuc2l6ZSgp
IC0gb3RoZXJPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IDIzYmY1YThlZGI0YzFlMzAyOWI3Y2I0NzQ5ZWFjZDU1MDFiYTkxOTQuLjNjMjIzYTJmZjM5Njll
NjkzNjg2MzJjODA4YTI3Mzk3ZDlmMjc0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC02OCw3ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsg
fQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CisgICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZN
b3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBw
aW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwg
TWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAogICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPGNoYXI+JiYpOwogICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDRkNDc0ZjE2ZTU4OGRk
MDBmYjM5ZDU2MGY2NDEzYzYyYTkzODZlZjIuLmE0YmUxMDA0MGJlMjg1OTIxMGI3MmNlZDIzMTgy
YWYwNjQ3YTc4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTYwLDcgKzYxLDcgQEAg
T3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1
cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0UmVzb3VyY2UtPnNjcmlw
dCk7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVmZmVyVG9TdHJpbmcoKnNj
cmlwdFJlc291cmNlLT5zY3JpcHQpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2VVUkwgPSBzY3Jp
cHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUg
PSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpAQCAtMTAxLDcgKzEwMiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0
TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAg
IGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUocmVz
cG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOZXR3b3Jr
RXJyb3IsICJtaW1lIHR5cGUgaXMgbm90IGEgc3VwcG9ydGVkIEphdmFTY3JpcHQgbWltZSB0eXBl
Il9zIH07CiAKLSAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3Jr
ZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9u
c2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0
KCkpLCBtX3Jlc3BvbnNlVVJMLCBtX3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQogI2VuZGlm
CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggMTZk
ZjJkODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTliNWVkZi4uMWVhNTkwMWJkOWQyZmQ5Yzc5
M2IyZDVhZTBlMjcwZTgzYzhlNzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgam9iRGF0YUlkZW50aWZpZXIsCiAgICAg
ICAgIHJlZ2lzdHJhdGlvbi5pc29sYXRlZENvcHkoKSwKICAgICAgICAgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsCi0gICAgICAgIHNjcmlwdC5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgc2NyaXB0
LT5jb3B5KCksCiAgICAgICAgIGNlcnRpZmljYXRlSW5mby5pc29sYXRlZENvcHkoKSwKICAgICAg
ICAgY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29weSgpLAogICAgICAgICByZWZlcnJl
clBvbGljeS5pc29sYXRlZENvcHkoKSwKQEAgLTQ4LDYgKzQ4LDIwIEBAIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiAgICAgfTsKIH0KIAorU3RyaW5nIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGF1dG8gaXQg
PSBidWZmZXIuYmVnaW4oKTsgaXQgIT0gYnVmZmVyLmVuZCgpOyArK2l0KQorICAgICAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGl0LT5zZWdtZW50LT5kYXRhKCksIGl0LT5zZWdt
ZW50LT5zaXplKCkpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitSZWY8
U2hhcmVkQnVmZmVyPiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaAppbmRleCAzYWQ1ZDRhMTI2OTViNjllZTE2NWVlNDgwYTk2MWIxMGYxZGJkYzdlLi44
NDU0MWQ0NjJhOGI3MGE0YjMzZDNhMjM2NzBhYmIyNDYwZTU5MmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM5LDEzICs0MCwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1N0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZmZXImKTsKK1Jl
ZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOworCiBz
dHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3Jp
cHQgewotICAgICAgICBTdHJpbmcgc2NyaXB0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAgU3RyaW5nIG1pbWVU
eXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwg
bWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQorICAgICAgICBJbXBvcnRlZFNjcmlwdCBpc29s
YXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHNjcmlwdC0+Y29weSgpLCByZXNwb25zZVVSTC5p
c29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogCiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgICAgIHsKQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSB7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgewotICAg
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzY3JpcHQ7CisgICAgICAgICAgICBPcHRpb25hbDxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwogICAgICAgICAgICAgZGVjb2RlciA+PiBzY3Jp
cHQ7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwpAQCAtODAsNyArODQsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRh
dGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJh
dGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cjsKLSAgICBTdHJpbmcgc2NyaXB0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IHNjcmlwdDsKICAg
ICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIHJl
ZmVycmVyUG9saWN5OwpAQCAtMTIwLDggKzEyNCw5IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVj
CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAotICAgIFN0cmluZyBzY3JpcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
Y3JpcHQpKQorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CisgICAgZGVj
b2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVu
dFNlY3VyaXR5UG9saWN5OwpAQCAtMTU3LDcgKzE2Miw3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjCiAgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKICAgICAgICAgV1RGTW92
ZSgqcmVnaXN0cmF0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdCksCisgICAgICAgIFdURk1vdmUoKnNjcmlwdCks
CiAgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCiAgICAgICAgIFdURk1vdmUoY29u
dGVudFNlY3VyaXR5UG9saWN5KSwKICAgICAgICAgV1RGTW92ZShyZWZlcnJlclBvbGljeSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ3MGY0ZjVlNjkzZjI3N2Y2NTU4M2U3YTRl
MDc2MTQ1M2M1NGVmYWQuLmE2ODRjNzIwZjY4M2YzZDEwZjNhMDlkNDI1Mjc0ZTZlZWJlMjY4MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6
CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtlclRocmVh
ZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NW
YWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94
eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5l
Y3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDogV29ya2Vy
VGhyZWFkKHsgZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29ya2VyOiIg
KyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLCBXVEZN
b3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5p
c09uTGluZSgpLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIE1vbm90b25pY1Rp
bWU6Om5vdygpLCB7IH0sIGRhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6
Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdn
ZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJU
aHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigp
LnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlk
ZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCisgICAgOiBXb3JrZXJU
aHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiAr
IEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1v
dmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlz
T25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9ub3RvbmljVGlt
ZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6
T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9TdHJpbmcoZGF0YS5zY3JpcHQp
LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rp
b25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFi
bGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fd29ya2Vy
T2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpKQogICAg
ICwgbV9oZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVz
dCA6IGhlYXJ0QmVhdFRpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGNl
ZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4OTRiMTQuLmQ4ODVhMjM3MGYzMDUyNTk3
MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5j
bHVkZSAiU1dTY3JpcHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpA
QCAtNDksNyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCB1
aW50NjRfdCBzY2hlbWFWZXJzaW9uID0gNTsKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBzY2hlbWFW
ZXJzaW9uID0gNjsKIAogc3RhdGljIGNvbnN0IFN0cmluZyByZWNvcmRzVGFibGVTY2hlbWEoY29u
c3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CkBAIC02MSw3ICs2Miw2IEBAIHN0YXRpYyBjb25zdCBT
dHJpbmcgcmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogICAgICAg
ICAiLCBsYXN0VXBkYXRlQ2hlY2tUaW1lIERPVUJMRSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgogICAgICAgICAiLCB1cGRhdGVWaWFDYWNoZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCiAgICAgICAgICIsIHNjcmlwdFVSTCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwi
Ci0gICAgICAgICIsIHNjcmlwdCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwiCiAgICAg
ICAgICIsIHdvcmtlclR5cGUgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIgogICAgICAg
ICAiLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
IgogICAgICAgICAiLCByZWZlcnJlclBvbGljeSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZB
SUwiCkBAIC0xMDcsNiArMTA3LDU2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbk9sZERhdGFi
YXNlcyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBkYXRhYmFzZUZpbGVuYW1lRnJvbVZlcnNpb24odmVy
c2lvbikpKTsKIH0KIAorc3RydWN0IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcyB7CisgICAgVVJM
IHJlc3BvbnNlVVJMOworICAgIFN0cmluZyBtaW1lVHlwZTsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBlOworICAgIH0KKworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxJbXBvcnRlZFNjcmlwdEF0dHJp
YnV0ZXM+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsKKyAgICAg
ICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKKyAgICAgICAgZGVjb2RlciA+PiBt
aW1lVHlwZTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICBXVEZNb3ZlKCpyZXNw
b25zZVVSTCksCisgICAgICAgICAgICBXVEZNb3ZlKCptaW1lVHlwZSkKKyAgICAgICAgfX07Cisg
ICAgfQorfTsKKworc3RhdGljIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+
IHN0cmlwU2NyaXB0U291cmNlcyhjb25zdCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mIG1hcCkKK3sKKyAgICBIYXNoTWFwPFVSTCwgSW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzPiBtYXBXaXRob3V0U2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtYXApCisgICAgICAgIG1hcFdpdGhvdXRTY3JpcHRzLmFkZChwYWlyLmtleSwgSW1wb3J0
ZWRTY3JpcHRBdHRyaWJ1dGVzIHsgcGFpci52YWx1ZS5yZXNwb25zZVVSTCwgcGFpci52YWx1ZS5t
aW1lVHlwZSB9KTsKKyAgICByZXR1cm4gbWFwV2l0aG91dFNjcmlwdHM7Cit9CisKK3N0YXRpYyBI
YXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gcG9w
dWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soU1dTY3JpcHRTdG9yYWdlJiBzY3JpcHRTdG9yYWdl
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIEhh
c2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+JiYgbWFwKQoreworICAgIEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiBpbXBvcnRl
ZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDogbWFwKSB7CisgICAgICAgIGF1dG8gaW1w
b3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnJldHJpZXZlKHJlZ2lzdHJhdGlvbktleSwgcGFp
ci5rZXkpOworICAgICAgICBpZiAoIWltcG9ydGVkU2NyaXB0KSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnBvcHVs
YXRlU2NyaXB0U291cmNlc0Zyb21EaXNrOiBGYWlsZWQgdG8gcmV0cmlldmUgaW1wb3J0ZWQgc2Ny
aXB0IGZvciAlcyBmcm9tIGRpc2siLCBwYWlyLmtleS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGltcG9ydGVkU2NyaXB0
cy5hZGQocGFpci5rZXksIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQg
eyBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSwgV1RGTW92ZShwYWlyLnZhbHVlLnJlc3BvbnNlVVJM
KSwgV1RGTW92ZShwYWlyLnZhbHVlLm1pbWVUeXBlKSB9KTsKKyAgICB9CisgICAgcmV0dXJuIGlt
cG9ydGVkU2NyaXB0czsKK30KKwogUmVnaXN0cmF0aW9uRGF0YWJhc2U6OlJlZ2lzdHJhdGlvbkRh
dGFiYXNlKFJlZ2lzdHJhdGlvblN0b3JlJiBzdG9yZSwgU3RyaW5nJiYgZGF0YWJhc2VEaXJlY3Rv
cnkpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiU2VydmljZVdvcmtlciBJ
L08gVGhyZWFkIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwpKQogICAgICwgbV9zdG9yZShtYWtl
V2Vha1B0cihzdG9yZSkpCkBAIC0xMjQsOSArMTc0LDkgQEAgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
On5SZWdpc3RyYXRpb25EYXRhYmFzZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIC8vIFRoZSBkYXRhYmFzZSBuZWVkcyB0byBiZSBkZXN0cm95ZWQgb24gdGhlIGJhY2tn
cm91bmQgdGhyZWFkLgotICAgIGlmIChtX2RhdGFiYXNlKQotICAgICAgICBtX3dvcmtRdWV1ZS0+
ZGlzcGF0Y2goW2RhdGFiYXNlID0gV1RGTW92ZShtX2RhdGFiYXNlKV0geyB9KTsKKyAgICAvLyBU
aGUgZGF0YWJhc2UgJiBzY3JpcHRTdG9yYWdlIG5lZWQgdG8gYmUgZGVzdHJveWVkIG9uIHRoZSBi
YWNrZ3JvdW5kIHRocmVhZC4KKyAgICBpZiAobV9kYXRhYmFzZSB8fCBtX3NjcmlwdFN0b3JhZ2Up
CisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbZGF0YWJhc2UgPSBXVEZNb3ZlKG1fZGF0
YWJhc2UpLCBzY3JpcHRTdG9yYWdlID0gV1RGTW92ZShtX3NjcmlwdFN0b3JhZ2UpXSB7IH0pOwog
fQogCiB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpwb3N0VGFza1RvV29ya1F1ZXVlKEZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQpAQCAtMTg1LDYgKzIzNSwxOSBAQCBib29sIFJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1N0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6c2Ny
aXB0U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kYXRhYmFzZURpcmVjdG9yeSwgeyAiU2NyaXB0cyIs
ICJWMSIgfSk7Cit9CisKK1NXU2NyaXB0U3RvcmFnZSYgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OnNj
cmlwdFN0b3JhZ2UoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGlmICgh
bV9zY3JpcHRTdG9yYWdlKQorICAgICAgICBtX3NjcmlwdFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFNX
U2NyaXB0U3RvcmFnZT4oc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gKm1f
c2NyaXB0U3RvcmFnZTsKK30KKwogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVj
b3Jkc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTMz
Myw4ICszOTYsMTAgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6Y2xlYXJBbGwoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKIHsKICAgICBwb3N0VGFza1Rv
V29ya1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBtX2RhdGFiYXNlID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9zY3JpcHRTdG9yYWdlID0gbnVsbHB0cjsKIAogICAgICAgICBTUUxpdGVGaWxlU3lzdGVt
OjpkZWxldGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkoc2NyaXB0U3RvcmFnZURpcmVjdG9yeSgpKTsK
ICAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShk
YXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsKIAogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTM1MiwxMiArNDE3LDEzIEBAIGJv
b2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMoY29uc3QgVmVjdG9yPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24o
Km1fZGF0YWJhc2UpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBTUUxpdGVTdGF0
ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICBTUUxpdGVTdGF0ZW1l
bnQgc3FsKCptX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKICAgICBpZiAoc3FsLnByZXBhcmUoKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwg
IkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBp
bnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAorICAgIGF1dG8mIHNjcmlwdFN0b3JhZ2UgPSB0aGlzLT5zY3JpcHRTdG9yYWdlKCk7CiAgICAg
Zm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiByZW1vdmVkUmVnaXN0cmF0aW9ucykgewogICAgICAg
ICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX2RhdGFiYXNlLCAiREVMRVRFIEZST00gUmVjb3JkcyBX
SEVSRSBrZXkgPSA/Iik7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSwpA
QCAtMzY2LDE0ICs0MzIsMTcgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hh
bmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gcmVtb3ZlIHJlZ2lz
dHJhdGlvbiBkYXRhIGZyb20gcmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHNjcmlwdFN0b3JhZ2UuY2xlYXIocmVnaXN0
cmF0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGRhdGEgOiB1cGRhdGVkUmVnaXN0cmF0
aW9ucykgewogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGNzcEVuY29kZXI7CiAg
ICAgICAgIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LmVuY29kZShjc3BFbmNvZGVyKTsKIAor
ICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBlbmNvZGUgdGhlIHNjcmlwdCBzb3VyY2VzIHRv
IHRoZSBkYXRhYmFzZS4gVGhleSB3aWxsIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGluIHRoZSBTY3Jp
cHRTdG9yYWdlLgorICAgICAgICAvLyBBcyBhIHJlc3VsdCwgd2UgbmVlZCB0byBzdHJpcCB0aGUg
c2NyaXB0IHNvdXJjZXMgaGVyZSBiZWZvcmUgZW5jb2RpbmcgdGhlIHNjcmlwdFJlc291cmNlTWFw
LgogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIHNjcmlwdFJlc291cmNlTWFwRW5j
b2RlcjsKLSAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyIDw8IGRhdGEuc2NyaXB0UmVz
b3VyY2VNYXA7CisgICAgICAgIHNjcmlwdFJlc291cmNlTWFwRW5jb2RlciA8PCBzdHJpcFNjcmlw
dFNvdXJjZXMoZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCk7CiAKICAgICAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RW5jb2RlciBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyOwogICAgICAgICBjZXJ0aWZpY2F0
ZUluZm9FbmNvZGVyIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwpAQCAtMzg1LDIxICs0NTQsMzYg
QEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgICAgIHx8IHNxbC5iaW5kRG91Ymxl
KDUsIGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCku
dmFsdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoNiwgdXBk
YXRlVmlhQ2FjaGVUb1N0cmluZyhkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSkpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJM
LnN0cmluZygpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC5iaW5kVGV4dCg4LCBk
YXRhLnNjcmlwdCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZFRleHQoOSwg
d29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9PSwotICAgICAg
ICAgICAgfHwgc3FsLmJpbmRCbG9iKDEwLCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVy
LmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwuYmluZFRleHQo
MTEsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3Fs
LmJpbmRCbG9iKDEyLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJl
c291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgc3FsLmJpbmRCbG9iKDEzLCBjZXJ0aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlcigpLCBjZXJ0
aWZpY2F0ZUluZm9FbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAg
ICB8fCBzcWwuYmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRCbG9iKDksIGNzcEVuY29kZXIu
YnVmZmVyKCksIGNzcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHNxbC5iaW5kVGV4dCgxMCwgZGF0YS5yZWZlcnJlclBvbGljeSkgIT0gU1FMSVRFX09L
CisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTEsIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rl
ci5idWZmZXIoKSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FM
SVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMTIsIGNlcnRpZmljYXRlSW5mb0Vu
Y29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gc3Rv
cmUgcmVnaXN0cmF0aW9uIGRhdGEgaW50byByZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG1fZGF0
YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICAvLyBTYXZlIHNjcmlwdHMg
dG8gZGlzay4KKyAgICAgICAgYXV0byBtYWluU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShk
YXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEuc2NyaXB0VVJMLCBkYXRhLnNjcmlwdCk7CisgICAg
ICAgIEFTU0VSVChtYWluU2NyaXB0KTsKKyAgICAgICAgaWYgKCFtYWluU2NyaXB0KQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGltcG9ydGVkU2NyaXB0czsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGF0YS5z
Y3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNj
cmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtleSwgKnBhaXIu
dmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlwdCk7CisgICAg
ICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCisgICAgICAgICAgICAgICAgaW1wb3J0ZWRTY3Jp
cHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0
KSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRhdGEuc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQgPSBtYWluU2NyaXB0LnJlbGVhc2VOb25O
dWxsKCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmIChtX3N0b3JlKQorICAgICAgICAgICAgICAgIG1fc3RvcmUt
PmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZN
b3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworICAgICAgICB9KTsK
ICAgICB9CiAKICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKLQotICAgIExPRyhTZXJ2aWNlV29y
a2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFk
ZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBhbmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIs
IHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUoKSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgp
KTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiVXBkYXRlZCBTZXJ2aWNlV29ya2Vy
IHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSAoJXp1IGFkZGVkL3VwZGF0ZWQgcmVnaXN0cmF0aW9ucyBh
bmQgJXp1IHJlbW92ZWQgcmVnaXN0cmF0aW9ucyIsIHVwZGF0ZWRSZWdpc3RyYXRpb25zLnNpemUo
KSwgcmVtb3ZlZFJlZ2lzdHJhdGlvbnMuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDA3LDYgKzQ5MSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVj
b3JkcygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKKyAgICBSRUxFQVNFX0xP
RyhTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6Iik7
CiAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gUmVj
b3JkczsiX3MpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBwcmVwYXJlIHN0YXRlbWVudCB0byByZXRyaWV2
ZSByZWdpc3RyYXRpb25zIGZyb20gcmVjb3JkcyB0YWJsZSAoIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yKCksICIpIC0gIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwpAQCAtNDE0LDYgKzQ5
OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAg
aW50IHJlc3VsdCA9IHNxbC5zdGVwKCk7CiAKICAgICBmb3IgKDsgcmVzdWx0ID09IFNRTElURV9S
T1c7IHJlc3VsdCA9IHNxbC5zdGVwKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBJbXBvcnRpbmcgYSBy
ZWdpc3RyYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgYXV0byBrZXkgPSBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkoc3FsLmdldENvbHVtblRl
eHQoMCkpOwogICAgICAgICBhdXRvIG9yaWdpblVSTCA9IFVSTCB7IFVSTCgpLCBzcWwuZ2V0Q29s
dW1uVGV4dCgxKSB9OwogICAgICAgICBhdXRvIHNjb3BlUGF0aCA9IHNxbC5nZXRDb2x1bW5UZXh0
KDIpOwpAQCAtNDIyLDUyICs1MDgsNjggQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byBsYXN0VXBkYXRlQ2hlY2tUaW1lID0gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKHNxbC5nZXRDb2x1bW5Eb3VibGUoNCkpOwogICAgICAgICBhdXRv
IHVwZGF0ZVZpYUNhY2hlID0gc3RyaW5nVG9VcGRhdGVWaWFDYWNoZShzcWwuZ2V0Q29sdW1uVGV4
dCg1KSk7CiAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gVVJMIHsgVVJMKCksIHNxbC5nZXRDb2x1
bW5UZXh0KDYpIH07Ci0gICAgICAgIGF1dG8gc2NyaXB0ID0gc3FsLmdldENvbHVtblRleHQoNyk7
Ci0gICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwuZ2V0Q29s
dW1uVGV4dCg4KSk7CisgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlw
ZShzcWwuZ2V0Q29sdW1uVGV4dCg3KSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnRl
bnRTZWN1cml0eVBvbGljeURhdGE7Ci0gICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3Io
OSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CisgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9i
QXNWZWN0b3IoOCwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YSk7CiAgICAgICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhLmRh
dGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5RGF0YS5zaXplKCkpOwogICAgICAgICBPcHRpb25h
bDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRTZWN1cml0eVBv
bGljeTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGEuc2l6ZSgpKSB7CiAg
ICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICAgICAg
ICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICAgICAgaWYgKCFjb250ZW50
U2VjdXJpdHlQb2xpY3kpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2
aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0
byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJlZmVycmVyUG9s
aWN5ID0gc3FsLmdldENvbHVtblRleHQoMTApOworICAgICAgICBhdXRvIHJlZmVycmVyUG9saWN5
ID0gc3FsLmdldENvbHVtblRleHQoOSk7CiAKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNjcmlw
dFJlc291cmNlTWFwRGF0YTsKLSAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMSwg
c2NyaXB0UmVzb3VyY2VNYXBEYXRhKTsKLSAgICAgICAgT3B0aW9uYWw8SGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+PiBzY3JpcHRSZXNvdXJjZU1h
cDsKKyAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3RvcigxMCwgc2NyaXB0UmVzb3VyY2VN
YXBEYXRhKTsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogCiAgICAgICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFw
RGF0YS5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0YS5zaXplKCkpOwogICAgICAgICBpZiAo
c2NyaXB0UmVzb3VyY2VNYXBEYXRhLnNpemUoKSkgewotICAgICAgICAgICAgc2NyaXB0UmVzb3Vy
Y2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwOwotICAgICAgICAgICAgaWYgKCFzY3Jp
cHRSZXNvdXJjZU1hcCkKKyAgICAgICAgICAgIE9wdGlvbmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRl
ZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzOworICAg
ICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwV2l0
aG91dFNjcmlwdHM7CisgICAgICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNj
cmlwdHMpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUg
c2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cyIpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXAgPSBwb3B1
bGF0ZVNjcmlwdFNvdXJjZXNGcm9tRGlzayhzY3JpcHRTdG9yYWdlKCksICprZXksIFdURk1vdmUo
KnNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpKTsKICAgICAgICAgfQogCiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUluZm9EYXRhOwotICAgICAgICBzcWwuZ2V0Q29s
dW1uQmxvYkFzVmVjdG9yKDEyLCBjZXJ0aWZpY2F0ZUluZm9EYXRhKTsKKyAgICAgICAgc3FsLmdl
dENvbHVtbkJsb2JBc1ZlY3RvcigxMSwgY2VydGlmaWNhdGVJbmZvRGF0YSk7CiAgICAgICAgIE9w
dGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCiAgICAgICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUlu
Zm9EYXRhLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YS5zaXplKCkpOwogICAgICAgICBjZXJ0
aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKLSAgICAgICAgaWYgKCFjZXJ0
aWZpY2F0ZUluZm8pCisgICAgICAgIGlmICghY2VydGlmaWNhdGVJbmZvKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY2VydGlmaWNhdGVJbmZvIik7CiAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoZSBp
bnB1dCBmb3IgdGhpcyByZWdpc3RyYXRpb24uCiAgICAgICAgIC8vIElmIGFueSBwYXJ0IG9mIHRo
aXMgaW5wdXQgaXMgaW52YWxpZCwgbGV0J3Mgc2tpcCB0aGlzIHJlZ2lzdHJhdGlvbi4KICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXR1cm4gYW4gZXJyb3Igc2tpcHBpbmcgKmFsbCogcmVn
aXN0cmF0aW9ucz8KLSAgICAgICAgaWYgKCFrZXkgfHwgIW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwg
IXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwgIXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwg
IXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgaWYgKCFrZXkgfHwg
IW9yaWdpblVSTC5pc1ZhbGlkKCkgfHwgIXRvcE9yaWdpbiB8fCAhdXBkYXRlVmlhQ2FjaGUgfHwg
IXNjcmlwdFVSTC5pc1ZhbGlkKCkgfHwgIXdvcmtlclR5cGUgfHwgIXNjb3BlVVJMLmlzVmFsaWQo
KSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIHBhcnQgb2Yg
dGhlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvIHNjcmlwdCA9IHNjcmlwdFN0b3JhZ2UoKS5yZXRyaWV2ZSgqa2V5LCBzY3Jp
cHRVUkwpOworICAgICAgICBBU1NFUlQoc2NyaXB0KTsKKyAgICAgICAgaWYgKCFzY3JpcHQpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRp
b25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIHJldHJpZXZlIG1haW4gc2NyaXB0
IGZvciAlcyBmcm9tIGRpc2siLCBzY3JpcHRVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gd29ya2VySWRl
bnRpZmllciA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBh
dXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNl
cnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29y
a2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
fTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2Nv
cGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBh
dXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0
LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0
KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9s
aWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtl
clR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRv
IGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5yZWxlYXNlTm9u
TnVsbCgpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJp
dHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAq
d29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKIAogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRl
eHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdURk1vdmUoY29udGV4
dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaAppbmRleCBkNmFlZDZiNDBlNjA0NjI2ZTNh
MWZmYmMzNWViYTQzMTJlOGVjN2RhLi41NzA3NTI2Njk2MjFkYjM0Mjg3N2FmMzRjNzFlNDViOThi
OTBhMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVnaXN0cmF0aW9uU3RvcmU7CiBjbGFzcyBTUUxpdGVE
YXRhYmFzZTsKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKQEAg
LTcyLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydFJlY29yZHNJZk5lY2Vzc2Fy
eSgpOwogICAgIGJvb2wgZG9QdXNoQ2hhbmdlcyhjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiYsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiYp
OwogICAgIHZvaWQgZG9DbGVhck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOworICAgIFNX
U2NyaXB0U3RvcmFnZSYgc2NyaXB0U3RvcmFnZSgpOworICAgIFN0cmluZyBzY3JpcHRTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBSZXBsaWVzIHRvIHRoZSBtYWluIHRocmVhZC4K
ICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYpOwpAQCAtODAsNiArODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93
b3JrUXVldWU7CiAgICAgV2Vha1B0cjxSZWdpc3RyYXRpb25TdG9yZT4gbV9zdG9yZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1dTY3JpcHRTdG9yYWdlPiBtX3NjcmlwdFN0b3JhZ2U7CiAgICAgU3Ry
aW5nIG1fZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VGaWxlUGF0aDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uU3RvcmUuY3BwCmluZGV4IDBiYTg4NzE5ZjM0ZjRhY2FiYTI5MWZkMmE0M2IzZWI0MDE2MTQz
OGEuLjkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2IyMmFmYjBlMDU3NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uU3RvcmUuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBAIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6
OmFkZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBk
CiAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFdURk1vdmUoZGF0YSkpOwog
fQogCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIG1fc2VydmVyLmRpZFNhdmVXb3JrZXJTY3JpcHRz
VG9EaXNrKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZN
b3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkYXRh
YmFzZUZhaWxlZFRvT3BlbigpCiB7CiAgICAgbV9zZXJ2ZXIucmVnaXN0cmF0aW9uU3RvcmVEYXRh
YmFzZUZhaWxlZFRvT3BlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCmluZGV4IDc1NDNlYzEzYjNkY2Y3
MTA4YjQyMTFkNjZlMDFjODc3MDA3Y2U5NzguLjI2ODc4Y2VlYjBlMmY2MDdlNzA3ZTdiYjQwMWZl
NDIxY2QxMWU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNlKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYmKTsKICAgICB2b2lkIGRhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CiAgICAgdm9pZCBk
YXRhYmFzZU9wZW5lZEFuZFJlY29yZHNJbXBvcnRlZCgpOworICAgIHZvaWQgZGlkU2F2ZVdvcmtl
clNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9y
dGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGEzNTg2YTE2N2EyNzcxZjFmZTJm
MTM0OTczNzYzNzA1NjNiNmRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0wLDAgKzEsMTQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXU2NyaXB0U3Rv
cmFnZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KKyNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIHNob3VsZFVzZUZpbGVNYXBwaW5n
KHNpemVfdCBmaWxlU2l6ZSkKK3sKKyAgICByZXR1cm4gZmlsZVNpemUgPj0gcGFnZVNpemUoKTsK
K30KKworU1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnkpCisgICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCisgICAgLCBtX3NhbHQoRmlsZVN5
c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVPcihGaWxlU3lzdGVtOjpTYWx0
KCkpKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworfQorCitTdHJpbmcgU1dTY3Jp
cHRTdG9yYWdlOjpzaGEySGFzaChjb25zdCBTdHJpbmcmIGlucHV0KSBjb25zdAoreworICAgIGF1
dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBjcnlwdG8tPmFkZEJ5dGVzKG1fc2FsdC5kYXRhKCks
IG1fc2FsdC5zaXplKCkpOworICAgIGF1dG8gaW5wdXRVdGY4ID0gaW5wdXQudXRmOCgpOworICAg
IGNyeXB0by0+YWRkQnl0ZXMoaW5wdXRVdGY4LmRhdGEoKSwgaW5wdXRVdGY4Lmxlbmd0aCgpKTsK
KyAgICBhdXRvIGhhc2ggPSBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7CisgICAgcmV0dXJuIFdURjo6
YmFzZTY0VVJMRW5jb2RlKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7Cit9CisKK1N0cmluZyBT
V1NjcmlwdFN0b3JhZ2U6OnNoYTJIYXNoKGNvbnN0IFVSTCYgaW5wdXQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNoYTJIYXNoKGlucHV0LnN0cmluZygpKTsKK30KKworU3RyaW5nIFNXU2NyaXB0U3Rv
cmFnZTo6c2FsdFBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobV9kaXJlY3RvcnksICJzYWx0Iik7Cit9CisKK1N0cmluZyBTV1Nj
cmlwdFN0b3JhZ2U6OnJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9kaXJlY3RvcnksIHsgc2hhMkhhc2go
cmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLnRvU3RyaW5nKCkpLCBzaGEySGFzaChyZWdpc3Ry
YXRpb25LZXkuc2NvcGUoKSkgfSk7Cit9CisKK1N0cmluZyBTV1NjcmlwdFN0b3JhZ2U6OnNjcmlw
dFBhdGgoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRp
b25LZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFyZWRCdWZm
ZXImIHNjcmlwdCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8g
c2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwp
OworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKHNjcmlwdFBhdGgpKTsKKworICAgIGF1dG8gaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0
ZURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4m
IHdyaXRlRGF0YSkgeworICAgICAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYmVnaW4oKTsgaXQg
IT0gc2NyaXB0LmVuZCgpOyArK2l0KQorICAgICAgICAgICAgd3JpdGVEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGl0LT5zZWdtZW50LT5kYXRhKCkpLCBpdC0+c2VnbWVudC0+
c2l6ZSgpKTsKKyAgICB9OworCisgICAgaWYgKCFzaG91bGRVc2VGaWxlTWFwcGluZyhzY3JpcHQu
c2l6ZSgpKSkgeworICAgICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHNj
cmlwdFBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgICAgICBpZiAo
IUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1
cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om9wZW5GaWxlKCkgZmFpbGVkIiwgc2NyaXB0UGF0
aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CisgICAgICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKFsmXShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoaGFuZGxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICByZXR1cm4gc2NyaXB0LmNvcHkoKTsKKyAgICB9
CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgZGVsZXRlIHRoZSBmaWxlIGJlZm9yZSB3cml0aW5nIGFz
IHRoZXJlIG1heSBiZSBjb2RlIHVzaW5nIGEgbW1hcCdkIHZlcnNpb24gb2YgdGhpcyBmaWxlLgor
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2NyaXB0UGF0aCk7CisgICAgYXV0byBtYXBwZWRG
aWxlID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHNjcmlwdFBhdGgsIHNjcmlwdC5zaXplKCksIFdU
Rk1vdmUoaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEpKTsKKyAgICBpZiAoIW1hcHBlZEZp
bGUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0
U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om1hcFRvRmls
ZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSht
YXBwZWRGaWxlKSk7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNXU2NyaXB0U3RvcmFnZTo6
cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKworICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9u
S2V5LCBzY3JpcHRVUkwpOworICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7CisgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShzY3JpcHRQYXRoLCBmaWxlU2l6ZSkpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6cmV0cmll
dmU6IEZhaWx1cmUgdG8gcmV0cmlldmUgJXMsIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKCkgZmFp
bGVkIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBp
bmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9y
cyBvcGVuPworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxk
VXNlRmlsZU1hcHBpbmcoZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGlu
Zzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworfQorCit2b2lk
IFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXN0cmF0aW9uS2V5KQoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0g
dGhpcy0+cmVnaXN0cmF0aW9uRGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSk7CisgICAgYm9vbCBy
ZXN1bHQgPSBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShyZWdpc3RyYXRpb25E
aXJlY3RvcnkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKCFyZXN1bHQsIFNlcnZpY2VXb3Jr
ZXIsICJTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyOiBGYWlsdXJlIHRvIGNsZWFyIHNjcmlwdHMgZm9y
IHJlZ2lzdHJhdGlvbiAlcyIsIHJlZ2lzdHJhdGlvbktleS50b0RhdGFiYXNlS2V5KCkudXRmOCgp
LmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ZjAxMzBjNWU1ODY5
OWZjMGQyNTdhNmViOTcwNGI0NzU2MDM4NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CisKK2NsYXNzIFNXU2NyaXB0U3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVk
QnVmZmVyJiBzY3JpcHQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7Cisg
ICAgdm9pZCBjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisKK3By
aXZhdGU6CisgICAgU3RyaW5nIHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JikgY29uc3Q7CisgICAgU3RyaW5nIHNjcmlwdFBhdGgoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKSBjb25z
dDsKKyAgICBTdHJpbmcgc2FsdFBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgc2hhMkhhc2goY29u
c3QgU3RyaW5nJikgY29uc3Q7CisgICAgU3RyaW5nIHNoYTJIYXNoKGNvbnN0IFVSTCYpIGNvbnN0
OworCisgICAgU3RyaW5nIG1fZGlyZWN0b3J5OworICAgIEZpbGVTeXN0ZW06OlNhbHQgbV9zYWx0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcAppbmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5N2Q2NGYxZDY1ODY5
NGIzLi5kY2UyMDE2ZmMxNTM4MzAwZmZhYTExNzU5ZWFlMzM0MDhjNGY5ZTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAt
MTc2LDYgKzE3NiwxMiBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICB9KTsKIH0KIAordm9pZCBTV1Nl
cnZlcjo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwg
SGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3sK
KyAgICBpZiAoYXV0byB3b3JrZXIgPSB3b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSkKKyAgICAgICAgd29ya2VyLT5kaWRTYXZlU2NyaXB0c1RvRGlzayhXVEZNb3ZlKG1haW5TY3Jp
cHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorCiB2b2lkIFNXU2VydmVyOjphZGRS
ZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lz
dHJhdGlvbikKIHsKICAgICBtX29yaWdpblN0b3JlLT5hZGQocmVnaXN0cmF0aW9uLT5rZXkoKS50
b3BPcmlnaW4oKSk7CkBAIC02MzMsNyArNjM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xp
ZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIK
IAogdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewotICAg
IHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRh
SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6
OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291
cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQp
LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ks
IHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOwogfQogCiB2
b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaAppbmRleCBiYTFiNDEzNTAzNTQwZGNlODg1Y2Q0NDhiM2Y3YzA0MjhkYjhjYjE3
Li43OTZiZTg1ZTNlNTQ3NzI2ODZlOTU0ODA4NDVmMDQ1NDhjNWQ5NTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xOTAsNiAr
MTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVz
dHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uRnJv
bVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKKyAgICB2b2lkIGRpZFNhdmVXb3Jr
ZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBv
cnRlZFNjcmlwdHMpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgp
OwogICAgIHZvaWQgcmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Sm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcAppbmRleCA4MDJhNDgwMTE1MWE3MjhmYmM1YTJhNjkxMjRkYjk2M2M3
NzJjYjBhLi41Y2EyNTI2OTExNDUzZGIwOGYxZjhmMjgzMmRiYzQwNDVlNjRhYTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6
OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1
bAogICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgbmV3ZXN0V29ya2VyJ3Mgc2Ny
aXB0IHVybCBlcXVhbHMgam9iJ3Mgc2NyaXB0IHVybCB3aXRoIHRoZSBleGNsdWRlIGZyYWdtZW50
cwogICAgIC8vIGZsYWcgc2V0LCBhbmQgc2NyaXB0J3Mgc291cmNlIHRleHQgaXMgYSBieXRlLWZv
ci1ieXRlIG1hdGNoIHdpdGggbmV3ZXN0V29ya2VyJ3Mgc2NyaXB0IHJlc291cmNlJ3Mgc291cmNl
CiAgICAgLy8gdGV4dCwgdGhlbjoKLSAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlw
dFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0
LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2go
cmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkp
IHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29y
a2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBzY3JpcHRC
dWZmZXJUb1N0cmluZyhuZXdlc3RXb3JrZXItPnNjcmlwdCgpKSAmJiBkb0NlcnRpZmljYXRlc01h
dGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJbmZv
KCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNhdGUgYXJl
IG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5p
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9uIGNsYXNz
aWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtbRUNNQVNj
cmlwdENvZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDJiOGZmNjg1ZTA0OTc5ZmNkYzczZTczMjBkZjNmNGRhNjRjNzYyZGYuLjEyMDA1MTY5OGJm
OTM5ODE4ZTRkNDNlODVjNjk1NzMwMGJhN2RjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMCArMTE2LDEwIEBAIHZvaWQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29yCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlw
dCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKQordm9pZCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OnNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJiBzY3JpcHQpCiB7CiAgICAgaWYgKGF1dG8q
IHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNl
KFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUobWlt
ZVR5cGUpIH0pOworICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNlKFdURk1vdmUoc2Ny
aXB0VVJMKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNDY1
OWY5ZjlmYTZjNmJhYThkZTk2OGQzOTE1ZmUzM2M0ZTMxMjY2OC4uOWJlMzQ0NDkxZjA2MTNmYWUx
NDBlNzk4NTFiNzEwYTNiMzJiMmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmll
ciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9u
RGF0YT4mJik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2Uo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYmIHNjcmlwdFVSTCwgU3RyaW5nJiYgc2NyaXB0
LCBVUkwmJiByZXNwb25zZVVSTCwgU3RyaW5nJiYgbWltZVR5cGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCYm
IHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCmluZGV4IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlhNjY3MDUuLjYx
M2JiNzJjNTg4ZDhhMTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3Rp
bmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9CiAKIC8vIEZJWE1F
OiBVc2Ugci12YWx1ZSByZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRlbnRTZWN1cml0eVBv
bGljeQotU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK1NX
U2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgU2hhcmVkQnVm
ZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgOiBtX3Nl
cnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0
cmF0aW9uLmtleSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQdHIocmVnaXN0cmF0
aW9uKSkKQEAgLTIzOCw2ICsyMzgsMjEgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0U2NyaXB0
UmVzb3VyY2UoVVJMJiYgdXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG8KICAgICBt
X3NjcmlwdFJlc291cmNlTWFwLnNldChXVEZNb3ZlKHVybCksIFdURk1vdmUoc2NyaXB0KSk7CiB9
CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
IGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICAvLyBUaGUgc2NyaXB0cyB3ZXJlIHNhdmVkIHRvIGRp
c2ssIHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdkIHZlcnNpb24gdG8gc2F2ZSBt
ZW1vcnkuCisgICAgQVNTRVJUKG1haW5TY3JpcHQuZ2V0KCkgPT0gbV9zY3JpcHQuZ2V0KCkpOyAv
LyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KKyAg
ICBtX3NjcmlwdCA9IFdURk1vdmUobWFpblNjcmlwdCk7CisgICAgZm9yIChhdXRvJiBwYWlyIDog
aW1wb3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX3NjcmlwdFJlc291cmNlTWFw
LmZpbmQocGFpci5rZXkpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV9zY3JpcHRSZXNvdXJjZU1h
cC5lbmQoKSk7CisgICAgICAgIGlmIChpdCA9PSBtX3NjcmlwdFJlc291cmNlTWFwLmVuZCgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9
PSAqcGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBh
cmUgaWRlbnRpY2FsLgorICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShwYWlyLnZh
bHVlKTsKKyAgICB9Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNraXBXYWl0aW5nKCkKIHsK
ICAgICBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAzNzhm
YmE2NTdlOGJiZjQ4NDFlNTZjYmY4NjU2MWY4ZWNjMzExMDIwLi5jNDVkYWRiY2FiODE5NzZiNzZm
MGJlNTMxNGYzYjcxZjc3YjZiMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXIuZ2V0KCk7IH0K
ICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXko
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVSTCYgc2Ny
aXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsgfQotICAgIGNvbnN0IFN0
cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KKyAgICBTaGFyZWRCdWZm
ZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS50eXBl
OyB9CiAKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29u
c3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICB2b2lkIG1hdGNo
QWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShV
UkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKKyAgICB2
b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwg
SGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CiAK
ICAgICB2b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBpc1NraXBXYWl0aW5nRmxhZ1NldCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0KQEAgLTEyNyw3ICsxMjgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIAogcHJpdmF0
ZToKLSAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOworICAg
IFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQ
b2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKICAgICB2b2lk
IGNhbGxXaGVuQWN0aXZhdGVkSGFuZGxlcihib29sIHN1Y2Nlc3MpOwogCkBAIC0xNDAsNyArMTQx
LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0
cmF0aW9uS2V5OwogICAgIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0
aW9uOwogICAgIFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0YTsKLSAgICBTdHJpbmcgbV9zY3JpcHQ7
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9zY3JpcHQ7CiAgICAgQ2VydGlmaWNhdGVJbmZvIG1f
Y2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCmluZGV4IGYzYjc1YTVlYmEzZmQ3M2Y1MjY4NDQ2MTIzOTc4NWU1NDQ2
OTM3YTIuLmQ4ZDk0MzQwODQ1ZGQ4NWIzNmRjODkyOWFiMWU2MjcxODg5MzI4OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpAQCAtMzUsNyArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmluZENsaWVudEJ5SWRlbnRpZmll
cih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogICAgIE1hdGNoQWxsKHVpbnQ2
NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4gKE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkgQXN5bmMKLSAgICBTZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2Ny
aXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSkK
KyAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VP
cmlnaW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggYWI3YWJjMjU3
NjVhZDQyOGYyYTE1N2M2MTc5NGQyMjU4NjE3YmI0Ny4uYzkyODY2YmYyMWQ0NWIwYjFiNTBkYmFl
NzE2NzJmNzRkMTZiMTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBA
IHVpbnQ2NF90IEVuZ2luZTo6ZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBTdHJpbmcg
c2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgs
ICJzYWx0Il9zKTsKLSAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0UGF0aCk7Cisg
ICAgYXV0byBzYWx0ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpOwogICAg
IGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lk
IEVuZ2luZTo6aW5pdGlhbGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBt
X2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBy
b290UGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocm9vdFBhdGgpOwogICAgICAgICBTdHJp
bmcgc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBh
dGgsICJzYWx0Il9zKTsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzYWx0ID0gcmVhZE9yTWFrZVNhbHQoc2FsdFBh
dGgpXSgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JN
YWtlU2FsdChzYWx0UGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgRW5n
aW5lOjpjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFNpemVGaWxl
TG9jayk7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KHBhdGgsICIqIikpIHsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlSXNE
aXJlY3RvcnkoZmlsZW5hbWUsIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6
Ok5vKSkKLSAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxlbmFt
ZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnko
ZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CkBAIC03NDksMTggKzc0OSwxOCBA
QCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZvbGRlclBhdAogCiAgICAgICAgICAgICAvLyBJZiBjYWNoZSBzYWx0
IGlzIGluaXRpYWxpemVkIGFuZCB0aGUgcGF0aHMgZG8gbm90IG1hdGNoLCBzb21lIGNhY2hlIGZp
bGVzIGhhdmUgcHJvYmFibHkgYmUgcmVtb3ZlZCBvciBwYXJ0aWFsbHkgY29ycnVwdGVkLgogICAg
ICAgICAgICAgQVNTRVJUKCFtX3NhbHQgfHwgZm9sZGVyUGF0aCA9PSBjYWNoZXNSb290UGF0aCgq
Zm9sZGVyT3JpZ2luKSk7Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9u
QmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRoLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92
ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOworICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoZm9sZGVyUGF0aCwgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IFdURk1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAgICAgfSk7CiAgICAg
fQogfQogCi12b2lkIEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91
bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlP
bkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29w
eSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxTaXplRmlsZUxvY2spOwot
ICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShwYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkocGF0aCk7CiAKICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oCmluZGV4IDE5NDRhNWM3OTJkOGQ3OTllMjlkYWJjODQ2NjY3YjY2ODYyYmI3Zjku
LjQ0MDllN2I0OTZhYjhjZjY0NmM5YTBmZmFlZGY1NzM0YzBmZjFlODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbENhY2hlc0Zy
b21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckNhY2hl
c0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlz
ayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tncm91
bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9p
ZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgU3Ry
aW5nIHJlcHJlc2VudGF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA2NmY3NmViMmQ2ZmM3ZDk4
ZGNlOGFlMDYyY2ZiYWYwZmY1MDM2Yjc5Li40OTY4NjE5ZmZjMTY2MzJjZTQzNmUxOTE1M2VjZmI1
NDQ1NzdmOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
PGZjbnRsLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogI2lmICFPUyhXSU5ET1dTKQogI2luY2x1
ZGUgPHN5cy9tbWFuLmg+CkBAIC00MCw0MSArNDEsOSBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKIAogRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAogewot
ICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOwotICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyLCBmYWls
SWZGaWxlRXhpc3RzKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxl
KSB8fCAhRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgbV9zaXplKSkgewotICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9Ci0gICAgCi0gICAgRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgo
cGF0aCk7Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7Ci0gICAgaWYgKCFz
dWNjZXNzKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIHZvaWQqIG1hcCA9IGNvbnN0X2Nhc3Q8dm9pZCo+
KG1hcHBlZEZpbGUuZGF0YSgpKTsKLSAgICB1aW50OF90KiBtYXBEYXRhID0gc3RhdGljX2Nhc3Q8
dWludDhfdCo+KG1hcCk7Ci0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGJ5dGVzU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0YSwgYnl0ZXMsIGJ5
dGVzU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gYnl0ZXNTaXplOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9KTsKLQotI2lmIE9TKFdJTkRPV1MpCi0gICAgRFdPUkQgb2xkUHJvdGVjdGlv
bjsKLSAgICBWaXJ0dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwgRklMRV9NQVBfUkVBRCwgJm9sZFBy
b3RlY3Rpb24pOwotICAgIEZsdXNoVmlld09mRmlsZShtYXAsIG1fc2l6ZSk7Ci0jZWxzZQotICAg
IC8vIERyb3AgdGhlIHdyaXRlIHBlcm1pc3Npb24uCi0gICAgbXByb3RlY3QobWFwLCBtX3NpemUs
IFBST1RfUkVBRCk7Ci0KLSAgICAvLyBGbHVzaCAoYXN5bmNocm9ub3VzbHkpIHRvIGZpbGUsIHR1
cm5pbmcgdGhpcyBpbnRvIGNsZWFuIG1lbW9yeS4KLSAgICBtc3luYyhtYXAsIG1fc2l6ZSwgTVNf
QVNZTkMpOwotI2VuZGlmCi0KKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlOworICAgIGF1dG8gYXBwbHlEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3Qg
dWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVyKSB7IGFwcGx5KGFwcGxpZXIpOyB9OworICAgIGF1
dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShwYXRoLCBzaXplKCksIFdURk1v
dmUoYXBwbHlEYXRhKSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIERhdGE6OmFkb3B0TWFwKFdURk1v
dmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CiB9CiAKQEAgLTEzNSw0MCArMTA0LDUgQEAgYm9vbCBi
eXRlc0VxdWFsKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAgICAgcmV0dXJuICFtZW1j
bXAoYS5kYXRhKCksIGIuZGF0YSgpLCBhLnNpemUoKSk7CiB9CiAKLXN0YXRpYyBTYWx0IG1ha2VT
YWx0KCkKLXsKLSAgICBTYWx0IHNhbHQ7Ci0gICAgc3RhdGljX2Fzc2VydChzYWx0LnNpemUoKSA9
PSA4LCAiU2FsdCBzaXplIik7Ci0gICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPigmc2Fs
dFswXSkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOwotICAgICpyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4oJnNhbHRbNF0pID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIoKTsKLSAgICByZXR1cm4gc2FsdDsKLX0KLQotT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNh
bHQoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHBhdGgpKSB7Ci0gICAgICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7Ci0gICAgICAgIFNhbHQgc2FsdDsKLSAg
ICAgICAgYXV0byBieXRlc1JlYWQgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3Rl
bTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgp
KSwgc2FsdC5zaXplKCkpKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwot
ICAgICAgICBpZiAoYnl0ZXNSZWFkID09IHNhbHQuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJu
IHNhbHQ7Ci0KLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKLSAgICB9Ci0K
LSAgICBTYWx0IHNhbHQgPSBtYWtlU2FsdCgpOwotICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUsIEZpbGVTeXN0
ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyKTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQoZmlsZSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBib29sIHN1Y2Nl
c3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmls
ZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkpLCBzYWx0LnNpemUoKSkpID09
IHNhbHQuc2l6ZSgpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKLSAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gc2FsdDsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
LmgKaW5kZXggZWQxOTFkYzdkZTIyYmE2YmFmODM2OWRlYzhlYzM2YmU4NzAxOGVhNi4uNjc1MjZj
YWQ5NjA3MTRhODhjMWMwOTNlNGE5YzM4ODE0NmI4MGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTExMiw5
ICsxMTIsNyBAQCBEYXRhIGFkb3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCk7CiBEYXRhIG1hcEZpbGUoY29uc3QgY2hhciog
cGF0aCk7CiBEYXRhIG1hcEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAotdXNpbmcgU2FsdCA9
IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47Ci0KLU9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0
KGNvbnN0IFN0cmluZyYgcGF0aCk7Cit1c2luZyBTYWx0ID0gRmlsZVN5c3RlbTo6U2FsdDsKIFNI
QTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiwgY29uc3QgU2FsdCYpOwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCA3YTBlYzVlMTRmMzNkZTA0MmNkZjQ0YjBmYmE0
MjNjYzlkZDdhZmM1Li43YTk5NjE0ZjIzMzViMTUwYzljYWIyMjJjOTM1ZDBiYmVmNjljODBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTYyLDIzICs2Miw2IEBAIHZvaWQgdHJhdmVy
c2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBECiAgICAgfQogfQogCi12b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5
KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBh
dGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAg
ICAgU3RyaW5nIGVudHJ5UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCBuYW1lKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgRGly
ZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0b3J5
RW50cnlUeXBlOjpEaXJlY3Rvcnk6Ci0gICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNp
dmVseShlbnRyeVBhdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8vIFRoaXMgZG9l
c24ndCBmb2xsb3cgc3ltbGlua3MuCi0gICAgICAgIH0KLSAgICB9KTsKLSAgICBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKLX0KLQogRmlsZVRpbWVzIGZpbGVUaW1lcyhj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmgKaW5kZXggN2E1ZjhjYzRmZTM4YTk1NjFjZTFjOGI2MWMxMGM3NDc5Y2E4NzQy
Zi4uYzBiNGU4MWI0NzM3NWEwN2ZmOTliZWI0MjEwZGEwMTU4MjJjNzM1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmgKQEAgLTMzLDggKzMzLDYgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBl
bnVtIGNsYXNzIERpcmVjdG9yeUVudHJ5VHlwZSB7IERpcmVjdG9yeSwgRmlsZSB9Owogdm9pZCB0
cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSk+Jik7CiAKLXZvaWQg
ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKTsKLQogc3RydWN0
IEZpbGVUaW1lcyB7CiAgICAgV2FsbFRpbWUgY3JlYXRpb247CiAgICAgV2FsbFRpbWUgbW9kaWZp
Y2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRkYzBiZTI5ZTBlMmM2ZDIwMjVhOTZi
MjVlYzFlNTZjNDhhZjhkNi4uN2FlZmIzMWMxYWZhNjI3MjQ4NThkODE5NDdhOTFiZDNlOThmNWYx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0
d29ya0NhY2hlSU9DaGFubmVsLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51
bWJlci5oPgpAQCAtMjA2LDcgKzIwNyw3IEBAIFJlZlB0cjxTdG9yYWdlPiBTdG9yYWdlOjpvcGVu
KGNvbnN0IFN0cmluZyYgYmFzZUNhY2hlUGF0aCwgTW9kZSBtb2RlLCBzaXplX3QgY2FwCiAgICAg
aWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoY2FjaGVQYXRoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBz
YWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgpKTsKKyAgICBh
dXRvIHNhbHQgPSBGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChtYWtlU2FsdEZpbGVQYXRoKGNh
Y2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTExOTMsNyArMTE5NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQogICAg
ICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjYWNoZVBhdGgsIHN1YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdv
cmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJz
aW9uLCBwYXRoICVzIiwgb2xkVmVyc2lvblBhdGgudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAg
ICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG9sZFZlcnNpb25QYXRoKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5ZTMxMjk3MTk2ZGExMTU1ZjBiMjJjMzE4MGEwM2M4
MzA0ODZlMzcyLi5mNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYwODk4OWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEy
Miw3ICsxMjIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogewotICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDA7CisgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOworICAgIGVuY29kZXIgPDwgaXNOdWxs
OworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2NF90IGJ1ZmZl
clNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICBlbmNvZGVyIDw8IGJ1ZmZlclNpemU7CiAgICAg
aWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTIgKzE0OSwyNCBAQCBz
dGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiAKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKIHsKKyAgICBPcHRpb25hbDxib29sPiBpc051bGw7CisgICAgZGVjb2RlciA+PiBpc051
bGw7CisgICAgaWYgKCFpc051bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgq
aXNOdWxsKSB7CisgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSAwOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICgh
YnVmZmVyU2l6ZSkKKyAgICBpZiAoIWJ1ZmZlclNpemUpIHsKKyAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAjaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKaW5kZXggNWU4ZjcwOTA2MWI0MmQxOGFjOTY5MThlNTk4ZmQ4MjE0MGM0
MjhjZC4uMWUwMWE1ZDRlN2E3YjgzMTRhMjMxNGFhODdmNGRkMmRkMzJlYjEwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNraXBXYWl0aW5nKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNl
dFNjcmlwdFJlc291cmNlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdCYgc2NyaXB0KQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0U2Ny
aXB0UmVzb3VyY2UgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBzY3JpcHQuc2NyaXB0
LCBzY3JpcHQucmVzcG9uc2VVUkwsIHNjcmlwdC5taW1lVHlwZSB9LCAwKTsKKyAgICBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OlNldFNjcmlwdFJlc291cmNlIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHVybCwgc2NyaXB0IH0sIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDRiZjk4NGRiOGM2YjZhY2QzNjJlMjM3NjkxMzA1N2RlNWFiM2IxYzIuLmIyMWU5
NGU3YTM0NzcxY2U1MDI0MWNkZDYyYTcyZGIyZjk2Yjg3M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wMy0y
NiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2UgV29y
a2VyIHNjcmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4MDgKKyAg
ICAgICAgPHJkYXI6Ly83NTYzNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJl
bi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzOiBSZW1vdmVkLgorICAg
ICAgICBEcm9wIG91dGRhdGVkIHByZS1iYWtlZCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24g
ZGF0YWJhc2UgYXMgaXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIG5lZWRlZCBhbmQgaXQgaXMgYSBw
YWluIHRvIGtlZXAgdXAgdG8gZGF0ZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0
eURpcmVjdG9yeSgpLiBJdCBpcyBub3QgYSBuZXcgQVBJIGJ1dCBpdAorICAgICAgICBoYWQgbm8g
dGVzdHMsIGl0IHVzZWQgbW9yZSBpbiB0aGlzIHBhdGNoIGFuZCB3ZSBub3cgaGF2ZSBhbiBpbXBs
ZW1lbnRhdGlvbiBvbiBhbGwgc3VwcG9ydGVkCisgICAgICAgIHBsYXRmb3Jtcy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAtIFR3ZWFrIHNlcnZpY2Ugd29ya2VyIHRlc3Rz
IHNvIHRoYXQgdGhleSBleHBlY3QgYSB2ZXJzaW9uIDYgZGF0YWJhc2UgaW5zdGVhZCBvZiB2ZXJz
aW9uIDUsCisgICAgICAgICAgc2luY2UgSSB1cGRhdGVkIHRoZSBkYXRhYmFzZSBzY2hlbWUgYW5k
IGJ1bXBlZCB0aGUgdmVyc2lvbi4KKyAgICAgICAgLSBVcGRhdGUgdGVzdCB0aGF0IHdhcyByZWx5
aW5nIG9uIGEgcHJlLWJha2VkIHNlcnZpY2Ugd29ya2VyIGRhdGFiYXNlIGZpbGUgKHdpdGggb2xk
IHNjaGVtYSkgYW5kCisgICAgICAgICAgaGF2ZSBpdCBkeW5hbWljYWxseSBnZW5lcmF0ZSB0aGUg
ZGF0YWJhc2UgaW5zdGVhZCBieSBsb2FkaW5nIGEgcGFnZSB0aGF0IHJlZ2lzdGVycyBhIHNlcnZp
Y2UKKyAgICAgICAgICB3b3JrZXIuCisKIDIwMjEtMDMtMjkgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBjYWxsaW5nIGB4Y29kZWJ1aWxkIC1z
aG93c2Rrc2Agd2hlcmUgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMzYWJl
OTkzNTcwNTY5MzgyODg0MjY1NzA5ZWE4ZjVkYzU2ZWZiZmYuLmZiYTAzMmM4NTgzYjlmMTg3ODgx
OGJhNjQ5NjkzNDZjNGUwNGI3MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjksNyAr
MjY5LDYgQEAKIAkJNDZBNDRBNTQyNUE3ODMwMzAwRjYxRTE2IC8qIHdlYmF1ZGlvLWNyZWF0ZU1l
ZGlhRWxlbWVudFNvdXJjZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTQ0QTUzMjVBNzgyREQwMEY2MUUxNiAvKiB3ZWJhdWRpby1j
cmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UuaHRtbCAqLzsgfTsKIAkJNDZBNDZBMUEyNTc1NjQ1NjAw
QTFCMTE4IC8qIFNlc3Npb25TdG9yYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZBNDZBMTkyNTc1NjQ1NjAwQTFCMTE4IC8qIFNlc3Npb25TdG9y
YWdlLm1tICovOyB9OwogCQk0NkE5MTE1OTIxMDhFNjc4MDA3OEQ0MEQgLyogQ3VzdG9tVXNlckFn
ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZB
OTExNTgyMTA4RTY2QjAwNzhENDBEIC8qIEN1c3RvbVVzZXJBZ2VudC5tbSAqLzsgfTsKLQkJNDZB
RTVBMzcyMEY5MDY2RDAwRTA4NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
LTQuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNC5zcWxpdGUzICovOyB9OwogCQk0NkJCRUExQjI1Rjk4MzU3MDBENDk4N0Eg
LyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBQTZBMTUxMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwICovOyB9Owog
CQk0NkMxRUE5ODI1NzU4ODIwMDA1RTQwOUUgLyogYWxlcnQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkMxRUE5NzI1NzU4ODA1MDA1
RTQwOUUgLyogYWxlcnQuaHRtbCAqLzsgfTsKIAkJNDZDM0FFQjMyM0QwRTUyOTAwMUIwNjgwIC8q
IGJlZm9yZXVubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QzNBRUIyMjNEMEU1MEYwMDFCMDY4MCAvKiBiZWZvcmV1bmxvYWQu
aHRtbCAqLzsgfTsKQEAgLTE2NjIsNyArMTY2MSw2IEBACiAJCQkJQkM5MDk3ODQxMjU1NzFDRjAw
MDgzNzU2IC8qIHNpbXBsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxRTVDNzAy
MTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0
RjQwNUJEMUQ0QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1h
dWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEyM0YyMTI2NjE1NjcwMEM5
RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlGNENGQ0REQTI0OUZDOUU0MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTIwNDcsNyArMjA0NSw2IEBACiAJCTQ2M0Y0NzIyMjU1QjQ5QjYwMEQ5RTBD
QyAvKiBWaXNpYmlsaXR5U3RhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBWaXNpYmlsaXR5U3RhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2NDdCMTI1MUVCQTNCNzMwMDQxRDdFRiAvKiBQcm9jZXNzRGlkVGVybWluYXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2Nlc3NEaWRUZXJtaW5hdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjRDNzY0QzIzMERGODMyMDBBRkIwMjAg
LyogQmFkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJCYWRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNC5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9ucy00LnNxbGl0ZTMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVFMjgwNjI1
NUIyQTY5MDA2M0E3ODcgLyogR1BVUHJvY2Vzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVVByb2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2NkMzODQyMjEwNjM3Q0UwMDZBODhERSAvKiBub3RpZnktcmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJub3RpZnktcmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0M1NjUxMjFC
NUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBHZXRTZXNzaW9uQ29va2llLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00MDQ4LDcgKzQwNDUsNiBAQAogCQkJCUY0RTNEODA3MjBGNzA4RTQwMDdCNThDNSAv
KiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS1hcnRpY2xlLmh0bWwgKi8sCiAJCQkJRjRGQzA3
NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLmh0bWwgKi8s
CiAJCQkJQzlCNEFEMjkxRUNBNkVBNTAwRjVGRUEwIC8qIHNpbGVuY2UtbG9uZy5tNGEgKi8sCi0J
CQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3MDcgLyogc2tp
bm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlGNENGQ0REODI0
OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAqLywKIAkJCQk5MzYwMjcwNTI1QTNCMjhF
MDAzNjc2NzAgLyogc3BlZWNocmVjb2duaXRpb24tYmFzaWMuaHRtbCAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzZjYWYyYWQ0MzcyNjYz
ZDJiZTMxMWJjZmI2M2EwNGQwYzBkMDFmNi4uOGY2NTFkM2VhZTM0MzI5NzUxYWMzNjFkZDdlMDY0
Y2I2MzdlMzc1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmls
ZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHAKQEAgLTE1MSw0ICsxNTEsMjkgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBvcGVuRXhp
c3RpbmdGaWxlQW5kRmFpbElmRmlsZUV4aXN0cykKICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKTsKIH0KIAorVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBk
ZWxldGVOb25FbXB0eURpcmVjdG9yeSkKK3sKKyAgICBhdXRvIGNyZWF0ZVRlc3RUaWxlID0gW10o
Y29uc3QgU3RyaW5nJiBwYXRoKSB7CisgICAgICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAg
ICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgRmlsZVN5c3RlbVRl
c3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICB9OworCisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIHRlbXBvcmFyeUZpbGU7CisgICAgYXV0byB0ZW1wb3JhcnlUZXN0Rm9sZGVy
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
VGVzdCIsIHRlbXBvcmFyeUZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3Jh
cnlGaWxlKTsKKworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodGVtcG9y
YXJ5VGVzdEZvbGRlcikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRl
c3RGb2xkZXIsIHsgInN1YmZvbGRlciIgfSkpKTsKKyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUx
LnR4dCIpKTsKKyAgICBjcmVhdGVUZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgImZpbGUyLnR4dCIpKTsKKyAgICBjcmVhdGVU
ZXN0VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRl
c3RGb2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlMy50eHQiIH0pKTsKKyAgICBjcmVhdGVUZXN0
VGlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKHRlbXBvcmFyeVRlc3RG
b2xkZXIsIHsgInN1YmZvbGRlciIsICJmaWxlNC50eHQiIH0pKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodGVtcG9yYXJ5VGVzdEZvbGRlcikpOwor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcG9yYXJ5VGVzdEZvbGRl
cikpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
KHRlbXBvcmFyeVRlc3RGb2xkZXIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyh0ZW1wb3JhcnlUZXN0Rm9sZGVyKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMu
bW0KaW5kZXggN2Y0YWM5NmZhN2M3M2E4NDIyYTRjNGU4ZmY3ZTYxMDVlOWU4ODBkZi4uMjM3ODhl
YWUxNDM2N2FlMmYxYTQxNjRlYjRjOWZiYTE0MzA5NDQ3MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMu
bW0KQEAgLTE5NTYsNyArMTk1Niw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFN1c3BlbmROZXR3
b3JrUHJvY2VzcykKICAgICBhdXRvIHBhdGggPSBzdG9yZS5fY29uZmlndXJhdGlvbi5fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5wYXRoOwogCiAgICAgTlNVUkwqIGRpcmVjdG9y
eSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0RpcmVjdG9yeTpZRVNdOwotICAgIE5T
VVJMICpzd0RCUGF0aCA9IFtkaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNS5zcWxpdGUzIl07CisgICAgTlNVUkwgKnN3REJQ
YXRoID0gW2RpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXTsKIAogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpzd0RCUGF0aC5wYXRoXSk7
CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFRFU1QoV2ViS2l0LCBTZXJ2aWNlV29ya2VyRGF0YWJh
c2VXaXRoUmVjb3Jkc1RhYmxlQnV0VW5leHBlY3RlZFNjaGVtYSkKICAgICBFWFBFQ1RfRkFMU0Uo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5w
YXRoXSk7CiAKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVj
dG9yeUF0VVJMOnN3UGF0aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
b3B5SXRlbUF0VVJMOnVybDEgdG9VUkw6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy01LnNxbGl0ZTMiXSBlcnJvcjpuaWxdOwor
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29weUl0ZW1BdFVSTDp1cmwxIHRv
VVJMOltzd1BhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbnMtNi5zcWxpdGUzIl0gZXJyb3I6bmlsXTsKIAogICAgIGF1dG8gd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKS5fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN3UGF0aDsKQEAg
LTIzNTUsNiArMjM1NSw3NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBDbGVhckRPTUNhY2hlQWxz
b0luY2x1ZGVzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpCiAgICAgcmVhZHlUb0NvbnRpbnVl
ID0gZmFsc2U7CiB9CiAKK1RFU1QoU2VydmljZVdvcmtlcnMsIEN1c3RvbURhdGFTdG9yZVBhdGhz
VmVyc3VzQ29tcGxldGlvbkhhbmRsZXJzKQoreworICAgIE5TVVJMICpzd1BhdGggPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJL1dlYktpdC9TZXJ2aWNlV29ya2Vycy8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJ
blBhdGhdXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1B
dFVSTDpzd1BhdGggZXJyb3I6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnN3UGF0aC5wYXRoXSk7CisKKyAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnN3UGF0
aCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5p
bF07CisKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgd2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSBzd1BhdGg7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25m
aWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKworICAgIGF1
dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAg
U2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBt
YWluQnl0ZXMgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5
dGVzIH0sCisgICAgfSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cisg
ICAgZG9uZSA9IGZhbHNlOworCisgICAgdW5zaWduZWQgdGltZW91dCA9IDA7CisgICAgd2hpbGUg
KCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6W3N3UGF0
aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cy02LnNxbGl0ZTMiXS5wYXRoXSAmJiArK3RpbWVvdXQgPCAyMCkKKyAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6W3N3UGF0aCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy02LnNxbGl0ZTMiXS5wYXRo
XSk7CisKKyAgICAvLyBGZXRjaCBTVyByZWNvcmRzCisgICAgYXV0byB3ZWJzaXRlRGF0YVR5cGVz
ID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBbV0tXZWJzaXRlRGF0YVR5
cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsKKyAgICBzdGF0aWMgYm9vbCByZWFkeVRv
Q29udGludWU7CisgICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3ZWJzaXRl
RGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEoMVUsIGRhdGFSZWNv
cmRzLmNvdW50KTsKKyAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBGZXRjaCByZWNvcmRzIGFnYWluLCB0aGlzIHRp
bWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJl
cXVlc3QgaXMgaW4gZmxpZ2h0LgorICAgIFtkYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKDFV
LCBkYXRhUmVjb3Jkcy5jb3VudCk7CisgICAgICAgIHJlYWR5VG9Db250aW51ZSA9IHRydWU7Cisg
ICAgfV07CisgICAgZGF0YVN0b3JlID0gbmlsOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHlUb0NvbnRpbnVlKTsKKyAgICByZWFkeVRvQ29udGludWUgPSBmYWxzZTsKKworICAg
IC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhl
IGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgorICAgIGRhdGFTdG9y
ZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbZGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBy
ZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIGRhdGFTdG9yZSA9IG5pbDsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51ZSk7CisgICAgcmVhZHlU
b0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAvLyBUaGUgcmVjb3JkcyBzaG91bGQgaGF2ZSBiZWVu
IGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxkIGhhdmUgYmVlbiBtYWRlLgorICAgIC8v
IE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlmeSB0aGV5IGFyZSBnb25lLgorICAgIGRh
dGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBb
ZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFS
ZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgZGF0YVJlY29yZHMuY291bnQpOworICAg
ICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKK30KKwogVEVTVChTZXJ2aWNlV29ya2Vycywg
V2ViUHJvY2Vzc0NhY2hlKQogewogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0
ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQu
c3FsaXRlMyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2ltcGxlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwYTA1ZGM0NmUzYTJjY2ViMzRlZjlhNzY4Y2QwOWViM2Q4YWYyNDE1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDIwNDgwCnpjbWVIT2N+fSF5KlV2X1A1TSZqUU1hUDly
QWh9XzhMcWRwdnZXUzJ2QjZMVXdHTWJIPDJeY0xecW9QKnBnOFBQdQp6WHN1aC15Nip9cVImQ3Zf
Yj1TSnJUMUJnTXNvJE4xQVhyPTRAQTtuaGQ7aUdiV2JTaEFKP0gtSnozMHczWFVzQFgKeiN3aVJi
KURTOV5MYyRvMTM+SiRLaXkjYUpnOVVGWmMkK1VLT21OSEBfQHdpI1RgWXptOUk8ekokemEoPkZ6
aDI3CnpqPChqb1FnMT1QZmBBMTkzaiE3ZEVDXlQtdXBuU1R6PUQ3VWYmVkg1Q085I3otTXplK2xs
MnJAcHVgNFhHN1RYbwp6OHlfc20wSTRgcmllIXI4bEJHeXZBcmRlZyg8N1BFTDc3TnU4b2FaVGxh
YUprTTNSPTtDcGsleWlTIVhDQl9tbT4Kek4kRllBN1VjdF57Z2NIS1gpdk44QEZIQkBOKU4jWkRi
cn1OdE8zY2I1PmdzJStDU0AzaUlQOzdSKnE3Yk0xamVNCnpYV31YaGlCSFItMmx0bWwyfVgzcjc2
V2xxZzMxKEZ0S3lJezBAcVVpTH5zKmpzfndoVmh+WEhLc25AcDdUYyVNewp6bjN+R0tXSTYoO14h
K3RUVCY3M2psR0ViO1poITw8aCFGJXZHP01AUSlZMjB9NHshaVJZSUtBUU9GXn0qR0xUXmUKemcl
eyM3MnotKmRQfTImMVU8aXhyRjd7JEZhSjN2OEteN35hUmlCVVFEMip8bi0/JDkoTVU0cUkrKXA8
MnAwYkJHCnooPjlwX3w1K3t6MHV9QDsydmB1WEFZZWhqZmBBMnFlfkd7ZVUjMWZvKWdqOC1EYFUy
Y1J+TEtsdkV2ZEk2czBCZQp6UmRUaFUyJldYZjBzKmVjJm8+ciE3WWJWeDMoMytEM0xgMXVLZEFr
bkxtPDl6Knc2TEs1VDdLS1J6cHphLX1nWTQKejNXa3YrcllzYm9hPUVrd3pXT0hQQnp5ekxoeVpf
Rk87Vl4qPV51O34+ZU1teypRZig5bmojUHgjWH1IZFFjI05HCnpSRjt+O2w+eDhfTDFncGBKfUgy
OWhkUksmTUMyYlJwY0Y5SylaU1FjWUVQM0I3Xk5mQnJkRzU3Vng9LSpoX05ITwp6KjFyaF98S05g
bDhlZTd3M1E3ZWZ7NzV4UD42TXMzTXZAPGBNWVVRdUBRK3NFRHpwZC1ROT5DMGlVUHR5Z3B7SEwK
ejhLVHFfWCN+VHhNSVleYDIhZStaZFNRVl5yPjY5WUBDUEh2UjtnOGI3PSl2ZypnI1p7NXZAe19Z
RTVZLXBARCFtCnpjSE19Pyg3K3pYUjlQVD16O3FlQmQ0RG1fZyV+QU17T3YzZzdeJjUkPD1KcjYx
fmc3RmoxYkJjcnU4NW91d29ydAp6dFJHSWNzVEdOdD1VWFQ9dU1ibj5LbT04bXFJd2M4MTUlP2Ih
QVBVVGtnN21PQTwoeytwKEtXQTNLM0UjbFZQTmgKejNgem1aTl56d1VRSl5JbFFpM1hWbjZWak5o
eTw3IUF7fjQ2TFVocGZEYTYmNyt8MGdkeHRZbHQ1a2ZFfT8yfSY3Cnped3FjfGpoT3VIQFpQZ34m
ajNON155Y21uNns8JUhGaG9hVWF6dnc2PmZ3KmZCck1HY1FrRyhmOGlTUlQxfGpMdQp6JGRucDJN
KDRCOzA2R1pgYyliWTt4VUN1bUdgMis1YSlpVlAqb0s3dTJBRn09UDQhQlFZNyM8WD82T3g9VVNR
LUEKeig2fkJpSWh2WmF2VWReRiVyX3J3PDktKUZhYSUkYSt7RGt3elpvfXI5bnhJc3N9WDg1VWdu
Q2pLbW9MSztvPnJECno0SjRwQik4O3laNnFyYGhkcmV7OWJBUjROT15uU1ZsdERxdDAlMCotQWMz
OUA1fF4ya2U3IWpWcExGUCh6TCtOdgp6PEM3c1dBVit+NnA5PS1vREpkM3sxMDRCd3M5TDdiNU0m
eWhYQ3sqWW9jUHZxajYhaUczQWlFI3tSaTZlOWlpVngKenJhKy15Z15FczdpcGlOd0Nne1RGbTAk
IzNzRT4hbnlAeSpVMm44VDJHKnJ8cnlqeGZ8S15XKjMoSmVGd2AwK1Y3CnpIMmcqRmZqOGU+XjQ9
U2VOdVgqe2l4UVl4MktoMzlmJSQtTVlldGxXKi1JUCleOCRSSDtWfklpMklnXj90bW9QVwp6YWhY
PEQpX309YHdMNChaNzY2Q0Y7bkFhblZSPWhyLVphc2NVa2ReajFTfCt4NVU/TyVMQk44NTFweH5K
NzZkRV4KelNQLXh2QEwhRVVCJThHVFVwU2xMbjVAUURSPWFVcigtclMjZTlmfWZeKm53TmxOVkd3
Wnkhd2JATmg4c0NQZEw3CnpEbSorUURoSDZENyRnQih1Mm9QUUhwfG5CIUV5Y0dANDNnVHFufU5t
YGMyJCpae2FZPCU0encka04zdU1XRl5IfAp6enA5TU4zRTZlblhTVCVRYCFTM15hajBASzdsbFRF
JGNTejxRK3V2JCpZZD5qN3hxbDFvZlUmXmZabW89fDJEWnYKejE7QE9YUEo0TEJrQTNPWWlGeClS
OHh+Smk0UWZjZF9wVn4qeDFtWUwtRVIlLWU4MVA2bXErakJobzV1aWhQfjNjCnpCdDFnPHcrV1Fw
UnJoc1RKJEJ4UyM3VTxXWk8/RHwjJnd6MyNhbE4rNUFKWG8pdXRWPkN3Wnd5PG5za1RFWkVCawp6
QDl9YyU+X0lfc3NwOV9wamIxT0p4MUwlUVFAZE1ESXJebmY0UVZeKmw7YEhvbn0yaGc4OEBUSUZl
PmZeT0U5JWwKej19cTljPG0tfTdOclRKczJSI1RvYUJCUnV5KmomKlF6eUZqWExiMDZkUjZeNjw7
eW88KE5fPGEtfGNnNyE2I24jCnorVEhOantkI15+KDZrQDxocHZWJT9wZDRoYDFSNEUpaT4paFlg
KH5kK0BibFJ5ckxtQ1h6Y2lrblVraTVTdUszVgp6enAkY3hwOTVsR1VAN0BGVEtaY1I5RGAwRFIt
VllmJF5pKTkxJUFoM2BYPEhubn5KSjF6QVpeQUdpY3UtMGxpQjYKekNXPHMlJlVYX0RMSXUmYEtw
K3hATVRTS1BMO3huQzU2WnllXlgtbE8+KGpKIUFiPURabjdATkllQV5ePkdPaXZECno5cDwkMjNB
KHx1Rj80dThPckw+fEc/cUI/P008eDJJIVluIW1xazstR01Ydl9GSCluPntjb2dtO2tRWDNRMFYh
Rgp6dT9LbEZoOEVJPHU2JjAkQmBPPktyX3hsN1RCXzFnYFYzdmNGaWJ8I3c5dlUwaGU4TFExajxH
Yyg4V2ZQam00UTUKejlTMT5gMTVxVXxob0FKJiNxTkEoM0gtYlZlb3YjNmopMmgpa3slTFc7bCsw
fClBZmY9SWdMQzg5ZjdOS0RyMlFMCnotITNCfklaO0RXWThwclQ3Ny1pVEZQRVcqOztTK1Y5WCQk
MzxeYnB4I3xle3t1TEl3QDVmK2d2dTtIYDlMcz17dgp6MkF6cnVXM2l5YXVvdklhRDJnMURMJjdX
KUxKOSZvMz1TdkQkQ3RzZUYqKXFtT2IhcEdJN353bmtJbS1UZW9+JnUKekVQb2x0VkZEJU9aVSFf
RkJeNj8yNSZUTXdRbTlDZiZVYkZBaXBQdGZxZHB9Kl5kbntBQTFSQX5PVVRAPHNjbEIwCnpTT2c0
d0hsTj9AbjxUakE/NEVFOCo1U1psNFM8MmBRTj9DNFMlMlEqQThjTnI3MT1AYyFPcjR2VTA3S2Vx
UEQ8PQp6JmhUOUxrUVl2U0lndW9fT3c8bXopNVVmIWote29nMHkoVXJTcW8kdWx9SEZlPXFrMzBV
c0RTeFU/YEdeN2J5QGkKek4kUXxgUkU4bUBISGIqV3B1TXwyXnNobz8wKnFHPCUhWXorUU1kP30w
KzBpU3dVbyNPSU1NeXZ4YlAlIWBOMDFlCnpyTiZXXzgqcnJ5dHpHT2hQJkx3cldgVjxSP1Y1Pzdm
SyFST2Y/ISZEZnlmPVNIT2JoOTdRWnBfMlplYGoqR3xtPQp6VkgmbFcwfFM9eFNoUU4oNnd+V0xY
eFZRcyNeP1RXelNMPCgoZUA+cTE4YSVNVmRDcElrRkQkV0RBO31hPCNGa1EKekE1NyUrdH5kMDJF
dHRHQTxAKTFfYCFSRnZyKis7P3U9SHJmb0pCUWBLNC1JNT4+KDZ5PytwMDhyPVZsYFloVkEhCno0
eTEmP3JYKHdHS3deemc/dE9PVD5Sc0hSSGZ+R3lyQSVkcz1IMyhCe1otbU5LZ2p2bmxGJilmIUdW
aU1jWHt7Ugp6Q3VoLV9GX1NqKDN4MD9WdyUoVFRnWSZkclE/dGhAcyRMRy1wU0dzdiRAeHhteCF6
R2UqfVohTiluNXhaI2N0MTcKekB+K2w0czBAd1JJbDRofHtxZVEjUUB6WDc4SVBsQCYjbnpXPUNG
UllYV2N2Wm9tKkMqIWs/VEA5eSY0OHMkPiRHCnooeSQwanpSY2ZwcSkrR2lzNH5PTEMhMSM7VzNp
Ykc9NWhvM1RWUC14MXwxLVhLQWt4cHotYFAmazA7PG02U1UjTAp6KGAjeEs0Xk94fUlkbnRIVkpC
JXB6TmNfKllJaVYtdTZFKjNmR35WODVlOXpPWDQ3S2V5YExoM1R+aUlORzF4WG0Kelo0S19gYXYw
bnA4b3dFJjdvPyVCaVJPYzEoMXZGMnorfUdUYU0mIVhEd0N8ZjlDe0ArWlNBSE0zK1FPXzRqZVU1
CnpnN0IpKURvX3I/b1JrJkBpRGlUYHRpPXV4a190MzVNMWg3dElpTi1sRFQpKzhubUBNK3wwa2BJ
WHxAUFEzTTMkawp6WWY+KDZsfjV+bzFwI0teU1dHdT5iNDI7Vy02KWp3JmoyPURacVptaS0yN25k
SUNDUXlXKygrWig4Wmh3JXlOJiQKejBjbThVd3VOWFFySFA3RkU7Ykp2ckZUNXBmPjNEUUAkYG5M
X2p9V0pIfD0oYjckUUxkSzBQS0U4aEk5PXdea1h+CnpxKFJUP1NzV0lPZXlIRyRHbTk3e2o2TiV9
OV9uN3JNOEtCbiRAc0h8R04paU13ZkFrKF82Y2pBelJ+YG5OYFNHRQp6OylsV3haWkpeN1crVlY5
dDBVdj88KDspWmRSRm9IN2hmTSpRQHlIZSFwdz11PjVDQEJKMXd7N1VTZ3QmRVgxd1kKeiZ0dzBp
aiZsZChiYkI8IypYITYkQktfYHxGd0xeQ3RsSVJHVGVgbnM9b3A9KFF0UUU0VD9XcVd5LWZKemd7
dTV8CnpYRnU3eHtyeUd7SnY9VH5lYldKa3BKPX1BX1pqKjIwcjQhUCZeZncjUz4pdmw/ezMma3st
TlYlKTFHPndjTVBYOAp6S2JkdVNeTVNIMThKQWN7UU91Sm92bDBWcy1GaHljZlVucmJjNHdhS2RC
YmkwdDhwSDNeLSVuejRJRk96QChzYDUKekdXQ2xHczx1YXNuOWk+bWRFQ3FZKm8oP1phU1FHTEk2
S0FhY0g/a3VufSY8SF9QJj8mU3UoT049Ung0bDZaNih5CnppT35mOXpNPWNvKVdgRl9GUnFweXY0
ZW0tNT1NMSFsSW0+d3ViektQUmFsP3Qqej96bUA3RFYqe2J9eC1pNmQ+Wgp6azJLZUo9Qz9PUyE+
Kl5qWj03LTF1WGEzc0FmWnM8PXI7S0JKSXtHcm1pSnFBRUFhJWB1LU1obCQ3WHYmWnI/R1MKejVu
cyVqbTZ+Kld8SUd0PSs2I05+KjckTz5jVjQrKU19M3tTQWhQMjFDak8mU2NLejF0dTA9MmoqTnM9
RlNOMTR6CnpTYUljRCpHJCY5Rjc7YDxOOGFIaWlzamUhTWVGQjBpdSRHXjg1QE16aEFTNDxCQTB4
SlVZc3BGKXR6WkczOVUoNwp6O28/Kmg2VERlJW5ERz1aXklKYzdVRC1fYzFySjxMQ2RfO0RaMTJY
cXtucXxHZUN9TklsYHwmb3hJTz13V2I7S3YKemw8bEQmJTlNZi1uZjNmSFRefE9hMys7cHZaTSZy
Z2lneEZ7P2xSPXsoKV8ydDdDYzxKPE1XI0tHd2xDeFZBdCk1Cnp6eF81TDhqSz1sQT5YWVl2NFVn
Wll5ayQmTXlUWiRHQGhIQjgrVTZpPVJSI3Y/R0s5RUtENiE5NGAyaHptWiNMZQp6S1IxSXdBbHcp
NS0wV29ETUlSb1ModCplVGpmUUdHR2V1enswQXJHLUxsVH51KGFvfnw1MnR1KkMrRjdkIWg+RDcK
el4ocyNPZ352UU9jVC1zPktnP30/VDxvSW5FLXpoTFZqV1dwdkw/M01rdjYrYyZnPjNaMTItUkpi
XlpGfXs5byoxCnpGVnZtdkxEYWllS0F5NEI+OHRncD4kZ2p+VSRuRDNjVyV6fSpzdHEtOTtHYksm
KSF6dlUkTmwlPVJjbDRWJTFeUQp6eXJZK0VIWDZvPDlBMzkjQHNXMGhsQGxFRDtzPHEmbipLSzhp
SmdzcVh3TElwUXp+b3JxQFZQXmQ4SjJPKm1BM1kKeng/S1VzN3BAS0pZKExgZ3M1XlBaK3hvYFh5
ZEp5RiYyOEN8JmR3PmZGSTNwOSl6dktDZEJTfkRgfWhjS2JjUyFZCnpRe0tGVkdPdTxPbCE2eV5A
WmY7Tlc4SEc5eDg0fGY7N1MjO3k8X3ooS2FGZU9qXlpQYVJFd1NfM0xEdFpzfSZVKQp6IW58OUpD
bnF4ckRtKkUwWmM+M1pmRDFKdHtrcXhXS3dfNCtifDhoRGxgPlQyMGxARGNzYDdwYDt8YHA3NUM+
d2IKelZ5YiRVY1FAO0VMaXhkZ1dMfTBYNnVFUkR5IyRTbFRuVCM3b2d0aF41RHI0UUBVMGtPe0h0
XjZ7b0JGRVl9KiFaCno3YUw9MGFyVm83M0N5JGV7WEFgMGs3ZT9wKzdFVzEoZF9qMmU5bU97OW80
bm1IJEk5N2VXI0IqcER6NGpjKVZOWAp6VEd7aXtZVVRJXlEmeHtIOXpXeiFjPFAzMmBpajhnQSFD
TzlJdHtzQHVsYStXO1BUKmtgTH4wTSVicyFPNG5IJF4KelBfSUFFaDx0TkJxUUBgNHYoKWYqPlg3
LU8pRHQ1cko+TzBebWJDaCp8Qzl5OW8wISQtI0NBV1BpKEl6UFRiKzxKCnpJYDNsUXJ8Z1N3cnpC
TylfbHR7dGMpcjReTSRYSTV0YjZXcm98UUx6P0pzcD43Q0lCSjJGfCtoWlhjTXkxXmV0cQp6ckBx
VSFUR0hqd2d4YTlqRHxNXlpoUFhYMClCQTZGY3lOaUdeQEcoRCZNPW9GMGI8JnhGPDI2Q2RoRCYk
enhfT18Kek45b3FzZi16UU5EZjYqQUh8RmE4dXRofkBQeXNSVkM7V3t3QlJqVWVfSWRsR259TmFN
REJzSFhRM0Zpd3diJWVuCnpDUU8zRzJDJiF3JX1qJXFEJVdCSVNabn1gNGJiR2x3YiVkXzh7bDdo
QCs+eGgjUmpuMDBSUUpVemB1T3w9TlE7Vwp6cTJ1QlozPXlwfUpOPyhAYFZGJi1Ue1BXSnw4I3ZI
LV9xdSRsYSY/WUtrdksla3M9WHtXRW41JEBER0V6cnRFKU0Kem4lMCFvO3A0Wi1KRm1+fngqWll7
eTdKb1h2QXZJO0BKLXJVK19tPUg/Q18jJHA3KH0pZH1adiR4XjBgTHBQWE93CnptM1ZPWEduWiRk
P3xGJWV1SVlPYCNuPHFuP31gbFA9d0JMPVJLK3R0bFdrcUlHUVlORntMOGUwXnR+Pyt7ZF82OQp6
O3VpT3wlfWpuPmZIPj4qdjdFX21LUCRjJHVgaCtOP1h8YWlicElpeEJDanZMSW5xVkNAWE5JLWhI
RE9JK2ZKODwKej5BZC0zYWk+JWFvajZ3OWYyQlRtXjNgXkl2KEV8YzRFND9reyVybVVQcCheeWY7
PF97YW1pZylkP3g0OXRWPzxGCno4Jk1PJUsrYkthJjRGV19wWGo/eXMlQU5UPlItNVIoelgjI3p2
Wm9wVWMtfGcrKmRlcyZpRGglZUFgYlA+ZT01OAp6YVh2MklyTTYzdC1ybGQjPHUzemglZVE2ZHBt
MW4lVnBzdC1iWWU3Zl9rWXgwWnlxbEFDXyVHMEdGKzhMZ1dsVmQKekpNWiNeI1k9bG1EJipRXmNm
OGF3O2Jxc04pJSFkYE9KV19mNH05SipAfWQocUUjZyg+OHxqd0hpXi15WCtoXlhCCnoxVyleQiND
TWwmVyQyNX4tfGplQGBENTBeZzxhJm9lT2BGez5mKSNxdEhMK3BpI3BkPWpfNEdtbUU2aW81VFdm
Sgp6ND5+a0ttPG9RWTYxakQqemszc04zcD0qWSkycGkyJVd3MGhoXkJtRUdkWUNNJV5rMzw/c3dr
JlEqSEI/SWA5MjcKelFXbWBAekduMUtlbkdzdGRBUi1rc1c8bUtXXmI9QWFoe3A9RyFnJHtjVVJV
Qmh4b0lJPStkKkRURUMkKUtCP1RACnomKXJ0SWBCOzAyOzs2TyVmeiFEITkoM0hIYTktU1ZAeElE
OFZ7I1lDUFcrcygrU2s5UkR5bzVERDlnTz8peXcrPQpMbSp1N1JJYHNWPy1ieSpfCgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCBmNjE2YTc0YjQxN2Y2MWU5YWEz
ZGQyNWM4YmU4NmM5ZTJhMmZkMjhhLi42MGI3MjJjM2M5NDljN2I4NWU2NGQyZjNkYTZiZjM1N2Jj
ODBiYWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtMjkw
LDYwICsyOTAsNiBAQCBURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzV2l0
aFByZXdhcm1pbmcpCiAgICAgcnVuV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVu
YWJsZVByb2Nlc3NQcmV3YXJtaW5nOjpZZXMpOwogfQogCi1URVNUKFdlYktpdCwgQ3VzdG9tRGF0
YVN0b3JlUGF0aHNWZXJzdXNDb21wbGV0aW9uSGFuZGxlcnMpCi17Ci0gICAgLy8gQ29weSB0aGUg
YmFrZWQgZGF0YWJhc2UgZmlsZXMgdG8gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeQotICAgIE5TVVJM
ICp1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIlNpbXBsZVNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQiIHdpdGhFeHRlbnNpb246QCJzcWxpdGUzIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwotCi0gICAgTlNVUkwgKnN3UGF0
aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkvV2ViS2l0L1NlcnZpY2VXb3JrZXJzLyIgc3RyaW5nQnlFeHBh
bmRpbmdUaWxkZUluUGF0aF1dOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
cmVtb3ZlSXRlbUF0VVJMOnN3UGF0aCBlcnJvcjpuaWxdOwotICAgIEVYUEVDVF9GQUxTRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6c3dQYXRoLnBhdGhd
KTsKLQotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6c3dQYXRoIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpu
aWwgZXJyb3I6bmlsXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvcHlJ
dGVtQXRVUkw6dXJsMSB0b1VSTDpbc3dQYXRoIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTUuc3FsaXRlMyJdIGVycm9yOm5pbF07Ci0KLSAg
ICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkgPSBzd1BhdGg7Ci0gICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSk7Ci0KLSAgICAvLyBGZXRjaCBTVyByZWNvcmRzCi0gICAgYXV0byB3
ZWJzaXRlRGF0YVR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFycmF5OkBb
V0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc11dKTsKLSAgICBzdGF0
aWMgYm9vbCByZWFkeVRvQ29udGludWU7Ci0gICAgW2RhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRz
T2ZUeXBlczp3ZWJzaXRlRGF0YVR5cGVzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgewotICAgICAgICBFWFBFQ1Rf
RVEoMVUsIGRhdGFSZWNvcmRzLmNvdW50KTsKLSAgICAgICAgcmVhZHlUb0NvbnRpbnVlID0gdHJ1
ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51
ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBGZXRjaCByZWNvcmRz
IGFnYWluLCB0aGlzIHRpbWUgcmVsZWFzaW5nIG91ciByZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3Rv
cmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LgotICAgIFtkYXRhU3RvcmUgZmV0Y2hE
YXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKLSAgICAg
ICAgRVhQRUNUX0VRKDFVLCBkYXRhUmVjb3Jkcy5jb3VudCk7Ci0gICAgICAgIHJlYWR5VG9Db250
aW51ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgZGF0YVN0b3JlID0gbmlsOwotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLSAgICByZWFkeVRvQ29udGludWUg
PSBmYWxzZTsKLQotICAgIC8vIERlbGV0ZSBhbGwgU1cgcmVjb3JkcywgcmVsZWFzaW5nIG91ciBy
ZWZlcmVuY2UgdG8gdGhlIGRhdGEgc3RvcmUgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0
LgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKLSAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMuZ2V0
KCkgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgewotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwotICAgIGRhdGFT
dG9yZSA9IG5pbDsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5VG9Db250aW51
ZSk7Ci0gICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7Ci0KLSAgICAvLyBUaGUgcmVjb3JkcyBz
aG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQsIGFuZCB0aGUgY2FsbGJhY2sgc2hvdWxkIGhhdmUgYmVl
biBtYWRlLgotICAgIC8vIE5vdyByZWZldGNoIHRoZSByZWNvcmRzIHRvIHZlcmlmeSB0aGV5IGFy
ZSBnb25lLgotICAgIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKLSAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVE
YXRhVHlwZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFS
ZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgwVSwgZGF0YVJlY29y
ZHMuY291bnQpOwotICAgICAgICByZWFkeVRvQ29udGludWUgPSB0cnVlOwotICAgIH1dOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHlUb0NvbnRpbnVlKTsKLX0KLQogVEVTVChX
ZWJLaXQsIEN1c3RvbURhdGFTdG9yZURlc3Ryb3lXaGlsZUZldGNoaW5nTmV0d29ya1Byb2Nlc3NE
YXRhKQogewogICAgIE5TVVJMICpjb29raWVTdG9yYWdlRmlsZSA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkv
Q3VzdG9tV2Vic2l0ZURhdGEvQ29va2llU3RvcmFnZS9Db29raWUuRmlsZSIgc3RyaW5nQnlFeHBh
bmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6Tk9dOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>