<?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>233567</bug_id>
          
          <creation_ts>2021-11-29 09:38:19 -0800</creation_ts>
          <short_desc>Fetch and remove file system data via WKWebsiteDataStore</short_desc>
          <delta_ts>2021-12-13 14:27:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</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=233892</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234271</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818248</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-29 09:38:19 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818249</commentid>
    <comment_count>1</comment_count>
      <attachid>445286</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-29 09:41:05 -0800</bug_when>
    <thetext>Created attachment 445286
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818610</commentid>
    <comment_count>2</comment_count>
      <attachid>445383</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-29 23:04:01 -0800</bug_when>
    <thetext>Created attachment 445383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818623</commentid>
    <comment_count>3</comment_count>
      <attachid>445387</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-29 23:42:47 -0800</bug_when>
    <thetext>Created attachment 445387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818854</commentid>
    <comment_count>4</comment_count>
      <attachid>445387</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-30 11:50:46 -0800</bug_when>
    <thetext>Comment on attachment 445387
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1560
&gt; +            callbackAggregator-&gt;m_websiteData.entries.appendVector(entries);

WTFMove(entries)

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1976
&gt; +                callbackAggregator-&gt;m_domains.add(domain);

WTFMove(domain)

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2099
&gt; +            callbackAggregator-&gt;m_websiteData.entries.appendVector(entries);

WTFMove

&gt; Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.cpp:169
&gt; +            */

Not sure this is needed to keep a Ref of Connection.
IPC::Connection::send(connectionID...) should do the trick.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:346
&gt; +    auto origins = originsString.split(&quot;\n&quot;);

I would tend to use encoders/decoders like we use elsewhere.
See for instance decodeCachesNames in CacheStorageEngineCaches.
That way you should be able to directly decode/encode ClientOrigin

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:370
&gt; +            auto originFilePath = FileSystem::pathByAppendingComponent(openingOriginDirectory, &quot;origin&quot;);

Will we have to create &quot;origin&quot; path elsewhere?
If so, it might be good to add a routine for that.
Should probably be &quot;origin&quot;_s

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:398
&gt; +        RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler), entries = crossThreadCopy(entries)]() mutable {

crossThreadCopy(WTFMove(entries)) might make it more efficient.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:413
&gt; +            auto originFilePath = FileSystem::pathByAppendingComponent(openingOriginDirectory, &quot;origin&quot;);

We are creating again &quot;origin&quot; here.
Also, we have the same for loop here and above, so maybe create a helper function taking a lambda that would be called on every origin if one is found might be useful.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:448
&gt; +            originSet.add(origin);

We could probably WTFMove origin

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:491
&gt; +                deletedDomains.append(domain);

We could use a HashSet and pass it to the completion handler if possible.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:494
&gt; +        RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler), domains = crossThreadCopy(deletedDomains)]() mutable {

crossThreadCopy(WTFMove()) will probably make it more efficient, in case of Vector at least.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:88
&gt; +        auto fileSystemStoragePath = typeStoragePath(&quot;FileSystem&quot;);

_s.
Maybe it would be better to have an enum of all storage type that we could pass to typeStoragePath.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:105
&gt; +    auto originFilePath = FileSystem::pathByAppendingComponent(m_path, &quot;origin&quot;);

&quot;origin&quot;_s probably and would be good to have a single routine.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:124
&gt; +    auto originContent = builder.toString().utf8();

It seems better to do the reading/writing or encoding/decoding in the same file.
I would use persistent encoders instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819034</commentid>
    <comment_count>5</comment_count>
      <attachid>445387</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-30 17:53:54 -0800</bug_when>
    <thetext>Comment on attachment 445387
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1560
&gt;&gt; +            callbackAggregator-&gt;m_websiteData.entries.appendVector(entries);
&gt; 
&gt; WTFMove(entries)

Will change.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1976
&gt;&gt; +                callbackAggregator-&gt;m_domains.add(domain);
&gt; 
&gt; WTFMove(domain)

Will change.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2099
&gt;&gt; +            callbackAggregator-&gt;m_websiteData.entries.appendVector(entries);
&gt; 
&gt; WTFMove

Will change.

&gt;&gt; Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.cpp:169
&gt;&gt; +            */
&gt; 
&gt; Not sure this is needed to keep a Ref of Connection.
&gt; IPC::Connection::send(connectionID...) should do the trick.

ah didn&apos;t see this function; will change.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:346
&gt;&gt; +    auto origins = originsString.split(&quot;\n&quot;);
&gt; 
&gt; I would tend to use encoders/decoders like we use elsewhere.
&gt; See for instance decodeCachesNames in CacheStorageEngineCaches.
&gt; That way you should be able to directly decode/encode ClientOrigin

Sure, will try using Persistence::Encoder and Persistence::Decoder

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:370
&gt;&gt; +            auto originFilePath = FileSystem::pathByAppendingComponent(openingOriginDirectory, &quot;origin&quot;);
&gt; 
&gt; Will we have to create &quot;origin&quot; path elsewhere?
&gt; If so, it might be good to add a routine for that.
&gt; Should probably be &quot;origin&quot;_s

Yes, will add it

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:398
&gt;&gt; +        RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler), entries = crossThreadCopy(entries)]() mutable {
&gt; 
&gt; crossThreadCopy(WTFMove(entries)) might make it more efficient.

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:413
&gt;&gt; +            auto originFilePath = FileSystem::pathByAppendingComponent(openingOriginDirectory, &quot;origin&quot;);
&gt; 
&gt; We are creating again &quot;origin&quot; here.
&gt; Also, we have the same for loop here and above, so maybe create a helper function taking a lambda that would be called on every origin if one is found might be useful.

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:448
&gt;&gt; +            originSet.add(origin);
&gt; 
&gt; We could probably WTFMove origin

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:491
&gt;&gt; +                deletedDomains.append(domain);
&gt; 
&gt; We could use a HashSet and pass it to the completion handler if possible.

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:494
&gt;&gt; +        RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler), domains = crossThreadCopy(deletedDomains)]() mutable {
&gt; 
&gt; crossThreadCopy(WTFMove()) will probably make it more efficient, in case of Vector at least.

Will change.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:88
&gt;&gt; +        auto fileSystemStoragePath = typeStoragePath(&quot;FileSystem&quot;);
&gt; 
&gt; _s.
&gt; Maybe it would be better to have an enum of all storage type that we could pass to typeStoragePath.

Sounds good.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:105
&gt;&gt; +    auto originFilePath = FileSystem::pathByAppendingComponent(m_path, &quot;origin&quot;);
&gt; 
&gt; &quot;origin&quot;_s probably and would be good to have a single routine.

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:124
&gt;&gt; +    auto originContent = builder.toString().utf8();
&gt; 
&gt; It seems better to do the reading/writing or encoding/decoding in the same file.
&gt; I would use persistent encoders instead.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819038</commentid>
    <comment_count>6</comment_count>
      <attachid>445498</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-30 18:10:23 -0800</bug_when>
    <thetext>Created attachment 445498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819084</commentid>
    <comment_count>7</comment_count>
      <attachid>445518</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-11-30 21:26:00 -0800</bug_when>
    <thetext>Created attachment 445518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819331</commentid>
    <comment_count>8</comment_count>
      <attachid>445518</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-01 11:23:29 -0800</bug_when>
    <thetext>Comment on attachment 445518
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:552
&gt; +        ASSERT(*childType == FileType::Regular);

Worth using a switch.

&gt; Source/WTF/wtf/FileSystem.cpp:553
&gt; +        auto time = FileSystem::fileModificationTime(childPath);

Should this line be removed?
Can we add API tests for this function?

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:339
&gt; +    auto handle = FileSystem::openFile(filePath, FileSystem::FileOpenMode::ReadWrite);

handle -&gt; originFileHandle.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:347
&gt; +    auto readText = FileSystem::readEntireFile(handle);

readText -&gt; originData or something like that.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:355
&gt; +}

I think it would be good to have the encoder part next to the decoder part.
That way, if we change one, it is easy to change the other.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:357
&gt; +void NetworkStorageManager::forEachOriginDirectory(Function&lt;void(const String&amp; directory)&gt; apply)

s/Function/const Function&amp;/

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:386
&gt; +                originTypes.add(origin-&gt;clientOrigin, OptionSet&lt;WebsiteDataType&gt; { }).iterator-&gt;value.add(*type);

Should we also include an origin-&gt;topOrigin entry in originTypes?

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:452
&gt; +            return originSet.contains(origin.clientOrigin);

Shouldn&apos;t it be return originSet.contains(origin.clientOrigin) || originSet.contains(origin.topOrigin) ?
It is worth adding some tests here.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:485
&gt; +            return domains.contains(domain);

Ditto here, should we also consider origin.topOrigin?

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:59
&gt; +    };

It would probably make sense to centralise the String -&gt; StorageType and StorageType -&gt; String routines.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:65
&gt; +            storageIdentifier = &quot;FileSystem&quot;;

_s

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:99
&gt; +            FileSystem::deleteAllFilesModifiedSince(fileSystemStoragePath, modifiedSinceTime);

Should deleteAllFilesModifiedSince handle the -WallTime::infinity() directly by calling deleteNonEmptyDirectory as an optimization?

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:112
&gt; +void OriginStorageManager::createOriginFileIfNecessary(const WebCore::ClientOrigin&amp; origin)

This routine should be next to the routine that reads the file.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:113
&gt; +{

ASSERT(!RunLoop::isMain());?

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:114
&gt; +    auto originFilePath = FileSystem::pathByAppendingComponent(m_path, &quot;origin&quot;);

It is worth adding a unique routine to the &quot;origin&quot; file, be it used in OriginStorageManager or NetworkStorageManager.
Probably &quot;origin&quot;_s

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:136
&gt; +    auto children = FileSystem::listDirectory(m_path);

ASSERT(!RunLoop::isMain());?

&gt; Tools/ChangeLog:10
&gt; +2021-11-30  Sihui Liu  &lt;sihui_liu@apple.com&gt;

Double change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819606</commentid>
    <comment_count>9</comment_count>
      <attachid>445685</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-02 00:32:12 -0800</bug_when>
    <thetext>Created attachment 445685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819615</commentid>
    <comment_count>10</comment_count>
      <attachid>445518</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-02 01:11:58 -0800</bug_when>
    <thetext>Comment on attachment 445518
Patch

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

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:552
&gt;&gt; +        ASSERT(*childType == FileType::Regular);
&gt; 
&gt; Worth using a switch.

Sure.

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:553
&gt;&gt; +        auto time = FileSystem::fileModificationTime(childPath);
&gt; 
&gt; Should this line be removed?
&gt; Can we add API tests for this function?

ah right; this is redundant. Sure I can add a test for it.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:339
&gt;&gt; +    auto handle = FileSystem::openFile(filePath, FileSystem::FileOpenMode::ReadWrite);
&gt; 
&gt; handle -&gt; originFileHandle.

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:347
&gt;&gt; +    auto readText = FileSystem::readEntireFile(handle);
&gt; 
&gt; readText -&gt; originData or something like that.

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:355
&gt;&gt; +}
&gt; 
&gt; I think it would be good to have the encoder part next to the decoder part.
&gt; That way, if we change one, it is easy to change the other.

Will move.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:357
&gt;&gt; +void NetworkStorageManager::forEachOriginDirectory(Function&lt;void(const String&amp; directory)&gt; apply)
&gt; 
&gt; s/Function/const Function&amp;/

Will change.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:386
&gt;&gt; +                originTypes.add(origin-&gt;clientOrigin, OptionSet&lt;WebsiteDataType&gt; { }).iterator-&gt;value.add(*type);
&gt; 
&gt; Should we also include an origin-&gt;topOrigin entry in originTypes?

I guess no, because the data should be viewed as opening origin&apos;s data (given that we currently only return one domain per record).
E.g. if user visits page from domain A (domain A does not use storage API), and there&apos;s some third-party frame from domain B (domain B uses storage API), I think we would classify the data as domain B&apos;s storage.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:452
&gt;&gt; +            return originSet.contains(origin.clientOrigin);
&gt; 
&gt; Shouldn&apos;t it be return originSet.contains(origin.clientOrigin) || originSet.contains(origin.topOrigin) ?
&gt; It is worth adding some tests here.

Like I mentioned above, record is created only based on opening origin (clientOrigin); so in deletion we also only consider about opening origin.
E.g. if a third party frame (origin B) on a page (origin A) have FileSystem storage, it&apos;s data will be stored in [WebKitStoragePath]/originA/originB/, and the fetch data API will only return 1 record like &quot;origin B, FileSystem&quot;.
Will try making a test.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:485
&gt;&gt; +            return domains.contains(domain);
&gt; 
&gt; Ditto here, should we also consider origin.topOrigin?

Explained above.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:59
&gt;&gt; +    };
&gt; 
&gt; It would probably make sense to centralise the String -&gt; StorageType and StorageType -&gt; String routines.

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:65
&gt;&gt; +            storageIdentifier = &quot;FileSystem&quot;;
&gt; 
&gt; _s

Will add.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:99
&gt;&gt; +            FileSystem::deleteAllFilesModifiedSince(fileSystemStoragePath, modifiedSinceTime);
&gt; 
&gt; Should deleteAllFilesModifiedSince handle the -WallTime::infinity() directly by calling deleteNonEmptyDirectory as an optimization?

Sounds good!

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:112
&gt;&gt; +void OriginStorageManager::createOriginFileIfNecessary(const WebCore::ClientOrigin&amp; origin)
&gt; 
&gt; This routine should be next to the routine that reads the file.

Will move it.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:113
&gt;&gt; +{
&gt; 
&gt; ASSERT(!RunLoop::isMain());?

Technically all originStorageManager code should run on background queue... will add

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:114
&gt;&gt; +    auto originFilePath = FileSystem::pathByAppendingComponent(m_path, &quot;origin&quot;);
&gt; 
&gt; It is worth adding a unique routine to the &quot;origin&quot; file, be it used in OriginStorageManager or NetworkStorageManager.
&gt; Probably &quot;origin&quot;_s

Will move this code to NetworkStorageManager.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:136
&gt;&gt; +    auto children = FileSystem::listDirectory(m_path);
&gt; 
&gt; ASSERT(!RunLoop::isMain());?

Will move to NetworkStorageManager

&gt;&gt; Tools/ChangeLog:10
&gt;&gt; +2021-11-30  Sihui Liu  &lt;sihui_liu@apple.com&gt;
&gt; 
&gt; Double change log

ah, will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819658</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-02 04:42:41 -0800</bug_when>
    <thetext>&gt; &gt; Shouldn&apos;t it be return originSet.contains(origin.clientOrigin) || originSet.contains(origin.topOrigin) ?
&gt; &gt; It is worth adding some tests here.
&gt; 
&gt; Like I mentioned above, record is created only based on opening origin
&gt; (clientOrigin); so in deletion we also only consider about opening origin.
&gt; E.g. if a third party frame (origin B) on a page (origin A) have FileSystem
&gt; storage, it&apos;s data will be stored in [WebKitStoragePath]/originA/originB/,
&gt; and the fetch data API will only return 1 record like &quot;origin B, FileSystem&quot;.
&gt; Will try making a test.

When registering a third party service worker (origin A/originB), the fetch data API will mention both origin A and origin B. Ditto for DOMCache.
I haven&apos;t looked at other types (IDB, local storage), but it would be worth being consistent across storage types, one way or the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819725</commentid>
    <comment_count>12</comment_count>
      <attachid>445724</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-02 09:08:22 -0800</bug_when>
    <thetext>Created attachment 445724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819750</commentid>
    <comment_count>13</comment_count>
      <attachid>445734</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-02 10:14:33 -0800</bug_when>
    <thetext>Created attachment 445734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819969</commentid>
    <comment_count>14</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-02 17:16:21 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #11)
&gt; &gt; &gt; Shouldn&apos;t it be return originSet.contains(origin.clientOrigin) || originSet.contains(origin.topOrigin) ?
&gt; &gt; &gt; It is worth adding some tests here.
&gt; &gt; 
&gt; &gt; Like I mentioned above, record is created only based on opening origin
&gt; &gt; (clientOrigin); so in deletion we also only consider about opening origin.
&gt; &gt; E.g. if a third party frame (origin B) on a page (origin A) have FileSystem
&gt; &gt; storage, it&apos;s data will be stored in [WebKitStoragePath]/originA/originB/,
&gt; &gt; and the fetch data API will only return 1 record like &quot;origin B, FileSystem&quot;.
&gt; &gt; Will try making a test.
&gt; 
&gt; When registering a third party service worker (origin A/originB), the fetch
&gt; data API will mention both origin A and origin B. Ditto for DOMCache.
&gt; I haven&apos;t looked at other types (IDB, local storage), but it would be worth
&gt; being consistent across storage types, one way or the other.

LocalStorage and IndexedDB does not allow third-party persistent storage.

Generally I think origin in the WebsiteDataRecord should be consistent: either it&apos;s top origin in all records, or it&apos;s opening origin. Otherwise we will return both origins in the example above, and when clients fetch data after deleting origin A, they will notice origin B is also gone, which is not very intuitive. An better alternative is to return both origins in the same record.

But since we have been using this policy in CacheStorage and ServiceWorker, I will make this consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820035</commentid>
    <comment_count>15</comment_count>
      <attachid>445813</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-02 22:58:08 -0800</bug_when>
    <thetext>Created attachment 445813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820052</commentid>
    <comment_count>16</comment_count>
      <attachid>445813</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-03 01:09:13 -0800</bug_when>
    <thetext>Comment on attachment 445813
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:517
&gt; +std::optional&lt;Vector&lt;uint8_t&gt;&gt; readEntireFile(PlatformFileHandle handle)

I can see a few places in our code base that could make use of it (createForFile, Engine::readSizeFile).
Let&apos;s file a bug to make use of this routine across the code base.

&gt; Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h:30
&gt; +#include &quot;ProcessQualified.h&quot;

Is that needed? Should it be in a cpp file instead?

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:49
&gt; +    auto originFileHandle = FileSystem::openFile(filePath, FileSystem::FileOpenMode::ReadWrite);

Should it be FileSystem::FileOpenMode::Read?

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:389
&gt; +void NetworkStorageManager::forEachOriginDirectory(Function&lt;void(const String&amp; directory)&gt;&amp;&amp; apply)

apply can probably be const&amp;?
No need for directory name?

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:456
&gt; +            // If origin cannot be retrieved, but we are asked to remove data for all origins, remove it.

If origin cannot be retrieved, we probably lost all this data and will not be able to reuse it in the future.
We should probably add release logging to catch this case.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:104
&gt; +            m_fileSystemStorageManager = nullptr;

Why not m_fileSystemStorageManager = nullptr; unconditionally?

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:156
&gt; +    defaultBucket().deleteData(types, modifiedSince);

ASSERT(!RunLoop::isMain());?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820053</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-03 01:12:13 -0800</bug_when>
    <thetext>&gt; Generally I think origin in the WebsiteDataRecord should be consistent:
&gt; either it&apos;s top origin in all records, or it&apos;s opening origin. Otherwise we
&gt; will return both origins in the example above, and when clients fetch data
&gt; after deleting origin A, they will notice origin B is also gone, which is
&gt; not very intuitive. An better alternative is to return both origins in the
&gt; same record.

Right, we should decide on precisely what we want to surface.
One thing I would expect is that if a user asks to delete all information stored by example.org, both example.org/XX and XX/example.org be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820190</commentid>
    <comment_count>18</comment_count>
      <attachid>445813</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-03 09:58:04 -0800</bug_when>
    <thetext>Comment on attachment 445813
Patch

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

&gt;&gt; Source/WTF/wtf/FileSystem.cpp:517
&gt;&gt; +std::optional&lt;Vector&lt;uint8_t&gt;&gt; readEntireFile(PlatformFileHandle handle)
&gt; 
&gt; I can see a few places in our code base that could make use of it (createForFile, Engine::readSizeFile).
&gt; Let&apos;s file a bug to make use of this routine across the code base.

Filed: https://bugs.webkit.org/show_bug.cgi?id=233818

&gt;&gt; Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h:30
&gt;&gt; +#include &quot;ProcessQualified.h&quot;
&gt; 
&gt; Is that needed? Should it be in a cpp file instead?

Yes, it seems to be needed by ScriptExecutionContextIdentifier.h, to avoid partial specialization before initialization error.
I didn&apos;t add it to ScriptExecutionContextIdentifier.h as I see the usage in a few places and try not touching those

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:49
&gt;&gt; +    auto originFileHandle = FileSystem::openFile(filePath, FileSystem::FileOpenMode::ReadWrite);
&gt; 
&gt; Should it be FileSystem::FileOpenMode::Read?

Yes.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:389
&gt;&gt; +void NetworkStorageManager::forEachOriginDirectory(Function&lt;void(const String&amp; directory)&gt;&amp;&amp; apply)
&gt; 
&gt; apply can probably be const&amp;?
&gt; No need for directory name?

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:456
&gt;&gt; +            // If origin cannot be retrieved, but we are asked to remove data for all origins, remove it.
&gt; 
&gt; If origin cannot be retrieved, we probably lost all this data and will not be able to reuse it in the future.
&gt; We should probably add release logging to catch this case.

Will add.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:104
&gt;&gt; +            m_fileSystemStorageManager = nullptr;
&gt; 
&gt; Why not m_fileSystemStorageManager = nullptr; unconditionally?

Will remove.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:156
&gt;&gt; +    defaultBucket().deleteData(types, modifiedSince);
&gt; 
&gt; ASSERT(!RunLoop::isMain());?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820240</commentid>
    <comment_count>19</comment_count>
      <attachid>445880</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-03 11:22:23 -0800</bug_when>
    <thetext>Created attachment 445880
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820265</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-03 12:17:23 -0800</bug_when>
    <thetext>Committed r286507 (244845@main): &lt;https://commits.webkit.org/244845@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445880.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820266</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-03 12:18:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/86029185&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820749</commentid>
    <comment_count>22</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-12-06 13:25:19 -0800</bug_when>
    <thetext>Reverting this in https://bugs.webkit.org/show_bug.cgi?id=233892 due to layout test flakiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821104</commentid>
    <comment_count>23</comment_count>
      <attachid>446199</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-07 10:36:17 -0800</bug_when>
    <thetext>Created attachment 446199
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821105</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 10:37:36 -0800</bug_when>
    <thetext>ChangeLog entry in Source/WTF/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821106</commentid>
    <comment_count>25</comment_count>
      <attachid>446200</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-07 10:38:14 -0800</bug_when>
    <thetext>Created attachment 446200
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821116</commentid>
    <comment_count>26</comment_count>
      <attachid>445880</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-12-07 10:59:53 -0800</bug_when>
    <thetext>Comment on attachment 445880
Patch for landing

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

Re-land this patch with a few changes to solve test flakiness issue.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:461
&gt; +            if (filter(WebCore::ClientOrigin { })) {
&gt; +                FileSystem::deleteAllFilesModifiedSince(directory, modifiedSinceTime);
&gt; +                FileSystem::deleteEmptyDirectory(directory);
&gt; +            }

This does not consider types and modifiedSince parameter. Changed to launch a temp OriginStorageManager for deletion.

&gt; Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:59
&gt;      void clearStorageForTesting(CompletionHandler&lt;void()&gt;&amp;&amp;);

Changed this function to only clear persisted state, because bots can run tests in parallel, and it currently clears storage between tests. 
If we actually clear file system storage in one worker after it finishes a test, the test runs in another worker may fail.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:97
&gt; +        FileSystem::deleteNonEmptyDirectory(m_rootPath);

Removed; it should be &quot;deleteEmptyDirectory&quot;, and because NetworkStorageManager handles origin file now, the directory is unlikely empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821132</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 11:33:25 -0800</bug_when>
    <thetext>Committed r286601 (244926@trunk): &lt;https://commits.webkit.org/244926@trunk&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446200.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445286</attachid>
            <date>2021-11-29 09:41:05 -0800</date>
            <delta_ts>2021-11-29 23:03:59 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip</filename>
            <type>text/plain</type>
            <size>36423</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNjRiYWM2YjZiNzAwLi43YjQ4ZjFjYTI4OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCkBAIC01MTQsNiArNTE0LDQ3IEBAIHN0ZDo6b3B0aW9uYWw8U2FsdD4g
cmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBzYWx0OwogfQog
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gc2l6ZSA9
IEZpbGVTeXN0ZW06OmZpbGVTaXplKGhhbmRsZSkudmFsdWVfb3IoMCk7CisgICAgaWYgKCFzaXpl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgdW5zaWduZWQgYnl0ZXNUb1Jl
YWQ7CisgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoc2l6ZSwgYnl0ZXNUb1JlYWQpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihi
eXRlc1RvUmVhZCk7CisgICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpy
ZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBp
ZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIGRlbGV0ZUFsbEZpbGVzTW9k
aWZpZWRTaW5jZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2FsbFRpbWUgdGltZSkKK3sKKyAg
ICBhdXRvIGNoaWxkcmVuID0gbGlzdERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0
byYgY2hpbGQgOiBjaGlsZHJlbikgeworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAg
YXV0byBjaGlsZFR5cGUgPSBmaWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxk
VHlwZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoKmNoaWxkVHlwZSA9PSBG
aWxlVHlwZTo6RGlyZWN0b3J5KSB7CisgICAgICAgICAgICBkZWxldGVBbGxGaWxlc01vZGlmaWVk
U2luY2UoY2hpbGRQYXRoLCB0aW1lKTsKKyAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNoaWxkUGF0aCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVCgqY2hpbGRUeXBlID09IEZpbGVUeXBlOjpSZWd1bGFyKTsKKyAgICAgICAgaWYgKGF1
dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGNo
aWxkUGF0aCk7IG1vZGlmaWNhdGlvblRpbWUgJiYgKm1vZGlmaWNhdGlvblRpbWUgPCB0aW1lKQor
ICAgICAgICAgICAgZGVsZXRlRmlsZShjaGlsZFBhdGgpOworICAgIH0KK30KKwogI2lmIEhBVkUo
U1REX0ZJTEVTWVNURU0pIHx8IEhBVkUoU1REX0VYUEVSSU1FTlRBTF9GSUxFU1lTVEVNKQogCiBi
b29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aAppbmRleCA5OTZiYzBiNmY3ZGEuLmZkODUzYTQ5YWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAt
MTA4LDYgKzEwOCw3IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUgewogCiBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJpbmcmLCBXYWxsVGltZSk7
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xk
UGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1s
aW5rcy4KQEAgLTE0Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0
IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogCiB1c2lu
ZyBTYWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFt
ZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCiBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9IHsgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRlNzY1ZGU0
NTA3MS4uNzBiNWFmZGE1MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtNzQsNiArNzQsNyBAQCBjb25zdCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRh
VAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywKICNlbmRpZgorICAgICAgICBXZWJzaXRlRGF0YVR5
cGU6OkZpbGVTeXN0ZW0sCiAgICAgfSkpOwogCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggNjY2YmNjMWIyMWI5Li5mNThjZjg1NWNhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNTU0LDYgKzE1NTQsMTIgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgfQogICAgIH0KICNlbmRpZgorCisgICAg
aWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0
ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52
YWx1ZS0+ZmV0Y2hEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1
dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1f
d2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CisgICAgICAgIH0pOwor
ICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0
YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNjI4LDYgKzE2MzQsOSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaQogICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24tPmNsZWFyQWx0ZXJuYXRpdmVT
ZXJ2aWNlcyhtb2RpZmllZFNpbmNlKTsKICAgICB9CiAjZW5kaWYKKworICAgIGlmIChhdXRvIGl0
ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBt
X3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVE
YXRhTW9kaWZpZWRTaW5jZSh3ZWJzaXRlRGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBbY2xlYXJU
YXNrc0hhbmRsZXJdIHsgfSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmll
cyhOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2lu
RGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTE3MzUsNiArMTc0NCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAg
fQogI2VuZGlmCiAKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZp
bmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpCisgICAg
ICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBvcmlnaW5E
YXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOworCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0
YUZvcjsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCkBAIC0x
OTU4LDYgKzE5NzAsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAgfSk7CiAg
ICAgfQogCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNl
c3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAg
IGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyh3ZWJzaXRl
RGF0YVR5cGVzLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgW2Nh
bGxiYWNrQWdncmVnYXRvcl0oYXV0byBkZWxldGVkRG9tYWlucykgbXV0YWJsZSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRlbGV0ZWREb21haW5zKQorICAgICAgICAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChkb21haW4pOworICAgICAgICB9KTsK
KyAgICB9CisKICAgICBhdXRvIGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpm
aWx0ZXIod2Vic2l0ZURhdGFUeXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOwogICAg
IGlmICghZGF0YVR5cGVzRm9yVUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuaXNFbXB0eSgpKSB7CiAgICAgICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gY29tcGxl
dGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tBZ2dyZWdhdG9yXSAoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKQEAgLTIwNzQsNiArMjA5MywxMiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELAogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KKworICAg
IGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBp
dGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+
dmFsdWUtPmZldGNoRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShh
dXRvIGVudHJpZXMpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOworICAgICAgICB9KTsK
KyAgICB9CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJ
T04pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKaW5kZXggZmI5Mjk4MTQxYjBkLi40NzMz
OGVmZTUzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCkBAIC02Miw2ICs2Miw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3RkOjpwYWlyPFdlYkNvcmU6
OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFyZWRGaWxlSGFu
ZGxlPjsKICAgICBFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yPiBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7CiAgICAgc3RkOjpvcHRpb25hbDxGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPiBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGVJZGVudGlmaWVyPiBhY3RpdmVTeW5jQWNjZXNzSGFuZGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlOyB9CiAKIHByaXZhdGU6CiAgICAgRXhwZWN0
ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IHJlcXVlc3RDcmVhdGVIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgVHlw
ZSwgU3RyaW5nJiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDM4YWEyNjU1YzM5ZC4uYzYwZTQ0MzRkNGE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDIsOCArNDIsNyBAQCBGaWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXI6On5GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBt
X2hhbmRsZXMua2V5cygpKQotICAgICAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJIYW5kbGUoaWRl
bnRpZmllcik7CisgICAgY2xvc2UoKTsKIH0KIAogRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVj
dGlvbiwgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OlR5cGUgdHlwZSwgU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSkKQEAgLTE0OSw0ICsxNDgsMzIg
QEAgYm9vbCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OnJlbGVhc2VMb2NrRm9yRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQg
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uSUQsIGlkZW50aWZpZXJz
XSA6IG1faGFuZGxlc0J5Q29ubmVjdGlvbikgeworICAgICAgICBSZWZQdHIgY29ubmVjdGlvbiA9
IElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihjb25uZWN0aW9uSUQpOworCisgICAgICAgIGZv
ciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgIGF1dG8gdGFr
ZW5IYW5kbGUgPSBtX2hhbmRsZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcmVn
aXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKworICAgICAgICAgICAgaWYgKCFj
b25uZWN0aW9uKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRv
IGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIgPSB0YWtlbkhhbmRsZS0+YWN0aXZlU3luY0FjY2Vzc0hh
bmRsZSgpOworICAgICAgICAgICAgaWYgKCFhY2Nlc3NIYW5kbGVJZGVudGlmaWVyKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBUT0RPOiBzZW5kIG1lc3NhZ2Ug
dG8gd2ViIHByb2Nlc3MgdG8gaW52YWxpZGF0ZSBzeW5jIGFjY2VzcyBoYW5kbGUuCisgICAgICAg
ICAgICAvLyBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OkludmFsaWRhdGVBY2Nlc3NIYW5kbGUoKmFjY2Vzc0hhbmRsZUlkZW50aWZpZXIp
LCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChtX2hhbmRsZXMuaXNFbXB0eSgp
KTsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24uY2xlYXIoKTsKKyAgICBtX2xvY2tNYXAuY2xl
YXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyLmgKaW5kZXggYjg1NzY3NjhiMzU1Li41MzU5ODk1ODEwZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogICAgIGJvb2wgcmVsZWFz
ZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgorICAgIHZvaWQgY2xvc2UoKTsKKwogICAgIFN0cmlu
ZyBtX3BhdGg7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgbV9yZWdpc3Ry
eTsKICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8V2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXI+PiBtX2hhbmRsZXNCeUNvbm5lY3Rpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDI5NzhhMjVlZjEyNS4uNDlhNzE2NjcxZDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdl
TWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNp
bmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC0xMzEsMTAgKzEzMiwx
OCBAQCBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgcmV0dXJuICptX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmVuc3VyZShv
cmlnaW4sIFsmXSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5h
Z2VyPihvcmlnaW5QYXRoKG1fcGF0aCwgb3JpZ2luLCBtX3NhbHQpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KG9yaWdpblBhdGgobV9wYXRoLCBvcmln
aW4sIG1fc2FsdCksIG9yaWdpbik7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3Np
YmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChhdXRv
IGl0ZXJhdG9yID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5maW5kKG9yaWdpbik7IGl0
ZXJhdG9yICE9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAg
aWYgKCFpdGVyYXRvci0+dmFsdWUtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2xvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXJzLnJlbW92ZShpdGVyYXRvcik7CisgICAgfQorfQorCiB2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6cGVyc2lzdGVkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMzA1LDUgKzMxNCwx
ODIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEhhbmRsZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OkZpbGUKICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5k
bGUtPmdldEhhbmRsZShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIFdURk1vdmUobmFtZSkpKTsKIH0K
IAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlw
ZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VUeXBlKQoreworICAgIGlmIChzdG9yYWdlVHlwZSA9PSAi
RmlsZVN5c3RlbSIpCisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW07
CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDbGllbnRPcmlnaW4+IHJlYWRPcmlnaW5Gcm9tRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBhdXRvIGNsb3NlRmls
ZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CisgICAgfSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcmVhZFRleHQg
PSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShoYW5kbGUpOworICAgIGlmICghcmVhZFRleHQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIG9yaWdpbnNTdHJpbmcg
PSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoKnJlYWRUZXh0KSk7CisgICAgYXV0byBvcmlnaW5zID0g
b3JpZ2luc1N0cmluZy5zcGxpdCgiXG4iKTsKKyAgICBpZiAob3JpZ2lucy5zaXplKCkgIT0gMikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gdG9wT3JpZ2luID0gV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbnNb
MF0pOworICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgYXV0byBvcGVuaW5nT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbnNbMV0pOworICAgIGlmICghb3BlbmluZ09yaWdp
bikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBXZWJDb3JlOjpD
bGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqb3BlbmluZ09yaWdpbiB9OworfQorCitWZWN0b3I8
V2Vic2l0ZURhdGE6OkVudHJ5PiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZldGNoRGF0YUZyb21E
aXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHRhcmdldFR5cGVzKQoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+PiBvcmlnaW5UeXBlczsKKyAgICBm
b3IgKGF1dG8mIHRvcE9yaWdpbiA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKSkg
eworICAgICAgICBhdXRvIHRvcE9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIHRvcE9yaWdpbik7CisgICAgICAgIGZvciAoYXV0byYg
b3BlbmluZ09yaWdpbiA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0
b3J5KSkgeworICAgICAgICAgICAgYXV0byBvcGVuaW5nT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRvcE9yaWdpbkRpcmVjdG9yeSwgb3Blbmlu
Z09yaWdpbik7CisgICAgICAgICAgICBhdXRvIG9yaWdpbkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9wZW5pbmdPcmlnaW5EaXJlY3RvcnksICJvcmlnaW4i
KTsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2luID0gcmVhZE9yaWdpbkZyb21GaWxlKG9yaWdpbkZp
bGVQYXRoKTsKKyAgICAgICAgICAgIGlmICghb3JpZ2luKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VUeXBlIDogRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShvcGVuaW5nT3JpZ2luRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgICAg
IGlmIChhdXRvIHR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZShzdG9yYWdlVHlwZSk7IHR5cGUgJiYg
dGFyZ2V0VHlwZXMuY29udGFpbnMoKnR5cGUpKQorICAgICAgICAgICAgICAgICAgICBvcmlnaW5U
eXBlcy5hZGQob3JpZ2luLT5jbGllbnRPcmlnaW4sIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
eyB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCp0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IGVudHJpZXM7CisgICAg
Zm9yIChhdXRvIFtvcmlnaW4sIHR5cGVzXSA6IG9yaWdpblR5cGVzKQorICAgICAgICBmb3IgKGF1
dG8gdHlwZSA6IHR5cGVzKSB7CisgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZCh7IFdlYnNpdGVE
YXRhOjpFbnRyeSB7IG9yaWdpbiwgdHlwZSwgMCB9fSk7CisgICAgfQorCisgICAgcmV0dXJuIGVu
dHJpZXM7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGEoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlw
ZXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8gZW50cmllcyA9IGZldGNoRGF0YUZyb21EaXNrKHR5cGVzKTsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZW50cmllcyA9IGNyb3NzVGhyZWFkQ29weShlbnRyaWVzKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cmllcykpOworICAgICAg
ICB9KTsKKyAgICB9KTsKK30KKworVmVjdG9yPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgY29uc3QgRnVuY3Rpb248Ym9v
bChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKT4mIGZpbHRlcikKK3sKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpDbGllbnRPcmlnaW4+
IGRlbGV0ZWRPcmlnaW5zOworICAgIGZvciAoYXV0byYgdG9wT3JpZ2luIDogRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShtX3BhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgdG9wT3JpZ2lu
KTsKKyAgICAgICAgZm9yIChhdXRvJiBvcGVuaW5nT3JpZ2luIDogRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpKSB7CisgICAgICAgICAgICBhdXRvIG9wZW5pbmdP
cmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodG9w
T3JpZ2luRGlyZWN0b3J5LCBvcGVuaW5nT3JpZ2luKTsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2lu
RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3BlbmluZ09y
aWdpbkRpcmVjdG9yeSwgIm9yaWdpbiIpOworICAgICAgICAgICAgYXV0byBvcmlnaW4gPSByZWFk
T3JpZ2luRnJvbUZpbGUob3JpZ2luRmlsZVBhdGgpOworICAgICAgICAgICAgaWYgKCFvcmlnaW4p
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghZmlsdGVyKCpv
cmlnaW4pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBkZWxldGVk
T3JpZ2lucy5hcHBlbmQoKm9yaWdpbik7CisgICAgICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKCpvcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lKTsKKyAg
ICAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSgqb3JpZ2luKTsK
KworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3BlbmluZ09y
aWdpbkRpcmVjdG9yeSk7CisgICAgICAgIH0KKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgIH0KKworICAgIHJldHVybiBk
ZWxldGVkT3JpZ2luczsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURh
dGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIG9yaWdpbnMgPSBjcm9zc1RocmVh
ZENvcHkob3JpZ2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBvcmlnaW5TZXQ7CisgICAgICAgIG9yaWdpblNldC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG9yaWdpbnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5z
KQorICAgICAgICAgICAgb3JpZ2luU2V0LmFkZChvcmlnaW4pOworCisgICAgICAgIGRlbGV0ZURh
dGFPbkRpc2sodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgWyZvcmlnaW5TZXRdKGF1dG8g
b3JpZ2luKSB7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbi5j
bGllbnRPcmlnaW4pOworICAgICAgICB9KTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBl
cywgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGRlbGV0ZURhdGFPbkRpc2sodHlwZXMs
IG1vZGlmaWVkU2luY2VUaW1lLCBbXShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0pOworCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gdHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5
cGVzLCBkb21haW5zID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRv
IGRlbGV0ZWRPcmlnaW5zID0gZGVsZXRlRGF0YU9uRGlzayh0eXBlcywgLVdhbGxUaW1lOjppbmZp
bml0eSgpLCBbJmRvbWFpbnNdKGF1dG8mIG9yaWdpbikgeworICAgICAgICAgICAgYXV0byBkb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qo
b3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0KTsKKyAgICAgICAgICAgIHJldHVybiBkb21haW5zLmNv
bnRhaW5zKGRvbWFpbik7CisgICAgICAgIH0pOworCisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gZGVsZXRlZERvbWFpbnM7CisgICAgICAgIGZvciAoYXV0byBvcmln
aW4gOiBkZWxldGVkT3JpZ2lucykgeworICAgICAgICAgICAgYXV0byBkb21haW4gPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luLmNsaWVu
dE9yaWdpbi5ob3N0KTsKKyAgICAgICAgICAgIGlmICghZGVsZXRlZERvbWFpbnMuY29udGFpbnMo
ZG9tYWluKSkKKyAgICAgICAgICAgICAgICBkZWxldGVkRG9tYWlucy5hcHBlbmQoZG9tYWluKTsK
KyAgICAgICAgfQorCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZGVsZXRlZERv
bWFpbnMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShkb21haW5zKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDViYzU2YjdjNjQ2Yy4uOWZkYzRk
ZDljY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC0yOCwxMCArMjgsMTIgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5o
IgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNz
IFNoYXJlZEZpbGVIYW5kbGU7CkBAIC01NSwxMyArNTcsMjIgQEAgcHVibGljOgogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAg
dm9pZCBjbG9zZSgpOwogICAgIHZvaWQgY2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50
cnk+JiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFNb2RpZmllZFNpbmNlKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4mKT4mJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIH5OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9y
YWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICB2b2lkIHJlbW92
ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mKTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBmaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZVJlZ2lzdHJ5KCk7CiAKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBm
ZXRjaERhdGFGcm9tRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CisgICAgVmVjdG9y
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlRGF0YU9uRGlzayhPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgV2FsbFRpbWUsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJik+Jik7CisgICAgCisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciAo
aW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggNGYwNmY0NTI0NjU2Li4zYmQ1YjQ5NDFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC02NCwxNiArNjUsNzkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKm1fZmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyOwogICAgIH0KIAorICAgIGJvb2wgaXNBY3RpdmUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICEhbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CisgICAgfQorCisg
ICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxs
VGltZSBtb2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQorICAgICAgICAgICAgZGVsZXRlRmlsZVN5
c3RlbVN0b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKKworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShtX3Jvb3RQYXRoKTsKKyAgICB9CisKIHByaXZhdGU6
CisgICAgdm9pZCBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEoV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZVRpbWUpCisgICAgeworICAgICAgICBpZiAobV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIp
CisgICAgICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9IG51bGxwdHI7CisKKyAg
ICAgICAgYXV0byBmaWxlU3lzdGVtU3RvcmFnZVBhdGggPSB0eXBlU3RvcmFnZVBhdGgoIkZpbGVT
eXN0ZW0iKTsKKyAgICAgICAgaWYgKG1vZGlmaWVkU2luY2VUaW1lID4gLVdhbGxUaW1lOjppbmZp
bml0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01vZGlmaWVk
U2luY2UoZmlsZVN5c3RlbVN0b3JhZ2VQYXRoLCBtb2RpZmllZFNpbmNlVGltZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeShmaWxlU3lzdGVtU3RvcmFnZVBhdGgpOworICAgIH0KKwogICAgIFN0cmlu
ZyBtX3Jvb3RQYXRoOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgU3RvcmFnZUJ1Y2tl
dE1vZGUgbV9tb2RlIHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQgfTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyPiBtX2ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlcjsKIH07CiAKLU9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdl
cihTdHJpbmcmJiBwYXRoKQordm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y3JlYXRlT3JpZ2lu
RmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorewor
ICAgIGF1dG8gb3JpZ2luRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9wYXRoLCAib3JpZ2luIik7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
b3JpZ2luRmlsZVBhdGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGhhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKG9yaWdpbkZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OlJlYWRXcml0ZSk7CisgICAgYXV0byBjbG9zZUZpbGUgPSBtYWtlU2NvcGVFeGl0KFsmXSB7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAg
aWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6IEZhaWxlZCB0
byBvcGVuIG9yaWdpbiBmaWxlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQob3JpZ2luLnRvcE9yaWdpbi5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVp
bGRlci5hcHBlbmQob3JpZ2luLmNsaWVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgYXV0byBvcmlnaW5Db250ZW50ID0gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKKyAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIG9yaWdpbkNvbnRlbnQuZGF0YSgpLCBvcmln
aW5Db250ZW50Lmxlbmd0aCgpKTsKK30KKwordm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVs
ZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICBhdXRvIGNoaWxkcmVuID0gRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShtX3BhdGgpOworICAgIGlmIChjaGlsZHJlbi5zaXplKCkgIT0g
MSB8fCBjaGlsZHJlbi5maXJzdCgpICE9ICJvcmlnaW4iKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIG9yaWdpbkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fcGF0aCwgIm9yaWdpbiIpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUob3JpZ2lu
RmlsZVBhdGgpOworfQorCitPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXIoU3RyaW5nJiYgcGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiAg
ICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3Nhcnkob3JpZ2luKTsKIH0KIAogT3Jp
Z2luU3RvcmFnZU1hbmFnZXI6On5PcmlnaW5TdG9yYWdlTWFuYWdlcigpID0gZGVmYXVsdDsKQEAg
LTEwMyw1ICsxNjcsMTggQEAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXMKICAgICByZXR1cm4gZGVm
YXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihyZWdpc3RyeSk7CiB9CiAKK2Jv
b2wgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlKCkKK3sKKyAgICByZXR1cm4gZGVmYXVs
dEJ1Y2tldCgpLmlzQWN0aXZlKCk7Cit9CisKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlm
aWVkU2luY2UpCit7CisgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlm
aWVkU2luY2UpOworCisgICAgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCk7CisgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkobV9wYXRoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYTRjMTFhZDY1YTVjLi44
ZTUzNjBlYmQ5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCkBAIC0yOCwyNyArMjgsMzcgQEAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRPcmlnaW47Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Owog
Y2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5
cGUgOiB1aW50MzJfdDsKIAogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKFN0cmluZyYmIHBhdGgpOworICAgIGV4cGxpY2l0IE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
KFN0cmluZyYmIHBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIH5Pcmln
aW5TdG9yYWdlTWFuYWdlcigpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQpOwogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9wZXJzaXN0ZWQ7IH0KICAgICB2b2lkIHBlcnNpc3QoKTsKICAgICBGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZVJlZ2lzdHJ5Jik7CisgICAgYm9vbCBpc0FjdGl2ZSgpOworICAgIHZvaWQgZGVsZXRlRGF0YShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwogCiBwcml2YXRlOgogICAgIGVu
dW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNzIFN0b3JhZ2VCdWNr
ZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCisgICAgdm9pZCBjcmVh
dGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Cisg
ICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3RyaW5nIG1fcGF0aDsK
ICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCBmMzcyOTAxMzhiNGYuLmY5YjJm
ZTA0MDlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhLmNwcApAQCAtMTI5LDYgKzEyOSw4IEBAIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vi
c2l0ZURhdGE6Om93bmVyUHJvY2VzcyhXZWJzaXRlRGF0YVR5cGUgZGF0YVR5cGUpCiAgICAgY2Fz
ZSBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXM6CiAgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOwogI2VuZGlmCisgICAgY2FzZSBXZWJzaXRl
RGF0YVR5cGU6OkZpbGVTeXN0ZW06CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NU
eXBlOjpOZXR3b3JrOwogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlw
ZS5oCmluZGV4IDdhOWU1MDBmZTFiMC4uZTQ1OWEwOTAzOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaApAQCAtNTIsNiArNTIs
NyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90IHsKICNpZiBIQVZFKENG
TkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQogICAgIEFsdGVybmF0aXZlU2VydmljZXMgPSAx
IDw8IDE4LAogI2VuZGlmCisgICAgRmlsZVN5c3RlbSA9IDEgPDwgMTksCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKQEAgLTc5LDEwICs4MCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB7CiAjZW5kaWYKICAgICAgICAgV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLAogICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6RGV2aWNlSWRIYXNoU2FsdCwKLSAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50cworICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzLAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFU
SVZFX1NFUlZJQ0UpCi0gICAgICAgICwgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0
aXZlU2VydmljZXMKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZl
U2VydmljZXMsCiAjZW5kaWYKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkZpbGVT
eXN0ZW0KICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQppbmRleCBjODI2MTZmNzkwYzYuLmZh
MTExM2U0N2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAgLTUxLDYgKzUxLDcgQEAgTlNTdHJpbmcg
KiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyA9IEAiX1dLV2Vic2l0ZURhdGFU
eXBlQ3JlZGVudGlhbHMKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlj
a0F0dHJpYnV0aW9ucyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucyI7
CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzIjsKIE5T
U3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyA9IEAi
X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyI7CitOU1N0cmluZyAqIGNvbnN0
IF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0gPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUZpbGVT
eXN0ZW0iOwogCiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVQbHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhIjsKQEAg
LTExMCw2ICsxMTEsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5nKE5TU2V0
ICpkYXRhVHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50cyJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNp
dGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAiQWx0ZXJuYXRpdmUgU2VydmljZXMiXTsKKyAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXSkKKyAgICAgICAgW2FycmF5IGFkZE9i
amVjdDpAIkZpbGUgU3lzdGVtIl07CiAKICAgICByZXR1cm4gW2FycmF5IGNvbXBvbmVudHNKb2lu
ZWRCeVN0cmluZzpAIiwgIl07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKaW5kZXgg
ZGJjNWYzZjdhMWZmLi45MTQ0OGVlMWQ1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFs
LmgKQEAgLTc3LDYgKzc3LDggQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVE
YXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndlYnNpdGUKICAgICBpZiAoW3dl
YnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRp
dmVTZXJ2aWNlc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZl
U2VydmljZXM7CiAjZW5kaWYKKyAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJp
bmc6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV0pCisgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVR5cGU6OkZpbGVTeXN0ZW07CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAt
MTM0LDYgKzEzNiw4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2l0
ZURhdGFUeXBlcyhPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0CiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkK
ICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBl
QWx0ZXJuYXRpdmVTZXJ2aWNlc107CiAjZW5kaWYKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQorICAgICAgICBbd2tXZWJzaXRl
RGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKIAogICAg
IHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5o
CmluZGV4IGQ2MDdkZmUxM2Y2MS4uMmNmOWE0ZDJhMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFBy
aXZhdGUuaApAQCAtMzcsNiArMzcsNyBAQCBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBXS19BUElfQVZBSUxBQkxFKG1hY29zKAogV0tfRVhU
RVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9u
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIFdLX0VYVEVSTiBO
U1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1cmVtZW50
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogV0tfRVhURVJOIE5T
U3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOworV0tfRVhURVJOIE5TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhP
TkUKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRh
dGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggZTJi
MDczNjQ2NGIxLi43ZWYwNjk1MGFiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjQ4LDcgKzI0OCw4
IEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQ
cml2YXRlCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywKICAgICAg
ICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMsCiAgICAgICAgICAg
ICBfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMsCi0gICAgICAgICAg
ICBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzCisgICAgICAgICAgICBfV0tX
ZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzLAorICAgICAgICAgICAgX1dLV2Vic2l0
ZURhdGFUeXBlRmlsZVN5c3RlbQogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAgICAgICAgICAgICAs
IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tCmlu
ZGV4IDUyYWI5Y2UyOGI3NS4uYmI1YTFhZDYxYjQ2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tCkBAIC0z
NCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRh
UmVjb3JkUHJpdmF0ZS5oPgogCiBAaW50ZXJmYWNlIEZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFu
ZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogQGVuZApAQCAtMTk2LDQg
KzE5Nyw3NSBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIE1pZ3JhdGVUb05ld1N0b3JhZ2VEaXJl
Y3RvcnkpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV0pOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBAIjxz
Y3JpcHQ+IFwKKyAgICBhc3luYyBmdW5jdGlvbiBvcGVuKHNob3VsZENyZWF0ZUZpbGUpIFwKKyAg
ICB7IFwKKyAgICAgICAgdHJ5IHsgXAorICAgICAgICAgICAgdmFyIHJvb3RIYW5kbGUgPSBhd2Fp
dCBuYXZpZ2F0b3Iuc3RvcmFnZS5nZXREaXJlY3RvcnkoKTsgXAorICAgICAgICAgICAgdmFyIGZp
bGVIYW5kbGUgPSBhd2FpdCByb290SGFuZGxlLmdldEZpbGVIYW5kbGUoJ2ZpbGUtc3lzdGVtLWFj
Y2Vzcy50eHQnLCB7ICdjcmVhdGUnIDogc2hvdWxkQ3JlYXRlRmlsZSB9KTsgXAorICAgICAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2Uo
J2ZpbGUgaXMgb3BlbmVkJyk7IFwKKyAgICAgICAgfSBjYXRjaCAoZXJyKSB7IFwKKyAgICAgICAg
ICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdl
KCdlcnJvcjogJyArIGVyci5uYW1lICsgJyAtICcgKyBlcnIubWVzc2FnZSk7IFwKKyAgICAgICAg
fSBcCisgICAgfSBcCisgICAgb3Blbih0cnVlKTsgXAorICAgIDwvc2NyaXB0PiI7CisKK1RFU1Qo
RmlsZVN5c3RlbUFjY2VzcywgRmV0Y2hBbmREZWxldGVEYXRhKQoreworICAgIGF1dG8gaGFuZGxl
ciA9IGFkb3B0TlMoW1tGaWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RI
YW5kbGVyIl07CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vi
c2l0ZURhdGFTdG9yZV07CisKKyAgICAvLyBDbGVhbiB1cCBleGlzdGluZyBkYXRhLgorICAgIE5T
U2V0ICp0eXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVT
eXN0ZW1dOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRh
U3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmUg
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5
PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShyZWNvcmRzLmNvdW50LCAwdSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
fV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJl
ZmVyZW5jZXMuX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2Vz
Ll9zdG9yYWdlQVBJRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOmJhc2ljU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAg
IEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJv
ZHldKTsKKworICAgIC8qCisgICAgLy8gRmV0Y2ggZGF0YSBhZnRlciBmaWxlIGlzIGNyZWF0ZWQu
CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAx
dSk7CisgICAgICAgIGF1dG8gcmVjb3JkID0gW3JlY29yZHMgb2JqZWN0QXRJbmRleDowXTsKKyAg
ICAgICAgRVhQRUNUX1NUUkVRKCJodHRwczovL3dlYmtpdC5vcmciLCBbcmVjb3JkLmRpc3BsYXlO
YW1lIFVURjhTdHJpbmddKTsKKworICAgICAgICAvLyBSZW1vdmUgZGF0YS4KKyAgICAgICAgW3dl
YnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgZm9yRGF0YVJlY29yZHM6cmVj
b3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAg
ICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgLy8gRmlsZSBjYW5ub3QgYmUgb3BlbmVkIGFmdGVyIGRhdGEgcmVtb3ZhbC4KKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJvcGVuKGZhbHNlKSIgY29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVz
c2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNUX1dL
X1NUUkVRKEAiZXJyb3IiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworCisgICAgLy8gRmV0
Y2ggZGF0YSBhZnRlciBkYXRhIGlzIHJlbW92ZWQuCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3
ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAg
ICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAwdSk7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgICAqLworfQorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445383</attachid>
            <date>2021-11-29 23:04:01 -0800</date>
            <delta_ts>2021-11-29 23:51:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211129230400.patch</filename>
            <type>text/plain</type>
            <size>53872</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmExMmJmOGI5ZjNhMTg2NzI5YjEzNmZmNWM4NGQyMmZmYzkxNzg2
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTExLTE5ICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gYWRkIGF1ZGlvIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYWQ4ZTY4ODBmMDU1OTgxNmE0NzBkNzU1MDViMTg5ZWYxOTJhNjg1NC4uYjI4Njkw
NjYzYTAyNmIyMDEzNzE0Nzg5NTQzNjVkMWE2ZTUxY2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
MyBAQAorMjAyMS0xMS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBGZXRjaCBhbmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0ZURhdGFT
dG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIGEgbmV3IFdlYnNpdGVEYXRhVHlwZSB2YWx1ZSBGaWxlU3lzdGVtIGZvciBGaWxlU3lz
dGVtQWNjZXNzIGRhdGEuIE5ldHdvcmsgcHJvY2VzcyBub3cgY2FuIGZldGNoIGFuZCAKKyAgICAg
ICAgZGVsZXRlIHRoaXMgdHlwZSBvZiBkYXRhIHdoZW4gZmV0Y2hpbmcgYW5kIGRlbGV0ZWluZyB3
ZWJzaXRlIGRhdGEgKGlmIEZpbGVTeXN0ZW0gdHlwZSBpcyBpbmNsdWRlZCBpbiB0YXJnZXQKKyAg
ICAgICAgdHlwZXMpLgorCisgICAgICAgIFRvIGdldCB0aGUgb3JpZ2lucyB0aGF0IGhhdmUgRmls
ZVN5c3RlbSBkYXRhLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmlsZSBuYW1lZCBvcmln
aW4gaW4gdGhlIG9yaWdpbiAKKyAgICAgICAgZGlyZWN0b3J5LiBUaGlzIGZpbGUgd2lsbCBiZSBj
cmVhdGVkIHdoZW4gT3JpZ2luU3RvcmFnZU1hbmFnZXIgaXMgY3JlYXRlZC4KKworICAgICAgICBU
byBkZWxldGUgZXhpc3RpbmcgRmlsZVN5c3RlbSBkYXRhLCBuZXR3b3JrIHByb2Nlc3MgZmluZHMg
b3JpZ2lucyB0aGF0IGFyZSByZXF1ZXN0ZWQgdG8gYmUgZGVsZXRlZCBhbmQgaGF2ZSBkYXRhIAor
ICAgICAgICBvbiBkaXNrLCBjbG9zZXMgYWN0aXZlIGhhbmRsZXMgaGVsZCBvbiB0aGVpciBmaWxl
cywgYW5kIGRlbGV0ZXMgdGhlIGZpbGVzLiBUaGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3Zl
IHdpbGwgCisgICAgICAgIGJlIGRlbGV0ZWQgaWYgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0
IGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYW5kIGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVs
ZXRlZC4KKworICAgICAgICBOZXcgQVBJIHRlc3Q6IEZpbGVTeXN0ZW1BY2Nlc3MuRmV0Y2hBbmRE
ZWxldGVEYXRhCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhXZWJzaXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlOjpyZXF1ZXN0Q3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGU6OmdldEZpbGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZTo6Z2V0RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmdldEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0
OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6On5GaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcjo6Z2V0RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFn
ZXJJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpm
aWxlU3lzdGVtR2V0RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpnZXRGaWxlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpnZXREaXJlY3RvcnlIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFU
eXBlKToKKyAgICAgICAgKFdlYktpdDo6cmVhZE9yaWdpbkZyb21GaWxlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRmlsZVN5c3RlbVN0
b3JhZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjpv
d25lclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQu
bW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBl
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJ
bmNsdWRpbmdQcml2YXRlXSk6CisKIDIwMjEtMTEtMjYgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9u
c1dQRS5jbWFrZSBhbmQgTkVXUyBmb3IgdGhlIDIuMzUuMSByZWxlYXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwCmluZGV4IDY0YmFjNmI2YjcwMDE2MTBiNTNmMmUxZDMwOTI2N2JkNWE0MGY1MzguLjFiNzVi
ZTJhYTFkOWNmY2I1Yjg5MTQzOTJhY2U0OTllZWExY2U0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3Bw
CkBAIC01MTQsNiArNTE0LDQ4IEBAIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBzYWx0OwogfQogCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0ZW06OmZp
bGVTaXplKGhhbmRsZSkudmFsdWVfb3IoMCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgdW5zaWduZWQgYnl0ZXNUb1JlYWQ7CisgICAgaWYgKCFX
VEY6OmNvbnZlcnRTYWZlbHkoc2l6ZSwgYnl0ZXNUb1JlYWQpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7Cisg
ICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAodG90YWxCeXRlc1Jl
YWQgIT0gYnl0ZXNUb1JlYWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCit2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSwgV2FsbFRpbWUgdGltZSkKK3sKKyAgICBhdXRvIGNoaWxkcmVu
ID0gbGlzdERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbikgeworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAgYXV0byBjaGlsZFR5cGUg
PSBmaWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxkVHlwZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoKmNoaWxkVHlwZSA9PSBGaWxlVHlwZTo6RGlyZWN0
b3J5KSB7CisgICAgICAgICAgICBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY2hpbGRQYXRo
LCB0aW1lKTsKKyAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNoaWxkUGF0aCk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCgqY2hpbGRU
eXBlID09IEZpbGVUeXBlOjpSZWd1bGFyKTsKKyAgICAgICAgYXV0byB0aW1lID0gRmlsZVN5c3Rl
bTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY2hpbGRQYXRoKTsKKyAgICAgICAgaWYgKGF1dG8gbW9k
aWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGNoaWxkUGF0
aCk7IG1vZGlmaWNhdGlvblRpbWUgJiYgKm1vZGlmaWNhdGlvblRpbWUgPj0gdGltZSkKKyAgICAg
ICAgICAgIGRlbGV0ZUZpbGUoY2hpbGRQYXRoKTsKKyAgICB9Cit9CisKICNpZiBIQVZFKFNURF9G
SUxFU1lTVEVNKSB8fCBIQVZFKFNURF9FWFBFUklNRU5UQUxfRklMRVNZU1RFTSkKIAogYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5k
ZXggOTk2YmMwYjZmN2RhOGFkZDBhNmU1YjkxN2FjODZjZWM1YWY3MDlhNC4uZmQ4NTNhNDlhYWM4
ZGMwMWYzMTU3MDRjZTQ5ZDczNDY1YWUwNTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTA4LDYg
KzEwOCw3IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUgewogCiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRl
bGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJpbmcmLCBXYWxsVGltZSk7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwg
Y29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1saW5rcy4K
QEAgLTE0Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogCiB1c2luZyBTYWx0
ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlv
bmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91
bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9y
bUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9IHsgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRlNzY1ZGU0NTA3MWY0
MWYzZmM0ZDQ2OTcwNTM4MTZlMTg5OWViZmEuLjcwYjVhZmRhNTI2ZTk5MDliOTYyZDcxMjEzZDg1
YjYwYjUzNzE4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCkBAIC03NCw2ICs3NCw3IEBAIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zLAogI2VuZGlmCisgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6Rmls
ZVN5c3RlbSwKICAgICB9KSk7CiAKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2
NjZiY2MxYjIxYjk1ZDA4OTJiMmYyM2ZkYzEyOWZiYWU2MWZlMzIxLi5mNThjZjg1NWNhYzU0ZDBh
ZDI1Y2QyMTczMWQ5Yjc1Zjk5NjA1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTU1NCw2ICsxNTU0LDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKworICAgIGlmIChhdXRv
IGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAh
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmZl
dGNoRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJp
ZXMpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMTYyOCw2ICsxNjM0LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMo
bW9kaWZpZWRTaW5jZSk7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdl
TWFuYWdlcnMuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YU1vZGlm
aWVkU2luY2Uod2Vic2l0ZURhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoTmV0d29y
a0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBv
cmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0xNzM1LDYgKzE3NDQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgIH0KICNlbmRp
ZgogCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Np
b25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKQorICAgICAgICBpdGVy
YXRvci0+dmFsdWUtPmRlbGV0ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgb3JpZ2luRGF0YXMsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3I7CiAg
ICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQpAQCAtMTk1OCw2ICsx
OTcwLDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgIH0pOwogICAgIH0KIAor
ICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQp
OyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRv
ci0+dmFsdWUtPmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMod2Vic2l0ZURhdGFUeXBl
cywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdKGF1dG8gZGVsZXRlZERvbWFpbnMpIG11dGFibGUgeworICAgICAgICAgICAgZm9y
IChhdXRvJiBkb21haW4gOiBkZWxldGVkRG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfSk7CisgICAgfQor
CiAgICAgYXV0byBkYXRhVHlwZXNGb3JVSVByb2Nlc3MgPSBXZWJzaXRlRGF0YTo6ZmlsdGVyKHdl
YnNpdGVEYXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJKTsKICAgICBpZiAoIWRh
dGFUeXBlc0ZvclVJUHJvY2Vzcy5pc0VtcHR5KCkgJiYgIWRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNv
b2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSkgewogICAgICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+IGNvbXBsZXRpb25IYW5k
bGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+JiBkb21haW5zKSB7CkBAIC0yMDc0LDYgKzIwOTMsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAgICBpZiAoYXV0
byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3Ig
IT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5m
ZXRjaERhdGEod2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBlbnRy
aWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzKTsKKyAgICAgICAgfSk7CisgICAgfQog
fQogI2VuZGlmIC8vIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAppbmRleCA0ZjcyY2QwM2YzNjhmNDU3NmQ0MzVk
NjdlNjJlM2ExMWI5MmNmZWE0Li44Y2ZiMTViMDRhMDk1MDU1MDIxMTcxNjgzNTY3ZjZiZTI4NDU0
ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
c3RhdGljIGJvb2wgaXNWYWxpZEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1
cm4gbmFtZSAhPSAiLiIgJiYgbmFtZSAhPSAiLi4iICYmICFuYW1lLmNvbnRhaW5zKHBhdGhTZXBh
cmF0b3IpOwogfQogCi1FeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnJlcXVl
c3RDcmVhdGVIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBUeXBl
IHR5cGUsIFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpCitFeHBlY3RlZDxX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnJlcXVlc3RDcmVhdGVIYW5kbGUoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBUeXBlIHR5cGUsIFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRl
SWZOZWNlc3NhcnkpCiB7CiAgICAgaWYgKG1fdHlwZSAhPSBGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZTo6VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcjo6VHlwZU1pc21hdGNoKTsKQEAgLTEwMSwxMiArMTAxLDEyIEBAIEV4
cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPiBGaWxlU3lzdGVtCiAgICAgcmV0dXJuIG1fbWFuYWdlci0+Y3JlYXRlSGFuZGxl
KGNvbm5lY3Rpb24sIHR5cGUsIFdURk1vdmUocGF0aCksIFdURk1vdmUobmFtZSksIGNyZWF0ZUlm
TmVjZXNzYXJ5KTsKIH0KIAotRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpn
ZXRGaWxlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RyaW5n
JiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSkKK0V4cGVjdGVkPFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6Z2V0RmlsZUhhbmRsZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpCiB7CiAgICAgcmV0dXJuIHJl
cXVlc3RDcmVhdGVIYW5kbGUoY29ubmVjdGlvbiwgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OlR5
cGU6OkZpbGUsIFdURk1vdmUobmFtZSksIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKIH0KIAotRXhwZWN0
ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXREaXJlY3RvcnlIYW5kbGUoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0
ZUlmTmVjZXNzYXJ5KQorRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRE
aXJlY3RvcnlIYW5kbGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJpbmcmJiBuYW1l
LCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KQogewogICAgIHJldHVybiByZXF1ZXN0Q3JlYXRlSGFu
ZGxlKGNvbm5lY3Rpb24sIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlOjpEaXJlY3Rvcnks
IFdURk1vdmUobmFtZSksIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKIH0KQEAgLTIwMyw3ICsyMDMsNyBA
QCBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGU6OmdldEhhbgogICAgIHJldHVybiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KG1fcGF0aCk7CiB9CiAKLUV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uLCBTdHJpbmcmJiBuYW1lKQorRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4g
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmdldEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFN0cmluZyYmIG5hbWUpCiB7CiAgICAgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSA9IGZh
bHNlOwogICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVzdENyZWF0ZUhhbmRsZShjb25uZWN0aW9uLCBG
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6VHlwZTo6QW55LCBXVEZNb3ZlKG5hbWUpLCBjcmVhdGVJ
Zk5lY2Vzc2FyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCmluZGV4IGZiOTI5ODE0MWIw
ZGJjMzgxZmE4YjNiMzgxN2U2OGNhMDE4OTc5ZGEuLjM5MGEwYjJiOGQzZTUzZWRmMDRlMDZlMTAz
ZjVmN2JhODk3ZWFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCkBAIC01MiwxOSAr
NTIsMjAgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoKTsKICAgICBib29sIGlzU2FtZUVudHJ5
KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyKTsKICAgICBzdGQ6Om9wdGlvbmFs
PEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IG1vdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgRXhwZWN0ZWQ8V2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldEZp
bGVIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RyaW5nJiYgbmFtZSwgYm9vbCBj
cmVhdGVJZk5lY2Vzc2FyeSk7Ci0gICAgRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldERpcmVjdG9yeUhhbmRsZShJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVj
ZXNzYXJ5KTsKKyAgICBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZ2V0RmlsZUhhbmRsZShJUEM6OkNvbm5lY3Rpb24m
LCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKKyAgICBFeHBlY3RlZDxX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gZ2V0RGlyZWN0b3J5SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYsIFN0cmluZyYmIG5hbWUsIGJv
b2wgY3JlYXRlSWZOZWNlc3NhcnkpOwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcj4gcmVtb3ZlRW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vy
c2l2ZWx5KTsKICAgICBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4gcmVzb2x2ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcik7CiAgICAg
RXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldEhhbmRs
ZU5hbWVzKCk7Ci0gICAgRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZ2V0SGFuZGxlKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0cmluZyYmIG5hbWUpOworICAgIEV4cGVjdGVkPHN0
ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIEZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I+IGdldEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJpbmcmJiBu
YW1lKTsKIAogICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUluZm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5k
bGU+OwogICAgIEV4cGVjdGVkPEFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+IGNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllcik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXI+IGFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGU7IH0KIAogcHJpdmF0ZToKLSAgICBFeHBlY3Rl
ZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4gcmVxdWVzdENyZWF0ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBUeXBl
LCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKKyAgICBFeHBlY3RlZDxX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gcmVxdWVzdENyZWF0ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBUeXBlLCBTdHJpbmcmJiBu
YW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKIAogICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWFrUHRyPEZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcj4gbV9tYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCAzOGFhMjY1NWMzOWRkYzIzN2JhNWEzODBhNWQ1NDkxMjQyYzM3ZjUxLi4yODExNTExZTE1
MTBhMDE4YmM4ZjA0MGMwOWY2MDNhZTI5YTlkOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtNDIsMTEgKzQyLDEwIEBAIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6
fkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcigpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1faGFuZGxlcy5rZXlzKCkpCi0g
ICAgICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKyAgICBjbG9z
ZSgpOwogfQogCi1FeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVI
YW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZTo6VHlwZSB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29s
IGNyZWF0ZUlmTmVjZXNzYXJ5KQorRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGU6OlR5cGUgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSwgYm9v
bCBjcmVhdGVJZk5lY2Vzc2FyeSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtNzQsOSArNzMsMTIgQEAgRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW0KIAogICAgIGF1dG8g
bmV3SGFuZGxlID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZT4oKnRoaXMsIHR5
cGUsIFdURk1vdmUocGF0aCksIFdURk1vdmUobmFtZSkpOwogICAgIGF1dG8gbmV3SGFuZGxlSWRl
bnRpZmllciA9IG5ld0hhbmRsZS0+aWRlbnRpZmllcigpOwotICAgIG1faGFuZGxlc0J5Q29ubmVj
dGlvbi5lbnN1cmUoY29ubmVjdGlvbiwgWyZdIHsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24u
ZW5zdXJlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgWyZdIHsKICAgICAgICAgcmV0dXJuIEhhc2hT
ZXQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWUuYWRkKG5ld0hhbmRsZUlkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvbnMu
ZW5zdXJlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+IHsgJmNvbm5lY3Rpb24gfTsKKyAgICB9KTsKICAgICBtX3JlZ2lz
dHJ5LnJlZ2lzdGVySGFuZGxlKG5ld0hhbmRsZUlkZW50aWZpZXIsICpuZXdIYW5kbGUpOwogICAg
IG1faGFuZGxlcy5hZGQobmV3SGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShuZXdIYW5kbGUpKTsK
ICAgICByZXR1cm4gbmV3SGFuZGxlSWRlbnRpZmllcjsKQEAgLTEyMSw5ICsxMjMsMTAgQEAgdm9p
ZCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWMKICAgICB9KTsKIAogICAgIG1faGFuZGxlc0J5Q29ubmVjdGlv
bi5yZW1vdmUoY29ubmVjdGlvbkhhbmRsZXMpOworICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNv
bm5lY3Rpb24pOwogfQogCi1FeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpn
ZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uKQorRXhwZWN0
ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6Z2V0RGlyZWN0b3J5KElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMTQ5LDQgKzE1MiwyOCBAQCBib29sIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6cmVsZWFz
ZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNsb3NlKCkKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rp
b25JRCwgaWRlbnRpZmllcnNdIDogbV9oYW5kbGVzQnlDb25uZWN0aW9uKSB7CisgICAgICAgIGZv
ciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgIGF1dG8gdGFr
ZW5IYW5kbGUgPSBtX2hhbmRsZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcmVn
aXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gU2Vu
ZCBtZXNzYWdlIHRvIHdlYiBwcm9jZXNzIHRvIGludmFsaWRhdGUgYWN0aXZlIHN5bmMgYWNjZXNz
IGhhbmRsZS4KKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBpZiAoYXV0byBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyID0gdGFrZW5IYW5kbGUtPmFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSkgewor
ICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb25JRCktPnNlbmQoTWVz
c2FnZXM6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW52YWxpZGF0ZUFjY2Vzc0hh
bmRsZSgqYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIDApOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChtX2hhbmRsZXMuaXNFbXB0
eSgpKTsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24uY2xlYXIoKTsKKyAgICBtX2Nvbm5lY3Rp
b25zLmNsZWFyKCk7CisgICAgbV9sb2NrTWFwLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oCmluZGV4IGI4NTc2NzY4YjM1NWFj
YjNhYTBjMzcwMzhjYzUxZWNjOTMyYjM5NmMuLjAxZDNiYjc0NjA1Mjk5NmM0ZjQ2MzVkNGIxODQ5
NDI1ZDY3ZDE2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM5LDE5ICsz
OSwyMiBAQCBwdWJsaWM6CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIHBh
dGgsIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKICAgICB+RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyKCk7CiAKLSAgICBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY3JlYXRlSGFuZGxlKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlLCBTdHJpbmcm
JiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKKyAgICBFeHBl
Y3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcj4gY3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbiYsIEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlOjpUeXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlm
TmVjZXNzYXJ5KTsKICAgICBjb25zdCBTdHJpbmcmIGdldFBhdGgoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIpOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlIGdl
dFR5cGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xv
c2VIYW5kbGUoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25D
bG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7Ci0gICAgRXhwZWN0ZWQ8V2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldERp
cmVjdG9yeShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICBFeHBlY3RlZDxXZWJDb3Jl
OjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZ2V0
RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlvbiYpOwogICAgIGJvb2wgYWNxdWlyZUxvY2tGb3JGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIp
OwogICAgIGJvb2wgcmVsZWFzZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgorICAgIHZvaWQgY2xv
c2UoKTsKKwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSYgbV9yZWdpc3RyeTsKICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIEhhc2hTZXQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXI+PiBtX2hhbmRs
ZXNCeUNvbm5lY3Rpb247CisgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBS
ZWZQdHI8SVBDOjpDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGU+PiBtX2hhbmRsZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyPiBtX2xvY2tNYXA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcAppbmRleCAyOTc4YTI1ZWYxMjUyNDcyY2NmMmU2ZjFkMzJmNTFiMDUxMDJm
MDYyLi5jNjFjM2M5NDE5NDI5NDRhN2NiYTIzNjA2NzllMDAwYTA4MmJkOWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJz
aXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCkBAIC0xMzEsMTAgKzEzMiwxOCBAQCBPcmlnaW5T
dG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKGNvbnN0IFdlYgogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAg
cmV0dXJuICptX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFsmXSB7
Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihvcmlnaW5Q
YXRoKG1fcGF0aCwgb3JpZ2luLCBtX3NhbHQpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
T3JpZ2luU3RvcmFnZU1hbmFnZXI+KG9yaWdpblBhdGgobV9wYXRoLCBvcmlnaW4sIG1fc2FsdCks
IG9yaWdpbik7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCit2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6cmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0g
bV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5maW5kKG9yaWdpbik7IGl0ZXJhdG9yICE9IG1f
bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaWYgKCFpdGVyYXRv
ci0+dmFsdWUtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2xvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXJzLnJlbW92ZShpdGVyYXRvcik7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6cGVyc2lzdGVkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTY4LDcgKzE3Nyw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5maWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIoKm1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSku
Z2V0RGlyZWN0b3J5KGNvbm5lY3Rpb24udW5pcXVlSUQoKSkpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5maWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXIoKm1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSkuZ2V0RGlyZWN0b3J5KGNv
bm5lY3Rpb24pKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb3NlSGFuZGxl
KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0yMDks
NyArMjE4LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEZpbGVIYW5kbGUoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjoKICAgICBpZiAoIWhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+
Z2V0RmlsZUhhbmRsZShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIFdURk1vdmUobmFtZSksIGNyZWF0
ZUlmTmVjZXNzYXJ5KSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5nZXRGaWxlSGFu
ZGxlKGNvbm5lY3Rpb24sIFdURk1vdmUobmFtZSksIGNyZWF0ZUlmTmVjZXNzYXJ5KSk7CiB9CiAK
IHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXREaXJlY3RvcnlIYW5kbGUoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0y
MjAsNyArMjI5LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldERpcmVjdG9yeUhh
bmRsZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkMKICAgICBpZiAoIWhhbmRsZSkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRs
ZS0+Z2V0RGlyZWN0b3J5SGFuZGxlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgV1RGTW92ZShuYW1l
KSwgY3JlYXRlSWZOZWNlc3NhcnkpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUtPmdl
dERpcmVjdG9yeUhhbmRsZShjb25uZWN0aW9uLCBXVEZNb3ZlKG5hbWUpLCBjcmVhdGVJZk5lY2Vz
c2FyeSkpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlRW50cnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vyc2l2ZWx5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtMzAyLDcgKzMxMSwxODkgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEhh
bmRsZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OkZpbGUKICAgICBpZiAo
IWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I6OlVua25vd24pKTsKIAotICAgIGNvbXBsZXRpb25IYW5k
bGVyKGhhbmRsZS0+Z2V0SGFuZGxlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgV1RGTW92ZShuYW1l
KSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Z2V0SGFuZGxlKGNvbm5lY3Rpb24s
IFdURk1vdmUobmFtZSkpKTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFU
eXBlPiB0b1dlYnNpdGVEYXRhVHlwZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VUeXBlKQoreworICAg
IGlmIChzdG9yYWdlVHlwZSA9PSAiRmlsZVN5c3RlbSIpCisgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVR5cGU6OkZpbGVTeXN0ZW07CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IHJlYWRPcmlnaW5Gcm9t
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRl
KTsKKyAgICBhdXRvIGNsb3NlRmlsZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgfSk7CisKKyAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGF1dG8gcmVhZFRleHQgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShoYW5kbGUp
OworICAgIGlmICghcmVhZFRleHQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBhdXRvIG9yaWdpbnNTdHJpbmcgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoKnJlYWRUZXh0KSk7
CisgICAgYXV0byBvcmlnaW5zID0gb3JpZ2luc1N0cmluZy5zcGxpdCgiXG4iKTsKKyAgICBpZiAo
b3JpZ2lucy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGF1dG8gdG9wT3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKG9yaWdpbnNbMF0pOworICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBvcGVuaW5nT3JpZ2luID0gV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbnNbMV0pOwor
ICAgIGlmICghb3BlbmluZ09yaWdpbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyAqdG9wT3JpZ2luLCAqb3BlbmluZ09y
aWdpbiB9OworfQorCitWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmZldGNoRGF0YUZyb21EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHRhcmdl
dFR5cGVzKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgSGFzaE1h
cDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
PiBvcmlnaW5UeXBlczsKKyAgICBmb3IgKGF1dG8mIHRvcE9yaWdpbiA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobV9wYXRoKSkgeworICAgICAgICBhdXRvIHRvcE9yaWdpbkRpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIHRvcE9yaWdpbik7
CisgICAgICAgIGZvciAoYXV0byYgb3BlbmluZ09yaWdpbiA6IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgYXV0byBvcGVuaW5nT3Jp
Z2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRvcE9y
aWdpbkRpcmVjdG9yeSwgb3BlbmluZ09yaWdpbik7CisgICAgICAgICAgICBhdXRvIG9yaWdpbkZp
bGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9wZW5pbmdPcmln
aW5EaXJlY3RvcnksICJvcmlnaW4iKTsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2luID0gcmVhZE9y
aWdpbkZyb21GaWxlKG9yaWdpbkZpbGVQYXRoKTsKKyAgICAgICAgICAgIGlmICghb3JpZ2luKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0b3Jh
Z2VUeXBlIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcGVuaW5nT3JpZ2luRGlyZWN0b3J5
KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIHR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZShz
dG9yYWdlVHlwZSk7IHR5cGUgJiYgdGFyZ2V0VHlwZXMuY29udGFpbnMoKnR5cGUpKQorICAgICAg
ICAgICAgICAgICAgICBvcmlnaW5UeXBlcy5hZGQob3JpZ2luLT5jbGllbnRPcmlnaW4sIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IHsgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgqdHlwZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6
OkVudHJ5PiBlbnRyaWVzOworICAgIGZvciAoYXV0byBbb3JpZ2luLCB0eXBlc10gOiBvcmlnaW5U
eXBlcykgeworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IHR5cGVzKQorICAgICAgICAgICAgZW50
cmllcy5hcHBlbmQoeyBXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4sIHR5cGUsIDAgfSB9KTsK
KyAgICB9CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VS
VCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBlbnRyaWVzID0gZmV0
Y2hEYXRhRnJvbURpc2sodHlwZXMpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlbnRyaWVzID0gY3Jvc3NUaHJlYWRDb3B5
KGVudHJpZXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitWZWN0b3I8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFPbkRpc2so
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VU
aW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpPiYg
ZmlsdGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgVmVjdG9y
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlZE9yaWdpbnM7CisgICAgZm9yIChhdXRvJiB0
b3BPcmlnaW4gOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCkpIHsKKyAgICAgICAg
YXV0byB0b3BPcmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9wYXRoLCB0b3BPcmlnaW4pOworICAgICAgICBmb3IgKGF1dG8mIG9wZW5pbmdPcmln
aW4gOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSkpIHsKKyAg
ICAgICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIG9wZW5pbmdPcmlnaW4pOwor
ICAgICAgICAgICAgYXV0byBvcmlnaW5GaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChvcGVuaW5nT3JpZ2luRGlyZWN0b3J5LCAib3JpZ2luIik7CisgICAgICAg
ICAgICBhdXRvIG9yaWdpbiA9IHJlYWRPcmlnaW5Gcm9tRmlsZShvcmlnaW5GaWxlUGF0aCk7Cisg
ICAgICAgICAgICBpZiAoIW9yaWdpbikgeworICAgICAgICAgICAgICAgIC8vIElmIG9yaWdpbiBj
YW5ub3QgYmUgcmV0cmlldmVkLCBidXQgd2UgYXJlIGFza2VkIHRvIHJlbW92ZSBkYXRhIGZvciBh
bGwgb3JpZ2lucywgcmVtb3ZlIGl0LgorICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIoV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIHsgfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG9wZW5pbmdPcmlnaW5EaXJlY3RvcnksIG1vZGlm
aWVkU2luY2VUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1w
dHlEaXJlY3Rvcnkob3BlbmluZ09yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIWZpbHRlcigqb3JpZ2luKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgZGVsZXRlZE9yaWdpbnMuYXBwZW5kKCpvcmlnaW4pOworICAgICAgICAgICAgbG9jYWxP
cmlnaW5TdG9yYWdlTWFuYWdlcigqb3JpZ2luKS5kZWxldGVEYXRhKHR5cGVzLCBtb2RpZmllZFNp
bmNlVGltZSk7CisgICAgICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2li
bGUoKm9yaWdpbik7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShvcGVuaW5nT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgfQorCisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgfQorCisg
ICAgcmV0dXJuIGRlbGV0ZWRPcmlnaW5zOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgb3JpZ2lucyA9
IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpblNldDsKKyAgICAgICAgb3JpZ2luU2V0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IG9yaWdpbnMpCisgICAgICAgICAgICBvcmlnaW5TZXQuYWRkKG9yaWdpbik7CisKKyAgICAg
ICAgZGVsZXRlRGF0YU9uRGlzayh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbJm9yaWdp
blNldF0oYXV0byBvcmlnaW4pIHsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5TZXQuY29udGFp
bnMob3JpZ2luLmNsaWVudE9yaWdpbik7CisgICAgICAgIH0pOworCisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAgICB9
KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFNb2RpZmllZFNp
bmNlKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7
CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgZGVsZXRlRGF0YU9u
RGlzayh0eXBlcywgbW9kaWZpZWRTaW5jZVRpbWUsIFtdKGF1dG8mKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2Vk
KTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdHlwZXMsIGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gZGVsZXRlZE9yaWdpbnMgPSBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCAtV2Fs
bFRpbWU6OmluZmluaXR5KCksIFsmZG9tYWluc10oYXV0byYgb3JpZ2luKSB7CisgICAgICAgICAg
ICBhdXRvIGRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tSG9zdChvcmlnaW4uY2xpZW50T3JpZ2luLmhvc3QpOworICAgICAgICAgICAgcmV0dXJu
IGRvbWFpbnMuY29udGFpbnMoZG9tYWluKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgVmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWxldGVkRG9tYWluczsKKyAgICAgICAgZm9y
IChhdXRvIG9yaWdpbiA6IGRlbGV0ZWRPcmlnaW5zKSB7CisgICAgICAgICAgICBhdXRvIGRvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChv
cmlnaW4uY2xpZW50T3JpZ2luLmhvc3QpOworICAgICAgICAgICAgaWYgKCFkZWxldGVkRG9tYWlu
cy5jb250YWlucyhkb21haW4pKQorICAgICAgICAgICAgICAgIGRlbGV0ZWREb21haW5zLmFwcGVu
ZChkb21haW4pOworICAgICAgICB9CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29w
eShkZWxldGVkRG9tYWlucyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDViYzU2YjdjNjQ2
YzZiMWZkN2FkNjRkZDQ4N2VkZjVkZWE2MzkzNGEuLjlmZGM0ZGQ5Y2NkN2EwZjNjYmExMDc5NmYx
YjFkM2Y4ZjU5MTdkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsyOCwx
MiBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFn
ZUVycm9yLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJX
ZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewogY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsKQEAgLTU1LDEzICs1NywyMiBAQCBwdWJsaWM6CiAg
ICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7
IH0KICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVE
YXRhOjpFbnRyeT4mJik+JiYpOworICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVk
U2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgfk5l
dHdvcmtTdG9yYWdlTWFuYWdlcigpOwogICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBsb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHZv
aWQgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIGZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsKIAorICAgIFZlY3RvcjxXZWJzaXRlRGF0YTo6
RW50cnk+IGZldGNoRGF0YUZyb21EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBkZWxldGVEYXRhT25EaXNrKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKT4mKTsKKyAgICAKKwogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIChpbXBsZW1lbnRlZCBieSBnZW5lcmF0ZWQgY29kZSkKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3Jh
Z2VNYW5hZ2VyLmNwcAppbmRleCA0ZjA2ZjQ1MjQ2NTY0NmQyMDExYmM3ZjUzYmJkYjI4MTE1OTNh
YTQzLi41MTFkMTBhNzFkOGFmMDhiMjMzNTkzNGIzZDMwMDkyZDk0YTUxMTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5T
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNjQsMTYgKzY1LDgwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpt
X2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjsKICAgICB9CiAKKyAgICBib29sIGlzQWN0aXZlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiAhIW1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworICAg
IH0KKworICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
cywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUpCisgICAgeworICAgICAgICBpZiAodHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKSkKKyAgICAgICAgICAgIGRlbGV0
ZUZpbGVTeXN0ZW1TdG9yYWdlRGF0YShtb2RpZmllZFNpbmNlVGltZSk7CisKKyAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkobV9yb290UGF0aCk7CisgICAgfQorCiBw
cml2YXRlOgorICAgIHZvaWQgZGVsZXRlRmlsZVN5c3RlbVN0b3JhZ2VEYXRhKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2VUaW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1fZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyKQorICAgICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRy
OworCisgICAgICAgIGF1dG8gZmlsZVN5c3RlbVN0b3JhZ2VQYXRoID0gdHlwZVN0b3JhZ2VQYXRo
KCJGaWxlU3lzdGVtIik7CisgICAgICAgIGlmIChtb2RpZmllZFNpbmNlVGltZSA+IC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSkgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKGZpbGVTeXN0ZW1TdG9yYWdlUGF0aCwgbW9kaWZpZWRTaW5jZVRpbWUpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlTm9uRW1wdHlEaXJlY3RvcnkoZmlsZVN5c3RlbVN0b3JhZ2VQYXRoKTsKKyAgICB9CisKICAg
ICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFN0b3Jh
Z2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0RWZmb3J0IH07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcj4gbV9maWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXI7CiB9OwogCi1PcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCkKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
bikKK3sKKyAgICBhdXRvIG9yaWdpbkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fcGF0aCwgIm9yaWdpbiIpOworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG9yaWdpbkZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgob3JpZ2luRmlsZVBh
dGgpKTsKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG9yaWdpbkZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgYXV0byBjbG9z
ZUZpbGUgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShoYW5kbGUpOworICAgIH0pOworCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlk
KGhhbmRsZSkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXI6IEZhaWxlZCB0byBvcGVuIG9yaWdpbiBmaWxlIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQob3JpZ2luLnRvcE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7CisgICAgYnVpbGRlci5hcHBlbmQob3JpZ2luLmNsaWVudE9yaWdp
bi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgYXV0byBvcmlnaW5Db250ZW50ID0gYnVpbGRl
ci50b1N0cmluZygpLnV0ZjgoKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IG9yaWdpbkNvbnRlbnQuZGF0YSgpLCBvcmlnaW5Db250ZW50Lmxlbmd0aCgpKTsKK30KKwordm9p
ZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCkKK3sK
KyAgICBhdXRvIGNoaWxkcmVuID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3BhdGgpOwor
ICAgIGlmIChjaGlsZHJlbi5zaXplKCkgIT0gMSB8fCBjaGlsZHJlbi5maXJzdCgpICE9ICJvcmln
aW4iKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG9yaWdpbkZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgIm9yaWdpbiIpOworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUob3JpZ2luRmlsZVBhdGgpOworfQorCitPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiAgICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkKIHsK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBjcmVhdGVPcmlnaW5GaWxlSWZO
ZWNlc3Nhcnkob3JpZ2luKTsKIH0KIAogT3JpZ2luU3RvcmFnZU1hbmFnZXI6On5PcmlnaW5TdG9y
YWdlTWFuYWdlcigpID0gZGVmYXVsdDsKQEAgLTEwMyw1ICsxNjgsMTggQEAgRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyKEZpbGVTeXMKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlcihyZWdpc3RyeSk7CiB9CiAKK2Jvb2wgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlzQWN0
aXZlKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZlKCk7Cit9CisKK3Zv
aWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgZGVmYXVsdEJ1Y2tl
dCgpLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2UpOworCisgICAgZGVsZXRlT3JpZ2lu
RmlsZUlmTmVjZXNzYXJ5KCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rv
cnkobV9wYXRoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5h
Z2VyLmgKaW5kZXggYTRjMTFhZDY1YTVjMTk3MDNhN2MwZTkyOTRiYzJmZWFhYTJmZmUyZS4uOGU1
MzYwZWJkOTJhYTM1ZjNmZjY0Zjg0MjZhNjk2YTI1YWQwOTEyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5h
Z2VyLmgKQEAgLTI4LDI3ICsyOCwzNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0
IENsaWVudE9yaWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7
CitlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogCiBjbGFzcyBPcmlnaW5T
dG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgT3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCk7CisgICAgZXhw
bGljaXQgT3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJik7CiAgICAgfk9yaWdpblN0b3JhZ2VNYW5hZ2VyKCk7CiAKICAgICB2b2lk
IGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBw
ZXJzaXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQogICAgIHZvaWQgcGVyc2lz
dCgpOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKKyAgICBib29sIGlzQWN0aXZl
KCk7CisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxs
VGltZSk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTdG9yYWdlQnVja2V0TW9kZSA6IGJv
b2w7CiAgICAgY2xhc3MgU3RvcmFnZUJ1Y2tldDsKICAgICBTdG9yYWdlQnVja2V0JiBkZWZhdWx0
QnVja2V0KCk7CiAKKyAgICB2b2lkIGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vz
c2FyeSgpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VCdWNrZXQ+IG1fZGVmYXVsdEJ1
Y2tldDsKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIGJvb2wgbV9wZXJzaXN0ZWQgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3Bw
CmluZGV4IGYzNzI5MDEzOGI0ZmFmZjMyMzUzYjJhY2RhZGU4MzQwMGRhOWNjOGEuLmY5YjJmZTA0
MDlkYzQzMGIxZDNkM2FlYjAwZTc2YjAwYjNmMDU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQCBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlIFdlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MoV2Vic2l0ZURh
dGFUeXBlIGRhdGFUeXBlKQogICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNl
cnZpY2VzOgogICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsK
ICNlbmRpZgorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOgorICAgICAgICBy
ZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKICAgICB9CiAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAppbmRleCA3YTllNTAwZmUxYjA5ZTM4OTVkZDc0
M2UxNjVjOTg5MThiZTdhOGRiLi5lNDU5YTA5MDM4YTQ4YTE5ODZkNmQzMzk2NjQzMzI4MzM3NWE0
NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVR5cGUuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6
IHVpbnQzMl90IHsKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQogICAg
IEFsdGVybmF0aXZlU2VydmljZXMgPSAxIDw8IDE4LAogI2VuZGlmCisgICAgRmlsZVN5c3RlbSA9
IDEgPDwgMTksCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKQEAgLTc5LDEwICs4MCwxMSBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB7
CiAjZW5kaWYKICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLAogICAg
ICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RGV2aWNlSWRIYXNoU2FsdCwKLSAgICAgICAg
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cworICAgICAg
ICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzLAogI2lm
IEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgICAgICwgV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMKKyAgICAgICAgV2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMsCiAjZW5kaWYKKyAgICAgICAgV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0KICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5t
bQppbmRleCBjODI2MTZmNzkwYzZmYzY5MGE2Y2JkNjk3YTBlOGVjZGE1MjI3ZmIxLi5mYTExMTNl
NDdjMmE0NDQxNGJkMmFkZDE5MmQwMmU3NTA3ZjMyNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAt
NTEsNiArNTEsNyBAQCBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRp
YWxzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscwogTlNTdHJpbmcgKiBjb25zdCBf
V0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zID0gQCJfV0tXZWJzaXRlRGF0YVR5
cGVBZENsaWNrQXR0cmlidXRpb25zIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFU
eXBlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVB
bHRlcm5hdGl2ZVNlcnZpY2VzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZp
Y2VzIjsKK05TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSA9IEAi
X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVE
YXRhVHlwZVBsdWdJbkRhdGEiOwpAQCAtMTEwLDYgKzExMSw4IEBAIHN0YXRpYyBOU1N0cmluZyAq
ZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQgKmRhdGFUeXBlcykKICAgICAgICAgW2FycmF5IGFkZE9i
amVjdDpAIlByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMg
Y29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJBbHRlcm5hdGl2ZSBTZXJ2aWNlcyJdOworICAgIGlm
IChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1d
KQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiRmlsZSBTeXN0ZW0iXTsKIAogICAgIHJldHVy
biBbYXJyYXkgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkSW50ZXJuYWwuaAppbmRleCBkYmM1ZjNmN2ExZmY0ZmI3NDlhYWZkNzBlNTcwYmEwNDg1
NjhhY2Q2Li45MTQ0OGVlMWQ1NTFkZTQyMDY1ODY3YjgxNWRiZGYxZGVmYTc1YzI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCkBAIC03Nyw2ICs3Nyw4IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5n
ICp3ZWJzaXRlCiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dl
YnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQogICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzOwogI2VuZGlmCisgICAgaWYgKFt3ZWJzaXRl
RGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dKQor
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOwogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTEzNCw2ICsxMzYsOCBAQCBzdGF0aWMgaW5saW5lIFJldGFp
blB0cjxOU1NldD4gdG9XS1dlYnNpdGVEYXRhVHlwZXMoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0
ZURhdAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
QWx0ZXJuYXRpdmVTZXJ2aWNlcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2Jq
ZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdOwogI2VuZGlmCisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVt
KSkKKyAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlRmlsZVN5c3RlbV07CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZFByaXZhdGUuaAppbmRleCBkNjA3ZGZlMTNmNjEyYjU4MjIwZTVhMzUyNTc3
NDcwNTMxZWU0OTA3Li4yY2Y5YTRkMmEwYzdmY2UyNWI2NTA2YWMxN2JkNzExMTdjOTc1MWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaApAQCAtMzcsNiArMzcsNyBAQCBXS19FWFRFUk4g
TlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKAogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFU
eXBlQWRDbGlja0F0dHJpYnV0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3Mo
MTUuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0
ZXJuYXRpdmVTZXJ2aWNlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkp
OworV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3Rl
bSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
CiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dl
YnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KaW5kZXggZTJiMDczNjQ2NGIxNjZkZDkyMGNmMzU1MTcxZmIzYTU2MzcwYTM4
NC4uN2VmMDY5NTBhYjA3ZDNlMWE3NjE2Y2JjYjU4YmQyNTc4NTM1OWVjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCkBAIC0yNDgsNyArMjQ4LDggQEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0
ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGUKICAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlw
ZUNyZWRlbnRpYWxzLAogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJp
YnV0aW9ucywKICAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1
cmVtZW50cywKLSAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2Vydmlj
ZXMKKyAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMsCisg
ICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtCiAjaWYgIVRBUkdFVF9PU19J
UEhPTkUKICAgICAgICAgICAgICwgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTY0
YWYyNDk5YmJiMTM2M2MzZmZhM2NkZGY5ODJjM2IwOWJkN2YzNC4uOWU0ODNiMGMyNGM2YjMwNmRl
YjZmNDEzMTVhOTI1MDNlMTMxOWQyOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTExLTI5ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCByZW1vdmUgZmlsZSBz
eXN0ZW0gZGF0YSB2aWEgV0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRmlsZVN5c3RlbUFjY2Vzcy5tbToKKwogMjAyMS0xMS0yNyAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gU2lnbmFsIHN0
YXRlLWNoYW5nZWQ6c2VsZWN0ZWQgaXMgbm90IGVtaXR0ZWQgZm9yIGxpc3Rib3ggZWxlbWVudHMg
d2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0KaW5kZXggNTJhYjljZTI4
Yjc1NjBkYTkwZWExM2U4OTI4OGQxNzI5YTQxMGViZS4uZDk5MWMyZDZiZWU0NzE4ZjBiZmM2MzI3
NDQ2MmJlZGY3N2U4Nzk2OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5tbQpAQCAtMzQsNiArMzQsNyBAQAog
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUu
aD4KIAogQGludGVyZmFjZSBGaWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgOiBOU09iamVj
dCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBlbmQKQEAgLTE5Niw0ICsxOTcsNzMgQEAgVEVT
VChGaWxlU3lzdGVtQWNjZXNzLCBNaWdyYXRlVG9OZXdTdG9yYWdlRGlyZWN0b3J5KQogICAgIEVY
UEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHld
KTsKIH0KIAorc3RhdGljIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gQCI8c2NyaXB0PiBcCisgICAg
YXN5bmMgZnVuY3Rpb24gb3BlbihzaG91bGRDcmVhdGVGaWxlKSBcCisgICAgeyBcCisgICAgICAg
IHRyeSB7IFwKKyAgICAgICAgICAgIHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9yLnN0
b3JhZ2UuZ2V0RGlyZWN0b3J5KCk7IFwKKyAgICAgICAgICAgIHZhciBmaWxlSGFuZGxlID0gYXdh
aXQgcm9vdEhhbmRsZS5nZXRGaWxlSGFuZGxlKCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0JywgeyAn
Y3JlYXRlJyA6IHNob3VsZENyZWF0ZUZpbGUgfSk7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdmaWxlIGlzIG9wZW5l
ZCcpOyBcCisgICAgICAgIH0gY2F0Y2goZXJyKSB7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlcnJvcjogJyArIGVy
ci5uYW1lICsgJyAtICcgKyBlcnIubWVzc2FnZSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisg
ICAgb3Blbih0cnVlKTsgXAorICAgIDwvc2NyaXB0PiI7CisKK1RFU1QoRmlsZVN5c3RlbUFjY2Vz
cywgRmV0Y2hBbmREZWxldGVEYXRhKQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tG
aWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAg
YXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV07
CisKKyAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGF0YS4KKyAgICBOU1NldCAqdHlwZXMgPSBbTlNT
ZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XiB7CisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNP
ZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwg
MHUpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvIHByZWZlcmVuY2Vz
ID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lz
dGVtQWNjZXNzRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJs
ZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3Ry
aW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwor
ICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShA
ImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIC8vIEZl
dGNoIGRhdGEgYWZ0ZXIgZmlsZSBpcyBjcmVhdGVkLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBb
d2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAg
ICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMXUpOworICAgICAgICBhdXRvIHJlY29yZCA9
IFtyZWNvcmRzIG9iamVjdEF0SW5kZXg6MF07CisgICAgICAgIEVYUEVDVF9TVFJFUSgid2Via2l0
Lm9yZyIsIFtyZWNvcmQuZGlzcGxheU5hbWUgVVRGOFN0cmluZ10pOworCisgICAgICAgIC8vIFJl
bW92ZSBkYXRhLgorICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0
eXBlcyBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8vIEZpbGUgY2Fubm90IGJlIG9wZW5lZCBhZnRl
ciBkYXRhIHJlbW92YWwuCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAib3Blbihm
YWxzZSkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImVycm9yOiBOb3RGb3VuZEVycm9yIC0gVGhl
IG9iamVjdCBjYW4gbm90IGJlIGZvdW5kIGhlcmUuIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHld
KTsKKworICAgIC8vIEZldGNoIGRhdGEgYWZ0ZXIgZGF0YSBpcyByZW1vdmVkLgorICAgIGRvbmUg
PSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0
eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAq
cmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCg==
</data>
<flag name="commit-queue"
          id="470542"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445387</attachid>
            <date>2021-11-29 23:42:47 -0800</date>
            <delta_ts>2021-11-30 18:10:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211129234246.patch</filename>
            <type>text/plain</type>
            <size>53940</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVhYjNiMjBkYTVmNDFhMjYwMTM4NDhj
OTViMmViNTZmMzFjZDE3ODEuLmExMmJmOGI5ZjNhMTg2NzI5YjEzNmZmNWM4NGQyMmZmYzkxNzg2
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTExLTE5ICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gYWRkIGF1ZGlvIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYWQ4ZTY4ODBmMDU1OTgxNmE0NzBkNzU1MDViMTg5ZWYxOTJhNjg1NC4uYjI4Njkw
NjYzYTAyNmIyMDEzNzE0Nzg5NTQzNjVkMWE2ZTUxY2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
MyBAQAorMjAyMS0xMS0yOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBGZXRjaCBhbmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0ZURhdGFT
dG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIGEgbmV3IFdlYnNpdGVEYXRhVHlwZSB2YWx1ZSBGaWxlU3lzdGVtIGZvciBGaWxlU3lz
dGVtQWNjZXNzIGRhdGEuIE5ldHdvcmsgcHJvY2VzcyBub3cgY2FuIGZldGNoIGFuZCAKKyAgICAg
ICAgZGVsZXRlIHRoaXMgdHlwZSBvZiBkYXRhIHdoZW4gZmV0Y2hpbmcgYW5kIGRlbGV0ZWluZyB3
ZWJzaXRlIGRhdGEgKGlmIEZpbGVTeXN0ZW0gdHlwZSBpcyBpbmNsdWRlZCBpbiB0YXJnZXQKKyAg
ICAgICAgdHlwZXMpLgorCisgICAgICAgIFRvIGdldCB0aGUgb3JpZ2lucyB0aGF0IGhhdmUgRmls
ZVN5c3RlbSBkYXRhLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmlsZSBuYW1lZCBvcmln
aW4gaW4gdGhlIG9yaWdpbiAKKyAgICAgICAgZGlyZWN0b3J5LiBUaGlzIGZpbGUgd2lsbCBiZSBj
cmVhdGVkIHdoZW4gT3JpZ2luU3RvcmFnZU1hbmFnZXIgaXMgY3JlYXRlZC4KKworICAgICAgICBU
byBkZWxldGUgZXhpc3RpbmcgRmlsZVN5c3RlbSBkYXRhLCBuZXR3b3JrIHByb2Nlc3MgZmluZHMg
b3JpZ2lucyB0aGF0IGFyZSByZXF1ZXN0ZWQgdG8gYmUgZGVsZXRlZCBhbmQgaGF2ZSBkYXRhIAor
ICAgICAgICBvbiBkaXNrLCBjbG9zZXMgYWN0aXZlIGhhbmRsZXMgaGVsZCBvbiB0aGVpciBmaWxl
cywgYW5kIGRlbGV0ZXMgdGhlIGZpbGVzLiBUaGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3Zl
IHdpbGwgCisgICAgICAgIGJlIGRlbGV0ZWQgaWYgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0
IGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYW5kIGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVs
ZXRlZC4KKworICAgICAgICBOZXcgQVBJIHRlc3Q6IEZpbGVTeXN0ZW1BY2Nlc3MuRmV0Y2hBbmRE
ZWxldGVEYXRhCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5z
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhXZWJzaXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlOjpyZXF1ZXN0Q3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGU6OmdldEZpbGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZTo6Z2V0RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmdldEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0
OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6On5GaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcjo6Z2V0RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFn
ZXJJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpm
aWxlU3lzdGVtR2V0RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpnZXRGaWxlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpnZXREaXJlY3RvcnlIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmdldEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFU
eXBlKToKKyAgICAgICAgKFdlYktpdDo6cmVhZE9yaWdpbkZyb21GaWxlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRmlsZVN5c3RlbVN0
b3JhZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjpv
d25lclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQu
bW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBl
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJ
bmNsdWRpbmdQcml2YXRlXSk6CisKIDIwMjEtMTEtMjYgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9u
c1dQRS5jbWFrZSBhbmQgTkVXUyBmb3IgdGhlIDIuMzUuMSByZWxlYXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwCmluZGV4IDY0YmFjNmI2YjcwMDE2MTBiNTNmMmUxZDMwOTI2N2JkNWE0MGY1MzguLjFiNzVi
ZTJhYTFkOWNmY2I1Yjg5MTQzOTJhY2U0OTllZWExY2U0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3Bw
CkBAIC01MTQsNiArNTE0LDQ4IEBAIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBzYWx0OwogfQogCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0ZW06OmZp
bGVTaXplKGhhbmRsZSkudmFsdWVfb3IoMCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgdW5zaWduZWQgYnl0ZXNUb1JlYWQ7CisgICAgaWYgKCFX
VEY6OmNvbnZlcnRTYWZlbHkoc2l6ZSwgYnl0ZXNUb1JlYWQpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7Cisg
ICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAodG90YWxCeXRlc1Jl
YWQgIT0gYnl0ZXNUb1JlYWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCit2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSwgV2FsbFRpbWUgdGltZSkKK3sKKyAgICBhdXRvIGNoaWxkcmVu
ID0gbGlzdERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGls
ZHJlbikgeworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAgYXV0byBjaGlsZFR5cGUg
PSBmaWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxkVHlwZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoKmNoaWxkVHlwZSA9PSBGaWxlVHlwZTo6RGlyZWN0
b3J5KSB7CisgICAgICAgICAgICBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY2hpbGRQYXRo
LCB0aW1lKTsKKyAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNoaWxkUGF0aCk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCgqY2hpbGRU
eXBlID09IEZpbGVUeXBlOjpSZWd1bGFyKTsKKyAgICAgICAgYXV0byB0aW1lID0gRmlsZVN5c3Rl
bTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY2hpbGRQYXRoKTsKKyAgICAgICAgaWYgKGF1dG8gbW9k
aWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGNoaWxkUGF0
aCk7IG1vZGlmaWNhdGlvblRpbWUgJiYgKm1vZGlmaWNhdGlvblRpbWUgPj0gdGltZSkKKyAgICAg
ICAgICAgIGRlbGV0ZUZpbGUoY2hpbGRQYXRoKTsKKyAgICB9Cit9CisKICNpZiBIQVZFKFNURF9G
SUxFU1lTVEVNKSB8fCBIQVZFKFNURF9FWFBFUklNRU5UQUxfRklMRVNZU1RFTSkKIAogYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5k
ZXggOTk2YmMwYjZmN2RhOGFkZDBhNmU1YjkxN2FjODZjZWM1YWY3MDlhNC4uZmQ4NTNhNDlhYWM4
ZGMwMWYzMTU3MDRjZTQ5ZDczNDY1YWUwNTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTA4LDYg
KzEwOCw3IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUgewogCiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRl
bGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJpbmcmLCBXYWxsVGltZSk7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwg
Y29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1saW5rcy4K
QEAgLTE0Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogCiB1c2luZyBTYWx0
ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlv
bmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91
bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCiBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9y
bUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9IHsgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRlNzY1ZGU0NTA3MWY0
MWYzZmM0ZDQ2OTcwNTM4MTZlMTg5OWViZmEuLjcwYjVhZmRhNTI2ZTk5MDliOTYyZDcxMjEzZDg1
YjYwYjUzNzE4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCkBAIC03NCw2ICs3NCw3IEBAIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25zLAogI2VuZGlmCisgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6Rmls
ZVN5c3RlbSwKICAgICB9KSk7CiAKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2
NjZiY2MxYjIxYjk1ZDA4OTJiMmYyM2ZkYzEyOWZiYWU2MWZlMzIxLi5mNThjZjg1NWNhYzU0ZDBh
ZDI1Y2QyMTczMWQ5Yjc1Zjk5NjA1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTU1NCw2ICsxNTU0LDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKworICAgIGlmIChhdXRv
IGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAh
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmZl
dGNoRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJp
ZXMpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMpOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMTYyOCw2ICsxNjM0LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vi
c2kKICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMo
bW9kaWZpZWRTaW5jZSk7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdl
TWFuYWdlcnMuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YU1vZGlm
aWVkU2luY2Uod2Vic2l0ZURhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoTmV0d29y
a0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBv
cmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0xNzM1LDYgKzE3NDQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgIH0KICNlbmRp
ZgogCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Np
b25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKQorICAgICAgICBpdGVy
YXRvci0+dmFsdWUtPmRlbGV0ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgb3JpZ2luRGF0YXMsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3I7CiAg
ICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQpAQCAtMTk1OCw2ICsx
OTcwLDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgIH0pOwogICAgIH0KIAor
ICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQp
OyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRv
ci0+dmFsdWUtPmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMod2Vic2l0ZURhdGFUeXBl
cywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdKGF1dG8gZGVsZXRlZERvbWFpbnMpIG11dGFibGUgeworICAgICAgICAgICAgZm9y
IChhdXRvJiBkb21haW4gOiBkZWxldGVkRG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfSk7CisgICAgfQor
CiAgICAgYXV0byBkYXRhVHlwZXNGb3JVSVByb2Nlc3MgPSBXZWJzaXRlRGF0YTo6ZmlsdGVyKHdl
YnNpdGVEYXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJKTsKICAgICBpZiAoIWRh
dGFUeXBlc0ZvclVJUHJvY2Vzcy5pc0VtcHR5KCkgJiYgIWRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNv
b2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSkgewogICAgICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+IGNvbXBsZXRpb25IYW5k
bGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+JiBkb21haW5zKSB7CkBAIC0yMDc0LDYgKzIwOTMsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAgICBpZiAoYXV0
byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3Ig
IT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5m
ZXRjaERhdGEod2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBlbnRy
aWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihlbnRyaWVzKTsKKyAgICAgICAgfSk7CisgICAgfQog
fQogI2VuZGlmIC8vIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmNwcAppbmRleCA0ZjcyY2QwM2YzNjhmNDU3NmQ0MzVk
NjdlNjJlM2ExMWI5MmNmZWE0Li44Y2ZiMTViMDRhMDk1MDU1MDIxMTcxNjgzNTY3ZjZiZTI4NDU0
ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
c3RhdGljIGJvb2wgaXNWYWxpZEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1
cm4gbmFtZSAhPSAiLiIgJiYgbmFtZSAhPSAiLi4iICYmICFuYW1lLmNvbnRhaW5zKHBhdGhTZXBh
cmF0b3IpOwogfQogCi1FeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnJlcXVl
c3RDcmVhdGVIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBUeXBl
IHR5cGUsIFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpCitFeHBlY3RlZDxX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OnJlcXVlc3RDcmVhdGVIYW5kbGUoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBUeXBlIHR5cGUsIFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRl
SWZOZWNlc3NhcnkpCiB7CiAgICAgaWYgKG1fdHlwZSAhPSBGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZTo6VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRmlsZVN5
c3RlbVN0b3JhZ2VFcnJvcjo6VHlwZU1pc21hdGNoKTsKQEAgLTEwMSwxMiArMTAxLDEyIEBAIEV4
cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPiBGaWxlU3lzdGVtCiAgICAgcmV0dXJuIG1fbWFuYWdlci0+Y3JlYXRlSGFuZGxl
KGNvbm5lY3Rpb24sIHR5cGUsIFdURk1vdmUocGF0aCksIFdURk1vdmUobmFtZSksIGNyZWF0ZUlm
TmVjZXNzYXJ5KTsKIH0KIAotRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpn
ZXRGaWxlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RyaW5n
JiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSkKK0V4cGVjdGVkPFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZTo6Z2V0RmlsZUhhbmRsZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpCiB7CiAgICAgcmV0dXJuIHJl
cXVlc3RDcmVhdGVIYW5kbGUoY29ubmVjdGlvbiwgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OlR5
cGU6OkZpbGUsIFdURk1vdmUobmFtZSksIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKIH0KIAotRXhwZWN0
ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXREaXJlY3RvcnlIYW5kbGUoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0
ZUlmTmVjZXNzYXJ5KQorRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRE
aXJlY3RvcnlIYW5kbGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJpbmcmJiBuYW1l
LCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KQogewogICAgIHJldHVybiByZXF1ZXN0Q3JlYXRlSGFu
ZGxlKGNvbm5lY3Rpb24sIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlOjpEaXJlY3Rvcnks
IFdURk1vdmUobmFtZSksIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKIH0KQEAgLTIwMyw3ICsyMDMsNyBA
QCBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGU6OmdldEhhbgogICAgIHJldHVybiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KG1fcGF0aCk7CiB9CiAKLUV4cGVjdGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlOjpnZXRIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uLCBTdHJpbmcmJiBuYW1lKQorRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4g
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmdldEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFN0cmluZyYmIG5hbWUpCiB7CiAgICAgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSA9IGZh
bHNlOwogICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVzdENyZWF0ZUhhbmRsZShjb25uZWN0aW9uLCBG
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6VHlwZTo6QW55LCBXVEZNb3ZlKG5hbWUpLCBjcmVhdGVJ
Zk5lY2Vzc2FyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCmluZGV4IGZiOTI5ODE0MWIw
ZGJjMzgxZmE4YjNiMzgxN2U2OGNhMDE4OTc5ZGEuLjM5MGEwYjJiOGQzZTUzZWRmMDRlMDZlMTAz
ZjVmN2JhODk3ZWFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCkBAIC01MiwxOSAr
NTIsMjAgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoKTsKICAgICBib29sIGlzU2FtZUVudHJ5
KFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyKTsKICAgICBzdGQ6Om9wdGlvbmFs
PEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IG1vdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSk7Ci0gICAgRXhwZWN0ZWQ8V2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldEZp
bGVIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RyaW5nJiYgbmFtZSwgYm9vbCBj
cmVhdGVJZk5lY2Vzc2FyeSk7Ci0gICAgRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldERpcmVjdG9yeUhhbmRsZShJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVj
ZXNzYXJ5KTsKKyAgICBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZ2V0RmlsZUhhbmRsZShJUEM6OkNvbm5lY3Rpb24m
LCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKKyAgICBFeHBlY3RlZDxX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gZ2V0RGlyZWN0b3J5SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYsIFN0cmluZyYmIG5hbWUsIGJv
b2wgY3JlYXRlSWZOZWNlc3NhcnkpOwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcj4gcmVtb3ZlRW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRlbGV0ZVJlY3Vy
c2l2ZWx5KTsKICAgICBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4gcmVzb2x2ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcik7CiAgICAg
RXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldEhhbmRs
ZU5hbWVzKCk7Ci0gICAgRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5k
bGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZ2V0SGFuZGxlKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0cmluZyYmIG5hbWUpOworICAgIEV4cGVjdGVkPHN0
ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIEZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3I+IGdldEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJpbmcmJiBu
YW1lKTsKIAogICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUluZm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5k
bGU+OwogICAgIEV4cGVjdGVkPEFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+IGNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxl
SWRlbnRpZmllcik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXI+IGFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGU7IH0KIAogcHJpdmF0ZToKLSAgICBFeHBlY3Rl
ZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4gcmVxdWVzdENyZWF0ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBUeXBl
LCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKKyAgICBFeHBlY3RlZDxX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gcmVxdWVzdENyZWF0ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBUeXBlLCBTdHJpbmcmJiBu
YW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKIAogICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWFrUHRyPEZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcj4gbV9tYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCAzOGFhMjY1NWMzOWRkYzIzN2JhNWEzODBhNWQ1NDkxMjQyYzM3ZjUxLi4yODExNTExZTE1
MTBhMDE4YmM4ZjA0MGMwOWY2MDNhZTI5YTlkOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtNDIsMTEgKzQyLDEwIEBAIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6
fkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcigpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1faGFuZGxlcy5rZXlzKCkpCi0g
ICAgICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKyAgICBjbG9z
ZSgpOwogfQogCi1FeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVI
YW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZTo6VHlwZSB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29s
IGNyZWF0ZUlmTmVjZXNzYXJ5KQorRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGU6OlR5cGUgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSwgYm9v
bCBjcmVhdGVJZk5lY2Vzc2FyeSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtNzQsOSArNzMsMTIgQEAgRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW0KIAogICAgIGF1dG8g
bmV3SGFuZGxlID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZT4oKnRoaXMsIHR5
cGUsIFdURk1vdmUocGF0aCksIFdURk1vdmUobmFtZSkpOwogICAgIGF1dG8gbmV3SGFuZGxlSWRl
bnRpZmllciA9IG5ld0hhbmRsZS0+aWRlbnRpZmllcigpOwotICAgIG1faGFuZGxlc0J5Q29ubmVj
dGlvbi5lbnN1cmUoY29ubmVjdGlvbiwgWyZdIHsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24u
ZW5zdXJlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgWyZdIHsKICAgICAgICAgcmV0dXJuIEhhc2hT
ZXQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWUuYWRkKG5ld0hhbmRsZUlkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvbnMu
ZW5zdXJlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+IHsgJmNvbm5lY3Rpb24gfTsKKyAgICB9KTsKICAgICBtX3JlZ2lz
dHJ5LnJlZ2lzdGVySGFuZGxlKG5ld0hhbmRsZUlkZW50aWZpZXIsICpuZXdIYW5kbGUpOwogICAg
IG1faGFuZGxlcy5hZGQobmV3SGFuZGxlSWRlbnRpZmllciwgV1RGTW92ZShuZXdIYW5kbGUpKTsK
ICAgICByZXR1cm4gbmV3SGFuZGxlSWRlbnRpZmllcjsKQEAgLTEyMSw5ICsxMjMsMTAgQEAgdm9p
ZCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWMKICAgICB9KTsKIAogICAgIG1faGFuZGxlc0J5Q29ubmVjdGlv
bi5yZW1vdmUoY29ubmVjdGlvbkhhbmRsZXMpOworICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNv
bm5lY3Rpb24pOwogfQogCi1FeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpn
ZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uKQorRXhwZWN0
ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6Z2V0RGlyZWN0b3J5KElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMTQ5LDQgKzE1MiwyOCBAQCBib29sIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6cmVsZWFz
ZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNsb3NlKCkKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rp
b25JRCwgaWRlbnRpZmllcnNdIDogbV9oYW5kbGVzQnlDb25uZWN0aW9uKSB7CisgICAgICAgIGZv
ciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgIGF1dG8gdGFr
ZW5IYW5kbGUgPSBtX2hhbmRsZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcmVn
aXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gU2Vu
ZCBtZXNzYWdlIHRvIHdlYiBwcm9jZXNzIHRvIGludmFsaWRhdGUgYWN0aXZlIHN5bmMgYWNjZXNz
IGhhbmRsZS4KKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBpZiAoYXV0byBhY2Nlc3NIYW5k
bGVJZGVudGlmaWVyID0gdGFrZW5IYW5kbGUtPmFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSkgewor
ICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb25JRCktPnNlbmQoTWVz
c2FnZXM6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW52YWxpZGF0ZUFjY2Vzc0hh
bmRsZSgqYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIDApOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChtX2hhbmRsZXMuaXNFbXB0
eSgpKTsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24uY2xlYXIoKTsKKyAgICBtX2Nvbm5lY3Rp
b25zLmNsZWFyKCk7CisgICAgbV9sb2NrTWFwLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oCmluZGV4IGI4NTc2NzY4YjM1NWFj
YjNhYTBjMzcwMzhjYzUxZWNjOTMyYjM5NmMuLjAxZDNiYjc0NjA1Mjk5NmM0ZjQ2MzVkNGIxODQ5
NDI1ZDY3ZDE2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM5LDE5ICsz
OSwyMiBAQCBwdWJsaWM6CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIHBh
dGgsIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKICAgICB+RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyKCk7CiAKLSAgICBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY3JlYXRlSGFuZGxlKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlLCBTdHJpbmcm
JiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKKyAgICBFeHBl
Y3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcj4gY3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbiYsIEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlOjpUeXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlm
TmVjZXNzYXJ5KTsKICAgICBjb25zdCBTdHJpbmcmIGdldFBhdGgoV2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIpOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlIGdl
dFR5cGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xv
c2VIYW5kbGUoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25D
bG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7Ci0gICAgRXhwZWN0ZWQ8V2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGdldERp
cmVjdG9yeShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICBFeHBlY3RlZDxXZWJDb3Jl
OjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gZ2V0
RGlyZWN0b3J5KElQQzo6Q29ubmVjdGlvbiYpOwogICAgIGJvb2wgYWNxdWlyZUxvY2tGb3JGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIp
OwogICAgIGJvb2wgcmVsZWFzZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgorICAgIHZvaWQgY2xv
c2UoKTsKKwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSYgbV9yZWdpc3RyeTsKICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIEhhc2hTZXQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXI+PiBtX2hhbmRs
ZXNCeUNvbm5lY3Rpb247CisgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBS
ZWZQdHI8SVBDOjpDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3Rl
bVN0b3JhZ2VIYW5kbGU+PiBtX2hhbmRsZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyPiBtX2xvY2tNYXA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcAppbmRleCAyOTc4YTI1ZWYxMjUyNDcyY2NmMmU2ZjFkMzJmNTFiMDUxMDJm
MDYyLi5lNDczNWZjMjU4MzM0ZmRhYWU2Y2ZmNjc2M2M3YTQ0ODJlNzk4NzI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJz
aXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEzMSwxMCArMTMzLDE4IEBAIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
JiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3Qg
V2ViCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXR1cm4gKm1fbG9j
YWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgWyZdIHsKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KG9yaWdpblBhdGgobV9wYXRoLCBv
cmlnaW4sIG1fc2FsdCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdl
TWFuYWdlcj4ob3JpZ2luUGF0aChtX3BhdGgsIG9yaWdpbiwgbV9zYWx0KSwgb3JpZ2luKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpy
ZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX2xvY2FsT3JpZ2lu
U3RvcmFnZU1hbmFnZXJzLmZpbmQob3JpZ2luKTsgaXRlcmF0b3IgIT0gbV9sb2NhbE9yaWdpblN0
b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS0+aXNB
Y3RpdmUoKSkKKyAgICAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMucmVtb3Zl
KGl0ZXJhdG9yKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwZXJz
aXN0ZWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CkBAIC0xNjgsNyArMTc4LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmZpbGVTeXN0ZW1HZXREaXJlY3RvcnkoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgY29tcGxldGlvbkhh
bmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlcigqbV9maWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5KS5nZXREaXJlY3Rvcnko
Y29ubmVjdGlvbi51bmlxdWVJRCgpKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmln
aW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcigqbV9maWxl
U3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5KS5nZXREaXJlY3RvcnkoY29ubmVjdGlvbikpOwog
fQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xvc2VIYW5kbGUoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTIwOSw3ICsyMTksNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0RmlsZUhhbmRsZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFdlYkNvcmU6OgogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcjo6
VW5rbm93bikpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5nZXRGaWxlSGFuZGxl
KGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgV1RGTW92ZShuYW1lKSwgY3JlYXRlSWZOZWNlc3Nhcnkp
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUtPmdldEZpbGVIYW5kbGUoY29ubmVjdGlv
biwgV1RGTW92ZShuYW1lKSwgY3JlYXRlSWZOZWNlc3NhcnkpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmdldERpcmVjdG9yeUhhbmRsZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0
cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnksIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIyMCw3ICsyMzAsNyBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0RGlyZWN0b3J5SGFuZGxlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cjo6VW5rbm93bikpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5nZXREaXJlY3Rv
cnlIYW5kbGUoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBXVEZNb3ZlKG5hbWUpLCBjcmVhdGVJZk5l
Y2Vzc2FyeSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Z2V0RGlyZWN0b3J5SGFu
ZGxlKGNvbm5lY3Rpb24sIFdURk1vdmUobmFtZSksIGNyZWF0ZUlmTmVjZXNzYXJ5KSk7CiB9CiAK
IHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVFbnRyeShXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
ZGVsZXRlUmVjdXJzaXZlbHksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxG
aWxlU3lzdGVtU3RvcmFnZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMDIsNyAr
MzEyLDE4OSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0SGFuZGxlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6RmlsZQogICAgIGlmICghaGFuZGxlKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcjo6VW5rbm93bikpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlLT5n
ZXRIYW5kbGUoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoaGFuZGxlLT5nZXRIYW5kbGUoY29ubmVjdGlvbiwgV1RGTW92ZShuYW1l
KSkpOworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0
ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVR5cGUpCit7CisgICAgaWYgKHN0b3JhZ2VU
eXBlID09ICJGaWxlU3lzdGVtIikKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Rmls
ZVN5c3RlbTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gcmVhZE9yaWdpbkZyb21GaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIGF1dG8g
Y2xvc2VGaWxlID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKKyAgICB9KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBy
ZWFkVGV4dCA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKGhhbmRsZSk7CisgICAgaWYgKCFy
ZWFkVGV4dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gb3JpZ2lu
c1N0cmluZyA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZSgqcmVhZFRleHQpKTsKKyAgICBhdXRvIG9y
aWdpbnMgPSBvcmlnaW5zU3RyaW5nLnNwbGl0KCJcbiIpOworICAgIGlmIChvcmlnaW5zLnNpemUo
KSAhPSAyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byB0b3BPcmln
aW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIo
b3JpZ2luc1swXSk7CisgICAgaWYgKCF0b3BPcmlnaW4pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBhdXRvIG9wZW5pbmdPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luc1sxXSk7CisgICAgaWYgKCFvcGVu
aW5nT3JpZ2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiB7ICp0b3BPcmlnaW4sICpvcGVuaW5nT3JpZ2luIH07Cit9CisK
K1ZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hE
YXRhRnJvbURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdGFyZ2V0VHlwZXMpCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4+IG9yaWdpblR5cGVz
OworICAgIGZvciAoYXV0byYgdG9wT3JpZ2luIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSht
X3BhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgdG9wT3JpZ2luKTsKKyAgICAgICAgZm9y
IChhdXRvJiBvcGVuaW5nT3JpZ2luIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSh0b3BPcmln
aW5EaXJlY3RvcnkpKSB7CisgICAgICAgICAgICBhdXRvIG9wZW5pbmdPcmlnaW5EaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodG9wT3JpZ2luRGlyZWN0b3J5
LCBvcGVuaW5nT3JpZ2luKTsKKyAgICAgICAgICAgIGF1dG8gb3JpZ2luRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3BlbmluZ09yaWdpbkRpcmVjdG9yeSwg
Im9yaWdpbiIpOworICAgICAgICAgICAgYXV0byBvcmlnaW4gPSByZWFkT3JpZ2luRnJvbUZpbGUo
b3JpZ2luRmlsZVBhdGgpOworICAgICAgICAgICAgaWYgKCFvcmlnaW4pCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3RvcmFnZVR5cGUgOiBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9wZW5pbmdPcmlnaW5EaXJlY3RvcnkpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gdHlwZSA9IHRvV2Vic2l0ZURhdGFUeXBlKHN0b3JhZ2VUeXBlKTsg
dHlwZSAmJiB0YXJnZXRUeXBlcy5jb250YWlucygqdHlwZSkpCisgICAgICAgICAgICAgICAgICAg
IG9yaWdpblR5cGVzLmFkZChvcmlnaW4tPmNsaWVudE9yaWdpbiwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4geyB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCp0eXBlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IGVudHJp
ZXM7CisgICAgZm9yIChhdXRvIFtvcmlnaW4sIHR5cGVzXSA6IG9yaWdpblR5cGVzKSB7CisgICAg
ICAgIGZvciAoYXV0byB0eXBlIDogdHlwZXMpCisgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZCh7
IFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbiwgdHlwZSwgMCB9IH0pOworICAgIH0KKworICAg
IHJldHVybiBlbnRyaWVzOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7
CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHR5cGVzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGVudHJpZXMgPSBmZXRjaERhdGFGcm9tRGlz
ayh0eXBlcyk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGVudHJpZXMgPSBjcm9zc1RocmVhZENvcHkoZW50cmllcyldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVudHJpZXMp
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK1ZlY3RvcjxXZWJDb3JlOjpDbGllbnRPcmln
aW4+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YU9uRGlzayhPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbnN0IEZ1
bmN0aW9uPGJvb2woY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik+JiBmaWx0ZXIpCit7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q2xp
ZW50T3JpZ2luPiBkZWxldGVkT3JpZ2luczsKKyAgICBmb3IgKGF1dG8mIHRvcE9yaWdpbiA6IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKSkgeworICAgICAgICBhdXRvIHRvcE9yaWdp
bkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgs
IHRvcE9yaWdpbik7CisgICAgICAgIGZvciAoYXV0byYgb3BlbmluZ09yaWdpbiA6IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgYXV0
byBvcGVuaW5nT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHRvcE9yaWdpbkRpcmVjdG9yeSwgb3BlbmluZ09yaWdpbik7CisgICAgICAgICAgICBh
dXRvIG9yaWdpbkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG9wZW5pbmdPcmlnaW5EaXJlY3RvcnksICJvcmlnaW4iKTsKKyAgICAgICAgICAgIGF1dG8gb3Jp
Z2luID0gcmVhZE9yaWdpbkZyb21GaWxlKG9yaWdpbkZpbGVQYXRoKTsKKyAgICAgICAgICAgIGlm
ICghb3JpZ2luKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgb3JpZ2luIGNhbm5vdCBiZSByZXRy
aWV2ZWQsIGJ1dCB3ZSBhcmUgYXNrZWQgdG8gcmVtb3ZlIGRhdGEgZm9yIGFsbCBvcmlnaW5zLCBy
ZW1vdmUgaXQuCisgICAgICAgICAgICAgICAgaWYgKGZpbHRlcihXZWJDb3JlOjpDbGllbnRPcmln
aW4geyB9KSkgeworICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxl
c01vZGlmaWVkU2luY2Uob3BlbmluZ09yaWdpbkRpcmVjdG9yeSwgbW9kaWZpZWRTaW5jZVRpbWUp
OworICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShv
cGVuaW5nT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZmlsdGVyKCpv
cmlnaW4pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBkZWxldGVk
T3JpZ2lucy5hcHBlbmQoKm9yaWdpbik7CisgICAgICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKCpvcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lKTsKKyAg
ICAgICAgICAgIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSgqb3JpZ2luKTsK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9wZW5pbmdPcmln
aW5EaXJlY3RvcnkpOworICAgICAgICB9CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KTsKKyAgICB9CisKKyAgICByZXR1cm4gZGVs
ZXRlZE9yaWdpbnM7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBvcmlnaW5zID0gY3Jvc3NUaHJlYWRD
b3B5KG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luU2V0OworICAgICAgICBvcmlnaW5TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShvcmlnaW5zLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykK
KyAgICAgICAgICAgIG9yaWdpblNldC5hZGQob3JpZ2luKTsKKworICAgICAgICBkZWxldGVEYXRh
T25EaXNrKHR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFsmb3JpZ2luU2V0XShhdXRvIG9y
aWdpbikgeworICAgICAgICAgICAgcmV0dXJuIG9yaWdpblNldC5jb250YWlucyhvcmlnaW4uY2xp
ZW50T3JpZ2luKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMs
IG1vZGlmaWVkU2luY2VUaW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCBt
b2RpZmllZFNpbmNlVGltZSwgW10oYXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9KTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBl
cywgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBk
ZWxldGVkT3JpZ2lucyA9IGRlbGV0ZURhdGFPbkRpc2sodHlwZXMsIC1XYWxsVGltZTo6aW5maW5p
dHkoKSwgWyZkb21haW5zXShhdXRvJiBvcmlnaW4pIHsKKyAgICAgICAgICAgIGF1dG8gZG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9y
aWdpbi5jbGllbnRPcmlnaW4uaG9zdCk7CisgICAgICAgICAgICByZXR1cm4gZG9tYWlucy5jb250
YWlucyhkb21haW4pOworICAgICAgICB9KTsKKworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRlbGV0ZWREb21haW5zOworICAgICAgICBmb3IgKGF1dG8gb3JpZ2lu
IDogZGVsZXRlZE9yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8gZG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbi5jbGllbnRP
cmlnaW4uaG9zdCk7CisgICAgICAgICAgICBpZiAoIWRlbGV0ZWREb21haW5zLmNvbnRhaW5zKGRv
bWFpbikpCisgICAgICAgICAgICAgICAgZGVsZXRlZERvbWFpbnMuYXBwZW5kKGRvbWFpbik7Cisg
ICAgICAgIH0KKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBkb21haW5zID0gY3Jvc3NUaHJlYWRDb3B5KGRlbGV0ZWREb21h
aW5zKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
ZG9tYWlucykpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNWJjNTZiN2M2NDZjNmIxZmQ3YWQ2NGRk
NDg3ZWRmNWRlYTYzOTM0YS4uOWZkYzRkZDljY2Q3YTBmM2NiYTEwNzk2ZjFiMWQzZjhmNTkxN2Q4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaCIKICNp
bmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
U3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBTaGFy
ZWRGaWxlSGFuZGxlOwpAQCAtNTUsMTMgKzU3LDIyIEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIHZvaWQg
Y2xvc2UoKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYm
KT4mJik7CisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+Jik+JiYpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB+TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyKCk7CiAgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgdm9pZCByZW1vdmVPcmln
aW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7
CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGVSZWdpc3RyeSgpOwogCisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZmV0Y2hE
YXRhRnJvbURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOworICAgIFZlY3RvcjxXZWJD
b3JlOjpDbGllbnRPcmlnaW4+IGRlbGV0ZURhdGFPbkRpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYpPiYpOworICAgIAorCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgKGltcGxl
bWVudGVkIGJ5IGdlbmVyYXRlZCBjb2RlKQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3Bw
CmluZGV4IDRmMDZmNDUyNDY1NjQ2ZDIwMTFiYzdmNTNiYmRiMjgxMTU5M2FhNDMuLmIyOWU5NTFk
NWFhYmQzZmVlZjU0ZDFiYjBkZDMxMmQ3N2E3YzYzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02NCwxNiArNjYsODAgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gKm1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOwogICAgIH0KIAorICAgIGJvb2wg
aXNBY3RpdmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9maWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXI7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAg
IGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQorICAgICAg
ICAgICAgZGVsZXRlRmlsZVN5c3RlbVN0b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKKwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShtX3Jvb3RQYXRoKTsK
KyAgICB9CisKIHByaXZhdGU6CisgICAgdm9pZCBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEo
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUpCisgICAgeworICAgICAgICBpZiAobV9maWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ciA9IG51bGxwdHI7CisKKyAgICAgICAgYXV0byBmaWxlU3lzdGVtU3RvcmFnZVBhdGggPSB0eXBl
U3RvcmFnZVBhdGgoIkZpbGVTeXN0ZW0iKTsKKyAgICAgICAgaWYgKG1vZGlmaWVkU2luY2VUaW1l
ID4gLVdhbGxUaW1lOjppbmZpbml0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVBbGxGaWxlc01vZGlmaWVkU2luY2UoZmlsZVN5c3RlbVN0b3JhZ2VQYXRoLCBtb2RpZmllZFNp
bmNlVGltZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShmaWxlU3lzdGVtU3RvcmFnZVBhdGgpOwor
ICAgIH0KKwogICAgIFN0cmluZyBtX3Jvb3RQYXRoOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7
CiAgICAgU3RvcmFnZUJ1Y2tldE1vZGUgbV9tb2RlIHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RF
ZmZvcnQgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyPiBt
X2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjsKIH07CiAKLU9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpP
cmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoKQordm9pZCBPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luKQoreworICAgIGF1dG8gb3JpZ2luRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCAib3JpZ2luIik7CisgICAgaWYgKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luRmlsZVBhdGgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChv
cmlnaW5GaWxlUGF0aCkpOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
b3JpZ2luRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAg
ICBhdXRvIGNsb3NlRmlsZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgfSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAgICAgICBMT0dfRVJST1IoIk9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcjogRmFpbGVkIHRvIG9wZW4gb3JpZ2luIGZpbGUi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBidWlsZGVyLmFwcGVuZChvcmlnaW4udG9wT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICBidWlsZGVyLmFwcGVuZChvcmlnaW4u
Y2xpZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBhdXRvIG9yaWdpbkNvbnRl
bnQgPSBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGhhbmRsZSwgb3JpZ2luQ29udGVudC5kYXRhKCksIG9yaWdpbkNvbnRlbnQubGVuZ3RoKCkp
OworfQorCit2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPcmlnaW5GaWxlSWZOZWNl
c3NhcnkoKQoreworICAgIGF1dG8gY2hpbGRyZW4gPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KG1fcGF0aCk7CisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSAhPSAxIHx8IGNoaWxkcmVuLmZpcnN0
KCkgIT0gIm9yaWdpbiIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gb3JpZ2luRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCAib3JpZ2lu
Iik7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShvcmlnaW5GaWxlUGF0aCk7Cit9CisKK09y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKICAgICA6IG1fcGF0aChXVEZNb3Zl
KHBhdGgpKQogeworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGNyZWF0ZU9y
aWdpbkZpbGVJZk5lY2Vzc2FyeShvcmlnaW4pOwogfQogCiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
fk9yaWdpblN0b3JhZ2VNYW5hZ2VyKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDUgKzE2OSwxOCBAQCBG
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIoRmlsZVN5cwogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuZmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5KTsKIH0KIAorYm9vbCBPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6aXNBY3RpdmUoKQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUo
KTsKK30KKwordm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBk
ZWZhdWx0QnVja2V0KCkuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZSk7CisKKyAgICBk
ZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeShtX3BhdGgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3Jh
Z2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhNGMxMWFkNjVhNWMxOTcwM2E3YzBlOTI5NGJjMmZlYWFh
MmZmZTJlLi44ZTUzNjBlYmQ5MmFhMzVmM2ZmNjRmODQyNmE2OTZhMjVhZDA5MTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaApAQCAtMjgsMjcgKzI4LDM3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKIGNsYXNzIEZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcjsKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiAKIGNs
YXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRo
KTsKKyAgICBleHBsaWNpdCBPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB+T3JpZ2luU3RvcmFnZU1hbmFnZXIoKTsK
IAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsK
ICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9CiAgICAg
dm9pZCBwZXJzaXN0KCk7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOworICAgIGJv
b2wgaXNBY3RpdmUoKTsKKyAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3JhZ2VCdWNr
ZXRNb2RlIDogYm9vbDsKICAgICBjbGFzcyBTdG9yYWdlQnVja2V0OwogICAgIFN0b3JhZ2VCdWNr
ZXQmIGRlZmF1bHRCdWNrZXQoKTsKIAorICAgIHZvaWQgY3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNz
YXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHZvaWQgZGVsZXRlT3JpZ2lu
RmlsZUlmTmVjZXNzYXJ5KCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4g
bV9kZWZhdWx0QnVja2V0OwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX3BlcnNpc3Rl
ZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5jcHAKaW5kZXggZjM3MjkwMTM4YjRmYWZmMzIzNTNiMmFjZGFkZTgzNDAwZGE5Y2M4
YS4uZjliMmZlMDQwOWRjNDMwYjFkM2QzYWViMDBlNzZiMDBiM2YwNTZiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApAQCAtMTI5LDYg
KzEyOSw4IEBAIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vz
cyhXZWJzaXRlRGF0YVR5cGUgZGF0YVR5cGUpCiAgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkFs
dGVybmF0aXZlU2VydmljZXM6CiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBl
OjpOZXR3b3JrOwogI2VuZGlmCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW06
CisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOwogICAgIH0K
IAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCmluZGV4IDdhOWU1MDBmZTFi
MDllMzg5NWRkNzQzZTE2NWM5ODkxOGJlN2E4ZGIuLmU0NTlhMDkwMzhhNDhhMTk4NmQ2ZDMzOTY2
NDMzMjgzMzc1YTQ1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhVHlwZS5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgV2Vic2l0
ZURhdGFUeXBlIDogdWludDMyX3QgewogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NF
UlZJQ0UpCiAgICAgQWx0ZXJuYXRpdmVTZXJ2aWNlcyA9IDEgPDwgMTgsCiAjZW5kaWYKKyAgICBG
aWxlU3lzdGVtID0gMSA8PCAxOSwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtNzks
MTAgKzgwLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU+IHsKICNlbmRpZgogICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9N
Q2FjaGUsCiAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0
LAotICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzCisgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHMsCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICAgICAg
LCBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcworICAgICAgICBX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcywKICNlbmRpZgorICAg
ICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbQogICAgID47CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkLm1tCmluZGV4IGM4MjYxNmY3OTBjNmZjNjkwYTZjYmQ2OTdhMGU4ZWNkYTUyMjdm
YjEuLmZhMTExM2U0N2MyYTQ0NDE0YmQyYWRkMTkyZDAyZTc1MDdmMzI1ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCkBAIC01MSw2ICs1MSw3IEBAIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFU
eXBlQ3JlZGVudGlhbHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzCiBOU1N0cmlu
ZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgPSBAIl9XS1dl
YnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMgPSBAIl9XS1dlYnNpdGVEYXRh
VHlwZVByaXZhdGVDbGlja01lYXN1cmVtZW50cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNp
dGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVy
bmF0aXZlU2VydmljZXMiOworTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVGaWxl
U3lzdGVtID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtIjsKIAogI2lmIFBMQVRGT1JN
KE1BQykKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAi
X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSI7CkBAIC0xMTAsNiArMTExLDggQEAgc3RhdGlj
IE5TU3RyaW5nICpkYXRhVHlwZXNUb1N0cmluZyhOU1NldCAqZGF0YVR5cGVzKQogICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OkAiUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHMiXTsKICAgICBpZiAo
W2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNl
cnZpY2VzXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkFsdGVybmF0aXZlIFNlcnZpY2Vz
Il07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBl
RmlsZVN5c3RlbV0pCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJGaWxlIFN5c3RlbSJdOwog
CiAgICAgcmV0dXJuIFthcnJheSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJdOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmluZGV4IGRiYzVmM2Y3YTFmZjRmYjc0OWFhZmQ3
MGU1NzBiYTA0ODU2OGFjZDYuLjkxNDQ4ZWUxZDU1MWRlNDIwNjU4NjdiODE1ZGJkZjFkZWZhNzVj
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAgLTc3LDYgKzc3LDggQEAgc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5
cGUoTlNTdHJpbmcgKndlYnNpdGUKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9T
dHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAgICAgICAgIHJl
dHVybiBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXM7CiAjZW5kaWYKKyAgICBp
ZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlRmls
ZVN5c3RlbV0pCisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW07CiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTM0LDYgKzEzNiw4IEBAIHN0YXRpYyBp
bmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2l0ZURhdGFUeXBlcyhPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlRGF0CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFU
eXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc107CiAj
ZW5kaWYKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkZpbGVTeXN0ZW0pKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tX
ZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlw
ZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCmluZGV4IGQ2MDdkZmUxM2Y2MTJiNTgy
MjBlNWEzNTI1Nzc0NzA1MzFlZTQ5MDcuLjJjZjlhNGQyYTBjN2ZjZTI1YjY1MDZhYzE3YmQ3MTEx
N2M5NzUxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0zNyw2ICszNyw3IEBA
IFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxz
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTUpLCBpb3MoMTMuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTIuMCksIGlvcygxNS4wKSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCks
IGlvcygxNC4wKSk7CitXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVGaWxlU3lzdGVtIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogV0tfRVhURVJOIE5TU3RyaW5nICog
Y29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjExKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCBlMmIwNzM2NDY0YjE2NmRkOTIwY2YzNTUxNzFm
YjNhNTYzNzBhMzg0Li43ZWYwNjk1MGFiMDdkM2UxYTc2MTZjYmNiNThiZDI1Nzg1MzU5ZWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0KQEAgLTI0OCw3ICsyNDgsOCBAQCArIChOU1NldDxOU1N0cmluZyAqPiAq
KV9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQogICAgICAgICAgICAgX1dLV2Vi
c2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMsCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVB
ZENsaWNrQXR0cmlidXRpb25zLAogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzLAotICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJu
YXRpdmVTZXJ2aWNlcworICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVT
ZXJ2aWNlcywKKyAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0KICNpZiAh
VEFSR0VUX09TX0lQSE9ORQogICAgICAgICAgICAgLCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5E
YXRhCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBlNjRhZjI0OTliYmIxMzYzYzNmZmEzY2RkZjk4MmMzYjA5YmQ3ZjM0Li45ZTQ4M2Iw
YzI0YzZiMzA2ZGViNmY0MTMxNWE5MjUwM2UxMzE5ZDI4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTEtMjkg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJl
bW92ZSBmaWxlIHN5c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tOgorCiAyMDIxLTExLTI3ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5
XSBTaWduYWwgc3RhdGUtY2hhbmdlZDpzZWxlY3RlZCBpcyBub3QgZW1pdHRlZCBmb3IgbGlzdGJv
eCBlbGVtZW50cyB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5tbQppbmRl
eCA1MmFiOWNlMjhiNzU2MGRhOTBlYTEzZTg5Mjg4ZDE3MjlhNDEwZWJlLi5kOTkxYzJkNmJlZTQ3
MThmMGJmYzYzMjc0NDYyYmVkZjc3ZTg3OTY4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tCkBAIC0zNCw2
ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhUmVj
b3JkUHJpdmF0ZS5oPgogCiBAaW50ZXJmYWNlIEZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogQGVuZApAQCAtMTk2LDQgKzE5
Nyw3MyBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIE1pZ3JhdGVUb05ld1N0b3JhZ2VEaXJlY3Rv
cnkpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV0pOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBAIjxzY3Jp
cHQ+IFwKKyAgICBhc3luYyBmdW5jdGlvbiBvcGVuKHNob3VsZENyZWF0ZUZpbGUpIFwKKyAgICB7
IFwKKyAgICAgICAgdHJ5IHsgXAorICAgICAgICAgICAgdmFyIHJvb3RIYW5kbGUgPSBhd2FpdCBu
YXZpZ2F0b3Iuc3RvcmFnZS5nZXREaXJlY3RvcnkoKTsgXAorICAgICAgICAgICAgdmFyIGZpbGVI
YW5kbGUgPSBhd2FpdCByb290SGFuZGxlLmdldEZpbGVIYW5kbGUoJ2ZpbGUtc3lzdGVtLWFjY2Vz
cy50eHQnLCB7ICdjcmVhdGUnIDogc2hvdWxkQ3JlYXRlRmlsZSB9KTsgXAorICAgICAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2Zp
bGUgaXMgb3BlbmVkJyk7IFwKKyAgICAgICAgfSBjYXRjaChlcnIpIHsgXAorICAgICAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2Vy
cm9yOiAnICsgZXJyLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlKTsgXAorICAgICAgICB9IFwK
KyAgICB9IFwKKyAgICBvcGVuKHRydWUpOyBcCisgICAgPC9zY3JpcHQ+IjsKKworVEVTVChGaWxl
U3lzdGVtQWNjZXNzLCBGZXRjaEFuZERlbGV0ZURhdGEpCit7CisgICAgYXV0byBoYW5kbGVyID0g
YWRvcHROUyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRs
ZXIiXTsKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3ZWJzaXRl
RGF0YVN0b3JlXTsKKworICAgIC8vIFJlbW92ZSBleGlzdGluZyBkYXRhLgorICAgIE5TU2V0ICp0
eXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1d
OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUg
cmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0
XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hE
YXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vi
c2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWNv
cmRzLmNvdW50LCAwdSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8g
cHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5j
ZXMuX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9zdG9y
YWdlQVBJRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOnRlc3RTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Vi
a2l0Lm9yZyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
CisgICAgLy8gRmV0Y2ggZGF0YSBhZnRlciBmaWxlIGlzIGNyZWF0ZWQuCisgICAgZG9uZSA9IGZh
bHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVz
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNv
cmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAxdSk7CisgICAgICAgIGF1
dG8gcmVjb3JkID0gW3JlY29yZHMgb2JqZWN0QXRJbmRleDowXTsKKyAgICAgICAgRVhQRUNUX1NU
UkVRKCJ3ZWJraXQub3JnIiwgW3JlY29yZC5kaXNwbGF5TmFtZSBVVEY4U3RyaW5nXSk7CisKKyAg
ICAgICAgLy8gUmVtb3ZlIGRhdGEuCisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOnR5cGVzIGZvckRhdGFSZWNvcmRzOnJlY29yZHMgY29tcGxldGlvbkhhbmRsZXI6
XnsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgLy8gRmlsZSBjYW5ub3QgYmUg
b3BlbmVkIGFmdGVyIGRhdGEgcmVtb3ZhbC4KKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJvcGVuKGZhbHNlKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZXJyb3I6IE5vdEZvdW5k
RXJyb3IgLSBUaGUgb2JqZWN0IGNhbiBub3QgYmUgZm91bmQgaGVyZS4iLCBbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV0pOworCisgICAgLy8gRmV0Y2ggZGF0YSBhZnRlciBkYXRhIGlzIHJlbW92ZWQu
CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAw
dSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworfQorCiAjZW5kaWYgLy8gVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445498</attachid>
            <date>2021-11-30 18:10:23 -0800</date>
            <delta_ts>2021-11-30 21:25:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211130181022.patch</filename>
            <type>text/plain</type>
            <size>64342</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0MDZiNzlhNDdjODA1MGIyM2Q5MDI1
OGU1ZjYwZjgzM2FiMjllZGIuLmE5YzBmN2FiNTY0NTVmNzg2MzZlYzQyNzJlMTQzMDllZDA0Nzk5
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTExLTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW01vZGVsXSBVcGRhdGUgcmVxdWlyZWQgbWFjT1Mg
dmVyc2lvbiBmb3IgY2FtZXJhLCBhbmltYXRpb24gYW5kIGF1ZGlvIEFQSXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
Zjg5ZTlmNTA5NDI0ZTc3M2RmMDg5ODJjODQ5YWIyMDM1Y2ViMDI4Zi4uODM3YjQxMTIwNGYxNjEz
ZjZmNTZiZmM2MzA4MmI1Nzc0MmRlNGY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OCBAQAorMjAy
MS0xMS0zMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBGZXRj
aCBhbmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0ZURhdGFTdG9yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEg
bmV3IFdlYnNpdGVEYXRhVHlwZSB2YWx1ZSBGaWxlU3lzdGVtIGZvciBGaWxlU3lzdGVtQWNjZXNz
IGRhdGEuIE5ldHdvcmsgcHJvY2VzcyBub3cgY2FuIGZldGNoIGFuZCAKKyAgICAgICAgZGVsZXRl
IHRoaXMgdHlwZSBvZiBkYXRhIHdoZW4gZmV0Y2hpbmcgYW5kIGRlbGV0ZWluZyB3ZWJzaXRlIGRh
dGEgKGlmIEZpbGVTeXN0ZW0gdHlwZSBpcyBpbmNsdWRlZCBpbiB0YXJnZXQKKyAgICAgICAgdHlw
ZXMpLgorCisgICAgICAgIFRvIGdldCB0aGUgb3JpZ2lucyB0aGF0IGhhdmUgRmlsZVN5c3RlbSBk
YXRhLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmlsZSBuYW1lZCBvcmlnaW4gaW4gdGhl
IG9yaWdpbiAKKyAgICAgICAgZGlyZWN0b3J5LiBUaGlzIGZpbGUgd2lsbCBiZSBjcmVhdGVkIHdo
ZW4gT3JpZ2luU3RvcmFnZU1hbmFnZXIgaXMgY3JlYXRlZC4KKworICAgICAgICBUbyBkZWxldGUg
ZXhpc3RpbmcgRmlsZVN5c3RlbSBkYXRhLCBuZXR3b3JrIHByb2Nlc3MgZmluZHMgb3JpZ2lucyB0
aGF0IGFyZSByZXF1ZXN0ZWQgdG8gYmUgZGVsZXRlZCBhbmQgaGF2ZSBkYXRhIAorICAgICAgICBv
biBkaXNrLCBjbG9zZXMgYWN0aXZlIGhhbmRsZXMgaGVsZCBvbiB0aGVpciBmaWxlcywgYW5kIGRl
bGV0ZXMgdGhlIGZpbGVzLiBUaGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3ZlIHdpbGwgCisg
ICAgICAgIGJlIGRlbGV0ZWQgaWYgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0IGluIHRoZSBz
YW1lIGRpcmVjdG9yeSwgYW5kIGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVsZXRlZC4KKwor
ICAgICAgICBOZXcgQVBJIHRlc3Q6IEZpbGVTeXN0ZW1BY2Nlc3MuRmV0Y2hBbmREZWxldGVEYXRh
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERh
dGFUeXBlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKFdl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgY29u
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjp+
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om9yaWdpbkRp
cmVjdG9yeVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpvcmlnaW5GaWxlUGF0aCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlT3JpZ2lu
U3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0
YVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpyZWFkT3JpZ2luRnJvbUZpbGUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZvckVhY2hPcmlnaW5EaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZldGNoRGF0YUZyb21EaXNr
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFPbkRpc2sp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFNb2RpZmll
ZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6b3JpZ2luUGF0aCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3Jh
Z2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0
b3JhZ2VCdWNrZXQ6OnR5cGVTdG9yYWdlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tl
dDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y3JlYXRlT3JpZ2luRmlsZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU9y
aWdpbkZpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vzcyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAgICAgICAgKGRh
dGFUeXBlc1RvU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgr
W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGVd
KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmludmFsaWRhdGVBY2Nlc3NIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW46IEFkZGVkLgorCiAyMDIxLTExLTMwICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uIHRvIFJlbW90ZSoqKiBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDY0YmFjNmI2YjcwMDE2MTBiNTNmMmUxZDMwOTI2N2JkNWE0MGY1MzguLjFiNzViZTJhYTFk
OWNmY2I1Yjg5MTQzOTJhY2U0OTllZWExY2U0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01
MTQsNiArNTE0LDQ4IEBAIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBzYWx0OwogfQogCitzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK3sK
KyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXpl
KGhhbmRsZSkudmFsdWVfb3IoMCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgdW5zaWduZWQgYnl0ZXNUb1JlYWQ7CisgICAgaWYgKCFXVEY6OmNv
bnZlcnRTYWZlbHkoc2l6ZSwgYnl0ZXNUb1JlYWQpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CisgICAgdW5z
aWduZWQgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0g
Ynl0ZXNUb1JlYWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
YnVmZmVyOworfQorCit2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgV2FsbFRpbWUgdGltZSkKK3sKKyAgICBhdXRvIGNoaWxkcmVuID0gbGlz
dERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbikg
eworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAgYXV0byBjaGlsZFR5cGUgPSBmaWxl
VHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxkVHlwZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAoKmNoaWxkVHlwZSA9PSBGaWxlVHlwZTo6RGlyZWN0b3J5KSB7
CisgICAgICAgICAgICBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY2hpbGRQYXRoLCB0aW1l
KTsKKyAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNoaWxkUGF0aCk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCgqY2hpbGRUeXBlID09
IEZpbGVUeXBlOjpSZWd1bGFyKTsKKyAgICAgICAgYXV0byB0aW1lID0gRmlsZVN5c3RlbTo6Zmls
ZU1vZGlmaWNhdGlvblRpbWUoY2hpbGRQYXRoKTsKKyAgICAgICAgaWYgKGF1dG8gbW9kaWZpY2F0
aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKGNoaWxkUGF0aCk7IG1v
ZGlmaWNhdGlvblRpbWUgJiYgKm1vZGlmaWNhdGlvblRpbWUgPj0gdGltZSkKKyAgICAgICAgICAg
IGRlbGV0ZUZpbGUoY2hpbGRQYXRoKTsKKyAgICB9Cit9CisKICNpZiBIQVZFKFNURF9GSUxFU1lT
VEVNKSB8fCBIQVZFKFNURF9FWFBFUklNRU5UQUxfRklMRVNZU1RFTSkKIAogYm9vbCBkZWxldGVF
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggOTk2
YmMwYjZmN2RhOGFkZDBhNmU1YjkxN2FjODZjZWM1YWY3MDlhNC4uZmQ4NTNhNDlhYWM4ZGMwMWYz
MTU3MDRjZTQ5ZDczNDY1YWUwNTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTA4LDYgKzEwOCw3
IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUgewogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVs
ZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFs
bEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJpbmcmLCBXYWxsVGltZSk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3Qg
U3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8gRm9sbG93cyBzeW1saW5rcy4KQEAgLTE0
Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogCiB1c2luZyBTYWx0ID0gc3Rk
OjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFNh
bHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUg
cHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4MmFhNWYyMmRkNzIwYzE5MTg0NmE5NDJhMzkxNGNiZmVhYzg2YzdlLi40ZGVmZTRlZGYyY2Zh
ZTdmMjJhYzQ0NmFmOTc2ODZlOTlmOTE4OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTMwOCw2
ICszMDgsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIKIAogICAgIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5CisgICAgV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24KICAgICBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgogCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggYTc4OTdiOTYxYTM5ZGFmOTI3YzU0ZDEyZWZh
M2M4OTcxNDk3YjAyZi4uZGJlZDIzNjIxMTBhNzc5MTNhNTllZWU2MTVlM2RiNGVlY2YyZDc1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAt
MjE5LDYgKzIxOSw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLm1lc3NhZ2VzCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVz
c2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA5M2E2MTQ2ZDZiMTM5Y2I4YTE2YTE3
MWJiNzdkNDRiZDNiNThiNjViLi5jNzg3YTAzZDdjNzdhMDc2OTUyZGRjZDA5Y2UyMGUzYjVkODhk
NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTQ5MCw2ICs0OTAsOSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTQogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDQ1NzQz
ODY1YTRhYzgzMmQzZTVkYmQ0YWZkNDM4YmQ3NTMyY2Q5MjMuLjEwMWNiM2NlNzE0ZTNlZjhkNjRl
NTcwNjRhMjQ1NmEyZGU2N2MyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIy
MCw2ICsyMjAsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1dlYlJUQ1Jlc29sdmVyIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeSBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwKKwlXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgXAogCVdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRlNzY1ZGU0NTA3
MWY0MWYzZmM0ZDQ2OTcwNTM4MTZlMTg5OWViZmEuLjcwYjVhZmRhNTI2ZTk5MDliOTYyZDcxMjEz
ZDg1YjYwYjUzNzE4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC03NCw2ICs3NCw3IEBAIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zLAogI2VuZGlmCisgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6
RmlsZVN5c3RlbSwKICAgICB9KSk7CiAKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCA2NjZiY2MxYjIxYjk1ZDA4OTJiMmYyM2ZkYzEyOWZiYWU2MWZlMzIxLi5iMzcyNTU2MTE5ODdl
ZWUxNThiY2I0MzBlOWY1Y2ZiY2RkNjQ5OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTU1NCw2ICsxNTU0LDEyIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKKworICAgIGlmIChh
dXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRv
ciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUt
PmZldGNoRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVu
dHJpZXMpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNp
dGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoZW50cmllcykpOworICAgICAgICB9
KTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0
ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTYyOCw2ICsxNjM0LDkgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2kKICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0
aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoYXV0
byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3Ig
IT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVs
ZXRlRGF0YU1vZGlmaWVkU2luY2Uod2Vic2l0ZURhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgW2Ns
ZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVu
dHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC0xNzM1LDYgKzE3NDQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwog
ICAgIH0KICNlbmRpZgogCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vy
cy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKQor
ICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRlbGV0ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgb3Jp
Z2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKwogICAgIGlmIChhdXRvKiBuZXR3
b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29y
a0RhdGFGb3I7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQpA
QCAtMTk1OCw2ICsxOTcwLDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzCiAgICAgICAgIH0p
OwogICAgIH0KIAorICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmlu
ZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAg
ICAgICBpdGVyYXRvci0+dmFsdWUtPmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMod2Vi
c2l0ZURhdGFUeXBlcywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3Is
IFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZGVsZXRlZERvbWFpbnMpIG11dGFibGUgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRlbGV0ZWREb21haW5zKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChXVEZNb3ZlKGRvbWFpbikpOwor
ICAgICAgICB9KTsKKyAgICB9CisKICAgICBhdXRvIGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdl
YnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFUeXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlw
ZTo6VUkpOwogICAgIGlmICghZGF0YVR5cGVzRm9yVUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9t
YWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4mKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tBZ2dyZWdhdG9yXSAoY29uc3QgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKQEAgLTIwNzQsNiArMjA5MywxMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwog
ICAgIH0KKworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChz
ZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAg
ICBpdGVyYXRvci0+dmFsdWUtPmZldGNoRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yXShhdXRvIGVudHJpZXMpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoZW50
cmllcykpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElH
RU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKaW5k
ZXggZmI5Mjk4MTQxYjBkYmMzODFmYThiM2IzODE3ZTY4Y2EwMTg5NzlkYS4uNDczMzhlZmU1Mzgy
MmE3NmE1NDg0ZjI5YzkzNTc2NzhmNDAxODg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
LmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUluZm8g
PSBzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVy
LCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+OwogICAgIEV4cGVjdGVkPEFjY2Vzc0hhbmRsZUluZm8s
IEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKICAgICBz
dGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNsb3NlKFdlYkNvcmU6OkZpbGVT
eXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXI+IGFjdGl2ZVN5bmNBY2Nl
c3NIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVN5bmNBY2Nlc3NIYW5kbGU7IH0KIAog
cHJpdmF0ZToKICAgICBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmll
ciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVxdWVzdENyZWF0ZUhhbmRsZShJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELCBUeXBlLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNz
YXJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMzhhYTI2NTVjMzlk
ZGMyMzdiYTVhMzgwYTVkNTQ5MTI0MmMzN2Y1MS4uMjljZmIwYzZiMzczYTI1ZmYwMWNjZTg2MzNj
OTVlNTZiMWFjYjdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTQyLDggKzQzLDcgQEAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjp+RmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogbV9oYW5kbGVzLmtleXMoKSkKLSAgICAgICAgbV9y
ZWdpc3RyeS51bnJlZ2lzdGVySGFuZGxlKGlkZW50aWZpZXIpOworICAgIGNsb3NlKCk7CiB9CiAK
IEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUhhbmRsZShJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
OjpUeXBlIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZO
ZWNlc3NhcnkpCkBAIC0xNDksNCArMTQ5LDI0IEBAIGJvb2wgRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyOjpyZWxlYXNlTG9ja0ZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6Y2xv
c2UoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgZm9yIChhdXRv
JiBbY29ubmVjdGlvbklELCBpZGVudGlmaWVyc10gOiBtX2hhbmRsZXNCeUNvbm5lY3Rpb24pIHsK
KyAgICAgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykgeworICAgICAgICAg
ICAgYXV0byB0YWtlbkhhbmRsZSA9IG1faGFuZGxlcy50YWtlKGlkZW50aWZpZXIpOworICAgICAg
ICAgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVySGFuZGxlKGlkZW50aWZpZXIpOworCisgICAgICAg
ICAgICAvLyBTZW5kIG1lc3NhZ2UgdG8gd2ViIHByb2Nlc3MgdG8gaW52YWxpZGF0ZSBhY3RpdmUg
c3luYyBhY2Nlc3MgaGFuZGxlLgorICAgICAgICAgICAgaWYgKGF1dG8gYWNjZXNzSGFuZGxlSWRl
bnRpZmllciA9IHRha2VuSGFuZGxlLT5hY3RpdmVTeW5jQWNjZXNzSGFuZGxlKCkpCisgICAgICAg
ICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6Oldl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW52YWxpZGF0ZUFjY2Vzc0hhbmRsZSgqYWNj
ZXNzSGFuZGxlSWRlbnRpZmllciksIDApOworICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJU
KG1faGFuZGxlcy5pc0VtcHR5KCkpOworICAgIG1faGFuZGxlc0J5Q29ubmVjdGlvbi5jbGVhcigp
OworICAgIG1fbG9ja01hcC5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAppbmRleCBiODU3Njc2OGIzNTVhY2IzYWEwYzM3MDM4
Y2M1MWVjYzkzMmIzOTZjLi41MzU5ODk1ODEwZDg3NDg1NjA5YTQwY2ZhNTM3MWNjNjllZWIwNjNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oCkBAIC00OSw2ICs0OSw4IEBAIHB1Ymxp
YzoKICAgICBib29sIHJlbGVhc2VMb2NrRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGNs
b3NlKCk7CisKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
UmVnaXN0cnkmIG1fcmVnaXN0cnk7CiAgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBIYXNoU2V0PFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyPj4gbV9oYW5k
bGVzQnlDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCAyOTc4YTI1
ZWYxMjUyNDcyY2NmMmU2ZjFkMzJmNTFiMDUxMDJmMDYyLi41ZDE4MTcyY2I0ZDNlMWZiYzJkMTRl
YWVkMDRmYzVhNzdhMzkxZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMzAs
NyArMzAsMTAgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdpblN0
b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNs
dWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTYsNyArMTE5LDcgQEAg
c3RhdGljIFN0cmluZyBlbmNvZGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbGVTeXN0ZW06OlNh
bHQgc2FsdCkKICAgICByZXR1cm4gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaGFzaC5kYXRhKCks
IGhhc2guc2l6ZSgpKTsKIH0KIAotc3RhdGljIFN0cmluZyBvcmlnaW5QYXRoKGNvbnN0IFN0cmlu
ZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBGaWxlU3lz
dGVtOjpTYWx0IHNhbHQpCitzdGF0aWMgU3RyaW5nIG9yaWdpbkRpcmVjdG9yeVBhdGgoY29uc3Qg
U3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIEZp
bGVTeXN0ZW06OlNhbHQgc2FsdCkKIHsKICAgICBpZiAocm9vdFBhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gcm9vdFBhdGg7CkBAIC0xMjYsMTUgKzEyOSwyOCBAQCBzdGF0aWMgU3RyaW5n
IG9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcgogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKHJvb3RQYXRoLCB7IGVuY29kZWRUb3BPcmlnaW4sIGVuY29kZWRPcGVuaW5nT3JpZ2luIH0p
OwogfQogCitzdGF0aWMgU3RyaW5nIG9yaWdpbkZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGlyZWN0b3J5LCAib3JpZ2luIl9zKTsKK30KKwogT3JpZ2luU3RvcmFnZU1hbmFnZXImIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAogICAgIHJldHVybiAqbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5lbnN1cmUob3Jp
Z2luLCBbJl0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdl
cj4ob3JpZ2luUGF0aChtX3BhdGgsIG9yaWdpbiwgbV9zYWx0KSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihvcmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0
aCwgb3JpZ2luLCBtX3NhbHQpLCBvcmlnaW4pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0K
IAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2Vy
SWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBp
ZiAoYXV0byBpdGVyYXRvciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZmluZChvcmln
aW4pOyBpdGVyYXRvciAhPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7Cisg
ICAgICAgIGlmICghaXRlcmF0b3ItPnZhbHVlLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9s
b2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5yZW1vdmUoaXRlcmF0b3IpOworICAgIH0KK30KKwog
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnBlcnNpc3RlZChjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTMwNSw1
ICszMjEsMTgxIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRIYW5kbGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpGaWxlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoaGFuZGxlLT5nZXRIYW5kbGUoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBXVEZNb3ZlKG5hbWUp
KSk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRl
RGF0YVR5cGUoY29uc3QgU3RyaW5nJiBzdG9yYWdlVHlwZSkKK3sKKyAgICBpZiAoc3RvcmFnZVR5
cGUgPT0gIkZpbGVTeXN0ZW0iKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpGaWxl
U3lzdGVtOworCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiByZWFkT3JpZ2luRnJvbUZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgYXV0byBj
bG9zZUZpbGUgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOworICAgIH0pOworCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHJl
YWRUZXh0ID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoaGFuZGxlKTsKKyAgICBpZiAoIXJl
YWRUZXh0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHsgcmVhZFRleHQtPmRhdGEoKSwgcmVhZFRleHQtPnNpemUo
KSB9KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luOwor
ICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIHJldHVybiBvcmlnaW47Cit9CisKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpPiBhcHBseSkKK3sKKyAgICBmb3IgKGF1dG8mIHRvcE9y
aWdpbiA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKSkgeworICAgICAgICBhdXRv
IHRvcE9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3BhdGgsIHRvcE9yaWdpbik7CisgICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbnMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgIGlmIChv
cGVuaW5nT3JpZ2lucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYXV0byYgb3BlbmluZ09yaWdpbiA6IG9wZW5p
bmdPcmlnaW5zKSB7CisgICAgICAgICAgICBhdXRvIG9wZW5pbmdPcmlnaW5EaXJlY3RvcnkgPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodG9wT3JpZ2luRGlyZWN0b3J5LCBv
cGVuaW5nT3JpZ2luKTsKKyAgICAgICAgICAgIGFwcGx5KG9wZW5pbmdPcmlnaW5EaXJlY3Rvcnkp
OworICAgICAgICB9CisgICAgfQorfQorCitWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmZldGNoRGF0YUZyb21EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHRhcmdldFR5cGVzKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwor
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+PiBvcmlnaW5UeXBlczsKKyAgICBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KFsm
XShhdXRvIGRpcmVjdG9yeSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gb3JpZ2luID0gcmVhZE9y
aWdpbkZyb21GaWxlKG9yaWdpbkZpbGVQYXRoKGRpcmVjdG9yeSkpOworICAgICAgICBpZiAoIW9y
aWdpbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VU
eXBlIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnkpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byB0eXBlID0gdG9XZWJzaXRlRGF0YVR5cGUoc3RvcmFnZVR5cGUpOyB0eXBlICYm
IHRhcmdldFR5cGVzLmNvbnRhaW5zKCp0eXBlKSkKKyAgICAgICAgICAgICAgICBvcmlnaW5UeXBl
cy5hZGQob3JpZ2luLT5jbGllbnRPcmlnaW4sIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHsg
fSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgqdHlwZSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IGVudHJpZXM7CisgICAgZm9yIChhdXRvIFtvcmln
aW4sIHR5cGVzXSA6IG9yaWdpblR5cGVzKSB7CisgICAgICAgIGZvciAoYXV0byB0eXBlIDogdHlw
ZXMpCisgICAgICAgICAgICBlbnRyaWVzLmFwcGVuZCh7IFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9y
aWdpbiwgdHlwZSwgMCB9IH0pOworICAgIH0KKworICAgIHJldHVybiBlbnRyaWVzOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6
RW50cnk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvIGVudHJpZXMgPSBmZXRjaERhdGFGcm9tRGlzayh0eXBlcyk7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVudHJp
ZXMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShlbnRyaWVzKSldKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVudHJpZXMpKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK1ZlY3RvcjxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlRGF0YU9uRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0
eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik+JiBmaWx0ZXIpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBkZWxl
dGVkT3JpZ2luczsKKyAgICBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KFsmXShhdXRvIGRpcmVjdG9y
eSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gb3JpZ2luID0gcmVhZE9yaWdpbkZyb21GaWxlKG9y
aWdpbkZpbGVQYXRoKGRpcmVjdG9yeSkpOworICAgICAgICBpZiAoIW9yaWdpbikgeworICAgICAg
ICAgICAgLy8gSWYgb3JpZ2luIGNhbm5vdCBiZSByZXRyaWV2ZWQsIGJ1dCB3ZSBhcmUgYXNrZWQg
dG8gcmVtb3ZlIGRhdGEgZm9yIGFsbCBvcmlnaW5zLCByZW1vdmUgaXQuCisgICAgICAgICAgICBp
ZiAoZmlsdGVyKFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IH0pKSB7CisgICAgICAgICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGRpcmVjdG9yeSwgbW9kaWZp
ZWRTaW5jZVRpbWUpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWZpbHRlcigqb3JpZ2luKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBkZWxldGVkT3JpZ2lucy5hcHBlbmQoKm9yaWdpbik7CisgICAgICAg
IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoKm9yaWdpbikuZGVsZXRlRGF0YSh0eXBlcywgbW9k
aWZpZWRTaW5jZVRpbWUpOworICAgICAgICByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9z
c2libGUoKm9yaWdpbik7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGRpcmVjdG9yeSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gZGVsZXRlZE9yaWdpbnM7Cit9CisK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IHR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFtX2Nsb3Nl
ZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHR5cGVzLCBvcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbnMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luU2V0Owor
ICAgICAgICBvcmlnaW5TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcmlnaW5zLnNpemUoKSk7
CisgICAgICAgIGZvciAoYXV0byBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICAgICAgb3JpZ2lu
U2V0LmFkZChXVEZNb3ZlKG9yaWdpbikpOworCisgICAgICAgIGRlbGV0ZURhdGFPbkRpc2sodHlw
ZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgWyZvcmlnaW5TZXRdKGF1dG8gb3JpZ2luKSB7Cisg
ICAgICAgICAgICByZXR1cm4gb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbi5jbGllbnRPcmlnaW4p
OworICAgICAgICB9KTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgbW9kaWZpZWRT
aW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CisgICAgICAgIGRlbGV0ZURhdGFPbkRpc2sodHlwZXMsIG1vZGlmaWVkU2lu
Y2VUaW1lLCBbXShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0p
OworCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFp
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIGRvbWFpbnMgPSBj
cm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZGVsZXRlZE9yaWdpbnMg
PSBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFsmZG9tYWlu
c10oYXV0byYgb3JpZ2luKSB7CisgICAgICAgICAgICBhdXRvIGRvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW4uY2xpZW50T3Jp
Z2luLmhvc3QpOworICAgICAgICAgICAgcmV0dXJuIGRvbWFpbnMuY29udGFpbnMoZG9tYWluKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gZGVsZXRlZERvbWFpbnM7CisgICAgICAgIGZvciAoYXV0byBvcmlnaW4gOiBkZWxldGVkT3Jp
Z2lucykgeworICAgICAgICAgICAgYXV0byBkb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0KTsK
KyAgICAgICAgICAgIGRlbGV0ZWREb21haW5zLmFkZChkb21haW4pOworICAgICAgICB9CisKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRlbGV0ZWREb21haW5zKSld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFp
bnMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNWJjNTZiN2M2NDZjNmIxZmQ3YWQ2NGRkNDg3
ZWRmNWRlYTYzOTM0YS4uNWY2NGJhOTZjODhkMTUxMzNiZjhiZjY5MGU4YzljNThlYzc2NDQ0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaCIKICNpbmNs
dWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBTaGFyZWRG
aWxlSGFuZGxlOwpAQCAtNTUsMTMgKzU3LDIzIEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIHZvaWQgY2xv
c2UoKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4m
Jik7CisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIH5OZXR3b3JrU3RvcmFnZU1hbmFnZXIo
KTsKICAgICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICB2b2lkIHJlbW92ZU9yaWdpblN0b3Jh
Z2VNYW5hZ2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICBG
aWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBmaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJl
Z2lzdHJ5KCk7CiAKKyAgICB2b2lkIGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk+KTsKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVu
dHJ5PiBmZXRjaERhdGFGcm9tRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CisgICAg
VmVjdG9yPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlRGF0YU9uRGlzayhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik+Jik7CisgICAgCisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciAoaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5jcHAKaW5kZXggNGYwNmY0NTI0NjU2NDZkMjAxMWJjN2Y1M2JiZGIyODExNTkzYWE0
My4uNGQxYTZkYTFhYTgyNzk2ZGVhNzZkNTM0ZDk3ZjgzNTVlODc4OWJkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3Rv
cmFnZU1hbmFnZXIuY3BwCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTUxLDI5ICs1NCw5OCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci0+Y29ubmVjdGlvbkNsb3NlZChjb25u
ZWN0aW9uKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdHlwZVN0b3JhZ2VQYXRoKGNvbnN0IFN0cmlu
ZyYgc3RvcmFnZUlkZW50aWZpZXIpIGNvbnN0CisgICAgZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6
IHVpbnQ4X3QgeworICAgICAgICBGaWxlU3lzdGVtLAorICAgIH07CisKKyAgICBTdHJpbmcgdHlw
ZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlIHR5cGUpIGNvbnN0CiAgICAgeworICAgICAgICBTdHJp
bmcgc3RvcmFnZUlkZW50aWZpZXI7CisgICAgICAgIGlmICh0eXBlID09IFN0b3JhZ2VUeXBlOjpG
aWxlU3lzdGVtKQorICAgICAgICAgICAgc3RvcmFnZUlkZW50aWZpZXIgPSAiRmlsZVN5c3RlbSI7
CisKICAgICAgICAgcmV0dXJuIG1fcm9vdFBhdGguaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBzdG9yYWdl
SWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgcmVn
aXN0cnkpCiAgICAgewogICAgICAgICBpZiAoIW1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKQot
ICAgICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPEZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlcj4odHlwZVN0b3JhZ2VQYXRoKCJGaWxlU3lzdGVtIiksIHJlZ2lz
dHJ5KTsKKyAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbWFrZVVuaXF1
ZTxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+KHR5cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZTo6
RmlsZVN5c3RlbSksIHJlZ2lzdHJ5KTsKIAogICAgICAgICByZXR1cm4gKm1fZmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOwogICAgIH0KIAorICAgIGJvb2wgaXNBY3RpdmUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CisgICAgfQorCisgICAgdm9p
ZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQorICAgICAgICAgICAgZGVsZXRlRmlsZVN5c3RlbVN0
b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVOb25FbXB0eURpcmVjdG9yeShtX3Jvb3RQYXRoKTsKKyAgICB9CisKIHByaXZhdGU6CisgICAg
dm9pZCBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRp
bWUpCisgICAgeworICAgICAgICBpZiAobV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIpCisgICAg
ICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9IG51bGxwdHI7CisKKyAgICAgICAg
YXV0byBmaWxlU3lzdGVtU3RvcmFnZVBhdGggPSB0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6
OkZpbGVTeXN0ZW0pOworICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUgPiAtV2FsbFRpbWU6
OmluZmluaXR5KCkpIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9k
aWZpZWRTaW5jZShmaWxlU3lzdGVtU3RvcmFnZVBhdGgsIG1vZGlmaWVkU2luY2VUaW1lKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGZpbGVTeXN0ZW1TdG9yYWdlUGF0aCk7CisgICAgfQorCiAgICAg
U3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBTdG9yYWdl
QnVja2V0TW9kZSBtX21vZGUgeyBTdG9yYWdlQnVja2V0TW9kZTo6QmVzdEVmZm9ydCB9OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+IG1fZmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOwogfTsKIAotT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VN
YW5hZ2VyKFN0cmluZyYmIHBhdGgpCit2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVP
cmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4p
Cit7CisgICAgYXV0byBvcmlnaW5GaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX3BhdGgsICJvcmlnaW4iKTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhvcmlnaW5GaWxlUGF0aCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG9yaWdpbkZpbGVQYXRo
KSk7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShvcmlnaW5GaWxlUGF0
aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIGF1dG8gY2xvc2VG
aWxlID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKKyAgICB9KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZCho
YW5kbGUpKSB7CisgICAgICAgIExPR19FUlJPUigiT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOiBGYWlsZWQgdG8gb3BlbiBvcmlnaW4gZmlsZSIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwor
ICAgIGVuY29kZXIgPDwgb3JpZ2luOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRs
ZSwgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworfQorCit2b2lkIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKQoreworICAg
IGF1dG8gY2hpbGRyZW4gPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCk7CisgICAg
aWYgKGNoaWxkcmVuLnNpemUoKSAhPSAxIHx8IGNoaWxkcmVuLmZpcnN0KCkgIT0gIm9yaWdpbiIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gb3JpZ2luRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCAib3JpZ2luIik7CisgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShvcmlnaW5GaWxlUGF0aCk7Cit9CisKK09yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbikKICAgICA6IG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogeworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vz
c2FyeShvcmlnaW4pOwogfQogCiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6fk9yaWdpblN0b3JhZ2VN
YW5hZ2VyKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDUgKzE3NSwxOCBAQCBGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIo
RmlsZVN5cwogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuZmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyKHJlZ2lzdHJ5KTsKIH0KIAorYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUo
KQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKK30KKwordm9pZCBP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBkZWZhdWx0QnVja2V0KCku
ZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZSk7CisKKyAgICBkZWxldGVPcmlnaW5GaWxl
SWZOZWNlc3NhcnkoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSht
X3BhdGgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIu
aAppbmRleCBhNGMxMWFkNjVhNWMxOTcwM2E3YzBlOTI5NGJjMmZlYWFhMmZmZTJlLi44ZTUzNjBl
YmQ5MmFhMzVmM2ZmNjRmODQyNmE2OTZhMjVhZDA5MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIu
aApAQCAtMjgsMjcgKzI4LDM3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeTsKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjsKK2Vu
dW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiAKIGNsYXNzIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoKTsKKyAgICBleHBsaWNp
dCBPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mKTsKICAgICB+T3JpZ2luU3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY29u
bmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIHBlcnNp
c3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9CiAgICAgdm9pZCBwZXJzaXN0KCk7
CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIo
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOworICAgIGJvb2wgaXNBY3RpdmUoKTsK
KyAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1l
KTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3JhZ2VCdWNrZXRNb2RlIDogYm9vbDsK
ICAgICBjbGFzcyBTdG9yYWdlQnVja2V0OwogICAgIFN0b3JhZ2VCdWNrZXQmIGRlZmF1bHRCdWNr
ZXQoKTsKIAorICAgIHZvaWQgY3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYpOworICAgIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5
KCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4gbV9kZWZhdWx0QnVja2V0
OwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX3BlcnNpc3RlZCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKaW5k
ZXggZjM3MjkwMTM4YjRmYWZmMzIzNTNiMmFjZGFkZTgzNDAwZGE5Y2M4YS4uZjliMmZlMDQwOWRj
NDMwYjFkM2QzYWViMDBlNzZiMDBiM2YwNTZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApAQCAtMTI5LDYgKzEyOSw4IEBAIFdlYnNp
dGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2VzcyhXZWJzaXRlRGF0YVR5
cGUgZGF0YVR5cGUpCiAgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2Vydmlj
ZXM6CiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOwogI2Vu
ZGlmCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW06CisgICAgICAgIHJldHVy
biBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCmluZGV4IDdhOWU1MDBmZTFiMDllMzg5NWRkNzQzZTE2
NWM5ODkxOGJlN2E4ZGIuLmU0NTlhMDkwMzhhNDhhMTk4NmQ2ZDMzOTY2NDMzMjgzMzc1YTQ1NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
VHlwZS5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWlu
dDMyX3QgewogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAgQWx0
ZXJuYXRpdmVTZXJ2aWNlcyA9IDEgPDwgMTgsCiAjZW5kaWYKKyAgICBGaWxlU3lzdGVtID0gMSA8
PCAxOSwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtNzksMTAgKzgwLDExIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHsKICNl
bmRpZgogICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsCiAgICAgICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0LAotICAgICAgICBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzCisgICAgICAgIFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMsCiAjaWYgSEFW
RShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICAgICAgLCBXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcworICAgICAgICBXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcywKICNlbmRpZgorICAgICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbQogICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCmlu
ZGV4IGM4MjYxNmY3OTBjNmZjNjkwYTZjYmQ2OTdhMGU4ZWNkYTUyMjdmYjEuLmZhMTExM2U0N2My
YTQ0NDE0YmQyYWRkMTkyZDAyZTc1MDdmMzI1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCkBAIC01MSw2
ICs1MSw3IEBAIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMg
PSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dl
YnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUFk
Q2xpY2tBdHRyaWJ1dGlvbnMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVy
bmF0aXZlU2VydmljZXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMi
OworTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtID0gQCJfV0tX
ZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtIjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIE5TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vic2l0ZURhdGFU
eXBlUGx1Z0luRGF0YSI7CkBAIC0xMTAsNiArMTExLDggQEAgc3RhdGljIE5TU3RyaW5nICpkYXRh
VHlwZXNUb1N0cmluZyhOU1NldCAqZGF0YVR5cGVzKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OkAiUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHMiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBjb250
YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSkKICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpAIkFsdGVybmF0aXZlIFNlcnZpY2VzIl07CisgICAgaWYgKFtk
YXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV0pCisg
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJGaWxlIFN5c3RlbSJdOwogCiAgICAgcmV0dXJuIFth
cnJheSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJdOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oCmluZGV4IGRiYzVmM2Y3YTFmZjRmYjc0OWFhZmQ3MGU1NzBiYTA0ODU2OGFj
ZDYuLjkxNDQ4ZWUxZDU1MWRlNDIwNjU4NjdiODE1ZGJkZjFkZWZhNzVjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZEludGVybmFsLmgKQEAgLTc3LDYgKzc3LDggQEAgc3RhdGljIGlubGluZSBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndl
YnNpdGUKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0
ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0
YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXM7CiAjZW5kaWYKKyAgICBpZiAoW3dlYnNpdGVEYXRh
VHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV0pCisgICAg
ICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW07CiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIApAQCAtMTM0LDYgKzEzNiw4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRy
PE5TU2V0PiB0b1dLV2Vic2l0ZURhdGFUeXBlcyhPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRl
cm5hdGl2ZVNlcnZpY2VzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6
X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc107CiAjZW5kaWYKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQor
ICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVG
aWxlU3lzdGVtXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkUHJpdmF0ZS5oCmluZGV4IGQ2MDdkZmUxM2Y2MTJiNTgyMjBlNWEzNTI1Nzc0NzA1
MzFlZTQ5MDcuLjJjZjlhNGQyYTBjN2ZjZTI1YjY1MDZhYzE3YmQ3MTExN2M5NzUxZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdLX0VYVEVSTiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVB
ZENsaWNrQXR0cmlidXRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMu
MCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5h
dGl2ZVNlcnZpY2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CitX
S19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNp
ZiAhVEFSR0VUX09TX0lQSE9ORQogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlUGx1Z0luRGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQppbmRleCBlMmIwNzM2NDY0YjE2NmRkOTIwY2YzNTUxNzFmYjNhNTYzNzBhMzg0Li43
ZWYwNjk1MGFiMDdkM2UxYTc2MTZjYmNiNThiZDI1Nzg1MzU5ZWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
QEAgLTI0OCw3ICsyNDgsOCBAQCArIChOU1NldDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0
YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHMsCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRp
b25zLAogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRzLAotICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcwor
ICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcywKKyAgICAg
ICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0KICNpZiAhVEFSR0VUX09TX0lQSE9O
RQogICAgICAgICAgICAgLCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc0
MDY5ZTljOTA0ZWEyZmYzZDRhZThhNjY3OTdiZjE3MmNiYWE0NzMuLjU0MTExNzQ5NWViOTIxM2Ni
ZjNkNThjZWE1MDBiY2IzNzZhODM1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ5NSw2ICsxNDk1LDkgQEAKIAkJOTNENkI3QjUy
NTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1
MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87
IH07CiAJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRF
RDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRTc5OTg1Mjc1NkZBNTUwMDc0MDA4
QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNzk5ODIyNzU2
RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CisJCTkzRTc5OTg3Mjc1NkZBQjQwMDc0MDA4QSAvKiBXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgzMjc1NkZBNTQwMDc0MDA4QSAvKiBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKKwkJ
OTNFNzk5ODgyNzU2RkFDMjAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0U3OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25h
cHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTk1MEYyODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEYyODdFMjUyNDE0
RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTU2NTA4Mzky
NkQ4N0EyQjAwRTE1Q0I3IC8qIEFwcGxlTWVkaWFTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU2NTA4MzcyNkQ4N0EyQjAwRTE1Q0I3
IC8qIEFwcGxlTWVkaWFTZXJ2aWNlc1NQSS5oICovOyB9OwpAQCAtNTI4NCw2ICs1Mjg3LDEwIEBA
CiAJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVz
dWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5N0UyNzU2RjY3MDAwNzQwMDhB
IC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTc5OTgxMjc1NkZBNTMwMDc0MDA4QSAv
KiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk4MjI3NTZGQTU0MDA3NDAw
OEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzRTc5OTgzMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1
NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0UyNTI0MTRFOTAwQjc0
RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9XS01vdXNlRGV2aWNl
T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4ODAsOSArOTg4Nyw5
IEBACiAJCTVDMTU3QTBBMjcxN0M5RjEwMEVENTI4MCAvKiB3ZWJwdXNoZCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUNCQjZENEQyNzFGNjdDQzAwRkQx
QTVEIC8qIGNvbS5hcHBsZS53ZWJraXQud2VicHVzaGQucGxpc3QgKi8sCiAJCQkJNTE2MEU5NTQy
NzRCODg3MTAwNTY3Mzg4IC8qIEFwcEJ1bmRsZVJlcXVlc3QuaCAqLywKIAkJCQk1MTYwRTk1MzI3
NEI4ODcxMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5tbSAqLywKKwkJCQk1Q0JCNkQ0RDI3
MUY2N0NDMDBGRDFBNUQgLyogY29tLmFwcGxlLndlYmtpdC53ZWJwdXNoZC5wbGlzdCAqLywKIAkJ
CQk1MUY3QkI3NTI3NDQ5OEJCMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCAq
LywKIAkJCQk1MUY3QkI3NDI3NDQ5OEJBMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3Rp
bmcubW0gKi8sCiAJCQkJNTE2MEU5NUMyNzRDMkEwMzAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVS
ZWdpc3RyeS5oICovLApAQCAtMTA1NjAsNiArMTA1NjcsNyBAQAogCQkJCUJDMDMyRDY4MTBGNDM3
OEQwMDU4QzE1QSAvKiBXZWJFZGl0b3JDbGllbnQuaCAqLywKIAkJCQk5MzU0MjQyQjI3MDNCRENC
MDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk5
MzU0MjQyQTI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
LmggKi8sCisJCQkJOTNFNzk5N0UyNzU2RjY3MDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUE1ODExMkY0RkJCMDAzMzdC
QUIgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDZBMTBGNDM3OEQw
MDU4QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5oICovLAogCQkJCUJDMUJFMURGMTJENTRB
NDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgKi8sCkBAIC0xMjAzMSw2ICsx
MjAzOSw5IEBACiAJCQkJRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovLAogCQkJCUUzODY2QjA0MjM5OTk3OUMw
MEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLAogCQkJCUUzODY2QjA1MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTkzRTc5
OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTkzRTc5OTgxMjc1NkZBNTMwMDc0MDA4QSAvKiBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovLAorCQkJCTkzRTc5OTgzMjc1
NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1Jl
cGxpZXMuaCAqLywKIAkJCQlDRDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUNENzNCQTQ5MTMxQUNEOEUwMEVF
REVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJQ0Q3M0JBNDUx
MzFBQ0M4ODAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLApAQCAtMTI0MzUsMTMgKzEyNDQ2LDEzIEBACiAJCQlpc2EgPSBQQlhIZWFkZXJz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQk1MTYwRTk1NjI3NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNUMxNTc5RkMyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFGN0JCNzcyNzQ0OThCQjAwQzQ1QTcyIC8qIE1v
Y2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTYwRTk1RTI3NEMy
QTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTYwRTk1OTI3NEMwRDg5MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGN0JCN0IyNzQ0QzUwNzAwQzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTYwRTk1RTI3NEMyQTAzMDA1NjczODggLyogTW9ja0Fw
cEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzE1NzlGQzI3MTdBRjUwMDBF
RDUyODAgLyogRGFlbW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTYwRTk1NjI3
NEI4ODcyMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFkZXJzICov
LAotCQkJCTUxRjdCQjc3Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMzI3OCw2ICsxMzI4OSw4IEBACiAJCQkJQkMwMzJEQkIx
MEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxMTFCNUQxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM1NDI0MkMyNzAzQkRDQjAwNUNBNzJDIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFNzk5ODgyNzU2RkFDMjAwNzQw
MDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFF
RTEyNjRGRDUwMDAzRTQ0RDQgLyogV2ViRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRTQ2OTU0MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0U0Njk1NjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTE0OTc1LDE2ICsxNDk4OCwxNiBAQAogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNTE2MEU5NTUyNzRCODg3MjAwNTY3Mzg4IC8qIEFwcEJ1
bmRsZVJlcXVlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1N0EwMTI3MTdCN0ZCMDBFRDUy
ODAgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGN0JCN0QyNzQ1
NjQwNDAwQzQ1QTcyIC8qIENvZGVTaWduaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5
RkYyNzE3QjZEMjAwRUQ1MjgwIC8qIERhZW1vbkRlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNUMxNTc5RkUyNzE3QjZDMTAwRUQ1MjgwIC8qIERhZW1vbkVuY29kZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUMxNTc5RkIyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxRjdCQjc2Mjc0NDk4QkIwMEM0NUE3MiAvKiBNb2NrQXBw
QnVuZGxlRm9yVGVzdGluZy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxNjBFOTU1Mjc0Qjg4NzIw
MDU2NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE2MEU5
NUEyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MTYwRTk2MDI3NEMyQTQwMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTE2MEU5NUEyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5k
bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUY3QkI3QzI3NDRDNTA3MDBDNDVBNzIgLyogUHVz
aENsaWVudENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQk1QzE1NzlGRTI3MTdCNkMx
MDBFRDUyODAgLyogRGFlbW9uRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1QzE1NzlG
QjI3MTdBRjUwMDBFRDUyODAgLyogRGFlbW9uVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTEyQ0Q2QTAyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1QzE1N0EwQzI3MTdDQTFEMDBFRDUyODAgLyogV2ViUHVzaERhZW1vbk1haW4u
bW0gaW4gU291cmNlcyAqLywKIAkJCSk7CkBAIC0xNTM3Miw2ICsxNTM4NSw3IEBACiAJCQkJRTM4
NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzODY2QjA5MjM5OUEyRDUwMEY4OEZFOSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODkyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYkV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzRTc5OTg1Mjc1NkZBNTUwMDc0MDA4QSAvKiBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0Q3M0JBNEUxMzFBQ0RCNzAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTQ3MTMxQUND
OUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MDYxMTJENkJBOTEwMDEyQTcyQSAvKiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRk
MDBhNDhiLi45NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0NDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJXZWJDYWNo
ZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdl
cy5oIgpAQCAtMTE5LDYgKzEyMSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAg
ICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBVU0UoTElCV0VCUlRD
KQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
UlRDTW9uaXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDBlZjQxOWYyZDcxMjgzYWI2N2Mz
NjUxODMzNTZkY2VmYzc5NDQ4NjIuLjhjY2NmMmI1MGUzZmY4ZDc3ZmI4NGE3OGYzNDgyMjEwOWQw
YmNhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCkBAIC0xOTMsNCArMTkzLDkgQEAgdm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b246Om1vdmUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWQKICAgICB9KTsK
IH0KIAordm9pZCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmludmFsaWRhdGVBY2Nl
c3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit7CisgICAgLy8gVE9ETzogaW52YWxpZGF0ZSBGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggZWU1YzZmZTE5Yzc4MDJkYTJhN2VhMTU0
MzYxNjA1MTdkNmNkNWMyYi4uZjUxYzFhMjgwOTE4NjNlMjdjNDgxNDg2NTE4ZTNmYWRhZmM3MTNj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAt
NjcsNiArNjcsNyBAQCBjbGFzcyBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6RmlsZVN5c3RlbVN0b3JhZ2VDbwogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0
aW9uJik7CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
Jik7CkBAIC04Niw2ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVTeW5jQWNjZXNz
SGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBXZWJDb3JlOjpGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkdldEFjY2Vzc0hhbmRsZUNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgY2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6Rmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAKKyAgICB2
b2lkIGludmFsaWRhdGVBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NI
YW5kbGVJZGVudGlmaWVyKTsKKwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZWNkY2Y3ZDlkNTE1N2NmODNiYmIy
NDMzNDBlYWU4ZjM1N2NiNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworbWVzc2FnZXMgLT4gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIE5vdFJl
ZkNvdW50ZWQgeworICAgIEludmFsaWRhdGVBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmQ3MTJhMTU2ZGM1YmE0MTA2
MWQzYzNhZTM3OTQzNDBlMDc3NzQ0YS4uYWMxNmJmZWQ2ZDgzZjY0NTYwOTFhOTFkYzAzNzQwMTc3
OTgzMjQzNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTExLTMwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCByZW1vdmUgZmlsZSBzeXN0ZW0gZGF0YSB2aWEg
V0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFj
Y2Vzcy5tbToKKworMjAyMS0xMS0zMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBGZXRjaCBhbmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0
ZURhdGFTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW06
CisKIDIwMjEtMTEtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ29ycmVjdCBzZXJpYWxpemF0aW9uIGVycm9yIGluIF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3RJY29uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0ZpbGVTeXN0ZW1BY2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0KaW5kZXggNTJhYjljZTI4Yjc1NjBkYTkwZWExM2U4OTI4
OGQxNzI5YTQxMGViZS4uZDk5MWMyZDZiZWU0NzE4ZjBiZmM2MzI3NDQ2MmJlZGY3N2U4Nzk2OCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lz
dGVtQWNjZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RmlsZVN5c3RlbUFjY2Vzcy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dL
UHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KIAogQGludGVyZmFjZSBG
aWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4KIEBlbmQKQEAgLTE5Niw0ICsxOTcsNzMgQEAgVEVTVChGaWxlU3lzdGVtQWNjZXNz
LCBNaWdyYXRlVG9OZXdTdG9yYWdlRGlyZWN0b3J5KQogICAgIEVYUEVDVF9XS19TVFJFUShAImZp
bGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIH0KIAorc3RhdGljIE5T
U3RyaW5nICp0ZXN0U3RyaW5nID0gQCI8c2NyaXB0PiBcCisgICAgYXN5bmMgZnVuY3Rpb24gb3Bl
bihzaG91bGRDcmVhdGVGaWxlKSBcCisgICAgeyBcCisgICAgICAgIHRyeSB7IFwKKyAgICAgICAg
ICAgIHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9yLnN0b3JhZ2UuZ2V0RGlyZWN0b3J5
KCk7IFwKKyAgICAgICAgICAgIHZhciBmaWxlSGFuZGxlID0gYXdhaXQgcm9vdEhhbmRsZS5nZXRG
aWxlSGFuZGxlKCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0JywgeyAnY3JlYXRlJyA6IHNob3VsZENy
ZWF0ZUZpbGUgfSk7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdmaWxlIGlzIG9wZW5lZCcpOyBcCisgICAgICAgIH0g
Y2F0Y2goZXJyKSB7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlcnJvcjogJyArIGVyci5uYW1lICsgJyAtICcgKyBl
cnIubWVzc2FnZSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgb3Blbih0cnVlKTsgXAor
ICAgIDwvc2NyaXB0PiI7CisKK1RFU1QoRmlsZVN5c3RlbUFjY2VzcywgRmV0Y2hBbmREZWxldGVE
YXRhKQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tGaWxlU3lzdGVtQWNjZXNzTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0
b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV07CisKKyAgICAvLyBSZW1vdmUg
ZXhpc3RpbmcgZGF0YS4KKyAgICBOU1NldCAqdHlwZXMgPSBbTlNTZXQgc2V0V2l0aE9iamVjdDpf
V0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlm
aWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAg
ICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCA9
IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZRVM7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwg
W2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIC8vIEZldGNoIGRhdGEgYWZ0ZXIgZmls
ZSBpcyBjcmVhdGVkLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSBm
ZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8
V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEocmVj
b3Jkcy5jb3VudCwgMXUpOworICAgICAgICBhdXRvIHJlY29yZCA9IFtyZWNvcmRzIG9iamVjdEF0
SW5kZXg6MF07CisgICAgICAgIEVYUEVDVF9TVFJFUSgid2Via2l0Lm9yZyIsIFtyZWNvcmQuZGlz
cGxheU5hbWUgVVRGOFN0cmluZ10pOworCisgICAgICAgIC8vIFJlbW92ZSBkYXRhLgorICAgICAg
ICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcyBmb3JEYXRhUmVjb3Jk
czpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIC8vIEZpbGUgY2Fubm90IGJlIG9wZW5lZCBhZnRlciBkYXRhIHJlbW92YWwuCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAib3BlbihmYWxzZSkiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlw
dE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVD
VF9XS19TVFJFUShAImVycm9yOiBOb3RGb3VuZEVycm9yIC0gVGhlIG9iamVjdCBjYW4gbm90IGJl
IGZvdW5kIGhlcmUuIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIC8vIEZldGNo
IGRhdGEgYWZ0ZXIgZGF0YSBpcyByZW1vdmVkLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
c2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAg
ICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445518</attachid>
            <date>2021-11-30 21:26:00 -0800</date>
            <delta_ts>2021-12-02 00:32:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211130212559.patch</filename>
            <type>text/plain</type>
            <size>61606</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZjMzVhZjZlYjBlMThlY2Y0YmQ2YzI2
N2Y0MTY0NTA3ZjljY2EzZGYuLjNmMDk0ZTE0MmY2ZGVhOWNhN2MzZDhmZmU1ZTg1NTliNWM2YmI4
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTExLTMwICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG1vbWVudHVtIGV2ZW50IHN5bnRo
ZXNpemVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDA5ZjlkYTYxOTM4MDgzNzVjYTBhNDNiNmJhNTA1M2NjNDlkNDRh
ODYuLmJhMGZjNjUzYTE1MzkyZmM1ZDY4YTgyZTNiYmMxY2EwN2ZjMGJmMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsODggQEAKKzIwMjEtMTEtMzAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRhIHZpYSBXS1dl
YnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBXZWJzaXRlRGF0YVR5cGUgdmFsdWUgRmlsZVN5c3RlbSBm
b3IgRmlsZVN5c3RlbUFjY2VzcyBkYXRhLiBOZXR3b3JrIHByb2Nlc3Mgbm93IGNhbiBmZXRjaCBh
bmQgCisgICAgICAgIGRlbGV0ZSB0aGlzIHR5cGUgb2YgZGF0YSB3aGVuIGZldGNoaW5nIGFuZCBk
ZWxldGVpbmcgd2Vic2l0ZSBkYXRhIChpZiBGaWxlU3lzdGVtIHR5cGUgaXMgaW5jbHVkZWQgaW4g
dGFyZ2V0CisgICAgICAgIHR5cGVzKS4KKworICAgICAgICBUbyBnZXQgdGhlIG9yaWdpbnMgdGhh
dCBoYXZlIEZpbGVTeXN0ZW0gZGF0YSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZpbGUg
bmFtZWQgb3JpZ2luIGluIHRoZSBvcmlnaW4gCisgICAgICAgIGRpcmVjdG9yeS4gVGhpcyBmaWxl
IHdpbGwgYmUgY3JlYXRlZCB3aGVuIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQuCisK
KyAgICAgICAgVG8gZGVsZXRlIGV4aXN0aW5nIEZpbGVTeXN0ZW0gZGF0YSwgbmV0d29yayBwcm9j
ZXNzIGZpbmRzIG9yaWdpbnMgdGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlIGRlbGV0ZWQgYW5kIGhh
dmUgZGF0YSAKKyAgICAgICAgb24gZGlzaywgY2xvc2VzIGFjdGl2ZSBoYW5kbGVzIGhlbGQgb24g
dGhlaXIgZmlsZXMsIGFuZCBkZWxldGVzIHRoZSBmaWxlcy4gVGhlIG9yaWdpbiBmaWxlIG1lbnRp
b25lZCBhYm92ZSB3aWxsIAorICAgICAgICBiZSBkZWxldGVkIGlmIHRoZXJlIGlzIG5vIG90aGVy
IGZpbGUgbGVmdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIGFuZCBlbXB0eSBkaXJlY3RvcmllcyB3
aWxsIGJlIGRlbGV0ZWQuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBGaWxlU3lzdGVtQWNjZXNz
LkZldGNoQW5kRGVsZXRlRGF0YQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlLmg6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjphY3RpdmVT
eW5jQWNjZXNzSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcjo6fkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6Y2xvc2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6b3JpZ2lu
RmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6cmVhZE9yaWdpbkZy
b21GaWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNo
T3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpmZXRjaERhdGFGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVEYXRhT25EaXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6Om9yaWdpblBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojp0eXBlU3RvcmFnZVBhdGggY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6Zmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRmlsZVN5c3Rl
bVN0b3JhZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
Ojpvd25lclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFU
eXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3Jk
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlw
ZXNJbmNsdWRpbmdQcml2YXRlXSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjppbnZhbGlkYXRlQWNjZXNzSGFuZGxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAyMS0xMS0zMCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBt
b21lbnR1bSBldmVudCBzeW50aGVzaXplcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCA2NGJhYzZi
NmI3MDAxNjEwYjUzZjJlMWQzMDkyNjdiZDVhNDBmNTM4Li4xYjc1YmUyYWExZDljZmNiNWI4OTE0
MzkyYWNlNDk5ZWVhMWNlNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNTE0LDYgKzUxNCw0
OCBAQCBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICByZXR1cm4gc2FsdDsKIH0KIAorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYgKCFG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShoYW5kbGUpLnZh
bHVlX29yKDApOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHVuc2lnbmVkIGJ5dGVzVG9SZWFkOworICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5
KHNpemUsIGJ5dGVzVG9SZWFkKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOworICAgIHVuc2lnbmVkIHRvdGFs
Qnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGhhbmRsZSwgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFk
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30K
Kwordm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnksIFdhbGxUaW1lIHRpbWUpCit7CisgICAgYXV0byBjaGlsZHJlbiA9IGxpc3REaXJlY3Rvcnko
ZGlyZWN0b3J5KTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKKyAgICAgICAg
YXV0byBjaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGly
ZWN0b3J5LCBjaGlsZCk7CisgICAgICAgIGF1dG8gY2hpbGRUeXBlID0gZmlsZVR5cGUoY2hpbGRQ
YXRoKTsKKyAgICAgICAgaWYgKCFjaGlsZFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKCpjaGlsZFR5cGUgPT0gRmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAgICAg
ICAgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNoaWxkUGF0aCwgdGltZSk7CisgICAgICAg
ICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShjaGlsZFBhdGgpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoKmNoaWxkVHlwZSA9PSBGaWxlVHlwZTo6
UmVndWxhcik7CisgICAgICAgIGF1dG8gdGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRp
b25UaW1lKGNoaWxkUGF0aCk7CisgICAgICAgIGlmIChhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBG
aWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShjaGlsZFBhdGgpOyBtb2RpZmljYXRpb25U
aW1lICYmICptb2RpZmljYXRpb25UaW1lID49IHRpbWUpCisgICAgICAgICAgICBkZWxldGVGaWxl
KGNoaWxkUGF0aCk7CisgICAgfQorfQorCiAjaWYgSEFWRShTVERfRklMRVNZU1RFTSkgfHwgSEFW
RShTVERfRVhQRVJJTUVOVEFMX0ZJTEVTWVNURU0pCiAKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDk5NmJjMGI2ZjdkYThh
ZGQwYTZlNWI5MTdhYzg2Y2VjNWFmNzA5YTQuLmZkODUzYTQ5YWFjOGRjMDFmMzE1NzA0Y2U0OWQ3
MzQ2NWFlMDU2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBlbnVtIGNs
YXNzIE1hcHBlZEZpbGVNb2RlIHsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZmlsZUV4aXN0
cyhjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUZpbGUoY29u
c3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVBbGxGaWxlc01vZGlm
aWVkU2luY2UoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3
UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNp
emUoY29uc3QgU3RyaW5nJik7IC8vIEZvbGxvd3Mgc3ltbGlua3MuCkBAIC0xNDYsNiArMTQ3LDcg
QEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAogdXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8dWlu
dDhfdCwgOD47CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JN
YWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUp
OwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdp
dGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBvcGVuVGVt
cG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiwgY29u
c3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggODJhYTVmMjJk
ZDcyMGMxOTE4NDZhOTQyYTM5MTRjYmZlYWM4NmM3ZS4uNGRlZmU0ZWRmMmNmYWU3ZjIyYWM0NDZh
Zjk3Njg2ZTk5ZjkxODk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0zMDgsNiArMzA4LDcgQEAg
c2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyCiAKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeQorICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KIAogICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CmluZGV4IGE3ODk3Yjk2MWEzOWRhZjkyN2M1NGQxMmVmYTNjODk3MTQ5N2Iw
MmYuLmRiZWQyMzYyMTEwYTc3OTEzYTU5ZWVlNjE1ZTNkYjRlZWNmMmQ3NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIxOSw2ICsyMTks
NyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcwogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOTNhNjE0NmQ2YjEzOWNiOGExNmExNzFiYjc3ZDQ0YmQz
YjU4YjY1Yi4uYzc4N2EwM2Q3Yzc3YTA3Njk1MmRkY2QwOWNlMjBlM2I1ZDg4ZDYwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC00OTAs
NiArNDkwLDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck0KICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1l
c3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25N
ZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRnVsbFNjcmVlbk1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXNS
ZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0NTc0Mzg2NWE0YWM4MzJk
M2U1ZGJkNGFmZDQzOGJkNzUzMmNkOTIzLi4xMDFjYjNjZTcxNGUzZWY4ZDY0ZTU3MDY0YTI0NTZh
MmRlNjdjMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjAsNiArMjIwLDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJS
VENSZXNvbHZlciBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkgXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlciBcCisJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKIAlXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkZTc2NWRlNDUwNzFmNDFmM2ZjNGQ0
Njk3MDUzODE2ZTE4OTllYmZhLi43MGI1YWZkYTUyNmU5OTA5Yjk2MmQ3MTIxM2Q4NWI2MGI1Mzcx
ODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtNzQsNiArNzQsNyBAQCBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiYgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9ucywKICNlbmRpZgorICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0s
CiAgICAgfSkpOwogCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNjY2YmNjMWIy
MWI5NWQwODkyYjJmMjNmZGMxMjlmYmFlNjFmZTMyMS4uYjM3MjU1NjExOTg3ZWVlMTU4YmNiNDMw
ZTlmNWNmYmNkZDY0OTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE1NTQsNiArMTU1NCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoYXV0byBpdGVyYXRv
ciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9y
YWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5mZXRjaERhdGEo
d2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBlbnRyaWVzKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRy
aWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGVudHJpZXMpKTsKKyAgICAgICAgfSk7CisgICAgfQog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTE2MjgsNiArMTYzNCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpCiAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2Vz
KG1vZGlmaWVkU2luY2UpOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGF1dG8gaXRlcmF0b3Ig
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFn
ZU1hbmFnZXJzLmVuZCgpKQorICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRlbGV0ZURhdGFNb2Rp
ZmllZFNpbmNlKHdlYnNpdGVEYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKE5ldHdv
cmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYg
b3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTczNSw2ICsxNzQ0LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICB9CiAjZW5k
aWYKIAorICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNz
aW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkKKyAgICAgICAgaXRl
cmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIG9yaWdpbkRhdGFzLCBb
Y2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZU5ldHdvcmtEYXRhRm9yOwog
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKQEAgLTE5NTgsNiAr
MTk3MCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICB9KTsKICAgICB9CiAK
KyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklE
KTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaXRlcmF0
b3ItPnZhbHVlLT5kZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHdlYnNpdGVEYXRhVHlw
ZXMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yXShhdXRvIGRlbGV0ZWREb21haW5zKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBkb21haW4gOiBkZWxldGVkRG9tYWlucykKKyAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoV1RGTW92ZShkb21haW4pKTsKKyAgICAgICAgfSk7
CisgICAgfQorCiAgICAgYXV0byBkYXRhVHlwZXNGb3JVSVByb2Nlc3MgPSBXZWJzaXRlRGF0YTo6
ZmlsdGVyKHdlYnNpdGVEYXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJKTsKICAg
ICBpZiAoIWRhdGFUeXBlc0ZvclVJUHJvY2Vzcy5pc0VtcHR5KCkgJiYgIWRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSkgewogICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+IGNvbXBs
ZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+JiBkb21haW5zKSB7CkBAIC0yMDc0LDYgKzIwOTMsMTIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyAg
ICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsg
aXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaXRlcmF0b3It
PnZhbHVlLT5mZXRjaERhdGEod2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0o
YXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGVudHJpZXMpKTsKKyAg
ICAgICAgfSk7CisgICAgfQogfQogI2VuZGlmIC8vIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lO
R19QUkVWRU5USU9OKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCmluZGV4IGZiOTI5ODE0
MWIwZGJjMzgxZmE4YjNiMzgxN2U2OGNhMDE4OTc5ZGEuLjQ3MzM4ZWZlNTM4MjJhNzZhNTQ4NGYy
OWM5MzU3Njc4ZjQwMTg4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCkBAIC02Miw2
ICs2Miw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZvID0gc3RkOjpwYWly
PFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllciwgSVBDOjpTaGFy
ZWRGaWxlSGFuZGxlPjsKICAgICBFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZvLCBGaWxlU3lzdGVt
U3RvcmFnZUVycm9yPiBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7CiAgICAgc3RkOjpvcHRpb25h
bDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0Fj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmlsZVN5
c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyPiBhY3RpdmVTeW5jQWNjZXNzSGFuZGxlKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlOyB9CiAKIHByaXZhdGU6CiAg
ICAgRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0
ZW1TdG9yYWdlRXJyb3I+IHJlcXVlc3RDcmVhdGVIYW5kbGUoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgVHlwZSwgU3RyaW5nJiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDM4YWEyNjU1YzM5ZGRjMjM3YmE1YTM4
MGE1ZDU0OTEyNDJjMzdmNTEuLjI5Y2ZiMGM2YjM3M2EyNWZmMDFjY2U4NjMzYzk1ZTU2YjFhY2I3
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00Miw4
ICs0Myw3IEBAIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6fkZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlcigpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBmb3IgKGF1
dG8gaWRlbnRpZmllciA6IG1faGFuZGxlcy5rZXlzKCkpCi0gICAgICAgIG1fcmVnaXN0cnkudW5y
ZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKyAgICBjbG9zZSgpOwogfQogCiBFeHBlY3RlZDxX
ZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVIYW5kbGUoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBjb25uZWN0aW9uLCBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6VHlwZSB0eXBl
LCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KQpA
QCAtMTQ5LDQgKzE0OSwyNCBAQCBib29sIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6cmVsZWFz
ZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNsb3NlKCkKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rp
b25JRCwgaWRlbnRpZmllcnNdIDogbV9oYW5kbGVzQnlDb25uZWN0aW9uKSB7CisgICAgICAgIGZv
ciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgIGF1dG8gdGFr
ZW5IYW5kbGUgPSBtX2hhbmRsZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fcmVn
aXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKworICAgICAgICAgICAgLy8gU2Vu
ZCBtZXNzYWdlIHRvIHdlYiBwcm9jZXNzIHRvIGludmFsaWRhdGUgYWN0aXZlIHN5bmMgYWNjZXNz
IGhhbmRsZS4KKyAgICAgICAgICAgIGlmIChhdXRvIGFjY2Vzc0hhbmRsZUlkZW50aWZpZXIgPSB0
YWtlbkhhbmRsZS0+YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSgpKQorICAgICAgICAgICAgICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb246OkludmFsaWRhdGVBY2Nlc3NIYW5kbGUoKmFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIpLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChtX2hhbmRsZXMu
aXNFbXB0eSgpKTsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24uY2xlYXIoKTsKKyAgICBtX2xv
Y2tNYXAuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYjg1NzY3NjhiMzU1YWNiM2FhMGMzNzAzOGNjNTFlY2M5MzJi
Mzk2Yy4uNTM1OTg5NTgxMGQ4NzQ4NTYwOWE0MGNmYTUzNzFjYzY5ZWViMDYzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCByZWxlYXNlTG9ja0ZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBjbG9zZSgpOworCiAg
ICAgU3RyaW5nIG1fcGF0aDsKICAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBt
X3JlZ2lzdHJ5OwogICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgSGFzaFNl
dDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcj4+IG1faGFuZGxlc0J5Q29ubmVj
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMjk3OGEyNWVmMTI1MjQ3MmNj
ZjJlNmYxZDMyZjUxYjA1MTAyZjA2Mi4uNWQxODE3MmNiNGQzZTFmYmMyZDE0ZWFlZDA0ZmM1YTc3
YTM5MWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMwLDcgKzMwLDEwIEBA
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdl
ci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8v
Q3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE2LDcgKzExOSw3IEBAIHN0YXRpYyBTdHJp
bmcgZW5jb2RlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaWxlU3lzdGVtOjpTYWx0IHNhbHQpCiAg
ICAgcmV0dXJuIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGhhc2guZGF0YSgpLCBoYXNoLnNpemUo
KSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgb3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIHJvb3RQYXRo
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgRmlsZVN5c3RlbTo6U2FsdCBz
YWx0KQorc3RhdGljIFN0cmluZyBvcmlnaW5EaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcm9v
dFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBGaWxlU3lzdGVtOjpT
YWx0IHNhbHQpCiB7CiAgICAgaWYgKHJvb3RQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHJvb3RQYXRoOwpAQCAtMTI2LDE1ICsxMjksMjggQEAgc3RhdGljIFN0cmluZyBvcmlnaW5QYXRo
KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3IK
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhyb290UGF0
aCwgeyBlbmNvZGVkVG9wT3JpZ2luLCBlbmNvZGVkT3BlbmluZ09yaWdpbiB9KTsKIH0KIAorc3Rh
dGljIFN0cmluZyBvcmlnaW5GaWxlUGF0aChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwg
Im9yaWdpbiJfcyk7Cit9CisKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBy
ZXR1cm4gKm1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgWyZdIHsK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KG9yaWdpblBh
dGgobV9wYXRoLCBvcmlnaW4sIG1fc2FsdCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxP
cmlnaW5TdG9yYWdlTWFuYWdlcj4ob3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgsIG9yaWdpbiwg
bV9zYWx0KSwgb3JpZ2luKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKGF1dG8gaXRl
cmF0b3IgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmZpbmQob3JpZ2luKTsgaXRlcmF0
b3IgIT0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpZiAo
IWl0ZXJhdG9yLT52YWx1ZS0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fbG9jYWxPcmlnaW5T
dG9yYWdlTWFuYWdlcnMucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpwZXJzaXN0ZWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0zMDUsNSArMzIxLDE4MSBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgV2ViQ29yZTo6RmlsZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+
Z2V0SGFuZGxlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgV1RGTW92ZShuYW1lKSkpOwogfQogCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNv
bnN0IFN0cmluZyYgc3RvcmFnZVR5cGUpCit7CisgICAgaWYgKHN0b3JhZ2VUeXBlID09ICJGaWxl
U3lzdGVtIikKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbTsKKwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNsaWVudE9yaWdpbj4gcmVhZE9yaWdpbkZyb21GaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoIUZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIGF1dG8gY2xvc2VGaWxlID0g
bWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKKyAgICB9KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUp
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byByZWFkVGV4dCA9IEZp
bGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKGhhbmRsZSk7CisgICAgaWYgKCFyZWFkVGV4dCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgZGVjb2Rlcih7IHJlYWRUZXh0LT5kYXRhKCksIHJlYWRUZXh0LT5zaXplKCkgfSk7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbjsKKyAgICBkZWNvZGVy
ID4+IG9yaWdpbjsKKyAgICByZXR1cm4gb3JpZ2luOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Zm9yRWFjaE9yaWdpbkRpcmVjdG9yeShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KT4gYXBwbHkpCit7CisgICAgZm9yIChhdXRvJiB0b3BPcmlnaW4gOiBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCkpIHsKKyAgICAgICAgYXV0byB0b3BPcmlnaW5E
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCB0
b3BPcmlnaW4pOworICAgICAgICBhdXRvIG9wZW5pbmdPcmlnaW5zID0gRmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgICAgICBpZiAob3BlbmluZ09yaWdp
bnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVj
dG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBmb3IgKGF1dG8mIG9wZW5pbmdPcmlnaW4gOiBvcGVuaW5nT3JpZ2lucykg
eworICAgICAgICAgICAgYXV0byBvcGVuaW5nT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRvcE9yaWdpbkRpcmVjdG9yeSwgb3BlbmluZ09yaWdp
bik7CisgICAgICAgICAgICBhcHBseShvcGVuaW5nT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAg
fQorICAgIH0KK30KKworVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0YXJn
ZXRUeXBlcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIEhhc2hN
YXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
Pj4gb3JpZ2luVHlwZXM7CisgICAgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShbJl0oYXV0byBkaXJl
Y3RvcnkpIG11dGFibGUgeworICAgICAgICBhdXRvIG9yaWdpbiA9IHJlYWRPcmlnaW5Gcm9tRmls
ZShvcmlnaW5GaWxlUGF0aChkaXJlY3RvcnkpKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChhdXRvJiBzdG9yYWdlVHlwZSA6IEZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5KSkgeworICAgICAgICAgICAgaWYgKGF1dG8g
dHlwZSA9IHRvV2Vic2l0ZURhdGFUeXBlKHN0b3JhZ2VUeXBlKTsgdHlwZSAmJiB0YXJnZXRUeXBl
cy5jb250YWlucygqdHlwZSkpCisgICAgICAgICAgICAgICAgb3JpZ2luVHlwZXMuYWRkKG9yaWdp
bi0+Y2xpZW50T3JpZ2luLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB7IH0pLml0ZXJhdG9y
LT52YWx1ZS5hZGQoKnR5cGUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBWZWN0b3I8V2Vi
c2l0ZURhdGE6OkVudHJ5PiBlbnRyaWVzOworICAgIGZvciAoYXV0byBbb3JpZ2luLCB0eXBlc10g
OiBvcmlnaW5UeXBlcykgeworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IHR5cGVzKQorICAgICAg
ICAgICAgZW50cmllcy5hcHBlbmQoeyBXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4sIHR5cGUs
IDAgfSB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBlbnRy
aWVzID0gZmV0Y2hEYXRhRnJvbURpc2sodHlwZXMpOworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlbnRyaWVzID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUoZW50cmllcykpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCitWZWN0b3I8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZURhdGFPbkRpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxU
aW1lIG1vZGlmaWVkU2luY2VUaW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYpPiYgZmlsdGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlZE9yaWdpbnM7
CisgICAgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShbJl0oYXV0byBkaXJlY3RvcnkpIG11dGFibGUg
eworICAgICAgICBhdXRvIG9yaWdpbiA9IHJlYWRPcmlnaW5Gcm9tRmlsZShvcmlnaW5GaWxlUGF0
aChkaXJlY3RvcnkpKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pIHsKKyAgICAgICAgICAgIC8vIElm
IG9yaWdpbiBjYW5ub3QgYmUgcmV0cmlldmVkLCBidXQgd2UgYXJlIGFza2VkIHRvIHJlbW92ZSBk
YXRhIGZvciBhbGwgb3JpZ2lucywgcmVtb3ZlIGl0LgorICAgICAgICAgICAgaWYgKGZpbHRlcihX
ZWJDb3JlOjpDbGllbnRPcmlnaW4geyB9KSkgeworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShkaXJlY3RvcnksIG1vZGlmaWVkU2luY2VUaW1l
KTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJl
Y3RvcnkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFmaWx0ZXIoKm9yaWdpbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgZGVsZXRlZE9yaWdpbnMuYXBwZW5kKCpvcmlnaW4pOworICAgICAgICBsb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2VyKCpvcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2VU
aW1lKTsKKyAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKCpvcmln
aW4pOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3Rvcnkp
OworICAgIH0pOworCisgICAgcmV0dXJuIGRlbGV0ZWRPcmlnaW5zOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0
eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0
eXBlcywgb3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgSGFz
aFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpblNldDsKKyAgICAgICAgb3Jp
Z2luU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOworICAgICAgICBm
b3IgKGF1dG8gb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgICAgIG9yaWdpblNldC5hZGQoV1RG
TW92ZShvcmlnaW4pKTsKKworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFsmb3JpZ2luU2V0XShhdXRvIG9yaWdpbikgeworICAgICAgICAgICAg
cmV0dXJuIG9yaWdpblNldC5jb250YWlucyhvcmlnaW4uY2xpZW50T3JpZ2luKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlw
ZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSwgW10o
YXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9KTsKKworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBkb21haW5zID0gY3Jvc3NUaHJlYWRD
b3B5KGRvbWFpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGRlbGV0ZWRPcmlnaW5zID0gZGVsZXRlRGF0
YU9uRGlzayh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbJmRvbWFpbnNdKGF1dG8mIG9y
aWdpbikgeworICAgICAgICAgICAgYXV0byBkb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0KTsK
KyAgICAgICAgICAgIHJldHVybiBkb21haW5zLmNvbnRhaW5zKGRvbWFpbik7CisgICAgICAgIH0p
OworCisgICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRlbGV0ZWRE
b21haW5zOworICAgICAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGVsZXRlZE9yaWdpbnMpIHsKKyAg
ICAgICAgICAgIGF1dG8gZG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbi5jbGllbnRPcmlnaW4uaG9zdCk7CisgICAgICAgICAg
ICBkZWxldGVkRG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFp
bnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkZWxldGVkRG9tYWlucykpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zKSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oCmluZGV4IDViYzU2YjdjNjQ2YzZiMWZkN2FkNjRkZDQ4N2VkZjVkZWE2Mzkz
NGEuLjVmNjRiYTk2Yzg4ZDE1MTMzYmY4YmY2OTBlOGM5YzU4ZWM3NjQ0NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsyOCwxMiBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgiCiAjaW5jbHVkZSAiT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsK
QEAgLTU1LDEzICs1NywyMyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7CiAgICAg
dm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOworICAgIHZv
aWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwog
CiBwcml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBwYXRoKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgT3Jp
Z2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJik7CisgICAgdm9pZCByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklm
UG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSgpOwog
CisgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnkpPik7CisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZmV0Y2hE
YXRhRnJvbURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOworICAgIFZlY3RvcjxXZWJD
b3JlOjpDbGllbnRPcmlnaW4+IGRlbGV0ZURhdGFPbkRpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYpPiYpOworICAgIAorCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgKGltcGxl
bWVudGVkIGJ5IGdlbmVyYXRlZCBjb2RlKQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3Bw
CmluZGV4IDRmMDZmNDUyNDY1NjQ2ZDIwMTFiYzdmNTNiYmRiMjgxMTU5M2FhNDMuLjRkMWE2ZGEx
YWE4Mjc5NmRlYTc2ZDUzNGQ5N2Y4MzU1ZTg3ODliZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmNwcApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+Cisj
aW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC01MSwyOSArNTQsOTggQEAgcHVibGljOgogICAgICAgICAgICAgbV9m
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXItPmNvbm5lY3Rpb25DbG9zZWQoY29ubmVjdGlvbik7CiAg
ICAgfQogCi0gICAgU3RyaW5nIHR5cGVTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHN0b3JhZ2VJ
ZGVudGlmaWVyKSBjb25zdAorICAgIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90IHsK
KyAgICAgICAgRmlsZVN5c3RlbSwKKyAgICB9OworCisgICAgU3RyaW5nIHR5cGVTdG9yYWdlUGF0
aChTdG9yYWdlVHlwZSB0eXBlKSBjb25zdAogICAgIHsKKyAgICAgICAgU3RyaW5nIHN0b3JhZ2VJ
ZGVudGlmaWVyOworICAgICAgICBpZiAodHlwZSA9PSBTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbSkK
KyAgICAgICAgICAgIHN0b3JhZ2VJZGVudGlmaWVyID0gIkZpbGVTeXN0ZW0iOworCiAgICAgICAg
IHJldHVybiBtX3Jvb3RQYXRoLmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgc3RvcmFnZUlkZW50aWZpZXIp
OwogICAgIH0KIAogICAgIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQogICAg
IHsKICAgICAgICAgaWYgKCFtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcikKLSAgICAgICAgICAg
IG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXI+KHR5cGVTdG9yYWdlUGF0aCgiRmlsZVN5c3RlbSIpLCByZWdpc3RyeSk7CisgICAg
ICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8RmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyPih0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW0p
LCByZWdpc3RyeSk7CiAKICAgICAgICAgcmV0dXJuICptX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
cjsKICAgICB9CiAKKyAgICBib29sIGlzQWN0aXZlKCkKKyAgICB7CisgICAgICAgIHJldHVybiAh
IW1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlRGF0
YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZVRpbWUpCisgICAgeworICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpGaWxlU3lzdGVtKSkKKyAgICAgICAgICAgIGRlbGV0ZUZpbGVTeXN0ZW1TdG9yYWdlRGF0YSht
b2RpZmllZFNpbmNlVGltZSk7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkobV9yb290UGF0aCk7CisgICAgfQorCiBwcml2YXRlOgorICAgIHZvaWQgZGVsZXRl
RmlsZVN5c3RlbVN0b3JhZ2VEYXRhKFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lKQorICAgIHsK
KyAgICAgICAgaWYgKG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9m
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRyOworCisgICAgICAgIGF1dG8gZmlsZVN5
c3RlbVN0b3JhZ2VQYXRoID0gdHlwZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVt
KTsKKyAgICAgICAgaWYgKG1vZGlmaWVkU2luY2VUaW1lID4gLVdhbGxUaW1lOjppbmZpbml0eSgp
KSB7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2Uo
ZmlsZVN5c3RlbVN0b3JhZ2VQYXRoLCBtb2RpZmllZFNpbmNlVGltZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURp
cmVjdG9yeShmaWxlU3lzdGVtU3RvcmFnZVBhdGgpOworICAgIH0KKwogICAgIFN0cmluZyBtX3Jv
b3RQYXRoOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgU3RvcmFnZUJ1Y2tldE1vZGUg
bV9tb2RlIHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQgfTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyPiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
cjsKIH07CiAKLU9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJp
bmcmJiBwYXRoKQordm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6Y3JlYXRlT3JpZ2luRmlsZUlm
TmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGF1
dG8gb3JpZ2luRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9wYXRoLCAib3JpZ2luIik7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2lu
RmlsZVBhdGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChvcmlnaW5GaWxlUGF0aCkpOworICAgIGF1
dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUob3JpZ2luRmlsZVBhdGgsIEZpbGVTeXN0
ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBhdXRvIGNsb3NlRmlsZSA9IG1ha2VT
Y29wZUV4aXQoWyZdIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Cisg
ICAgfSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewor
ICAgICAgICBMT0dfRVJST1IoIk9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjogRmFpbGVkIHRvIG9wZW4gb3JpZ2luIGZpbGUiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVy
IDw8IG9yaWdpbjsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwordm9pZCBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICBhdXRvIGNoaWxk
cmVuID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3BhdGgpOworICAgIGlmIChjaGlsZHJl
bi5zaXplKCkgIT0gMSB8fCBjaGlsZHJlbi5maXJzdCgpICE9ICJvcmlnaW4iKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIG9yaWdpbkZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgIm9yaWdpbiIpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUob3JpZ2luRmlsZVBhdGgpOworfQorCitPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4pCiAgICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkKIHsKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3Nhcnkob3JpZ2lu
KTsKIH0KIAogT3JpZ2luU3RvcmFnZU1hbmFnZXI6On5PcmlnaW5TdG9yYWdlTWFuYWdlcigpID0g
ZGVmYXVsdDsKQEAgLTEwMyw1ICsxNzUsMTggQEAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXMKICAg
ICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihyZWdpc3Ry
eSk7CiB9CiAKK2Jvb2wgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlKCkKK3sKKyAgICBy
ZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZlKCk7Cit9CisKK3ZvaWQgT3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEo
dHlwZXMsIG1vZGlmaWVkU2luY2UpOworCisgICAgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5
KCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkobV9wYXRoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYTRj
MTFhZDY1YTVjMTk3MDNhN2MwZTkyOTRiYzJmZWFhYTJmZmUyZS4uOGU1MzYwZWJkOTJhYTM1ZjNm
ZjY0Zjg0MjZhNjk2YTI1YWQwOTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTI4LDI3
ICsyOCwzNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9yaWdpbjsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxl
UmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CitlbnVtIGNsYXNzIFdl
YnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogCiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgT3Jp
Z2luU3RvcmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCk7CisgICAgZXhwbGljaXQgT3JpZ2luU3Rv
cmFnZU1hbmFnZXIoU3RyaW5nJiYgcGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7
CiAgICAgfk9yaWdpblN0b3JhZ2VNYW5hZ2VyKCk7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9z
ZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBwZXJzaXN0ZWQoKSBjb25z
dCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQogICAgIHZvaWQgcGVyc2lzdCgpOwogICAgIEZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKKyAgICBib29sIGlzQWN0aXZlKCk7CisgICAgdm9pZCBk
ZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSk7CiAKIHByaXZh
dGU6CiAgICAgZW51bSBjbGFzcyBTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2w7CiAgICAgY2xhc3Mg
U3RvcmFnZUJ1Y2tldDsKICAgICBTdG9yYWdlQnVja2V0JiBkZWZhdWx0QnVja2V0KCk7CiAKKyAg
ICB2b2lkIGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKTsKKyAgICB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSgpOworCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VCdWNrZXQ+IG1fZGVmYXVsdEJ1Y2tldDsKICAgICBTdHJp
bmcgbV9wYXRoOwogICAgIGJvb2wgbV9wZXJzaXN0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCmluZGV4IGYzNzI5MDEz
OGI0ZmFmZjMyMzUzYjJhY2RhZGU4MzQwMGRhOWNjOGEuLmY5YjJmZTA0MDlkYzQzMGIxZDNkM2Fl
YjAwZTc2YjAwYjNmMDU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQCBXZWJzaXRlRGF0YVByb2Nl
c3NUeXBlIFdlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MoV2Vic2l0ZURhdGFUeXBlIGRhdGFUeXBl
KQogICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzOgogICAgICAg
ICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKICNlbmRpZgorICAgIGNh
c2UgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGFQcm9jZXNzVHlwZTo6TmV0d29yazsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFUeXBlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVR5cGUuaAppbmRleCA3YTllNTAwZmUxYjA5ZTM4OTVkZDc0M2UxNjVjOTg5MThiZTdh
OGRiLi5lNDU5YTA5MDM4YTQ4YTE5ODZkNmQzMzk2NjQzMzI4MzM3NWE0NTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaApAQCAt
NTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90IHsKICNp
ZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQogICAgIEFsdGVybmF0aXZlU2Vy
dmljZXMgPSAxIDw8IDE4LAogI2VuZGlmCisgICAgRmlsZVN5c3RlbSA9IDEgPDwgMTksCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKQEAgLTc5LDEwICs4MCwxMSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB7CiAjZW5kaWYKICAgICAg
ICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLAogICAgICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZTo6RGV2aWNlSWRIYXNoU2FsdCwKLSAgICAgICAgV2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cworICAgICAgICBXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzLAogI2lmIEhBVkUoQ0ZORVRXT1JL
X0FMVEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgICAgICwgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6
OkFsdGVybmF0aXZlU2VydmljZXMKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFs
dGVybmF0aXZlU2VydmljZXMsCiAjZW5kaWYKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkZpbGVTeXN0ZW0KICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQppbmRleCBjODI2MTZm
NzkwYzZmYzY5MGE2Y2JkNjk3YTBlOGVjZGE1MjI3ZmIxLi5mYTExMTNlNDdjMmE0NDQxNGJkMmFk
ZDE5MmQwMmU3NTA3ZjMyNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtNTEsNiArNTEsNyBAQCBO
U1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJfV0tXZWJz
aXRlRGF0YVR5cGVDcmVkZW50aWFscwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVBZENsaWNrQXR0cmlidXRpb25zID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmli
dXRpb25zIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dHMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZp
Y2VzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzIjsKK05TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSA9IEAiX1dLV2Vic2l0ZURhdGFU
eXBlRmlsZVN5c3RlbSI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRh
dGEiOwpAQCAtMTEwLDYgKzExMSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJp
bmcoTlNTZXQgKmRhdGFUeXBlcykKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6
X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6QCJBbHRlcm5hdGl2ZSBTZXJ2aWNlcyJdOworICAgIGlmIChbZGF0YVR5cGVzIGNv
bnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dKQorICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OkAiRmlsZSBTeXN0ZW0iXTsKIAogICAgIHJldHVybiBbYXJyYXkgY29tcG9u
ZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aAppbmRleCBkYmM1ZjNmN2ExZmY0ZmI3NDlhYWZkNzBlNTcwYmEwNDg1NjhhY2Q2Li45MTQ0OGVl
MWQ1NTFkZTQyMDY1ODY3YjgxNWRiZGYxZGVmYTc1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJ
bnRlcm5hbC5oCkBAIC03Nyw2ICs3Nyw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlCiAgICAg
aWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUFs
dGVybmF0aXZlU2VydmljZXNdKQogICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpBbHRl
cm5hdGl2ZVNlcnZpY2VzOwogI2VuZGlmCisgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVh
bFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dKQorICAgICAgICByZXR1cm4g
V2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKQEAgLTEzNCw2ICsxMzYsOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9X
S1dlYnNpdGVEYXRhVHlwZXMoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdAogICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2
aWNlcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdOwogI2VuZGlmCisgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKSkKKyAgICAgICAgW3dr
V2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV07
CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFBy
aXZhdGUuaAppbmRleCBkNjA3ZGZlMTNmNjEyYjU4MjIwZTVhMzUyNTc3NDcwNTMxZWU0OTA3Li4y
Y2Y5YTRkMmEwYzdmY2UyNWI2NTA2YWMxN2JkNzExMTdjOTc1MWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZFByaXZhdGUuaApAQCAtMzcsNiArMzcsNyBAQCBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25z
dCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBXS19BUElfQVZBSUxBQkxFKG1hY29zKAog
V0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJp
YnV0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIFdLX0VY
VEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1
cmVtZW50cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogV0tfRVhU
RVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNl
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOworV0tfRVhURVJOIE5T
U3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9P
U19JUEhPTkUKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVBs
dWdJbkRhdGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5k
ZXggZTJiMDczNjQ2NGIxNjZkZDkyMGNmMzU1MTcxZmIzYTU2MzcwYTM4NC4uN2VmMDY5NTBhYjA3
ZDNlMWE3NjE2Y2JjYjU4YmQyNTc4NTM1OWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0yNDgsNyAr
MjQ4LDggQEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1
ZGluZ1ByaXZhdGUKICAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzLAog
ICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucywKICAgICAg
ICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1cmVtZW50cywKLSAgICAg
ICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMKKyAgICAgICAgICAg
IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMsCisgICAgICAgICAgICBfV0tX
ZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKICAgICAgICAg
ICAgICwgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjg4M2Q5MmU3MmRm
MjI1MTVhY2U0YjIxN2Y4ZmRhMThlNTgzNTEyLi45NGIwNzEyNDJkMzYyMjE5Y2JiNjljZGFhODMw
ZDM1ZWQyOGQ3MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE0OTUsNiArMTQ5NSw5IEBACiAJCTkzRDZCN0I1MjU1MjY4RDcwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEyMDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9OwogCQk5M0Q2
QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
NkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAw
RjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5M0U3OTk4NTI3NTZGQTU1MDA3NDAwOEEgLyogV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4
QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTkzRTc5OTg4Mjc1
NkZBQzIwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNzk5ODEy
NzU2RkE1MzAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi87IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4MDI1
MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMg
LyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CiAJCTk1NjUwODM5MjZEODdBMkIwMEUx
NUNCNyAvKiBBcHBsZU1lZGlhU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NjUwODM3MjZEODdBMkIwMEUxNUNCNyAvKiBBcHBsZU1l
ZGlhU2VydmljZXNTUEkuaCAqLzsgfTsKQEAgLTUyODksNiArNTI5MiwxMCBAQAogCQk5M0Q2QjdC
NzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZC
N0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTc5OTdFMjc1NkY2NzAwMDc0MDA4QSAvKiBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk4
MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2Fn
ZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzRE
QTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01v
dXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tN
b3VzZURldmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9ic2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDU2Nyw2ICsxMDU3NCw3IEBACiAJCQkJ
QkMwMzJENjgxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkVkaXRvckNsaWVudC5oICovLAogCQkJCTkz
NTQyNDJCMjcwM0JEQ0IwMDVDQTcyQyAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwICovLAogCQkJCTkzNTQyNDJBMjcwM0JEQ0IwMDVDQTcyQyAvKiBXZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24uaCAqLywKKwkJCQk5M0U3OTk3RTI3NTZGNjcwMDA3NDAwOEEgLyogV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTExQTU4
MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJQkMw
MzJENkExMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJ
QkMxQkUxREYxMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCAqLywK
QEAgLTEyMDQxLDYgKzEyMDQ5LDkgQEAKIAkJCQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi8sCiAJCQkJRTM4
NjZCMDQyMzk5OTc5QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTM4NjZCMDUyMzk5OTc5QzAwRjg4
RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmgg
Ki8sCisJCQkJOTNFNzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTNFNzk5ODEyNzU2RkE1MzAw
NzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCisJ
CQkJOTNFNzk5ODMyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCUNENzNCQTQ4MTMxQUNEOEUwMEVFREVEMiAv
KiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0Q3M0JB
NDkxMzFBQ0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaCAqLywK
IAkJCQlDRDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMzI4OCw2ICsxMzI5OSw4IEBACiAJCQkJQkMw
MzJEQkIxMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxMTFCNUQxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM1NDI0MkMyNzAzQkRDQjAwNUNBNzJDIC8qIFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFNzk5ODgyNzU2RkFD
MjAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTkwQzFFRTEyNjRGRDUwMDAzRTQ0RDQgLyogV2ViRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRTQ2OTU0MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0U0Njk1NjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Np
b25MaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTE1MzgyLDYgKzE1Mzk1LDcgQEAK
IAkJCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4NjZCMDkyMzk5QTJENTAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4OTIxMkI2QUIxMDBGNDkzRkQg
LyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTNFNzk5ODUyNzU2RkE1NTAwNzQw
MDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDczQkE0RTEzMUFDREI3MDBFRURFRDIgLyogV2ViRnVsbFNj
cmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JB
NDcxMzFBQ0M5QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYwNjExMkQ2QkE5MTAwMTJBNzJBIC8q
IFdlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3
YWRmMGIxZGQwMGE0OGIuLjk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUg
IldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ck1lc3NhZ2VzLmgiCkBAIC0xMTksNiArMTIxLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
CiAgICAgICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIFVTRShM
SUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJSVENNb25pdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMGVmNDE5ZjJkNzEy
ODNhYjY3YzM2NTE4MzM1NmRjZWZjNzk0NDg2Mi4uOGNjY2YyYjUwZTNmZjhkNzdmYjg0YTc4ZjM0
ODIyMTA5ZDBiY2FkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5jcHAKQEAgLTE5Myw0ICsxOTMsOSBAQCB2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbjo6bW92ZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZAog
ICAgIH0pOwogfQogCit2b2lkIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aW52YWxp
ZGF0ZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICAvLyBUT0RPOiBpbnZhbGlkYXRlIEZpbGVTeXN0ZW1T
eW5jQWNjZXNzSGFuZGxlLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCBlZTVjNmZlMTljNzgwMmRh
MmE3ZWExNTQzNjE2MDUxN2Q2Y2Q1YzJiLi5mNTFjMWEyODA5MTg2M2UyN2M0ODE0ODY1MThlM2Zh
ZGFmYzcxM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
bi5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvCiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZShJUEM6
OkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb24mKTsKQEAgLTg2LDYgKzg3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVN5
bmNBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFdlYkNv
cmU6OkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6R2V0QWNjZXNzSGFuZGxlQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBjbG9zZShXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OlZvaWRDYWxsYmFjayYmKSBmaW5hbDsK
IAorICAgIHZvaWQgaW52YWxpZGF0ZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtU3lu
Y0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIpOworCiAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJlY2RjZjdkOWQ1MTU3
Y2Y4M2JiYjI0MzM0MGVhZThmMzU3Y2I3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24gTm90UmVmQ291bnRlZCB7CisgICAgSW52YWxpZGF0ZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZTQ4NDcxN2Q0
YWI0MzdiZWU2ODY3ZjMzODA4NzRhN2I3Y2FmZTc0Li4wYTY3YmZhZGZlMWJmZTQwOTY1YzkxMTM1
NjZiYWQwYmI2ZGQ3MWUxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTEtMzAgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBk
YXRhIHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxl
U3lzdGVtQWNjZXNzLm1tOgorCisyMDIxLTExLTMwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCByZW1vdmUgZmlsZSBzeXN0ZW0gZGF0YSB2aWEg
V0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFj
Y2Vzcy5tbToKKwogMjAyMS0xMS0zMCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiBkaWFnbm9zdGlj
IGV2ZW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0ZpbGVTeXN0ZW1BY2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0KaW5kZXggNTJhYjljZTI4Yjc1NjBkYTkwZWExM2U4OTI4
OGQxNzI5YTQxMGViZS4uZDk5MWMyZDZiZWU0NzE4ZjBiZmM2MzI3NDQ2MmJlZGY3N2U4Nzk2OCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lz
dGVtQWNjZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RmlsZVN5c3RlbUFjY2Vzcy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dL
UHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KIAogQGludGVyZmFjZSBG
aWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4KIEBlbmQKQEAgLTE5Niw0ICsxOTcsNzMgQEAgVEVTVChGaWxlU3lzdGVtQWNjZXNz
LCBNaWdyYXRlVG9OZXdTdG9yYWdlRGlyZWN0b3J5KQogICAgIEVYUEVDVF9XS19TVFJFUShAImZp
bGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIH0KIAorc3RhdGljIE5T
U3RyaW5nICp0ZXN0U3RyaW5nID0gQCI8c2NyaXB0PiBcCisgICAgYXN5bmMgZnVuY3Rpb24gb3Bl
bihzaG91bGRDcmVhdGVGaWxlKSBcCisgICAgeyBcCisgICAgICAgIHRyeSB7IFwKKyAgICAgICAg
ICAgIHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9yLnN0b3JhZ2UuZ2V0RGlyZWN0b3J5
KCk7IFwKKyAgICAgICAgICAgIHZhciBmaWxlSGFuZGxlID0gYXdhaXQgcm9vdEhhbmRsZS5nZXRG
aWxlSGFuZGxlKCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0JywgeyAnY3JlYXRlJyA6IHNob3VsZENy
ZWF0ZUZpbGUgfSk7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdmaWxlIGlzIG9wZW5lZCcpOyBcCisgICAgICAgIH0g
Y2F0Y2goZXJyKSB7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlcnJvcjogJyArIGVyci5uYW1lICsgJyAtICcgKyBl
cnIubWVzc2FnZSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgb3Blbih0cnVlKTsgXAor
ICAgIDwvc2NyaXB0PiI7CisKK1RFU1QoRmlsZVN5c3RlbUFjY2VzcywgRmV0Y2hBbmREZWxldGVE
YXRhKQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tGaWxlU3lzdGVtQWNjZXNzTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0
b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV07CisKKyAgICAvLyBSZW1vdmUg
ZXhpc3RpbmcgZGF0YS4KKyAgICBOU1NldCAqdHlwZXMgPSBbTlNTZXQgc2V0V2l0aE9iamVjdDpf
V0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlm
aWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAg
ICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCA9
IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZRVM7CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwg
W2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIC8vIEZldGNoIGRhdGEgYWZ0ZXIgZmls
ZSBpcyBjcmVhdGVkLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSBm
ZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8
V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1RfRVEocmVj
b3Jkcy5jb3VudCwgMXUpOworICAgICAgICBhdXRvIHJlY29yZCA9IFtyZWNvcmRzIG9iamVjdEF0
SW5kZXg6MF07CisgICAgICAgIEVYUEVDVF9TVFJFUSgid2Via2l0Lm9yZyIsIFtyZWNvcmQuZGlz
cGxheU5hbWUgVVRGOFN0cmluZ10pOworCisgICAgICAgIC8vIFJlbW92ZSBkYXRhLgorICAgICAg
ICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcyBmb3JEYXRhUmVjb3Jk
czpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIC8vIEZpbGUgY2Fubm90IGJlIG9wZW5lZCBhZnRlciBkYXRhIHJlbW92YWwuCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAib3BlbihmYWxzZSkiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlw
dE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVD
VF9XS19TVFJFUShAImVycm9yOiBOb3RGb3VuZEVycm9yIC0gVGhlIG9iamVjdCBjYW4gbm90IGJl
IGZvdW5kIGhlcmUuIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIC8vIEZldGNo
IGRhdGEgYWZ0ZXIgZGF0YSBpcyByZW1vdmVkLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
c2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAg
ICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445685</attachid>
            <date>2021-12-02 00:32:12 -0800</date>
            <delta_ts>2021-12-02 09:08:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211202003211.patch</filename>
            <type>text/plain</type>
            <size>68962</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY1NjE4Yjc3ZWI3MzRlNWYxNzcyMjM5
MGQwYWI4YjZhZGFmMjEwMDIuLjA1NTk5NTMxMmQ3YjY1ZmIyYWJlOWQ1NzFiNDk1OWJmZTQ3MTdj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMDEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTEyLTAxICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIE9TQWxsb2NhdG9yOjpyZXNl
cnZlVW5jb21taXR0ZWRBbGlnbmVkIHNob3VsZCB1c2UgYWxpZ25lZCBhbGxvY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGNlYzE1MmMxZjcwNjcxZGZiZjdjZGEyYzA1NzQ3Njg0MzE0ZjA0YjkuLjRlYzQ5MjJk
NTZjZWM5ZjhjZTAzZDUxYTkzZTA3NTQ5NDg3NTU0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODgg
QEAKKzIwMjEtMTItMDEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVEYXRhU3Rv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZSBhIG5ldyBXZWJzaXRlRGF0YVR5cGUgdmFsdWUgRmlsZVN5c3RlbSBmb3IgRmlsZVN5c3Rl
bUFjY2VzcyBkYXRhLiBOZXR3b3JrIHByb2Nlc3Mgbm93IGNhbiBmZXRjaCBhbmQgCisgICAgICAg
IGRlbGV0ZSB0aGlzIHR5cGUgb2YgZGF0YSB3aGVuIGZldGNoaW5nIGFuZCBkZWxldGVpbmcgd2Vi
c2l0ZSBkYXRhIChpZiBGaWxlU3lzdGVtIHR5cGUgaXMgaW5jbHVkZWQgaW4gdGFyZ2V0CisgICAg
ICAgIHR5cGVzKS4KKworICAgICAgICBUbyB0cmFjayBvcmlnaW5zIHRoYXQgaGF2ZSBGaWxlU3lz
dGVtIGRhdGEsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlIG5hbWVkIG9yaWdpbiBp
biB0aGUgb3JpZ2luJ3MgCisgICAgICAgIGRpcmVjdG9yeS4gVGhpcyBmaWxlIHdpbGwgYmUgY3Jl
YXRlZCB3aGVuIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVG8g
ZGVsZXRlIGV4aXN0aW5nIEZpbGVTeXN0ZW0gZGF0YSwgbmV0d29yayBwcm9jZXNzIGZpbmRzIG9y
aWdpbnMgdGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlIGRlbGV0ZWQgYW5kIGhhdmUgZGF0YSAKKyAg
ICAgICAgb24gZGlzaywgY2xvc2VzIGFjdGl2ZSBhY2Nlc3MgaGFuZGxlcywgYW5kIGRlbGV0ZXMg
dGhlIGZpbGVzLiBUaGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3ZlIHdpbGwgYmUgZGVsZXRl
ZCBpZiAKKyAgICAgICAgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0IGluIHRoZSBzYW1lIGRp
cmVjdG9yeSwgYW5kIGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVsZXRlZC4KKworICAgICAg
ICBOZXcgQVBJIHRlc3RzOiBGaWxlU3lzdGVtQWNjZXNzLkZldGNoQW5kUmVtb3ZlRGF0YQorICAg
ICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtQWNjZXNzLlJlbW92ZURhdGFCeU1vZGlmaWNh
dGlvblRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbUFjY2Vzcy5GZXRjaERh
dGFGb3JUaGlyZFBhcnR5CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Om1vbml0b3JlZERhdGFUeXBlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUu
aDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmFjdGl2ZVN5bmNB
Y2Nlc3NIYW5kbGUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOjp+RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnJlYWRPcmlnaW5Gcm9tRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlT3JpZ2lu
VG9GaWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpkZWxldGVPcmlnaW5GaWxlSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6b3JpZ2luRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3Nz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRT
aW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Om9yaWdpblBhdGgpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9y
YWdlQnVja2V0Ojp0b1N0b3JhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnR5cGVTdG9yYWdlUGF0aCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVGaWxlU3lzdGVt
U3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVs
ZXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MpOgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNU
b1N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNp
dGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlXSk6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAyMS0xMi0wMSAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBzaG91
bGQgYmUgaW52YWxpZGF0ZWQgd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAppbmRleCA2NGJhYzZiNmI3MDAxNjEwYjUzZjJlMWQzMDkyNjdiZDVhNDBmNTM4Li5m
NjkwNDkyOGVmNTViMGFiODFlNjAwNTBiMzkzYWRjNGM3OTkxNjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtNTE0LDYgKzUxNCw2MCBAQCBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VT
YWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gc2FsdDsKIH0KIAorc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVt
OjpmaWxlU2l6ZShoYW5kbGUpLnZhbHVlX29yKDApOworICAgIGlmICghc2l6ZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHVuc2lnbmVkIGJ5dGVzVG9SZWFkOworICAgIGlm
ICghV1RGOjpjb252ZXJ0U2FmZWx5KHNpemUsIGJ5dGVzVG9SZWFkKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQp
OworICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxl
KGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKHRvdGFsQnl0
ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2Uo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCit7CisgICAgLy8gVGhpcyBm
dW5jdGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCisgICAgaWYgKHRpbWUgPT0gLVdh
bGxUaW1lOjppbmZpbml0eSgpKSB7CisgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGRp
cmVjdG9yeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoaWxkcmVuID0g
bGlzdERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJl
bikgeworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAgYXV0byBjaGlsZFR5cGUgPSBm
aWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxkVHlwZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIHN3aXRjaCAoKmNoaWxkVHlwZSkgeworICAgICAgICBjYXNl
IEZpbGVUeXBlOjpSZWd1bGFyOiB7CisgICAgICAgICAgICBpZiAoYXV0byBtb2RpZmljYXRpb25U
aW1lID0gRmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY2hpbGRQYXRoKTsgbW9kaWZp
Y2F0aW9uVGltZSAmJiAqbW9kaWZpY2F0aW9uVGltZSA+PSB0aW1lKQorICAgICAgICAgICAgICAg
IGRlbGV0ZUZpbGUoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsZVR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAgICAgIGRlbGV0ZUFsbEZp
bGVzTW9kaWZpZWRTaW5jZShjaGlsZFBhdGgsIHRpbWUpOworICAgICAgICAgICAgZGVsZXRlRW1w
dHlEaXJlY3RvcnkoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEZpbGVUeXBlOjpTeW1ib2xpY0xpbms6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7
Cit9CisKICNpZiBIQVZFKFNURF9GSUxFU1lTVEVNKSB8fCBIQVZFKFNURF9FWFBFUklNRU5UQUxf
RklMRVNZU1RFTSkKIAogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggOTk2YmMwYjZmN2RhOGFkZDBhNmU1YjkxN2FjODZjZWM1
YWY3MDlhNC4uZmQ4NTNhNDlhYWM4ZGMwMWYzMTU3MDRjZTQ5ZDczNDY1YWUwNTY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaApAQCAtMTA4LDYgKzEwOCw3IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUg
ewogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJp
bmcmLCBXYWxsVGltZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNv
bnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsg
Ly8gRm9sbG93cyBzeW1saW5rcy4KQEAgLTE0Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hh
bmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5k
bGUgIT0gaQogCiB1c2luZyBTYWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3
aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBh
dGguCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9
IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA4MmFhNWYyMmRkNzIwYzE5MTg0NmE5NDJhMzkx
NGNiZmVhYzg2YzdlLi40ZGVmZTRlZGYyY2ZhZTdmMjJhYzQ0NmFmOTc2ODZlOTlmOTE4OTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKQEAgLTMwOCw2ICszMDgsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VT
X0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIKIAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5CisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbgogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
YTc4OTdiOTYxYTM5ZGFmOTI3YzU0ZDEyZWZhM2M4OTcxNDk3YjAyZi4uZGJlZDIzNjIxMTBhNzc5
MTNhNTllZWU2MTVlM2RiNGVlY2YyZDc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjE5LDYgKzIxOSw3IEBAICQoUFJPSkVDVF9ESVIp
L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Lm1lc3NhZ2VzCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2Vz
LmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApp
bmRleCA5M2E2MTQ2ZDZiMTM5Y2I4YTE2YTE3MWJiNzdkNDRiZDNiNThiNjViLi5jNzg3YTAzZDdj
NzdhMDc2OTUyZGRjZDA5Y2UyMGUzYjVkODhkNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTQ5MCw2ICs0OTAsOSBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyTQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDQ1NzQzODY1YTRhYzgzMmQzZTVkYmQ0YWZkNDM4YmQ3NTMy
Y2Q5MjMuLjEwMWNiM2NlNzE0ZTNlZjhkNjRlNTcwNjRhMjQ1NmEyZGU2N2MyNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIyMCw2ICsyMjAsNyBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKIAlXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1dlYlJUQ1Jlc29sdmVyIFwKIAlXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSBcCiAJV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
IFwKKwlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbiBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCmluZGV4IGRlNzY1ZGU0NTA3MWY0MWYzZmM0ZDQ2OTcwNTM4MTZlMTg5OWViZmEu
LjcwYjVhZmRhNTI2ZTk5MDliOTYyZDcxMjEzZDg1YjYwYjUzNzE4MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC03NCw2ICs3NCw3IEBA
IGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
ICAgICBXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLAogI2VuZGlm
CisgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwKICAgICB9KSk7CiAKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA2NjZiY2MxYjIxYjk1ZDA4OTJiMmYyM2ZkYzEy
OWZiYWU2MWZlMzIxLi5iMzcyNTU2MTE5ODdlZWUxNThiY2I0MzBlOWY1Y2ZiY2RkNjQ5OWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMTU1NCw2ICsxNTU0LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdl
cnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkg
eworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmZldGNoRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJpZXMpIG11dGFibGUgeworICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKFdU
Rk1vdmUoZW50cmllcykpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MTYyOCw2ICsxNjM0LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICAgICAgICAgIG5l
dHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAg
ICAgfQogI2VuZGlmCisKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJz
LmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpCisg
ICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2Uod2Vic2l0ZURh
dGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogfQogCiBz
dGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2Fj
aGUsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzM1LDYgKzE3NDQsOSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGF1dG8g
aXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9
IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKQorICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRlbGV0
ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0g
eyB9KTsKKwogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3I7CiAgICAgICAgIGZvciAoYXV0byYg
b3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQpAQCAtMTk1OCw2ICsxOTcwLDEzIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzCiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIGlmIChhdXRvIGl0ZXJh
dG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0
b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRlbGV0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMod2Vic2l0ZURhdGFUeXBlcywgZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZGVs
ZXRlZERvbWFpbnMpIG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRl
bGV0ZWREb21haW5zKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21h
aW5zLmFkZChXVEZNb3ZlKGRvbWFpbikpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBhdXRv
IGRhdGFUeXBlc0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFU
eXBlcywgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOwogICAgIGlmICghZGF0YVR5cGVzRm9y
VUlQcm9jZXNzLmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0
ZURhdGFGb3IuaXNFbXB0eSgpKSB7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFp
bnMpIHsKQEAgLTIwNzQsNiArMjA5MywxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3Ry
YWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KKworICAgIGlmIChhdXRvIGl0ZXJhdG9y
ID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3Jh
Z2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmZldGNoRGF0YSh3
ZWJzaXRlRGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJpZXMpIG11dGFi
bGUgeworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJp
ZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoZW50cmllcykpOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0Zp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKaW5kZXggZmI5Mjk4MTQxYjBkYmMzODFmYThiM2IzODE3
ZTY4Y2EwMTg5NzlkYS4uNDczMzhlZmU1MzgyMmE3NmE1NDg0ZjI5YzkzNTc2NzhmNDAxODg1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIEFjY2Vzc0hhbmRsZUluZm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+OwogICAg
IEV4cGVjdGVkPEFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNyZWF0
ZVN5bmNBY2Nlc3NIYW5kbGUoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdl
RXJyb3I+IGNsb3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
cik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRs
ZUlkZW50aWZpZXI+IGFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2ZVN5bmNBY2Nlc3NIYW5kbGU7IH0KIAogcHJpdmF0ZToKICAgICBFeHBlY3RlZDxXZWJDb3Jl
OjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVx
dWVzdENyZWF0ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBUeXBlLCBTdHJpbmcm
JiBuYW1lLCBib29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggMzhhYTI2NTVjMzlkZGMyMzdiYTVhMzgwYTVkNTQ5MTI0MmMzN2Y1MS4u
MjljZmIwYzZiMzczYTI1ZmYwMWNjZTg2MzNjOTVlNTZiMWFjYjdmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1TdG9yYWdlRXJyb3IuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQyLDggKzQzLDcgQEAgRmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyOjp+RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKCkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogbV9o
YW5kbGVzLmtleXMoKSkKLSAgICAgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVySGFuZGxlKGlkZW50
aWZpZXIpOworICAgIGNsb3NlKCk7CiB9CiAKIEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0
cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpCkBAIC0xNDksNCArMTQ5LDI0IEBA
IGJvb2wgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpyZWxlYXNlTG9ja0ZvckZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEZp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6Y2xvc2UoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbklELCBpZGVudGlmaWVyc10g
OiBtX2hhbmRsZXNCeUNvbm5lY3Rpb24pIHsKKyAgICAgICAgZm9yIChhdXRvIGlkZW50aWZpZXIg
OiBpZGVudGlmaWVycykgeworICAgICAgICAgICAgYXV0byB0YWtlbkhhbmRsZSA9IG1faGFuZGxl
cy50YWtlKGlkZW50aWZpZXIpOworICAgICAgICAgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVySGFu
ZGxlKGlkZW50aWZpZXIpOworCisgICAgICAgICAgICAvLyBTZW5kIG1lc3NhZ2UgdG8gd2ViIHBy
b2Nlc3MgdG8gaW52YWxpZGF0ZSBhY3RpdmUgc3luYyBhY2Nlc3MgaGFuZGxlLgorICAgICAgICAg
ICAgaWYgKGF1dG8gYWNjZXNzSGFuZGxlSWRlbnRpZmllciA9IHRha2VuSGFuZGxlLT5hY3RpdmVT
eW5jQWNjZXNzSGFuZGxlKCkpCisgICAgICAgICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5k
KGNvbm5lY3Rpb25JRCwgTWVzc2FnZXM6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
SW52YWxpZGF0ZUFjY2Vzc0hhbmRsZSgqYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIDApOworICAg
ICAgICB9CisgICAgfQorCisgICAgQVNTRVJUKG1faGFuZGxlcy5pc0VtcHR5KCkpOworICAgIG1f
aGFuZGxlc0J5Q29ubmVjdGlvbi5jbGVhcigpOworICAgIG1fbG9ja01hcC5jbGVhcigpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCBiODU3Njc2OGIzNTVhY2IzYWEwYzM3MDM4Y2M1MWVjYzkzMmIzOTZjLi41MzU5ODk1ODEwZDg3
NDg1NjA5YTQwY2ZhNTM3MWNjNjllZWIwNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ci5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICBib29sIHJlbGVhc2VMb2NrRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVy
KTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGNsb3NlKCk7CisKICAgICBTdHJpbmcgbV9wYXRoOwog
ICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIG1fcmVnaXN0cnk7CiAgICAgSGFz
aE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBIYXNoU2V0PFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyPj4gbV9oYW5kbGVzQnlDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcAppbmRleCAyOTc4YTI1ZWYxMjUyNDcyY2NmMmU2ZjFkMzJmNTFiMDUxMDJm
MDYyLi5jNzVjNmYxMGY5YWYwYTU1OWJkZTIzZmI0NTAzOTM5NzY1NzA2YzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMzAsMTEgKzMwLDY4IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+Cisj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IHJl
YWRPcmlnaW5Gcm9tRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZp
bGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gb3JpZ2lu
RmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgYXV0byBjbG9zZUZpbGUgPSBtYWtlU2NvcGVF
eGl0KFsmXSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShvcmlnaW5GaWxlSGFuZGxl
KTsKKyAgICB9KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChvcmlnaW5G
aWxlSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gb3Jp
Z2luQ29udGVudCA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKG9yaWdpbkZpbGVIYW5kbGUp
OworICAgIGlmICghb3JpZ2luQ29udGVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcih7IG9yaWdpbkNvbnRlbnQt
PmRhdGEoKSwgb3JpZ2luQ29udGVudC0+c2l6ZSgpIH0pOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q2xpZW50T3JpZ2luPiBvcmlnaW47CisgICAgZGVjb2RlciA+PiBvcmlnaW47CisgICAg
cmV0dXJuIG9yaWdpbjsKK30KKworc3RhdGljIHZvaWQgd3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vz
c2FyeShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbikKK3sKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxl
U3lzdGVtOjpwYXJlbnRQYXRoKGZpbGVQYXRoKSk7CisgICAgYXV0byBvcmlnaW5GaWxlSGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6UmVhZFdyaXRlKTsKKyAgICBhdXRvIGNsb3NlRmlsZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG9yaWdpbkZpbGVIYW5kbGUpOworICAgIH0p
OworCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG9yaWdpbkZpbGVIYW5kbGUp
KSB7CisgICAgICAgIExPR19FUlJPUigid3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeTogRmFp
bGVkIHRvIG9wZW4gb3JpZ2luIGZpbGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IG9yaWdp
bjsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShvcmlnaW5GaWxlSGFuZGxlLCBlbmNvZGVy
LmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRlbGV0
ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIGF1
dG8gcGFyZW50UGF0aCA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoZmlsZVBhdGgpOworICAgIGF1
dG8gY2hpbGRyZW4gPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhcmVudFBhdGgpOworICAg
IGlmIChjaGlsZHJlbi5zaXplKCkgPT0gMSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShmaWxlUGF0aCk7Cit9CisKIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdl
cihzZXNzaW9uSUQsIHBhdGgpKTsKQEAgLTExNiw3ICsxNzMsNyBAQCBzdGF0aWMgU3RyaW5nIGVu
Y29kZShjb25zdCBTdHJpbmcmIHN0cmluZywgRmlsZVN5c3RlbTo6U2FsdCBzYWx0KQogICAgIHJl
dHVybiBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkpOwog
fQogCi1zdGF0aWMgU3RyaW5nIG9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIEZpbGVTeXN0ZW06OlNhbHQgc2FsdCkK
K3N0YXRpYyBTdHJpbmcgb3JpZ2luRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHJvb3RQYXRo
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgRmlsZVN5c3RlbTo6U2FsdCBz
YWx0KQogewogICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByb290
UGF0aDsKQEAgLTEyNiwxNSArMTgzLDMwIEBAIHN0YXRpYyBTdHJpbmcgb3JpZ2luUGF0aChjb25z
dCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yCiAgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMocm9vdFBhdGgsIHsg
ZW5jb2RlZFRvcE9yaWdpbiwgZW5jb2RlZE9wZW5pbmdPcmlnaW4gfSk7CiB9CiAKK3N0YXRpYyBT
dHJpbmcgb3JpZ2luRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJvcmln
aW4iX3MpOworfQorCiBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Ojpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgcmV0dXJu
ICptX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFsmXSB7Ci0gICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihvcmlnaW5QYXRoKG1f
cGF0aCwgb3JpZ2luLCBtX3NhbHQpKTsKKyAgICAgICAgYXV0byBvcmlnaW5EaXJlY3RvcnkgPSBv
cmlnaW5EaXJlY3RvcnlQYXRoKG1fcGF0aCwgb3JpZ2luLCBtX3NhbHQpOworICAgICAgICB3cml0
ZU9yaWdpblRvRmlsZUlmTmVjZXNzYXJ5KG9yaWdpbkZpbGVQYXRoKG9yaWdpbkRpcmVjdG9yeSks
IG9yaWdpbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
PihXVEZNb3ZlKG9yaWdpbkRpcmVjdG9yeSkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0K
IAordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2Vy
SWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBp
ZiAoYXV0byBpdGVyYXRvciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZmluZChvcmln
aW4pOyBpdGVyYXRvciAhPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7Cisg
ICAgICAgIGlmICghaXRlcmF0b3ItPnZhbHVlLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9s
b2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5yZW1vdmUoaXRlcmF0b3IpOworICAgIH0KK30KKwog
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnBlcnNpc3RlZChjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTMwNSw1
ICszNzcsMTU4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRIYW5kbGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpGaWxlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoaGFuZGxlLT5nZXRIYW5kbGUoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBXVEZNb3ZlKG5hbWUp
KSk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRl
RGF0YVR5cGUoY29uc3QgU3RyaW5nJiBzdG9yYWdlVHlwZSkKK3sKKyAgICBpZiAoc3RvcmFnZVR5
cGUgPT0gIkZpbGVTeXN0ZW0iKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpGaWxl
U3lzdGVtOworCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmZvckVhY2hPcmlnaW5EaXJlY3RvcnkoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSk+JiYgYXBwbHkpCit7CisgICAgZm9yIChhdXRvJiB0b3BPcmlnaW4g
OiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcGF0aCkpIHsKKyAgICAgICAgYXV0byB0b3BP
cmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9w
YXRoLCB0b3BPcmlnaW4pOworICAgICAgICBhdXRvIG9wZW5pbmdPcmlnaW5zID0gRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgICAgICBpZiAob3Blbmlu
Z09yaWdpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0
eURpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICBmb3IgKGF1dG8mIG9wZW5pbmdPcmlnaW4gOiBvcGVuaW5nT3Jp
Z2lucykgeworICAgICAgICAgICAgYXV0byBvcGVuaW5nT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRvcE9yaWdpbkRpcmVjdG9yeSwgb3Blbmlu
Z09yaWdpbik7CisgICAgICAgICAgICBhcHBseShvcGVuaW5nT3JpZ2luRGlyZWN0b3J5KTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0YXJnZXRUeXBlcykKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPj4gb3JpZ2luVHlwZXM7CisgICAgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShbJl0oYXV0
byBkaXJlY3RvcnkpIG11dGFibGUgeworICAgICAgICBhdXRvIG9yaWdpbiA9IHJlYWRPcmlnaW5G
cm9tRmlsZShvcmlnaW5GaWxlUGF0aChkaXJlY3RvcnkpKTsKKyAgICAgICAgaWYgKCFvcmlnaW4p
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChhdXRvJiBzdG9yYWdlVHlwZSA6
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5KSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gdHlwZSA9IHRvV2Vic2l0ZURhdGFUeXBlKHN0b3JhZ2VUeXBlKTsgdHlwZSAmJiB0YXJn
ZXRUeXBlcy5jb250YWlucygqdHlwZSkpCisgICAgICAgICAgICAgICAgb3JpZ2luVHlwZXMuYWRk
KG9yaWdpbi0+Y2xpZW50T3JpZ2luLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB7IH0pLml0
ZXJhdG9yLT52YWx1ZS5hZGQoKnR5cGUpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBWZWN0
b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBlbnRyaWVzOworICAgIGZvciAoYXV0byBbb3JpZ2luLCB0
eXBlc10gOiBvcmlnaW5UeXBlcykgeworICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IHR5cGVzKQor
ICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoeyBXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4s
IHR5cGUsIDAgfSB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gZW50cmllczsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBlbnRyaWVzID0gZmV0Y2hEYXRhRnJvbURpc2sodHlwZXMpOworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlbnRyaWVzID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZW50cmllcykpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCitWZWN0b3I8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmRlbGV0ZURhdGFPbkRpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYpPiYgZmlsdGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlZE9y
aWdpbnM7CisgICAgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShbJl0oYXV0byBkaXJlY3RvcnkpIG11
dGFibGUgeworICAgICAgICBhdXRvIGZpbGVQYXRoID0gb3JpZ2luRmlsZVBhdGgoZGlyZWN0b3J5
KTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSByZWFkT3JpZ2luRnJvbUZpbGUoZmlsZVBhdGgpOwor
ICAgICAgICBpZiAoIW9yaWdpbikgeworICAgICAgICAgICAgLy8gSWYgb3JpZ2luIGNhbm5vdCBi
ZSByZXRyaWV2ZWQsIGJ1dCB3ZSBhcmUgYXNrZWQgdG8gcmVtb3ZlIGRhdGEgZm9yIGFsbCBvcmln
aW5zLCByZW1vdmUgaXQuCisgICAgICAgICAgICBpZiAoZmlsdGVyKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiB7IH0pKSB7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKGRpcmVjdG9yeSwgbW9kaWZpZWRTaW5jZVRpbWUpOworICAgICAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZp
bHRlcigqb3JpZ2luKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkZWxldGVkT3Jp
Z2lucy5hcHBlbmQoKm9yaWdpbik7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
Km9yaWdpbikuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZVRpbWUpOworICAgICAgICBy
ZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoKm9yaWdpbik7CisgICAgICAgIGRl
bGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShmaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgfSk7CisKKyAgICByZXR1cm4g
ZGVsZXRlZE9yaWdpbnM7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBvcmlnaW5zID0gY3Jvc3NUaHJl
YWRDb3B5KG9yaWdpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4gb3JpZ2luU2V0OworICAgICAgICBvcmlnaW5TZXQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShvcmlnaW5zLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byBvcmlnaW4gOiBvcmlnaW5z
KQorICAgICAgICAgICAgb3JpZ2luU2V0LmFkZChXVEZNb3ZlKG9yaWdpbikpOworCisgICAgICAg
IGRlbGV0ZURhdGFPbkRpc2sodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgWyZvcmlnaW5T
ZXRdKGF1dG8gb3JpZ2luKSB7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2luU2V0LmNvbnRhaW5z
KG9yaWdpbi5jbGllbnRPcmlnaW4pOworICAgICAgICB9KTsKKworICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5j
ZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZVRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOwor
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCB0eXBlcywgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGRlbGV0ZURhdGFPbkRp
c2sodHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lLCBbXShhdXRvJikgeworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0pOworCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4mIGRvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKwor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgdHlwZXMsIGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gZGVsZXRlZE9yaWdpbnMgPSBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCAtV2FsbFRpbWU6
OmluZmluaXR5KCksIFsmZG9tYWluc10oYXV0byYgb3JpZ2luKSB7CisgICAgICAgICAgICBhdXRv
IGRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
SG9zdChvcmlnaW4uY2xpZW50T3JpZ2luLmhvc3QpOworICAgICAgICAgICAgcmV0dXJuIGRvbWFp
bnMuY29udGFpbnMoZG9tYWluKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVsZXRlZERvbWFpbnM7CisgICAgICAgIGZvciAoYXV0
byBvcmlnaW4gOiBkZWxldGVkT3JpZ2lucykgeworICAgICAgICAgICAgYXV0byBkb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2lu
LmNsaWVudE9yaWdpbi5ob3N0KTsKKyAgICAgICAgICAgIGRlbGV0ZWREb21haW5zLmFkZChkb21h
aW4pOworICAgICAgICB9CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGRlbGV0ZWREb21haW5zKSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGRvbWFpbnMpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNWJjNTZi
N2M2NDZjNmIxZmQ3YWQ2NGRkNDg3ZWRmNWRlYTYzOTM0YS4uZWYzNjY2MzE3YTUzMzdiYzQzNDlm
ZjNmNjY4ZmRhNjJjMzVmODNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMjgsMTAg
KzI4LDEyIEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3IuaCIKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1
ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBTaGFyZWRGaWxlSGFuZGxlOwpAQCAtNTUsMTMgKzU3LDIyIEBAIHB1Ymxp
YzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vi
c2l0ZURhdGE6OkVudHJ5PiYmKT4mJik7CisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVEYXRhTW9k
aWZpZWRTaW5jZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVE
b21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIH5O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxP
cmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICB2
b2lkIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBmaWxl
U3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5KCk7CiAKKyAgICB2b2lkIGZvckVhY2hPcmlnaW5E
aXJlY3RvcnkoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk+JiYpOworICAg
IFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IGZldGNoRGF0YUZyb21EaXNrKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+KTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBkZWxl
dGVEYXRhT25EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSwgY29uc3Qg
RnVuY3Rpb248Ym9vbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKT4mKTsKKwogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyIChpbXBsZW1lbnRlZCBieSBnZW5lcmF0ZWQgY29kZSkKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3Jp
Z2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA0ZjA2ZjQ1MjQ2NTY0NmQyMDExYmM3
ZjUzYmJkYjI4MTE1OTNhYTQzLi5kMzQzMTU5YzU3ZmU0NGM3Y2VkYTIyNWRiNDQwYzU4ZTYwZjA0
NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3Jp
Z2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5o
PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTEsMjAgKzU0LDYy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLT5jb25u
ZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24pOwogICAgIH0KIAotICAgIFN0cmluZyB0eXBlU3RvcmFn
ZVBhdGgoY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllcikgY29uc3QKKyAgICBlbnVtIGNs
YXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdCB7CisgICAgICAgIEZpbGVTeXN0ZW0sCisgICAgfTsK
KworICAgIHN0YXRpYyBTdHJpbmcgdG9TdG9yYWdlSWRlbnRpZmllcihTdG9yYWdlVHlwZSB0eXBl
KQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgU3RvcmFnZVR5
cGU6OkZpbGVTeXN0ZW06CisgICAgICAgICAgICByZXR1cm4gIkZpbGVTeXN0ZW0iX3M7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICIiX3M7CisgICAgfQorCisgICAgU3Ry
aW5nIHR5cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZSB0eXBlKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fcm9vdFBhdGguaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBzdG9yYWdlSWRlbnRpZmll
cik7CisgICAgICAgIGF1dG8gc3RvcmFnZUlkZW50aWZpZXIgPSB0b1N0b3JhZ2VJZGVudGlmaWVy
KHR5cGUpOworICAgICAgICBpZiAobV9yb290UGF0aC5pc0VtcHR5KCkgfHwgc3RvcmFnZUlkZW50
aWZpZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQ
YXRoLCBzdG9yYWdlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVS
ZWdpc3RyeSYgcmVnaXN0cnkpCiAgICAgewogICAgICAgICBpZiAoIW1fZmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyKQotICAgICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBtYWtl
VW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcj4odHlwZVN0b3JhZ2VQYXRoKCJGaWxlU3lz
dGVtIiksIHJlZ2lzdHJ5KTsKKyAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2Vy
ID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+KHR5cGVTdG9yYWdlUGF0aChT
dG9yYWdlVHlwZTo6RmlsZVN5c3RlbSksIHJlZ2lzdHJ5KTsKIAogICAgICAgICByZXR1cm4gKm1f
ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOwogICAgIH0KIAorICAgIGJvb2wgaXNBY3RpdmUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CisgICAg
fQorCisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVz
LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQorICAgICAgICAgICAgZGVsZXRl
RmlsZVN5c3RlbVN0b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKKworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShtX3Jvb3RQYXRoKTsKKyAgICB9CisKIHBy
aXZhdGU6CisgICAgdm9pZCBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEoV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZVRpbWUpCisgICAgeworICAgICAgICBpZiAobV9maWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXIpCisgICAgICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9IG51bGxwdHI7
CisKKyAgICAgICAgYXV0byBmaWxlU3lzdGVtU3RvcmFnZVBhdGggPSB0eXBlU3RvcmFnZVBhdGgo
U3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW0pOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxG
aWxlc01vZGlmaWVkU2luY2UoZmlsZVN5c3RlbVN0b3JhZ2VQYXRoLCBtb2RpZmllZFNpbmNlVGlt
ZSk7CisgICAgfQorCiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgU3RyaW5nIG1faWRlbnRp
ZmllcjsKICAgICBTdG9yYWdlQnVja2V0TW9kZSBtX21vZGUgeyBTdG9yYWdlQnVja2V0TW9kZTo6
QmVzdEVmZm9ydCB9OwpAQCAtNzQsNiArMTE5LDcgQEAgcHJpdmF0ZToKIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoKQogICAgIDogbV9wYXRo
KFdURk1vdmUocGF0aCkpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiB9CiAK
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjp+T3JpZ2luU3RvcmFnZU1hbmFnZXIoKSA9IGRlZmF1bHQ7
CkBAIC0xMDMsNSArMTQ5LDE1IEBAIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzCiAgICAgcmV0dXJu
IGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0cnkpOwogfQog
Citib29sIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIGRl
ZmF1bHRCdWNrZXQoKS5pc0FjdGl2ZSgpOworfQorCit2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlKQoreworICAgIGRlZmF1bHRCdWNrZXQoKS5kZWxldGVEYXRhKHR5cGVzLCBt
b2RpZmllZFNpbmNlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmgKaW5kZXggYTRjMTFhZDY1YTVjMTk3MDNhN2MwZTkyOTRiYzJmZWFhYTJmZmUyZS4u
ZGEzMTBjODYyMjgwYWZiNjIwOWE5MTFiNDVlZDM0NjYwZTlkYmMzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTI4LDEwICsyOCwxNSBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3Ry
dWN0IENsaWVudE9yaWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXI7CitlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogCiBjbGFzcyBPcmln
aW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00Mywx
MiArNDgsMTcgQEAgcHVibGljOgogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9wZXJzaXN0ZWQ7IH0KICAgICB2b2lkIHBlcnNpc3QoKTsKICAgICBGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZVJlZ2lzdHJ5Jik7CisgICAgYm9vbCBpc0FjdGl2ZSgpOworICAgIHZvaWQgZGVsZXRlRGF0YShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwogCiBwcml2YXRlOgogICAgIGVu
dW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNzIFN0b3JhZ2VCdWNr
ZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCisgICAgdm9pZCBjcmVh
dGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7Cisg
ICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3RyaW5nIG1fcGF0aDsK
ICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCBmMzcyOTAxMzhiNGZhZmYzMjM1
M2IyYWNkYWRlODM0MDBkYTljYzhhLi5mOWIyZmUwNDA5ZGM0MzBiMWQzZDNhZWIwMGU3NmIwMGIz
ZjA1NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGEuY3BwCkBAIC0xMjksNiArMTI5LDggQEAgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBXZWJz
aXRlRGF0YTo6b3duZXJQcm9jZXNzKFdlYnNpdGVEYXRhVHlwZSBkYXRhVHlwZSkKICAgICBjYXNl
IFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczoKICAgICAgICAgcmV0dXJuIFdl
YnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAjZW5kaWYKKyAgICBjYXNlIFdlYnNpdGVE
YXRhVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6Ok5ldHdvcms7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
VHlwZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBl
LmgKaW5kZXggN2E5ZTUwMGZlMWIwOWUzODk1ZGQ3NDNlMTY1Yzk4OTE4YmU3YThkYi4uZTQ1OWEw
OTAzOGE0OGExOTg2ZDZkMzM5NjY0MzMyODMzNzVhNDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKQEAgLTUyLDYgKzUyLDcg
QEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdCB7CiAjaWYgSEFWRShDRk5F
VFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKICAgICBBbHRlcm5hdGl2ZVNlcnZpY2VzID0gMSA8
PCAxOCwKICNlbmRpZgorICAgIEZpbGVTeXN0ZW0gPSAxIDw8IDE5LAogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkBAIC03OSwxMCArODAsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gewogI2VuZGlmCiAgICAgICAgIFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwKICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkRldmljZUlkSGFzaFNhbHQsCi0gICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHMKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50cywKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElW
RV9TRVJWSUNFKQotICAgICAgICAsIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2
ZVNlcnZpY2VzCisgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNl
cnZpY2VzLAogI2VuZGlmCisgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lz
dGVtCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggYzgyNjE2Zjc5MGM2ZmM2OTBh
NmNiZDY5N2EwZThlY2RhNTIyN2ZiMS4uZmExMTEzZTQ3YzJhNDQ0MTRiZDJhZGQxOTJkMDJlNzUw
N2YzMjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAgLTUxLDYgKzUxLDcgQEAgTlNTdHJpbmcgKiBj
b25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBl
Q3JlZGVudGlhbHMKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0
dHJpYnV0aW9ucyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucyI7CiBO
U1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1cmVtZW50
cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzIjsKIE5TU3Ry
aW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyA9IEAiX1dL
V2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyI7CitOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0gPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0
ZW0iOwogCiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0
YVR5cGVQbHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhIjsKQEAgLTEx
MCw2ICsxMTEsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5nKE5TU2V0ICpk
YXRhVHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50cyJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAi
QWx0ZXJuYXRpdmUgU2VydmljZXMiXTsKKyAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVj
dDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVj
dDpAIkZpbGUgU3lzdGVtIl07CiAKICAgICByZXR1cm4gW2FycmF5IGNvbXBvbmVudHNKb2luZWRC
eVN0cmluZzpAIiwgIl07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKaW5kZXggZGJj
NWYzZjdhMWZmNGZiNzQ5YWFmZDcwZTU3MGJhMDQ4NTY4YWNkNi4uOTE0NDhlZTFkNTUxZGU0MjA2
NTg2N2I4MTVkYmRmMWRlZmE3NWMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApA
QCAtNzcsNiArNzcsOCBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFU
eXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0cmluZyAqd2Vic2l0ZQogICAgIGlmIChbd2Vic2l0
ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNl
cnZpY2VzXSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2
aWNlczsKICNlbmRpZgorICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpf
V0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXSkKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRh
VHlwZTo6RmlsZVN5c3RlbTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkBAIC0xMzQs
NiArMTM2LDggQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaXRlRGF0
YVR5cGVzKE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXQKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpKQogICAg
ICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRl
cm5hdGl2ZVNlcnZpY2VzXTsKICNlbmRpZgorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSkpCisgICAgICAgIFt3a1dlYnNpdGVEYXRh
VHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dOwogCiAgICAgcmV0
dXJuIHdrV2Vic2l0ZURhdGFUeXBlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKaW5k
ZXggZDYwN2RmZTEzZjYxMmI1ODIyMGU1YTM1MjU3NzQ3MDUzMWVlNDkwNy4uMmNmOWE0ZDJhMGM3
ZmNlMjViNjUwNmFjMTdiZDcxMTE3Yzk3NTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRl
LmgKQEAgLTM3LDYgKzM3LDcgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlQ3JlZGVudGlhbHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygKIFdLX0VYVEVSTiBO
U1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBXS19FWFRFUk4gTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIFdLX0VYVEVSTiBOU1N0cmlu
ZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBX
S19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGUyYjA3MzY0
NjRiMTY2ZGQ5MjBjZjM1NTE3MWZiM2E1NjM3MGEzODQuLjdlZjA2OTUwYWIwN2QzZTFhNzYxNmNi
Y2I1OGJkMjU3ODUzNTllYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjQ4LDcgKzI0OCw4IEBAICsg
KE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRl
CiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywKICAgICAgICAgICAg
IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMsCiAgICAgICAgICAgICBfV0tX
ZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMsCi0gICAgICAgICAgICBfV0tX
ZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzCisgICAgICAgICAgICBfV0tXZWJzaXRl
RGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzLAorICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFU
eXBlRmlsZVN5c3RlbQogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAgICAgICAgICAgICAsIF9XS1dl
YnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjEyMDRlM2M0M2JiODZhZWQ0NmIzYzUx
MTAzNTM4ZWE1NzJiOGQ4MC4uNTViOGQzZTAxNTNkZDAwOTA3ZDhjZDg0MDljYzNiYjAwY2Q0NTVk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDk3LDYgKzE0OTcsOSBAQAogCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLzsgfTsKIAkJOTNENkI3QjkyNTUzNEEx
NzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0I3MjU1MzRB
MTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUx
QkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBf
V0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTNFNzk5ODUyNzU2RkE1NTAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U3OTk4MjI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNF
Nzk5ODcyNzU2RkFCNDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1l
c3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNFNzk5ODMyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQk5M0U3OTk4ODI3NTZGQUMyMDA3NDAw
OEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgxMjc1NkZBNTMwMDc0
MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9Owog
CQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUz
MTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0
RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VE
ZXZpY2VPYnNlcnZlci5oICovOyB9OwogCQk5NTY1MDgzOTI2RDg3QTJCMDBFMTVDQjcgLyogQXBw
bGVNZWRpYVNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NTY1MDgzNzI2RDg3QTJCMDBFMTVDQjcgLyogQXBwbGVNZWRpYVNlcnZpY2Vz
U1BJLmggKi87IH07CkBAIC01MjkwLDYgKzUyOTMsMTAgQEAKIAkJOTNENkI3QjcyNTUzNEExMTAw
NThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2QjdCODI1NTM0QTEy
MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0
RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0U3OTk3RTI3NTZGNjcwMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNFNzk5ODEyNzU2RkE1MzAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5ODMyNzU2RkE1NDAw
NzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUI1MUUzMTc0REEwMDBFNzIzOSAv
KiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTW91c2VEZXZpY2VP
YnNlcnZlci5oOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NjUsNiArMTA1NzIsNyBAQAogCQkJCUJDMDMyRDY4MTBG
NDM3OEQwMDU4QzE1QSAvKiBXZWJFZGl0b3JDbGllbnQuaCAqLywKIAkJCQk5MzU0MjQyQjI3MDNC
RENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLywKIAkJ
CQk5MzU0MjQyQTI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLmggKi8sCisJCQkJOTNFNzk5N0UyNzU2RjY3MDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUE1ODExMkY0RkJCMDAz
MzdCQUIgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDZBMTBGNDM3
OEQwMDU4QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5oICovLAogCQkJCUJDMUJFMURGMTJE
NTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgKi8sCkBAIC0xMjAzOSw2
ICsxMjA0Nyw5IEBACiAJCQkJRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovLAogCQkJCUUzODY2QjA0MjM5OTk3
OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUzODY2QjA1MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTkz
RTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTkzRTc5OTgxMjc1NkZBNTMwMDc0MDA4QSAvKiBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovLAorCQkJCTkzRTc5OTgz
Mjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdl
c1JlcGxpZXMuaCAqLywKIAkJCQlDRDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyogV2ViRnVsbFNj
cmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUNENzNCQTQ5MTMxQUNEOEUw
MEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJQ0Q3M0JB
NDUxMzFBQ0M4ODAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLApAQCAtMTI0NDksOCArMTI0NjAsOCBAQAogCQkJCTUxNjBFOTVFMjc0QzJB
MDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNjBFOTU5Mjc0QzBEODkwMDU2NzM4OCAvKiBQdXNoQXBwQnVuZGxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUY3QkI3QjI3NDRDNTA3MDBDNDVBNzIgLyogUHVzaENsaWVudENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxN0I1RjJGMjc1NzM4MkIwMDJEQzIyRCAvKiBXZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkNE
NjlGMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTdCNUYyRjI3NTczODJCMDAyREMyMkQgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEzMjg2LDYgKzEzMjk3LDggQEAKIAkJCQlC
QzAzMkRCQjEwRjQzODBGMDA1OEMxNUEgLyogV2ViRXZlbnRDb252ZXJzaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzExMUI1RDExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzU0MjQyQzI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0U3OTk4ODI3NTZG
QUMyMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzRTc5OTg3Mjc1NkZBQjQwMDc0MDA4QSAvKiBXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOTBDMUVFMTI2NEZENTAwMDNFNDRENCAvKiBXZWJGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNFNDY5NTQxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1DbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDRTQ2OTU2MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlz
c2lvbkxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTMzOTgsNiArMTM0MTEsNyBA
QAogCQkJCTFBMUUwOTM0MTg4NjFEMzgwMEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlEMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQ
cm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkNENjk4MjcyMUVGQzgwMEY3
RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3
QjVGMkUyNzU3MzgyQTAwMkRDMjJEIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQ0Q2OUEyNzIxRjBBOTAwRjdGOEVDIC8qIFdl
YlB1c2hEYWVtb25Db25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2MUNDQ0E2MjMxNDg1
QUEwMEI2NTlCOSAvKiBXZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NjBFNzEyMzBGNjdGQzAwNDYxQUFFIC8qIFdlYlJlc291cmNlSW50ZXJjZXB0Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzU0OCw3ICsxMzU2Miw2IEBACiAJCQkJNUM3OTVE
NzAyMjlGMzczRjAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUM3OTVENzEyMjlGMzc1NzAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVt
ZW50SW5mb1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTU1NUY2MTI4QzZDNDcwMDlB
QkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE3QjVGMkUy
NzU3MzgyQTAwMkRDMjJEIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNTU2MDExMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4
dE1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRUEwMjM4MURBQkZGN0UwMDk2
MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzkz
OEUxMTE4MERFNDQwMDg1RTVGRSAvKiBXS0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
QEAgLTE1MzgwLDYgKzE1MzkzLDcgQEAKIAkJCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTM4NjZCMDkyMzk5QTJENTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc4OTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTNFNzk5ODUyNzU2RkE1NTAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDczQkE0RTEzMUFD
REI3MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNDcxMzFBQ0M5QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMw
RTYwNjExMkQ2QkE5MTAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3
YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLjk0ZDlkMmNjM2ViMjg4MGNk
Y2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
MzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiV2ViQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJG
cmFtZS5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUg
IldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCkBAIC0xMTksNiArMTIxLDEwIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJSVENNb25pdG9yOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyZWNkY2Y3ZDlkNTE1N2NmODNiYmIy
NDMzNDBlYWU4ZjM1N2NiNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworbWVzc2FnZXMgLT4gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIE5vdFJl
ZkNvdW50ZWQgeworICAgIEludmFsaWRhdGVBY2Nlc3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3Rl
bVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGRhYTlkNzRmMGE3ODJhMjky
NzIzOThiY2FiYTdhNTNhNmFkNzU0Zi4uMTM3NDljZjA0OWQyYjMwZTEzOGE5ZjFjNThkMjU2ZWEw
MjhkMGQ4NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCByZW1vdmUgZmlsZSBzeXN0ZW0gZGF0YSB2aWEg
V0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM1NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFj
Y2Vzcy5tbToKKwogMjAyMS0xMi0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
IAogICAgICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBzaG91bGQgYmUgaW52YWxpZGF0
ZWQgd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tCmluZGV4IDdi
YmUzYzlmNjJjMWQ5N2MzMTk1NTJhMTkwM2Q5MTVhZDVmN2EyMWEuLjJkNDNkNTM4NzgxNzJhYjk1
OTNjNDBlNjM5YjY4MjRkYzRhY2ZmZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0KQEAgLTI5LDExICsy
OSwxMyBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQg
IlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1By
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oPgog
CiBAaW50ZXJmYWNlIEZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogQGVuZApAQCAtNDgsNyArNTAsNyBAQCAtICh2b2lkKXVz
ZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVu
dENvbnRyb2xsZXIgZAogCiBAZW5kCiAKLXN0YXRpYyBOU1N0cmluZyAqbWFpbkZyYW1lU3RyaW5n
ID0gQCI8c2NyaXB0PiBcCitzdGF0aWMgTlNTdHJpbmcgKndvcmtlckZyYW1lU3RyaW5nID0gQCI8
c2NyaXB0PiBcCiAgICAgZnVuY3Rpb24gc3RhcnQoKSB7IFwKICAgICAgICAgdmFyIHdvcmtlciA9
IG5ldyBXb3JrZXIoJ3dvcmtlci5qcycpOyBcCiAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkgeyBcCkBAIC0xMTUsNyArMTE3LDcgQEAgVEVTVChGaWxlU3lzdGVtQWNj
ZXNzLCBXZWJQcm9jZXNzQ3Jhc2hEdXJpbmdXcml0ZSkKICAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAid2Via2l0
Il07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0
cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJd
XTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp3b3JrZXJGcmFtZVN0cmluZyBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicGFnZSBpcyBs
b2FkZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwpAQCAtMTI2LDcgKzEyOCw3IEBAIFRF
U1QoRmlsZVN5c3RlbUFjY2VzcywgV2ViUHJvY2Vzc0NyYXNoRHVyaW5nV3JpdGUpCiAgICAgRVhQ
RUNUX1dLX1NUUkVRKEAic3VjY2Vzczogd3JpdGUgMTAgYnl0ZXMiLCBbbGFzdFNjcmlwdE1lc3Nh
Z2UgYm9keV0pOwogCiAgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbc2Vjb25kV2ViVmlldyBsb2FkSFRN
TFN0cmluZzptYWluRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndl
YmtpdDovL3dlYmtpdC5vcmciXV07CisgICAgW3NlY29uZFdlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
d29ya2VyRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndlYmtpdDov
L3dlYmtpdC5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNj
cmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogICAgIEVY
UEVDVF9XS19TVFJFUShAInBhZ2UgaXMgbG9hZGVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHld
KTsKQEAgLTE2OCw3ICsxNzAsNyBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIE5ldHdvcmtQcm9j
ZXNzQ3Jhc2hEdXJpbmdXcml0ZSkKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAid2Via2l0Il07CiAKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzp3b3JrZXJGcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicGFnZSBpcyBsb2FkZWQiLCBbbGFz
dFNjcmlwdE1lc3NhZ2UgYm9keV0pOwpAQCAtMjU4LDQgKzI2MCwxOTEgQEAgVEVTVChGaWxlU3lz
dGVtQWNjZXNzLCBNaWdyYXRlVG9OZXdTdG9yYWdlRGlyZWN0b3J5KQogICAgIEVYUEVDVF9XS19T
VFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIH0KIAor
c3RhdGljIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gQCI8c2NyaXB0PiBcCisgICAgYXN5bmMgZnVu
Y3Rpb24gb3BlbihzaG91bGRDcmVhdGVGaWxlKSBcCisgICAgeyBcCisgICAgICAgIHRyeSB7IFwK
KyAgICAgICAgICAgIHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9yLnN0b3JhZ2UuZ2V0
RGlyZWN0b3J5KCk7IFwKKyAgICAgICAgICAgIHZhciBmaWxlSGFuZGxlID0gYXdhaXQgcm9vdEhh
bmRsZS5nZXRGaWxlSGFuZGxlKCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0JywgeyAnY3JlYXRlJyA6
IHNob3VsZENyZWF0ZUZpbGUgfSk7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdmaWxlIGlzIG9wZW5lZCcpOyBcCisg
ICAgICAgIH0gY2F0Y2goZXJyKSB7IFwKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlcnJvcjogJyArIGVyci5uYW1lICsg
JyAtICcgKyBlcnIubWVzc2FnZSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgb3Blbih0
cnVlKTsgXAorICAgIDwvc2NyaXB0PiI7CisKK1RFU1QoRmlsZVN5c3RlbUFjY2VzcywgRmV0Y2hB
bmRSZW1vdmVEYXRhKQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tGaWxlU3lzdGVt
QWNjZXNzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byB3ZWJz
aXRlRGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV07CisgICAgYXV0
byB0eXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0
ZW1dOworCisgICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGRhdGEuCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2lu
Y2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOwor
ICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVm
ZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNz
YWdlIGJvZHldKTsKKworICAgIC8vIEZldGNoIGRhdGEgYW5kIHJlbW92ZSBpdCBieSBvcmlnaW4u
CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAx
dSk7CisgICAgICAgIGF1dG8gcmVjb3JkID0gW3JlY29yZHMgb2JqZWN0QXRJbmRleDowXTsKKyAg
ICAgICAgRVhQRUNUX1NUUkVRKCJ3ZWJraXQub3JnIiwgW3JlY29yZC5kaXNwbGF5TmFtZSBVVEY4
U3RyaW5nXSk7CisKKyAgICAgICAgLy8gUmVtb3ZlIGRhdGEuCisgICAgICAgIFt3ZWJzaXRlRGF0
YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIGZvckRhdGFSZWNvcmRzOnJlY29yZHMgY29t
cGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgLy8g
RmV0Y2ggZGF0YSBhZnRlciByZW1vdmFsLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0
ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBF
WFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIC8vIEZpbGUgY2Fubm90IGJlIG9wZW5lZCBhZnRlciBkYXRhIHJlbW92YWwuCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAib3BlbihmYWxzZSkiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlw
dE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVD
VF9XS19TVFJFUShAImVycm9yOiBOb3RGb3VuZEVycm9yIC0gVGhlIG9iamVjdCBjYW4gbm90IGJl
IGZvdW5kIGhlcmUuIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKK30KKworVEVTVChGaWxl
U3lzdGVtQWNjZXNzLCBSZW1vdmVEYXRhQnlNb2RpZmljYXRpb25UaW1lKQoreworICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW1tGaWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpA
InRlc3RIYW5kbGVyIl07CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5fZmlsZVN5c3RlbUFjY2Vzc0VuYWJsZWQgPSBZ
RVM7CisgICAgcHJlZmVyZW5jZXMuX3N0b3JhZ2VBUElFbmFibGVkID0gWUVTOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6dGVzdFN0cmluZyBiYXNlVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmaWxlIGlzIG9wZW5lZCIsIFts
YXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBb
Y29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXTsKKyAgICBhdXRvIHR5cGVzID0gW05TU2V0
IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV07CisgICAgZG9uZSA9
IGZhbHNlOworICAgIF9fYmxvY2sgTlNVSW50ZWdlciByZWNvcmRzQ291bnQ7CisgICAgW3dlYnNp
dGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAg
cmVjb3Jkc0NvdW50ID0gcmVjb3Jkcy5jb3VudDsKKyAgICAgICAgRVhQRUNUX0dUKHJlY29yZHND
b3VudCwgMHUpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRl
RGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBu
b3ddIGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICAgICAgcmVjb3Jkc0NvdW50
ID0gcmVjb3Jkcy5jb3VudDsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCBy
ZWNvcmRzQ291bnQpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0g
ZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAg
ICAgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29t
cGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMp
IHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAwdSk7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKK30KKworc3RhdGljIE5TU3RyaW5nICptYWluRnJhbWVTdHJpbmcg
PSBAIjxzY3JpcHQ+IFwKKyAgICBmdW5jdGlvbiBwb3N0UmVzdWx0KGV2ZW50KSBcCisgICAgeyBc
CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKGV2ZW50LmRhdGEpOyBcCisgICAgfSBcCisgICAgYWRkRXZlbnRMaXN0ZW5lcignbWVz
c2FnZScsIHBvc3RSZXN1bHQsIGZhbHNlKTsgXAorICAgIDwvc2NyaXB0PiBcCisgICAgPGlmcmFt
ZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvJz4iOworCitzdGF0aWMgY29uc3QgY2hhciog
ZnJhbWVCeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorPHNjcmlwdD4KK2Z1bmN0aW9uIHBvc3RNZXNz
YWdlKG1lc3NhZ2UpCit7CisgICAgcGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsICcqJyk7Cit9
Cithc3luYyBmdW5jdGlvbiBvcGVuKCkKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgcm9vdEhh
bmRsZSA9IGF3YWl0IG5hdmlnYXRvci5zdG9yYWdlLmdldERpcmVjdG9yeSgpOworICAgICAgICB2
YXIgZmlsZUhhbmRsZSA9IGF3YWl0IHJvb3RIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnZmlsZS1zeXN0
ZW0tYWNjZXNzLnR4dCcsIHsgJ2NyZWF0ZScgOiB0cnVlIH0pOworICAgICAgICBwb3N0TWVzc2Fn
ZSgnZmlsZSBpcyBvcGVuZWQnKTsKKyAgICB9IGNhdGNoKGVycikgeworICAgICAgICBwb3N0TWVz
c2FnZSgnZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2UpOworICAgIH0K
K30KK29wZW4oKTsKKzwvc2NyaXB0PgorKVRFU1RSRVNPVVJDRSI7CisKK1RFU1QoRmlsZVN5c3Rl
bUFjY2VzcywgRmV0Y2hEYXRhRm9yVGhpcmRQYXJ0eSkKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IGZyYW1lQnl0ZXMgfSB9LAorICAg
IH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwg
bnVsbHB0ciwgOTA5MSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFk
b3B0TlMoW1tGaWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gcHJl
ZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMu
X2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9zdG9yYWdl
QVBJRW5hYmxlZCA9IFlFUzsKKworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFtjb25maWd1
cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdOworICAgIGF1dG8gdHlwZXMgPSBbTlNTZXQgc2V0V2l0
aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKKyAgICBkb25lID0gZmFsc2U7
CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgbW9kaWZpZWRT
aW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgc2V0
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNh
dGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAg
ICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VS
TENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
c2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246WyZdKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9u
LCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7Cisg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7Cisg
ICAgfV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWluRnJhbWVTdHJp
bmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZyJdXTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cisg
ICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAi
ZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworCisgICAgZG9uZSA9
IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5
cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpy
ZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAxdSk7CisgICAgICAg
IGF1dG8gcmVjb3JkID0gW3JlY29yZHMgb2JqZWN0QXRJbmRleDowXTsKKyAgICAgICAgRVhQRUNU
X1NUUkVRKCIxMjcuMC4wLjEiLCBbcmVjb3JkLmRpc3BsYXlOYW1lIFVURjhTdHJpbmddKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445724</attachid>
            <date>2021-12-02 09:08:22 -0800</date>
            <delta_ts>2021-12-02 10:37:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211202090821.patch</filename>
            <type>text/plain</type>
            <size>69620</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY1NjE4Yjc3ZWI3MzRlNWYxNzcyMjM5
MGQwYWI4YjZhZGFmMjEwMDIuLjA1NTk5NTMxMmQ3YjY1ZmIyYWJlOWQ1NzFiNDk1OWJmZTQ3MTdj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMDEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTEyLTAxICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIE9TQWxsb2NhdG9yOjpyZXNl
cnZlVW5jb21taXR0ZWRBbGlnbmVkIHNob3VsZCB1c2UgYWxpZ25lZCBhbGxvY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGNlYzE1MmMxZjcwNjcxZGZiZjdjZGEyYzA1NzQ3Njg0MzE0ZjA0YjkuLjRlYzQ5MjJk
NTZjZWM5ZjhjZTAzZDUxYTkzZTA3NTQ5NDg3NTU0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODgg
QEAKKzIwMjEtMTItMDEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVEYXRhU3Rv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZSBhIG5ldyBXZWJzaXRlRGF0YVR5cGUgdmFsdWUgRmlsZVN5c3RlbSBmb3IgRmlsZVN5c3Rl
bUFjY2VzcyBkYXRhLiBOZXR3b3JrIHByb2Nlc3Mgbm93IGNhbiBmZXRjaCBhbmQgCisgICAgICAg
IGRlbGV0ZSB0aGlzIHR5cGUgb2YgZGF0YSB3aGVuIGZldGNoaW5nIGFuZCBkZWxldGVpbmcgd2Vi
c2l0ZSBkYXRhIChpZiBGaWxlU3lzdGVtIHR5cGUgaXMgaW5jbHVkZWQgaW4gdGFyZ2V0CisgICAg
ICAgIHR5cGVzKS4KKworICAgICAgICBUbyB0cmFjayBvcmlnaW5zIHRoYXQgaGF2ZSBGaWxlU3lz
dGVtIGRhdGEsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlIG5hbWVkIG9yaWdpbiBp
biB0aGUgb3JpZ2luJ3MgCisgICAgICAgIGRpcmVjdG9yeS4gVGhpcyBmaWxlIHdpbGwgYmUgY3Jl
YXRlZCB3aGVuIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVG8g
ZGVsZXRlIGV4aXN0aW5nIEZpbGVTeXN0ZW0gZGF0YSwgbmV0d29yayBwcm9jZXNzIGZpbmRzIG9y
aWdpbnMgdGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlIGRlbGV0ZWQgYW5kIGhhdmUgZGF0YSAKKyAg
ICAgICAgb24gZGlzaywgY2xvc2VzIGFjdGl2ZSBhY2Nlc3MgaGFuZGxlcywgYW5kIGRlbGV0ZXMg
dGhlIGZpbGVzLiBUaGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3ZlIHdpbGwgYmUgZGVsZXRl
ZCBpZiAKKyAgICAgICAgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0IGluIHRoZSBzYW1lIGRp
cmVjdG9yeSwgYW5kIGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVsZXRlZC4KKworICAgICAg
ICBOZXcgQVBJIHRlc3RzOiBGaWxlU3lzdGVtQWNjZXNzLkZldGNoQW5kUmVtb3ZlRGF0YQorICAg
ICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtQWNjZXNzLlJlbW92ZURhdGFCeU1vZGlmaWNh
dGlvblRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbUFjY2Vzcy5GZXRjaERh
dGFGb3JUaGlyZFBhcnR5CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Om1vbml0b3JlZERhdGFUeXBlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUu
aDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmFjdGl2ZVN5bmNB
Y2Nlc3NIYW5kbGUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOjp+RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnJlYWRPcmlnaW5Gcm9tRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlT3JpZ2lu
VG9GaWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpkZWxldGVPcmlnaW5GaWxlSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6b3JpZ2luRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3Nz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRT
aW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Om9yaWdpblBhdGgpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9y
YWdlQnVja2V0Ojp0b1N0b3JhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnR5cGVTdG9yYWdlUGF0aCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVGaWxlU3lzdGVt
U3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVs
ZXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MpOgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNU
b1N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNp
dGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlXSk6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAyMS0xMi0wMSAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBzaG91
bGQgYmUgaW52YWxpZGF0ZWQgd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAppbmRleCA2NGJhYzZiNmI3MDAxNjEwYjUzZjJlMWQzMDkyNjdiZDVhNDBmNTM4Li5m
NjkwNDkyOGVmNTViMGFiODFlNjAwNTBiMzkzYWRjNGM3OTkxNjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtNTE0LDYgKzUxNCw2MCBAQCBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VT
YWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gc2FsdDsKIH0KIAorc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVt
OjpmaWxlU2l6ZShoYW5kbGUpLnZhbHVlX29yKDApOworICAgIGlmICghc2l6ZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHVuc2lnbmVkIGJ5dGVzVG9SZWFkOworICAgIGlm
ICghV1RGOjpjb252ZXJ0U2FmZWx5KHNpemUsIGJ5dGVzVG9SZWFkKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQp
OworICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxl
KGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKHRvdGFsQnl0
ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2Uo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCit7CisgICAgLy8gVGhpcyBm
dW5jdGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCisgICAgaWYgKHRpbWUgPT0gLVdh
bGxUaW1lOjppbmZpbml0eSgpKSB7CisgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGRp
cmVjdG9yeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoaWxkcmVuID0g
bGlzdERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJl
bikgeworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAgYXV0byBjaGlsZFR5cGUgPSBm
aWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxkVHlwZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIHN3aXRjaCAoKmNoaWxkVHlwZSkgeworICAgICAgICBjYXNl
IEZpbGVUeXBlOjpSZWd1bGFyOiB7CisgICAgICAgICAgICBpZiAoYXV0byBtb2RpZmljYXRpb25U
aW1lID0gRmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY2hpbGRQYXRoKTsgbW9kaWZp
Y2F0aW9uVGltZSAmJiAqbW9kaWZpY2F0aW9uVGltZSA+PSB0aW1lKQorICAgICAgICAgICAgICAg
IGRlbGV0ZUZpbGUoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsZVR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAgICAgIGRlbGV0ZUFsbEZp
bGVzTW9kaWZpZWRTaW5jZShjaGlsZFBhdGgsIHRpbWUpOworICAgICAgICAgICAgZGVsZXRlRW1w
dHlEaXJlY3RvcnkoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEZpbGVUeXBlOjpTeW1ib2xpY0xpbms6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7
Cit9CisKICNpZiBIQVZFKFNURF9GSUxFU1lTVEVNKSB8fCBIQVZFKFNURF9FWFBFUklNRU5UQUxf
RklMRVNZU1RFTSkKIAogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggOTk2YmMwYjZmN2RhOGFkZDBhNmU1YjkxN2FjODZjZWM1
YWY3MDlhNC4uZmQ4NTNhNDlhYWM4ZGMwMWYzMTU3MDRjZTQ5ZDczNDY1YWUwNTY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaApAQCAtMTA4LDYgKzEwOCw3IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUg
ewogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJp
bmcmLCBXYWxsVGltZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNv
bnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsg
Ly8gRm9sbG93cyBzeW1saW5rcy4KQEAgLTE0Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hh
bmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5k
bGUgIT0gaQogCiB1c2luZyBTYWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3
aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBh
dGguCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9
IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggMzU5
YzI0Njc4MGY5NjUyNDkyYzUwZTFlOGY1NGY5MDRjYTc4OTY5ZC4uNzc2ZTEzY2E1ZWI2NDc5Nzk0
M2VmM2JjNDg1M2EzMWRkZWRmYjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5k
ZXggODJhYTVmMjJkZDcyMGMxOTE4NDZhOTQyYTM5MTRjYmZlYWM4NmM3ZS4uNGRlZmU0ZWRmMmNm
YWU3ZjIyYWM0NDZhZjk3Njg2ZTk5ZjkxODk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0zMDgs
NiArMzA4LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyCiAKICAgICBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeQorICAgIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uCiAgICAgV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KIAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGE3ODk3Yjk2MWEzOWRhZjkyN2M1NGQxMmVm
YTNjODk3MTQ5N2IwMmYuLmRiZWQyMzYyMTEwYTc3OTEzYTU5ZWVlNjE1ZTNkYjRlZWNmMmQ3NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAg
LTIxOSw2ICsyMTksNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcwogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOTNhNjE0NmQ2YjEzOWNiOGExNmEx
NzFiYjc3ZDQ0YmQzYjU4YjY1Yi4uYzc4N2EwM2Q3Yzc3YTA3Njk1MmRkY2QwOWNlMjBlM2I1ZDg4
ZDYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CkBAIC00OTAsNiArNDkwLDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck0KICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRnVsbFNj
cmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0NTc0
Mzg2NWE0YWM4MzJkM2U1ZGJkNGFmZDQzOGJkNzUzMmNkOTIzLi4xMDFjYjNjZTcxNGUzZWY4ZDY0
ZTU3MDY0YTI0NTZhMmRlNjdjMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0y
MjAsNiArMjIwLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9XZWJSVENSZXNvbHZlciBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciBcCisJV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKIAlXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkZTc2NWRlNDUw
NzFmNDFmM2ZjNGQ0Njk3MDUzODE2ZTE4OTllYmZhLi43MGI1YWZkYTUyNmU5OTA5Yjk2MmQ3MTIx
M2Q4NWI2MGI1MzcxODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtNzQsNiArNzQsNyBAQCBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucywKICNlbmRpZgorICAgICAgICBXZWJzaXRlRGF0YVR5cGU6
OkZpbGVTeXN0ZW0sCiAgICAgfSkpOwogCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggNjY2YmNjMWIyMWI5NWQwODkyYjJmMjNmZGMxMjlmYmFlNjFmZTMyMS4uYjM3MjU1NjExOTg3
ZWVlMTU4YmNiNDMwZTlmNWNmYmNkZDY0OTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE1NTQsNiArMTU1NCwxMiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAo
YXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0
b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVl
LT5mZXRjaERhdGEod2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBl
bnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJz
aXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGVudHJpZXMpKTsKKyAgICAgICAg
fSk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNp
dGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE2MjgsNiArMTYzNCw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpCiAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJBbHRlcm5h
dGl2ZVNlcnZpY2VzKG1vZGlmaWVkU2luY2UpOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGF1
dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9y
ICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKQorICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRl
bGV0ZURhdGFNb2RpZmllZFNpbmNlKHdlYnNpdGVEYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVF
bnRyaWVzKE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlP
cmlnaW5EYXRhPiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMTczNSw2ICsxNzQ0LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8K
ICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdl
cnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkK
KyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIG9y
aWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisKICAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAg
IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZU5ldHdv
cmtEYXRhRm9yOwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykK
QEAgLTE5NTgsNiArMTk3MCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0
cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICB9
KTsKICAgICB9CiAKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZp
bmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAg
ICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHdl
YnNpdGVEYXRhVHlwZXMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9y
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGRlbGV0ZWREb21haW5zKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBkb21haW4gOiBkZWxldGVkRG9tYWlucykKKyAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoV1RGTW92ZShkb21haW4pKTsK
KyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byBkYXRhVHlwZXNGb3JVSVByb2Nlc3MgPSBX
ZWJzaXRlRGF0YTo6ZmlsdGVyKHdlYnNpdGVEYXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJKTsKICAgICBpZiAoIWRhdGFUeXBlc0ZvclVJUHJvY2Vzcy5pc0VtcHR5KCkgJiYgIWRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSkgewogICAg
ICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+Jik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0gKGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7CkBAIC0yMDc0LDYgKzIwOTMsMTIg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9CisKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQo
c2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAg
ICAgaXRlcmF0b3ItPnZhbHVlLT5mZXRjaERhdGEod2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNr
QWdncmVnYXRvcl0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGVu
dHJpZXMpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogI2VuZGlmIC8vIEVOQUJMRShJTlRFTExJ
R0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCmlu
ZGV4IGZiOTI5ODE0MWIwZGJjMzgxZmE4YjNiMzgxN2U2OGNhMDE4OTc5ZGEuLjQ3MzM4ZWZlNTM4
MjJhNzZhNTQ4NGYyOWM5MzU3Njc4ZjQwMTg4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZS5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZv
ID0gc3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgSVBDOjpTaGFyZWRGaWxlSGFuZGxlPjsKICAgICBFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZv
LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7CiAgICAg
c3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjbG9zZShXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyPiBhY3RpdmVTeW5jQWNj
ZXNzSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlOyB9CiAK
IHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlcXVlc3RDcmVhdGVIYW5kbGUoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgVHlwZSwgU3RyaW5nJiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vz
c2FyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDM4YWEyNjU1YzM5
ZGRjMjM3YmE1YTM4MGE1ZDU0OTEyNDJjMzdmNTEuLjI5Y2ZiMGM2YjM3M2EyNWZmMDFjY2U4NjMz
Yzk1ZTU2YjFhY2I3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC00Miw4ICs0Myw3IEBAIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6fkZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcigpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1faGFuZGxlcy5rZXlzKCkpCi0gICAgICAgIG1f
cmVnaXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKyAgICBjbG9zZSgpOwogfQog
CiBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVIYW5kbGUoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZTo6VHlwZSB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlm
TmVjZXNzYXJ5KQpAQCAtMTQ5LDQgKzE0OSwyNCBAQCBib29sIEZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlcjo6cmVsZWFzZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6Rgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNs
b3NlKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGZvciAoYXV0
byYgW2Nvbm5lY3Rpb25JRCwgaWRlbnRpZmllcnNdIDogbV9oYW5kbGVzQnlDb25uZWN0aW9uKSB7
CisgICAgICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAg
ICAgIGF1dG8gdGFrZW5IYW5kbGUgPSBtX2hhbmRsZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKworICAgICAg
ICAgICAgLy8gU2VuZCBtZXNzYWdlIHRvIHdlYiBwcm9jZXNzIHRvIGludmFsaWRhdGUgYWN0aXZl
IHN5bmMgYWNjZXNzIGhhbmRsZS4KKyAgICAgICAgICAgIGlmIChhdXRvIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIgPSB0YWtlbkhhbmRsZS0+YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSgpKQorICAgICAg
ICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludmFsaWRhdGVBY2Nlc3NIYW5kbGUoKmFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VS
VChtX2hhbmRsZXMuaXNFbXB0eSgpKTsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24uY2xlYXIo
KTsKKyAgICBtX2xvY2tNYXAuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYjg1NzY3NjhiMzU1YWNiM2FhMGMzNzAz
OGNjNTFlY2M5MzJiMzk2Yy4uNTM1OTg5NTgxMGQ4NzQ4NTYwOWE0MGNmYTUzNzFjYzY5ZWViMDYz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaApAQCAtNDksNiArNDksOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCByZWxlYXNlTG9ja0ZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBj
bG9zZSgpOworCiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5OwogICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgSGFzaFNldDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcj4+IG1faGFu
ZGxlc0J5Q29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMjk3OGEy
NWVmMTI1MjQ3MmNjZjJlNmYxZDMyZjUxYjA1MTAyZjA2Mi4uYzc1YzZmMTBmOWFmMGE1NTliZGUy
M2ZiNDUwMzkzOTc2NTcwNmM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMw
LDExICszMCw2OCBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRl
IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiByZWFkT3JpZ2luRnJvbUZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIG9yaWdpbkZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOwor
ICAgIGF1dG8gY2xvc2VGaWxlID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUob3JpZ2luRmlsZUhhbmRsZSk7CisgICAgfSk7CisKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQob3JpZ2luRmlsZUhhbmRsZSkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIG9yaWdpbkNvbnRlbnQgPSBGaWxlU3lzdGVtOjpy
ZWFkRW50aXJlRmlsZShvcmlnaW5GaWxlSGFuZGxlKTsKKyAgICBpZiAoIW9yaWdpbkNvbnRlbnQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoeyBvcmlnaW5Db250ZW50LT5kYXRhKCksIG9yaWdpbkNvbnRlbnQtPnNp
emUoKSB9KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2lu
OworICAgIGRlY29kZXIgPj4gb3JpZ2luOworICAgIHJldHVybiBvcmlnaW47Cit9CisKK3N0YXRp
YyB2b2lkIHdyaXRlT3JpZ2luVG9GaWxlSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoZmlsZVBhdGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChmaWxlUGF0
aCkpOworICAgIGF1dG8gb3JpZ2luRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgYXV0byBj
bG9zZUZpbGUgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShvcmlnaW5GaWxlSGFuZGxlKTsKKyAgICB9KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChvcmlnaW5GaWxlSGFuZGxlKSkgeworICAgICAgICBMT0dfRVJST1IoIndy
aXRlT3JpZ2luVG9GaWxlSWZOZWNlc3Nhcnk6IEZhaWxlZCB0byBvcGVuIG9yaWdpbiBmaWxlIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVy
IGVuY29kZXI7CisgICAgZW5jb2RlciA8PCBvcmlnaW47CisgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUob3JpZ2luRmlsZUhhbmRsZSwgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkpOworfQorCitzdGF0aWMgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKK3sKKyAgICBhdXRvIHBhcmVudFBhdGggPSBGaWxlU3lzdGVt
OjpwYXJlbnRQYXRoKGZpbGVQYXRoKTsKKyAgICBhdXRvIGNoaWxkcmVuID0gRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShwYXJlbnRQYXRoKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEp
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworfQorCiBSZWY8TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBwYXRoKSk7CkBAIC0x
MTYsNyArMTczLDcgQEAgc3RhdGljIFN0cmluZyBlbmNvZGUoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IEZpbGVTeXN0ZW06OlNhbHQgc2FsdCkKICAgICByZXR1cm4gYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpKTsKIH0KIAotc3RhdGljIFN0cmluZyBvcmlnaW5Q
YXRoKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCBGaWxlU3lzdGVtOjpTYWx0IHNhbHQpCitzdGF0aWMgU3RyaW5nIG9yaWdpbkRpcmVj
dG9yeVBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4sIEZpbGVTeXN0ZW06OlNhbHQgc2FsdCkKIHsKICAgICBpZiAocm9vdFBhdGgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcm9vdFBhdGg7CkBAIC0xMjYsMTUgKzE4MywzMCBA
QCBzdGF0aWMgU3RyaW5nIG9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcgogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnRzKHJvb3RQYXRoLCB7IGVuY29kZWRUb3BPcmlnaW4sIGVuY29kZWRP
cGVuaW5nT3JpZ2luIH0pOwogfQogCitzdGF0aWMgU3RyaW5nIG9yaWdpbkZpbGVQYXRoKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAib3JpZ2luIl9zKTsKK30KKwogT3JpZ2luU3RvcmFn
ZU1hbmFnZXImIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHJldHVybiAqbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2Vycy5lbnN1cmUob3JpZ2luLCBbJl0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmln
aW5TdG9yYWdlTWFuYWdlcj4ob3JpZ2luUGF0aChtX3BhdGgsIG9yaWdpbiwgbV9zYWx0KSk7Cisg
ICAgICAgIGF1dG8gb3JpZ2luRGlyZWN0b3J5ID0gb3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgs
IG9yaWdpbiwgbV9zYWx0KTsKKyAgICAgICAgd3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShv
cmlnaW5GaWxlUGF0aChvcmlnaW5EaXJlY3RvcnkpLCBvcmlnaW4pOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4oV1RGTW92ZShvcmlnaW5EaXJlY3Rvcnkp
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpyZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX2xvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXJzLmZpbmQob3JpZ2luKTsgaXRlcmF0b3IgIT0gbV9sb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1
ZS0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMu
cmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpwZXJzaXN0ZWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0zMDUsNSArMzc3LDE1OCBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Z2V0SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
Q29yZTo6RmlsZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Z2V0SGFuZGxlKGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSwgV1RGTW92ZShuYW1lKSkpOwogfQogCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3Rv
cmFnZVR5cGUpCit7CisgICAgaWYgKHN0b3JhZ2VUeXBlID09ICJGaWxlU3lzdGVtIikKKyAgICAg
ICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbTsKKworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2lu
RGlyZWN0b3J5KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpPiYmIGFwcGx5
KQoreworICAgIGZvciAoYXV0byYgdG9wT3JpZ2luIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX3BhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgdG9wT3JpZ2luKTsKKyAgICAgICAg
YXV0byBvcGVuaW5nT3JpZ2lucyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodG9wT3JpZ2lu
RGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKG9wZW5pbmdPcmlnaW5zLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0
b3J5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChh
dXRvJiBvcGVuaW5nT3JpZ2luIDogb3BlbmluZ09yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8g
b3BlbmluZ09yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIG9wZW5pbmdPcmlnaW4pOworICAgICAgICAgICAgYXBw
bHkob3BlbmluZ09yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1ZlY3Rv
cjxXZWJzaXRlRGF0YTo6RW50cnk+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhRnJv
bURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdGFyZ2V0VHlwZXMpCit7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4+IG9yaWdpblR5cGVzOworICAg
IGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoWyZdKGF1dG8gZGlyZWN0b3J5KSBtdXRhYmxlIHsKKyAg
ICAgICAgYXV0byBvcmlnaW4gPSByZWFkT3JpZ2luRnJvbUZpbGUob3JpZ2luRmlsZVBhdGgoZGly
ZWN0b3J5KSk7CisgICAgICAgIGlmICghb3JpZ2luKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGZvciAoYXV0byYgc3RvcmFnZVR5cGUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KGRpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHR5cGUgPSB0b1dlYnNpdGVEYXRh
VHlwZShzdG9yYWdlVHlwZSk7IHR5cGUgJiYgdGFyZ2V0VHlwZXMuY29udGFpbnMoKnR5cGUpKQor
ICAgICAgICAgICAgICAgIG9yaWdpblR5cGVzLmFkZChvcmlnaW4tPmNsaWVudE9yaWdpbiwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4geyB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCp0eXBlKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZW50
cmllczsKKyAgICBmb3IgKGF1dG8gW29yaWdpbiwgdHlwZXNdIDogb3JpZ2luVHlwZXMpIHsKKyAg
ICAgICAgZm9yIChhdXRvIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIGVudHJpZXMuYXBwZW5k
KHsgV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCB0eXBlLCAwIH0gfSk7CisgICAgfQorCisg
ICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRj
aERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2Vk
KTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgdHlwZXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZW50cmllcyA9IGZldGNoRGF0YUZyb21E
aXNrKHR5cGVzKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgZW50cmllcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGVu
dHJpZXMpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoZW50cmllcykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworVmVjdG9yPFdlYkNvcmU6
OkNsaWVudE9yaWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGlt
ZSwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKT4mIGZp
bHRlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpDbGllbnRPcmlnaW4+IGRlbGV0ZWRPcmlnaW5zOworICAgIGZvckVhY2hPcmlnaW5E
aXJlY3RvcnkoWyZdKGF1dG8gZGlyZWN0b3J5KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBmaWxl
UGF0aCA9IG9yaWdpbkZpbGVQYXRoKGRpcmVjdG9yeSk7CisgICAgICAgIGF1dG8gb3JpZ2luID0g
cmVhZE9yaWdpbkZyb21GaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pIHsKKyAg
ICAgICAgICAgIC8vIElmIG9yaWdpbiBjYW5ub3QgYmUgcmV0cmlldmVkLCBidXQgd2UgYXJlIGFz
a2VkIHRvIHJlbW92ZSBkYXRhIGZvciBhbGwgb3JpZ2lucywgcmVtb3ZlIGl0LgorICAgICAgICAg
ICAgaWYgKGZpbHRlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB9KSkgeworICAgICAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShkaXJlY3RvcnksIG1v
ZGlmaWVkU2luY2VUaW1lKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0
eURpcmVjdG9yeShkaXJlY3RvcnkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmaWx0ZXIoKm9yaWdpbikpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgZGVsZXRlZE9yaWdpbnMuYXBwZW5kKCpvcmlnaW4pOworICAg
ICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKCpvcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMs
IG1vZGlmaWVkU2luY2VUaW1lKTsKKyAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJ
ZlBvc3NpYmxlKCpvcmlnaW4pOworICAgICAgICBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3Nhcnko
ZmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJl
Y3RvcnkpOworICAgIH0pOworCisgICAgcmV0dXJuIGRlbGV0ZWRPcmlnaW5zOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiB0eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOwor
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCB0eXBlcywgb3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpblNldDsKKyAgICAg
ICAgb3JpZ2luU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOworICAg
ICAgICBmb3IgKGF1dG8gb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgICAgIG9yaWdpblNldC5h
ZGQoV1RGTW92ZShvcmlnaW4pKTsKKworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCAt
V2FsbFRpbWU6OmluZmluaXR5KCksIFsmb3JpZ2luU2V0XShhdXRvIG9yaWdpbikgeworICAgICAg
ICAgICAgcmV0dXJuIG9yaWdpblNldC5jb250YWlucyhvcmlnaW4uY2xpZW50T3JpZ2luKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIG1vZGlmaWVkU2luY2VU
aW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCBtb2RpZmllZFNpbmNlVGlt
ZSwgW10oYXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9KTsKKwor
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxl
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5
cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBkb21haW5zID0gY3Jvc3NU
aHJlYWRDb3B5KGRvbWFpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGRlbGV0ZWRPcmlnaW5zID0gZGVs
ZXRlRGF0YU9uRGlzayh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbJmRvbWFpbnNdKGF1
dG8mIG9yaWdpbikgeworICAgICAgICAgICAgYXV0byBkb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luLmNsaWVudE9yaWdpbi5o
b3N0KTsKKyAgICAgICAgICAgIHJldHVybiBkb21haW5zLmNvbnRhaW5zKGRvbWFpbik7CisgICAg
ICAgIH0pOworCisgICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRl
bGV0ZWREb21haW5zOworICAgICAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGVsZXRlZE9yaWdpbnMp
IHsKKyAgICAgICAgICAgIGF1dG8gZG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbi5jbGllbnRPcmlnaW4uaG9zdCk7CisgICAg
ICAgICAgICBkZWxldGVkRG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfQorCisgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGRvbWFpbnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkZWxldGVkRG9tYWlucykpXSgpIG11
dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zKSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDViYzU2YjdjNjQ2YzZiMWZkN2FkNjRkZDQ4N2VkZjVk
ZWE2MzkzNGEuLmVmMzY2NjMxN2E1MzM3YmM0MzQ5ZmYzZjY2OGZkYTYyYzM1ZjgzYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsyOCwxMiBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgiCiAjaW5jbHVkZSAi
T3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgU2hhcmVkRmlsZUhh
bmRsZTsKQEAgLTU1LDEzICs1NywyMiBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7
CiAgICAgdm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOwor
ICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+
JiYpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAg
ICAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgdm9pZCByZW1vdmVPcmlnaW5TdG9yYWdlTWFu
YWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eSgpOwogCisgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpPiYmKTsKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5
PiBmZXRjaERhdGFGcm9tRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CisgICAgVmVj
dG9yPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlRGF0YU9uRGlzayhPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJik+Jik7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciAoaW1w
bGVtZW50ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5j
cHAKaW5kZXggNGYwNmY0NTI0NjU2NDZkMjAxMWJjN2Y1M2JiZGIyODExNTkzYWE0My4uZDM0MzE1
OWM1N2ZlNDRjN2NlZGEyMjVkYjQ0MGM1OGU2MGYwNDQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFn
ZXIuY3BwCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4K
KyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTUxLDIwICs1NCw2MiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBt
X2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci0+Y29ubmVjdGlvbkNsb3NlZChjb25uZWN0aW9uKTsK
ICAgICB9CiAKLSAgICBTdHJpbmcgdHlwZVN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgc3RvcmFn
ZUlkZW50aWZpZXIpIGNvbnN0CisgICAgZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Qg
eworICAgICAgICBGaWxlU3lzdGVtLAorICAgIH07CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Rv
cmFnZUlkZW50aWZpZXIoU3RvcmFnZVR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtOgorICAgICAgICAg
ICAgcmV0dXJuICJGaWxlU3lzdGVtIl9zOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAiIl9zOworICAgIH0KKworICAgIFN0cmluZyB0eXBlU3RvcmFnZVBhdGgoU3RvcmFn
ZVR5cGUgdHlwZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Jvb3RQYXRoLmlzRW1w
dHkoKSA/IGVtcHR5U3RyaW5nKCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9yb290UGF0aCwgc3RvcmFnZUlkZW50aWZpZXIpOworICAgICAgICBhdXRvIHN0b3JhZ2VJ
ZGVudGlmaWVyID0gdG9TdG9yYWdlSWRlbnRpZmllcih0eXBlKTsKKyAgICAgICAgaWYgKG1fcm9v
dFBhdGguaXNFbXB0eSgpIHx8IHN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgc3RvcmFnZUlkZW50aWZpZXIpOwog
ICAgIH0KIAogICAgIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQogICAgIHsK
ICAgICAgICAgaWYgKCFtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcikKLSAgICAgICAgICAgIG1f
ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXI+KHR5cGVTdG9yYWdlUGF0aCgiRmlsZVN5c3RlbSIpLCByZWdpc3RyeSk7CisgICAgICAg
ICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyPih0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW0pLCBy
ZWdpc3RyeSk7CiAKICAgICAgICAgcmV0dXJuICptX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjsK
ICAgICB9CiAKKyAgICBib29sIGlzQWN0aXZlKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1f
ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlRGF0YShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRp
bWUpCisgICAgeworICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpG
aWxlU3lzdGVtKSkKKyAgICAgICAgICAgIGRlbGV0ZUZpbGVTeXN0ZW1TdG9yYWdlRGF0YShtb2Rp
ZmllZFNpbmNlVGltZSk7CisKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnkobV9yb290UGF0aCk7CisgICAgfQorCiBwcml2YXRlOgorICAgIHZvaWQgZGVsZXRlRmls
ZVN5c3RlbVN0b3JhZ2VEYXRhKFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKQorICAgICAgICAgICAgbV9maWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIgPSBudWxscHRyOworCisgICAgICAgIGF1dG8gZmlsZVN5c3Rl
bVN0b3JhZ2VQYXRoID0gdHlwZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGZpbGVTeXN0
ZW1TdG9yYWdlUGF0aCwgbW9kaWZpZWRTaW5jZVRpbWUpOworICAgIH0KKwogICAgIFN0cmluZyBt
X3Jvb3RQYXRoOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgU3RvcmFnZUJ1Y2tldE1v
ZGUgbV9tb2RlIHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQgfTsKQEAgLTc0LDYgKzEx
OSw3IEBAIHByaXZhdGU6CiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXIoU3RyaW5nJiYgcGF0aCkKICAgICA6IG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogeworICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6fk9y
aWdpblN0b3JhZ2VNYW5hZ2VyKCkgPSBkZWZhdWx0OwpAQCAtMTAzLDUgKzE0OSwxNSBAQCBGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3Rv
cmFnZU1hbmFnZXIoRmlsZVN5cwogICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuZmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyKHJlZ2lzdHJ5KTsKIH0KIAorYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6aXNBY3RpdmUoKQoreworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsK
K30KKwordm9pZCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBkZWZh
dWx0QnVja2V0KCkuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCmluZGV4IGE0YzExYWQ2NWE1
YzE5NzAzYTdjMGU5Mjk0YmMyZmVhYWEyZmZlMmUuLmRhMzEwYzg2MjI4MGFmYjYyMDlhOTExYjQ1
ZWQzNDY2MGU5ZGJjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCkBAIC0yOCwxMCArMjgsMTUg
QEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRPcmlnaW47Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5
OwogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworZW51bSBjbGFzcyBXZWJzaXRlRGF0
YVR5cGUgOiB1aW50MzJfdDsKIAogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDMsMTIgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBi
b29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVkOyB9CiAgICAgdm9pZCBw
ZXJzaXN0KCk7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOworICAgIGJvb2wgaXNB
Y3RpdmUoKTsKKyAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IFdhbGxUaW1lKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3JhZ2VCdWNrZXRNb2Rl
IDogYm9vbDsKICAgICBjbGFzcyBTdG9yYWdlQnVja2V0OwogICAgIFN0b3JhZ2VCdWNrZXQmIGRl
ZmF1bHRCdWNrZXQoKTsKIAorICAgIHZvaWQgY3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlm
TmVjZXNzYXJ5KCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4gbV9kZWZh
dWx0QnVja2V0OwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX3BlcnNpc3RlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5jcHAKaW5kZXggZjM3MjkwMTM4YjRmYWZmMzIzNTNiMmFjZGFkZTgzNDAwZGE5Y2M4YS4uZjli
MmZlMDQwOWRjNDMwYjFkM2QzYWViMDBlNzZiMDBiM2YwNTZiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApAQCAtMTI5LDYgKzEyOSw4
IEBAIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2VzcyhXZWJz
aXRlRGF0YVR5cGUgZGF0YVR5cGUpCiAgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0
aXZlU2VydmljZXM6CiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3
b3JrOwogI2VuZGlmCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW06CisgICAg
ICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOwogICAgIH0KIAogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCmluZGV4IDdhOWU1MDBmZTFiMDllMzg5
NWRkNzQzZTE2NWM5ODkxOGJlN2E4ZGIuLmU0NTlhMDkwMzhhNDhhMTk4NmQ2ZDMzOTY2NDMzMjgz
Mzc1YTQ1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhVHlwZS5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFU
eXBlIDogdWludDMyX3QgewogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0Up
CiAgICAgQWx0ZXJuYXRpdmVTZXJ2aWNlcyA9IDEgPDwgMTgsCiAjZW5kaWYKKyAgICBGaWxlU3lz
dGVtID0gMSA8PCAxOSwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtNzksMTAgKzgw
LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IHsKICNlbmRpZgogICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUs
CiAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0LAotICAg
ICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzCisg
ICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMs
CiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICAgICAgLCBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcworICAgICAgICBXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcywKICNlbmRpZgorICAgICAgICBX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbQogICAgID47CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCmluZGV4IGM4MjYxNmY3OTBjNmZjNjkwYTZjYmQ2OTdhMGU4ZWNkYTUyMjdmYjEuLmZh
MTExM2U0N2MyYTQ0NDE0YmQyYWRkMTkyZDAyZTc1MDdmMzI1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1t
CkBAIC01MSw2ICs1MSw3IEBAIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzCiBOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgPSBAIl9XS1dlYnNpdGVE
YXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRh
VHlwZUFsdGVybmF0aXZlU2VydmljZXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZl
U2VydmljZXMiOworTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVt
ID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtIjsKIAogI2lmIFBMQVRGT1JNKE1BQykK
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vi
c2l0ZURhdGFUeXBlUGx1Z0luRGF0YSI7CkBAIC0xMTAsNiArMTExLDggQEAgc3RhdGljIE5TU3Ry
aW5nICpkYXRhVHlwZXNUb1N0cmluZyhOU1NldCAqZGF0YVR5cGVzKQogICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OkAiUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHMiXTsKICAgICBpZiAoW2RhdGFU
eXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
XSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkFsdGVybmF0aXZlIFNlcnZpY2VzIl07Cisg
ICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5
c3RlbV0pCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJGaWxlIFN5c3RlbSJdOwogCiAgICAg
cmV0dXJuIFthcnJheSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJdOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmluZGV4IGRiYzVmM2Y3YTFmZjRmYjc0OWFhZmQ3MGU1NzBi
YTA0ODU2OGFjZDYuLjkxNDQ4ZWUxZDU1MWRlNDIwNjU4NjdiODE1ZGJkZjFkZWZhNzVjMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAgLTc3LDYgKzc3LDggQEAgc3RhdGljIGlu
bGluZSBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNT
dHJpbmcgKndlYnNpdGUKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6
X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXM7CiAjZW5kaWYKKyAgICBpZiAoW3dl
YnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3Rl
bV0pCisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW07CiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTM0LDYgKzEzNiw4IEBAIHN0YXRpYyBpbmxpbmUg
UmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2l0ZURhdGFUeXBlcyhPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlRGF0CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBh
ZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc107CiAjZW5kaWYK
KyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVT
eXN0ZW0pKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRl
RGF0YVR5cGVGaWxlU3lzdGVtXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCmluZGV4IGQ2MDdkZmUxM2Y2MTJiNTgyMjBlNWEz
NTI1Nzc0NzA1MzFlZTQ5MDcuLjJjZjlhNGQyYTBjN2ZjZTI1YjY1MDZhYzE3YmQ3MTExN2M5NzUx
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdLX0VY
VEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUp
LCBpb3MoMTMuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFU
eXBlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCks
IGlvcygxNS4wKSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVBbHRlcm5hdGl2ZVNlcnZpY2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygx
NC4wKSk7CitXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVGaWxl
U3lzdGVtIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3Qg
X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEx
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQppbmRleCBlMmIwNzM2NDY0YjE2NmRkOTIwY2YzNTUxNzFmYjNhNTYz
NzBhMzg0Li43ZWYwNjk1MGFiMDdkM2UxYTc2MTZjYmNiNThiZDI1Nzg1MzU5ZWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0KQEAgLTI0OCw3ICsyNDgsOCBAQCArIChOU1NldDxOU1N0cmluZyAqPiAqKV9hbGxX
ZWJzaXRlRGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQogICAgICAgICAgICAgX1dLV2Vic2l0ZURh
dGFUeXBlQ3JlZGVudGlhbHMsCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNr
QXR0cmlidXRpb25zLAogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRzLAotICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVT
ZXJ2aWNlcworICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNl
cywKKyAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0KICNpZiAhVEFSR0VU
X09TX0lQSE9ORQogICAgICAgICAgICAgLCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGIxMjA0ZTNjNDNiYjg2YWVkNDZiM2M1MTEwMzUzOGVhNTcyYjhkODAuLjU1YjhkM2Uw
MTUzZGQwMDkwN2Q4Y2Q4NDA5Y2MzYmIwMGNkNDU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ5Nyw2ICsxNDk3LDkgQEAKIAkJ
OTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLmggKi87IH07CiAJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRU
ZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRTc5OTg1Mjc1NkZB
NTUwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNF
Nzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzRTc5OTg3Mjc1NkZBQjQwMDc0MDA4QSAvKiBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgzMjc1NkZBNTQwMDc0
MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAq
LzsgfTsKKwkJOTNFNzk5ODgyNzU2RkFDMjAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdl
Q29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0U3OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5
IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CiAJCTk1MEYyODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEYy
ODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJ
OTU2NTA4MzkyNkQ4N0EyQjAwRTE1Q0I3IC8qIEFwcGxlTWVkaWFTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU2NTA4MzcyNkQ4N0Ey
QjAwRTE1Q0I3IC8qIEFwcGxlTWVkaWFTZXJ2aWNlc1NQSS5oICovOyB9OwpAQCAtNTI5MCw2ICs1
MjkzLDEwIEBACiAJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tI
aXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRl
c3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5N0UyNzU2RjY3
MDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTc5OTgxMjc1NkZBNTMw
MDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk4MjI3NTZG
QTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRTc5OTgzMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAv
KiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0UyNTI0
MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9XS01v
dXNlRGV2aWNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTY1
LDYgKzEwNTcyLDcgQEAKIAkJCQlCQzAzMkQ2ODEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRWRpdG9y
Q2xpZW50LmggKi8sCiAJCQkJOTM1NDI0MkIyNzAzQkRDQjAwNUNBNzJDIC8qIFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJOTM1NDI0MkEyNzAzQkRDQjAwNUNBNzJD
IC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzRTc5OTdFMjc1
NkY2NzAwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8sCiAJCQkJQkMxMTFBNTgxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCAqLywKIAkJCQlCQzAzMkQ2QTEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCAqLywKIAkJCQlCQzFCRTFERjEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9j
YXRpb25DbGllbnQuY3BwICovLApAQCAtMTIwMzksNiArMTIwNDcsOSBAQAogCQkJCUUzODY2QjA3
MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVz
c2FnZXMuaCAqLywKIAkJCQlFMzg2NkIwNDIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlF
Mzg2NkIwNTIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQk5M0U3OTk4MjI3NTZGQTU0MDA3NDAwOEEgLyog
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJ
CQk5M0U3OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uTWVzc2FnZXMuaCAqLywKKwkJCQk5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJQ0Q3M0JB
NDgxMzFBQ0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQlDRDczQkE0OTEzMUFDRDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJNZXNzYWdlcy5oICovLAogCQkJCUNENzNCQTQ1MTMxQUNDODgwMEVFREVEMiAvKiBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEyNDQ5LDgg
KzEyNDYwLDggQEAKIAkJCQk1MTYwRTk1RTI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRs
ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYwRTk1OTI3NEMwRDg5MDA1NjczODgg
LyogUHVzaEFwcEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGN0JCN0IyNzQ0QzUwNzAw
QzQ1QTcyIC8qIFB1c2hDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdC
NUYyRjI3NTczODJCMDAyREMyMkQgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJDRDY5RjI3MjMzOTNBMDBGN0Y4RUMgLyogV2Vi
UHVzaERhZW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3QjVGMkYyNzU3MzgyQjAwMkRDMjJE
IC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xMzI4Niw2ICsxMzI5Nyw4IEBACiAJCQkJQkMwMzJEQkIxMEY0MzgwRjAwNThDMTVBIC8q
IFdlYkV2ZW50Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTFCNUQxMTJGNjI5
ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1NDI0
MkMyNzAzQkRDQjAwNUNBNzJDIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNFNzk5ODgyNzU2RkFDMjAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0U3OTk4
NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2Fn
ZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFFRTEyNjRGRDUwMDAzRTQ0RDQg
LyogV2ViRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ2OTU0MTIxNEU2Q0Iw
MDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0Njk1NjEy
MTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmggaW4gSGVh
ZGVycyAqLywKQEAgLTEzMzk4LDYgKzEzNDExLDcgQEAKIAkJCQkxQTFFMDkzNDE4ODYxRDM4MDBE
MkRDNDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTJGNTg5RDEyQTg4Mzg4MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTJDRDY5ODI3MjFFRkM4MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0I1RjJFMjc1NzM4MkEwMDJEQzIyRCAvKiBX
ZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMkNENjlBMjcyMUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NjFDQ0NBNjIzMTQ4NUFBMDBCNjU5QjkgLyogV2ViUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODYwRTcxMjMwRjY3RkMwMDQ2MUFB
RSAvKiBXZWJSZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM1NDgsNyArMTM1NjIsNiBAQAogCQkJCTVDNzk1RDcwMjI5RjM3M0YwMDNGRjFDNCAvKiBXS0Nv
bnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNzk1RDcxMjI5RjM3
NTcwMDNGRjFDNCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9Qcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUE1NTVGNjEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0u
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxN0I1RjJFMjc1NzM4MkEwMDJEQzIyRCAvKiBXZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTU1
NjAxMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbVR5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMUVBMDIzODFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M5MzhFMTExODBERTQ0MDA4NUU1RkUgLyogV0tD
b250ZXh0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTM4MCw2ICsxNTM5Myw3IEBACiAJ
CQkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzODY2QjA5MjM5OUEyRDUwMEY4
OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODkyMTJCNkFCMTAwRjQ5M0ZEIC8q
IFdlYkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzRTc5OTg1Mjc1NkZBNTUwMDc0MDA4
QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNEUxMzFBQ0RCNzAwRUVERUQyIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTQ3
MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MDYxMTJENkJBOTEwMDEyQTcyQSAvKiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2Fk
ZjBiMWRkMDBhNDhiLi45NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0NDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJX
ZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJN
ZXNzYWdlcy5oIgpAQCAtMTE5LDYgKzEyMSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAog
ICAgICAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBVU0UoTElC
V0VCUlRDKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUlRDTW9uaXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MmVjZGNmN2Q5ZDUxNTdjZjgzYmJiMjQzMzQwZWFlOGYzNTdjYjc0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisj
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBJbnZhbGlkYXRl
QWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDhkYWE5ZDc0ZjBhNzgyYTI5MjcyMzk4YmNhYmE3YTUzYTZhZDc1NGYuLjEz
NzQ5Y2YwNDlkMmIzMGUxMzhhOWYxYzU4ZDI1NmVhMDI4ZDBkODcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0x
Mi0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCBh
bmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0ZURhdGFTdG9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW06CisKIDIwMjEtMTItMDEgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgRmlsZVN5c3RlbVN5bmNB
Y2Nlc3NIYW5kbGUgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gbmV0d29yayBwcm9jZXNzIGNy
YXNoZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RmlsZVN5c3RlbUFjY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRmlsZVN5c3RlbUFjY2Vzcy5tbQppbmRleCA3YmJlM2M5ZjYyYzFkOTdjMzE5NTUyYTE5MDNk
OTE1YWQ1ZjdhMjFhLi4yZDQzZDUzODc4MTcyYWI5NTkzYzQwZTYzOWI2ODI0ZGM0YWNmZmYyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0
ZW1BY2Nlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9G
aWxlU3lzdGVtQWNjZXNzLm1tCkBAIC0yOSwxMSArMjksMTMgQEAKIAogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgog
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KIAogQGludGVyZmFjZSBGaWxlU3lzdGVtQWNj
ZXNzTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBl
bmQKQEAgLTQ4LDcgKzUwLDcgQEAgLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGQKIAogQGVuZAogCi1z
dGF0aWMgTlNTdHJpbmcgKm1haW5GcmFtZVN0cmluZyA9IEAiPHNjcmlwdD4gXAorc3RhdGljIE5T
U3RyaW5nICp3b3JrZXJGcmFtZVN0cmluZyA9IEAiPHNjcmlwdD4gXAogICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgeyBcCiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCd3b3JrZXIuanMnKTsg
XAogICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsgXApAQCAtMTE1
LDcgKzExNyw3IEBAIFRFU1QoRmlsZVN5c3RlbUFjY2VzcywgV2ViUHJvY2Vzc0NyYXNoRHVyaW5n
V3JpdGUpCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIndlYmtpdCJdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzptYWluRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAIndlYmtpdDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6d29ya2VyRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndl
YmtpdDovL3dlYmtpdC5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwog
ICAgIEVYUEVDVF9XS19TVFJFUShAInBhZ2UgaXMgbG9hZGVkIiwgW2xhc3RTY3JpcHRNZXNzYWdl
IGJvZHldKTsKQEAgLTEyNiw3ICsxMjgsNyBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIFdlYlBy
b2Nlc3NDcmFzaER1cmluZ1dyaXRlKQogICAgIEVYUEVDVF9XS19TVFJFUShAInN1Y2Nlc3M6IHdy
aXRlIDEwIGJ5dGVzIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAogICAgIGF1dG8gc2Vj
b25kV2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7Ci0gICAgW3NlY29uZFdlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1lU3RyaW5nIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1dOworICAg
IFtzZWNvbmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOndvcmtlckZyYW1lU3RyaW5nIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1dOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwYWdlIGlzIGxv
YWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CkBAIC0xNjgsNyArMTcwLDcgQEAgVEVT
VChGaWxlU3lzdGVtQWNjZXNzLCBOZXR3b3JrUHJvY2Vzc0NyYXNoRHVyaW5nV3JpdGUpCiAgICAg
W2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZv
clVSTFNjaGVtZTpAIndlYmtpdCJdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzptYWluRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndl
YmtpdDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6d29ya2Vy
RnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndlYmtpdDovL3dlYmtp
dC5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1l
c3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogICAgIEVYUEVDVF9X
S19TVFJFUShAInBhZ2UgaXMgbG9hZGVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKQEAg
LTI1OCw0ICsyNjAsMTkxIEBAIFRFU1QoRmlsZVN5c3RlbUFjY2VzcywgTWlncmF0ZVRvTmV3U3Rv
cmFnZURpcmVjdG9yeSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmaWxlIGlzIG9wZW5lZCIsIFts
YXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiB9CiAKK3N0YXRpYyBOU1N0cmluZyAqdGVzdFN0cmlu
ZyA9IEAiPHNjcmlwdD4gXAorICAgIGFzeW5jIGZ1bmN0aW9uIG9wZW4oc2hvdWxkQ3JlYXRlRmls
ZSkgXAorICAgIHsgXAorICAgICAgICB0cnkgeyBcCisgICAgICAgICAgICB2YXIgcm9vdEhhbmRs
ZSA9IGF3YWl0IG5hdmlnYXRvci5zdG9yYWdlLmdldERpcmVjdG9yeSgpOyBcCisgICAgICAgICAg
ICB2YXIgZmlsZUhhbmRsZSA9IGF3YWl0IHJvb3RIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnZmlsZS1z
eXN0ZW0tYWNjZXNzLnR4dCcsIHsgJ2NyZWF0ZScgOiBzaG91bGRDcmVhdGVGaWxlIH0pOyBcCisg
ICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnZmlsZSBpcyBvcGVuZWQnKTsgXAorICAgICAgICB9IGNhdGNoKGVycikgeyBcCisg
ICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2UpOyBcCisg
ICAgICAgIH0gXAorICAgIH0gXAorICAgIG9wZW4odHJ1ZSk7IFwKKyAgICA8L3NjcmlwdD4iOwor
CitURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIEZldGNoQW5kUmVtb3ZlRGF0YSkKK3sKKyAgICBhdXRv
IGhhbmRsZXIgPSBhZG9wdE5TKFtbRmlsZVN5c3RlbUFjY2Vzc01lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6
QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFtjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdOworICAgIGF1dG8gdHlwZXMgPSBbTlNTZXQgc2V0V2l0aE9i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKKworICAgIC8vIFJlbW92ZSBleGlz
dGluZyBkYXRhLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1v
dmVEYXRhT2ZUeXBlczp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNv
bXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byBwcmVmZXJlbmNlcyA9
IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5fZmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuX3N0b3JhZ2VBUElFbmFibGVk
ID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6dGVzdFN0cmlu
ZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAg
ICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJm
aWxlIGlzIG9wZW5lZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisKKyAgICAvLyBGZXRj
aCBkYXRhIGFuZCByZW1vdmUgaXQgYnkgb3JpZ2luLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBb
d2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAg
ICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMXUpOworICAgICAgICBhdXRvIHJlY29yZCA9
IFtyZWNvcmRzIG9iamVjdEF0SW5kZXg6MF07CisgICAgICAgIEVYUEVDVF9TVFJFUSgid2Via2l0
Lm9yZyIsIFtyZWNvcmQuZGlzcGxheU5hbWUgVVRGOFN0cmluZ10pOworCisgICAgICAgIC8vIFJl
bW92ZSBkYXRhLgorICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0
eXBlcyBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8vIEZldGNoIGRhdGEgYWZ0ZXIgcmVtb3ZhbC4K
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jk
c09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFS
ZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHJlY29yZHMuY291bnQsIDB1
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICAvLyBGaWxlIGNhbm5vdCBi
ZSBvcGVuZWQgYWZ0ZXIgZGF0YSByZW1vdmFsLgorICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAIm9wZW4oZmFsc2UpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJlcnJvcjogTm90Rm91
bmRFcnJvciAtIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBmb3VuZCBoZXJlLiIsIFtsYXN0U2NyaXB0
TWVzc2FnZSBib2R5XSk7Cit9CisKK1RFU1QoRmlsZVN5c3RlbUFjY2VzcywgUmVtb3ZlRGF0YUJ5
TW9kaWZpY2F0aW9uVGltZSkKK3sKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbRmlsZVN5
c3RlbUFjY2Vzc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8g
cHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5j
ZXMuX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9zdG9y
YWdlQVBJRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOnRlc3RTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Vi
a2l0Lm9yZyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFT
dG9yZV07CisgICAgYXV0byB0eXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZUZpbGVTeXN0ZW1dOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBfX2Jsb2NrIE5TVUlu
dGVnZXIgcmVjb3Jkc0NvdW50OworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIHJlY29yZHNDb3VudCA9IHJlY29yZHMuY291
bnQ7CisgICAgICAgIEVYUEVDVF9HVChyZWNvcmRzQ291bnQsIDB1KTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgbm93XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsK
KyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29y
ZHMpIHsKKyAgICAgICAgICAgIHJlY29yZHNDb3VudCA9IHJlY29yZHMuY291bnQ7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgcmVjb3Jkc0NvdW50KTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZl
dGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxX
S1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEo
cmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1d
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK3N0
YXRpYyBOU1N0cmluZyAqbWFpbkZyYW1lU3RyaW5nID0gQCI8c2NyaXB0PiBcCisgICAgZnVuY3Rp
b24gcG9zdFJlc3VsdChldmVudCkgXAorICAgIHsgXAorICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC5kYXRhKTsgXAorICAg
IH0gXAorICAgIGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBwb3N0UmVzdWx0LCBmYWxzZSk7
IFwKKyAgICA8L3NjcmlwdD4gXAorICAgIDxpZnJhbWUgc3JjPSdodHRwczovLzEyNy4wLjAuMTo5
MDkxLyc+IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lQnl0ZXMgPSBSIlRFU1RSRVNPVVJD
RSgKKzxzY3JpcHQ+CitmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdlKQoreworICAgIHBhcmVu
dC5wb3N0TWVzc2FnZShtZXNzYWdlLCAnKicpOworfQorYXN5bmMgZnVuY3Rpb24gb3BlbigpCit7
CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJvb3RIYW5kbGUgPSBhd2FpdCBuYXZpZ2F0b3Iuc3Rv
cmFnZS5nZXREaXJlY3RvcnkoKTsKKyAgICAgICAgdmFyIGZpbGVIYW5kbGUgPSBhd2FpdCByb290
SGFuZGxlLmdldEZpbGVIYW5kbGUoJ2ZpbGUtc3lzdGVtLWFjY2Vzcy50eHQnLCB7ICdjcmVhdGUn
IDogdHJ1ZSB9KTsKKyAgICAgICAgcG9zdE1lc3NhZ2UoJ2ZpbGUgaXMgb3BlbmVkJyk7CisgICAg
fSBjYXRjaChlcnIpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoJ2Vycm9yOiAnICsgZXJyLm5hbWUg
KyAnIC0gJyArIGVyci5tZXNzYWdlKTsKKyAgICB9Cit9CitvcGVuKCk7Cis8L3NjcmlwdD4KKylU
RVNUUkVTT1VSQ0UiOworCitURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIEZldGNoRGF0YUZvclRoaXJk
UGFydHkpCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAg
ICB7ICIvIiwgeyBmcmFtZUJ5dGVzIH0gfSwKKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbRmlsZVN5c3RlbUFjY2Vzc01l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1l
OkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCA9
IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZRVM7CisKKyAgICBh
dXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXTsK
KyAgICBhdXRvIHR5cGVzID0gW05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBl
RmlsZVN5c3RlbV07CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJl
bW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
bmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
KTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFs
bGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGlj
YXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JU
cnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07Cisg
ICAgW25hdmlnYXRpb25EZWxlZ2F0ZSBzZXREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OlsmXShXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlciko
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworICAgIH1dOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3Jp
cHRNZXNzYWdlIGJvZHldKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFT
dG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBFWFBFQ1Rf
RVEocmVjb3Jkcy5jb3VudCwgMXUpOworICAgICAgICBhdXRvIHJlY29yZCA9IFtyZWNvcmRzIG9i
amVjdEF0SW5kZXg6MF07CisgICAgICAgIEVYUEVDVF9TVFJFUSgiMTI3LjAuMC4xIiwgW3JlY29y
ZC5kaXNwbGF5TmFtZSBVVEY4U3RyaW5nXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKICNlbmRpZiAvLyBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQo=
</data>
<flag name="commit-queue"
          id="470968"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445734</attachid>
            <date>2021-12-02 10:14:33 -0800</date>
            <delta_ts>2021-12-02 22:58:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211202101432.patch</filename>
            <type>text/plain</type>
            <size>69432</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY1NjE4Yjc3ZWI3MzRlNWYxNzcyMjM5
MGQwYWI4YjZhZGFmMjEwMDIuLjA1NTk5NTMxMmQ3YjY1ZmIyYWJlOWQ1NzFiNDk1OWJmZTQ3MTdj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMDEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTEyLTAxICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dIE9TQWxsb2NhdG9yOjpyZXNl
cnZlVW5jb21taXR0ZWRBbGlnbmVkIHNob3VsZCB1c2UgYWxpZ25lZCBhbGxvY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGNlYzE1MmMxZjcwNjcxZGZiZjdjZGEyYzA1NzQ3Njg0MzE0ZjA0YjkuLjRlYzQ5MjJk
NTZjZWM5ZjhjZTAzZDUxYTkzZTA3NTQ5NDg3NTU0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODgg
QEAKKzIwMjEtMTItMDEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVEYXRhU3Rv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJv
ZHVjZSBhIG5ldyBXZWJzaXRlRGF0YVR5cGUgdmFsdWUgRmlsZVN5c3RlbSBmb3IgRmlsZVN5c3Rl
bUFjY2VzcyBkYXRhLiBOZXR3b3JrIHByb2Nlc3Mgbm93IGNhbiBmZXRjaCBhbmQgCisgICAgICAg
IGRlbGV0ZSB0aGlzIHR5cGUgb2YgZGF0YSB3aGVuIGZldGNoaW5nIGFuZCBkZWxldGVpbmcgd2Vi
c2l0ZSBkYXRhIChpZiBGaWxlU3lzdGVtIHR5cGUgaXMgaW5jbHVkZWQgaW4gdGFyZ2V0CisgICAg
ICAgIHR5cGVzKS4KKworICAgICAgICBUbyB0cmFjayBvcmlnaW5zIHRoYXQgaGF2ZSBGaWxlU3lz
dGVtIGRhdGEsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlIG5hbWVkIG9yaWdpbiBp
biB0aGUgb3JpZ2luJ3MgCisgICAgICAgIGRpcmVjdG9yeS4gVGhpcyBmaWxlIHdpbGwgYmUgY3Jl
YXRlZCB3aGVuIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVG8g
ZGVsZXRlIGV4aXN0aW5nIEZpbGVTeXN0ZW0gZGF0YSwgbmV0d29yayBwcm9jZXNzIGZpbmRzIG9y
aWdpbnMgdGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlIGRlbGV0ZWQgYW5kIGhhdmUgZGF0YSAKKyAg
ICAgICAgb24gZGlzaywgY2xvc2VzIGFjdGl2ZSBhY2Nlc3MgaGFuZGxlcywgYW5kIGRlbGV0ZXMg
dGhlIGZpbGVzLiBUaGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3ZlIHdpbGwgYmUgZGVsZXRl
ZCBpZiAKKyAgICAgICAgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0IGluIHRoZSBzYW1lIGRp
cmVjdG9yeSwgYW5kIGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVsZXRlZC4KKworICAgICAg
ICBOZXcgQVBJIHRlc3RzOiBGaWxlU3lzdGVtQWNjZXNzLkZldGNoQW5kUmVtb3ZlRGF0YQorICAg
ICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtQWNjZXNzLlJlbW92ZURhdGFCeU1vZGlmaWNh
dGlvblRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbUFjY2Vzcy5GZXRjaERh
dGFGb3JUaGlyZFBhcnR5CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Om1vbml0b3JlZERhdGFUeXBlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUu
aDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmFjdGl2ZVN5bmNB
Y2Nlc3NIYW5kbGUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOjp+RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktp
dDo6RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnJlYWRPcmlnaW5Gcm9tRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlT3JpZ2lu
VG9GaWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpkZWxldGVPcmlnaW5GaWxlSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6b3JpZ2luRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3Nz
aWJsZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRT
aW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Om9yaWdpblBhdGgpOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9y
YWdlQnVja2V0Ojp0b1N0b3JhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnR5cGVTdG9yYWdlUGF0aCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVGaWxlU3lzdGVt
U3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3Jp
Z2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVs
ZXRlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MpOgorICAgICAgICAq
IFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNU
b1N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNp
dGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlXSk6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAyMS0xMi0wMSAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZSBzaG91
bGQgYmUgaW52YWxpZGF0ZWQgd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2hlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAppbmRleCA2NGJhYzZiNmI3MDAxNjEwYjUzZjJlMWQzMDkyNjdiZDVhNDBmNTM4Li5m
NjkwNDkyOGVmNTViMGFiODFlNjAwNTBiMzkzYWRjNGM3OTkxNjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtNTE0LDYgKzUxNCw2MCBAQCBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VT
YWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gc2FsdDsKIH0KIAorc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVt
OjpmaWxlU2l6ZShoYW5kbGUpLnZhbHVlX29yKDApOworICAgIGlmICghc2l6ZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHVuc2lnbmVkIGJ5dGVzVG9SZWFkOworICAgIGlm
ICghV1RGOjpjb252ZXJ0U2FmZWx5KHNpemUsIGJ5dGVzVG9SZWFkKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQp
OworICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxl
KGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKHRvdGFsQnl0
ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2Uo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCit7CisgICAgLy8gVGhpcyBm
dW5jdGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCisgICAgaWYgKHRpbWUgPT0gLVdh
bGxUaW1lOjppbmZpbml0eSgpKSB7CisgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGRp
cmVjdG9yeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoaWxkcmVuID0g
bGlzdERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJl
bikgeworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAgYXV0byBjaGlsZFR5cGUgPSBm
aWxlVHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxkVHlwZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIHN3aXRjaCAoKmNoaWxkVHlwZSkgeworICAgICAgICBjYXNl
IEZpbGVUeXBlOjpSZWd1bGFyOiB7CisgICAgICAgICAgICBpZiAoYXV0byBtb2RpZmljYXRpb25U
aW1lID0gRmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY2hpbGRQYXRoKTsgbW9kaWZp
Y2F0aW9uVGltZSAmJiAqbW9kaWZpY2F0aW9uVGltZSA+PSB0aW1lKQorICAgICAgICAgICAgICAg
IGRlbGV0ZUZpbGUoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsZVR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAgICAgIGRlbGV0ZUFsbEZp
bGVzTW9kaWZpZWRTaW5jZShjaGlsZFBhdGgsIHRpbWUpOworICAgICAgICAgICAgZGVsZXRlRW1w
dHlEaXJlY3RvcnkoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEZpbGVUeXBlOjpTeW1ib2xpY0xpbms6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7
Cit9CisKICNpZiBIQVZFKFNURF9GSUxFU1lTVEVNKSB8fCBIQVZFKFNURF9FWFBFUklNRU5UQUxf
RklMRVNZU1RFTSkKIAogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggOTk2YmMwYjZmN2RhOGFkZDBhNmU1YjkxN2FjODZjZWM1
YWY3MDlhNC4uZmQ4NTNhNDlhYWM4ZGMwMWYzMTU3MDRjZTQ5ZDczNDY1YWUwNTY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaApAQCAtMTA4LDYgKzEwOCw3IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUg
ewogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJp
bmcmLCBXYWxsVGltZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNv
bnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsg
Ly8gRm9sbG93cyBzeW1saW5rcy4KQEAgLTE0Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hh
bmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5k
bGUgIT0gaQogCiB1c2luZyBTYWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3
aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBh
dGguCiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9
IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nl
c3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggMzU5
YzI0Njc4MGY5NjUyNDkyYzUwZTFlOGY1NGY5MDRjYTc4OTY5ZC4uNzc2ZTEzY2E1ZWI2NDc5Nzk0
M2VmM2JjNDg1M2EzMWRkZWRmYjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5k
ZXggODJhYTVmMjJkZDcyMGMxOTE4NDZhOTQyYTM5MTRjYmZlYWM4NmM3ZS4uNGRlZmU0ZWRmMmNm
YWU3ZjIyYWM0NDZhZjk3Njg2ZTk5ZjkxODk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0zMDgs
NiArMzA4LDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyCiAKICAgICBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeQorICAgIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uCiAgICAgV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KIAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGE3ODk3Yjk2MWEzOWRhZjkyN2M1NGQxMmVm
YTNjODk3MTQ5N2IwMmYuLmRiZWQyMzYyMTEwYTc3OTEzYTU5ZWVlNjE1ZTNkYjRlZWNmMmQ3NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAg
LTIxOSw2ICsyMTksNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5tZXNzYWdlcwogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1l
c3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggOTNhNjE0NmQ2YjEzOWNiOGExNmEx
NzFiYjc3ZDQ0YmQzYjU4YjY1Yi4uYzc4N2EwM2Q3Yzc3YTA3Njk1MmRkY2QwOWNlMjBlM2I1ZDg4
ZDYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CkBAIC00OTAsNiArNDkwLDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck0KICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRnVsbFNj
cmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0NTc0
Mzg2NWE0YWM4MzJkM2U1ZGJkNGFmZDQzOGJkNzUzMmNkOTIzLi4xMDFjYjNjZTcxNGUzZWY4ZDY0
ZTU3MDY0YTI0NTZhMmRlNjdjMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0y
MjAsNiArMjIwLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9XZWJSVENSZXNvbHZlciBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkgXAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlciBcCisJV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gXAogCVdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyIFwKIAlXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkZTc2NWRlNDUw
NzFmNDFmM2ZjNGQ0Njk3MDUzODE2ZTE4OTllYmZhLi43MGI1YWZkYTUyNmU5OTA5Yjk2MmQ3MTIx
M2Q4NWI2MGI1MzcxODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtNzQsNiArNzQsNyBAQCBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9ucywKICNlbmRpZgorICAgICAgICBXZWJzaXRlRGF0YVR5cGU6
OkZpbGVTeXN0ZW0sCiAgICAgfSkpOwogCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggNjY2YmNjMWIyMWI5NWQwODkyYjJmMjNmZGMxMjlmYmFlNjFmZTMyMS4uYjM3MjU1NjExOTg3
ZWVlMTU4YmNiNDMwZTlmNWNmYmNkZDY0OTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE1NTQsNiArMTU1NCwxMiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAo
YXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0
b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVl
LT5mZXRjaERhdGEod2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBl
bnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJz
aXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGVudHJpZXMpKTsKKyAgICAgICAg
fSk7CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNp
dGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE2MjgsNiArMTYzNCw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpCiAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJBbHRlcm5h
dGl2ZVNlcnZpY2VzKG1vZGlmaWVkU2luY2UpOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGF1
dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9y
ICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKQorICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRl
bGV0ZURhdGFNb2RpZmllZFNpbmNlKHdlYnNpdGVEYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVF
bnRyaWVzKE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlP
cmlnaW5EYXRhPiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMTczNSw2ICsxNzQ0LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8K
ICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdl
cnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkK
KyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIG9y
aWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisKICAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAg
IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZU5ldHdv
cmtEYXRhRm9yOwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykK
QEAgLTE5NTgsNiArMTk3MCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0
cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICB9
KTsKICAgICB9CiAKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZp
bmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAg
ICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHdl
YnNpdGVEYXRhVHlwZXMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9y
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGRlbGV0ZWREb21haW5zKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBkb21haW4gOiBkZWxldGVkRG9tYWlucykKKyAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoV1RGTW92ZShkb21haW4pKTsK
KyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byBkYXRhVHlwZXNGb3JVSVByb2Nlc3MgPSBX
ZWJzaXRlRGF0YTo6ZmlsdGVyKHdlYnNpdGVEYXRhVHlwZXMsIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJKTsKICAgICBpZiAoIWRhdGFUeXBlc0ZvclVJUHJvY2Vzcy5pc0VtcHR5KCkgJiYgIWRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmlzRW1wdHkoKSkgewogICAg
ICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+Jik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrQWdncmVnYXRvcl0gKGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKSB7CkBAIC0yMDc0LDYgKzIwOTMsMTIg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ICAgICB9CisKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQo
c2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAgICAg
ICAgaXRlcmF0b3ItPnZhbHVlLT5mZXRjaERhdGEod2Vic2l0ZURhdGFUeXBlcywgW2NhbGxiYWNr
QWdncmVnYXRvcl0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGVu
dHJpZXMpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogI2VuZGlmIC8vIEVOQUJMRShJTlRFTExJ
R0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCmlu
ZGV4IGZiOTI5ODE0MWIwZGJjMzgxZmE4YjNiMzgxN2U2OGNhMDE4OTc5ZGEuLjQ3MzM4ZWZlNTM4
MjJhNzZhNTQ4NGYyOWM5MzU3Njc4ZjQwMTg4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZS5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBY2Nlc3NIYW5kbGVJbmZv
ID0gc3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciwgSVBDOjpTaGFyZWRGaWxlSGFuZGxlPjsKICAgICBFeHBlY3RlZDxBY2Nlc3NIYW5kbGVJbmZv
LCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjcmVhdGVTeW5jQWNjZXNzSGFuZGxlKCk7CiAgICAg
c3RkOjpvcHRpb25hbDxGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBjbG9zZShXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyPiBhY3RpdmVTeW5jQWNj
ZXNzSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTeW5jQWNjZXNzSGFuZGxlOyB9CiAK
IHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlcXVlc3RDcmVhdGVIYW5kbGUoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgVHlwZSwgU3RyaW5nJiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vz
c2FyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDM4YWEyNjU1YzM5
ZGRjMjM3YmE1YTM4MGE1ZDU0OTEyNDJjMzdmNTEuLjI5Y2ZiMGM2YjM3M2EyNWZmMDFjY2U4NjMz
Yzk1ZTU2YjFhY2I3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC00Miw4ICs0Myw3IEBAIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6fkZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcigpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IG1faGFuZGxlcy5rZXlzKCkpCi0gICAgICAgIG1f
cmVnaXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKyAgICBjbG9zZSgpOwogfQog
CiBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVIYW5kbGUoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZTo6VHlwZSB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lLCBib29sIGNyZWF0ZUlm
TmVjZXNzYXJ5KQpAQCAtMTQ5LDQgKzE0OSwyNCBAQCBib29sIEZpbGVTeXN0ZW1TdG9yYWdlTWFu
YWdlcjo6cmVsZWFzZUxvY2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6Rgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNs
b3NlKCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGZvciAoYXV0
byYgW2Nvbm5lY3Rpb25JRCwgaWRlbnRpZmllcnNdIDogbV9oYW5kbGVzQnlDb25uZWN0aW9uKSB7
CisgICAgICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAg
ICAgIGF1dG8gdGFrZW5IYW5kbGUgPSBtX2hhbmRsZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIG1fcmVnaXN0cnkudW5yZWdpc3RlckhhbmRsZShpZGVudGlmaWVyKTsKKworICAgICAg
ICAgICAgLy8gU2VuZCBtZXNzYWdlIHRvIHdlYiBwcm9jZXNzIHRvIGludmFsaWRhdGUgYWN0aXZl
IHN5bmMgYWNjZXNzIGhhbmRsZS4KKyAgICAgICAgICAgIGlmIChhdXRvIGFjY2Vzc0hhbmRsZUlk
ZW50aWZpZXIgPSB0YWtlbkhhbmRsZS0+YWN0aXZlU3luY0FjY2Vzc0hhbmRsZSgpKQorICAgICAg
ICAgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uSUQsIE1lc3NhZ2VzOjpX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OkludmFsaWRhdGVBY2Nlc3NIYW5kbGUoKmFj
Y2Vzc0hhbmRsZUlkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VS
VChtX2hhbmRsZXMuaXNFbXB0eSgpKTsKKyAgICBtX2hhbmRsZXNCeUNvbm5lY3Rpb24uY2xlYXIo
KTsKKyAgICBtX2xvY2tNYXAuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYjg1NzY3NjhiMzU1YWNiM2FhMGMzNzAz
OGNjNTFlY2M5MzJiMzk2Yy4uNTM1OTg5NTgxMGQ4NzQ4NTYwOWE0MGNmYTUzNzFjYzY5ZWViMDYz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaApAQCAtNDksNiArNDksOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCByZWxlYXNlTG9ja0ZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJD
b3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBj
bG9zZSgpOworCiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBGaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZVJlZ2lzdHJ5JiBtX3JlZ2lzdHJ5OwogICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgSGFzaFNldDxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllcj4+IG1faGFu
ZGxlc0J5Q29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMjk3OGEy
NWVmMTI1MjQ3MmNjZjJlNmYxZDMyZjUxYjA1MTAyZjA2Mi4uYmQxYWNlMDQyOGJiYTBjMDNjMjEy
M2ViYjIxMDhiNDdjMzBhMTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTMw
LDExICszMCw2OSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRl
IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgorI2luY2x1ZGUgPHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q2xpZW50T3JpZ2luPiByZWFkT3JpZ2luRnJvbUZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmICghRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBhdXRvIG9yaWdpbkZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIGF1dG8g
Y2xvc2VGaWxlID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUob3JpZ2luRmlsZUhhbmRsZSk7CisgICAgfSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQob3JpZ2luRmlsZUhhbmRsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBhdXRvIG9yaWdpbkNvbnRlbnQgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJl
RmlsZShvcmlnaW5GaWxlSGFuZGxlKTsKKyAgICBpZiAoIW9yaWdpbkNvbnRlbnQpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoeyBvcmlnaW5Db250ZW50LT5kYXRhKCksIG9yaWdpbkNvbnRlbnQtPnNpemUoKSB9KTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luOworICAgIGRl
Y29kZXIgPj4gb3JpZ2luOworICAgIHJldHVybiBvcmlnaW47Cit9CisKK3N0YXRpYyB2b2lkIHdy
aXRlT3JpZ2luVG9GaWxlSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoZmlsZVBhdGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChmaWxlUGF0aCkpOworICAg
IGF1dG8gb3JpZ2luRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgYXV0byBjbG9zZUZpbGUg
PSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShvcmln
aW5GaWxlSGFuZGxlKTsKKyAgICB9KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChvcmlnaW5GaWxlSGFuZGxlKSkgeworICAgICAgICBMT0dfRVJST1IoIndyaXRlT3JpZ2lu
VG9GaWxlSWZOZWNlc3Nhcnk6IEZhaWxlZCB0byBvcGVuIG9yaWdpbiBmaWxlIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7
CisgICAgZW5jb2RlciA8PCBvcmlnaW47CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUob3Jp
Z2luRmlsZUhhbmRsZSwgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwor
fQorCitzdGF0aWMgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKK3sKKyAgICBhdXRvIHBhcmVudFBhdGggPSBGaWxlU3lzdGVtOjpwYXJlbnRQ
YXRoKGZpbGVQYXRoKTsKKyAgICBhdXRvIGNoaWxkcmVuID0gRmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShwYXJlbnRQYXRoKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEpCisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworfQorCiBSZWY8TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBwYXRoKSk7CkBAIC0xMTYsNyArMTc0
LDcgQEAgc3RhdGljIFN0cmluZyBlbmNvZGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbGVTeXN0
ZW06OlNhbHQgc2FsdCkKICAgICByZXR1cm4gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaGFzaC5k
YXRhKCksIGhhc2guc2l6ZSgpKTsKIH0KIAotc3RhdGljIFN0cmluZyBvcmlnaW5QYXRoKGNvbnN0
IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBG
aWxlU3lzdGVtOjpTYWx0IHNhbHQpCitzdGF0aWMgU3RyaW5nIG9yaWdpbkRpcmVjdG9yeVBhdGgo
Y29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4sIEZpbGVTeXN0ZW06OlNhbHQgc2FsdCkKIHsKICAgICBpZiAocm9vdFBhdGguaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gcm9vdFBhdGg7CkBAIC0xMjYsMTUgKzE4NCwzMCBAQCBzdGF0aWMg
U3RyaW5nIG9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcgogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnRzKHJvb3RQYXRoLCB7IGVuY29kZWRUb3BPcmlnaW4sIGVuY29kZWRPcGVuaW5nT3Jp
Z2luIH0pOwogfQogCitzdGF0aWMgU3RyaW5nIG9yaWdpbkZpbGVQYXRoKGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZGlyZWN0b3J5LCAib3JpZ2luIl9zKTsKK30KKwogT3JpZ2luU3RvcmFnZU1hbmFnZXIm
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIHJldHVybiAqbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5lbnN1
cmUob3JpZ2luLCBbJl0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdl
TWFuYWdlcj4ob3JpZ2luUGF0aChtX3BhdGgsIG9yaWdpbiwgbV9zYWx0KSk7CisgICAgICAgIGF1
dG8gb3JpZ2luRGlyZWN0b3J5ID0gb3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgsIG9yaWdpbiwg
bV9zYWx0KTsKKyAgICAgICAgd3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxl
UGF0aChvcmlnaW5EaXJlY3RvcnkpLCBvcmlnaW4pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxPcmlnaW5TdG9yYWdlTWFuYWdlcj4oV1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW1v
dmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4pCit7CisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX2xvY2FsT3JpZ2luU3Rv
cmFnZU1hbmFnZXJzLmZpbmQob3JpZ2luKTsgaXRlcmF0b3IgIT0gbV9sb2NhbE9yaWdpblN0b3Jh
Z2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS0+aXNBY3Rp
dmUoKSkKKyAgICAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMucmVtb3ZlKGl0
ZXJhdG9yKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwZXJzaXN0
ZWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC0zMDUsNSArMzc4LDE1OCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Z2V0SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6Rmls
ZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZS0+Z2V0SGFuZGxlKGNvbm5lY3Rpb24udW5p
cXVlSUQoKSwgV1RGTW92ZShuYW1lKSkpOwogfQogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJz
aXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVR5cGUp
Cit7CisgICAgaWYgKHN0b3JhZ2VUeXBlID09ICJGaWxlU3lzdGVtIikKKyAgICAgICAgcmV0dXJu
IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpPiYmIGFwcGx5KQoreworICAg
IGZvciAoYXV0byYgdG9wT3JpZ2luIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3BhdGgp
KSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgdG9wT3JpZ2luKTsKKyAgICAgICAgYXV0byBvcGVu
aW5nT3JpZ2lucyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5
KTsKKyAgICAgICAgaWYgKG9wZW5pbmdPcmlnaW5zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChhdXRvJiBvcGVu
aW5nT3JpZ2luIDogb3BlbmluZ09yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8gb3BlbmluZ09y
aWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0b3BP
cmlnaW5EaXJlY3RvcnksIG9wZW5pbmdPcmlnaW4pOworICAgICAgICAgICAgYXBwbHkob3Blbmlu
Z09yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1ZlY3RvcjxXZWJzaXRl
RGF0YTo6RW50cnk+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhRnJvbURpc2soT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdGFyZ2V0VHlwZXMpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4+IG9yaWdpblR5cGVzOworICAgIGZvckVhY2hP
cmlnaW5EaXJlY3RvcnkoWyZdKGF1dG8gZGlyZWN0b3J5KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBvcmlnaW4gPSByZWFkT3JpZ2luRnJvbUZpbGUob3JpZ2luRmlsZVBhdGgoZGlyZWN0b3J5KSk7
CisgICAgICAgIGlmICghb3JpZ2luKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZv
ciAoYXV0byYgc3RvcmFnZVR5cGUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9y
eSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZShzdG9y
YWdlVHlwZSk7IHR5cGUgJiYgdGFyZ2V0VHlwZXMuY29udGFpbnMoKnR5cGUpKQorICAgICAgICAg
ICAgICAgIG9yaWdpblR5cGVzLmFkZChvcmlnaW4tPmNsaWVudE9yaWdpbiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4geyB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCp0eXBlKTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZW50cmllczsKKyAg
ICBmb3IgKGF1dG8gW29yaWdpbiwgdHlwZXNdIDogb3JpZ2luVHlwZXMpIHsKKyAgICAgICAgZm9y
IChhdXRvIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKHsgV2Vic2l0
ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCB0eXBlLCAwIH0gfSk7CisgICAgfQorCisgICAgcmV0dXJu
IGVudHJpZXM7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
dHlwZXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8gZW50cmllcyA9IGZldGNoRGF0YUZyb21EaXNrKHR5cGVz
KTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgZW50cmllcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGVudHJpZXMpKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cmll
cykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworVmVjdG9yPFdlYkNvcmU6OkNsaWVudE9y
aWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgY29uc3Qg
RnVuY3Rpb248Ym9vbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKT4mIGZpbHRlcikKK3sK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpD
bGllbnRPcmlnaW4+IGRlbGV0ZWRPcmlnaW5zOworICAgIGZvckVhY2hPcmlnaW5EaXJlY3Rvcnko
WyZdKGF1dG8gZGlyZWN0b3J5KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG9y
aWdpbkZpbGVQYXRoKGRpcmVjdG9yeSk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gcmVhZE9yaWdp
bkZyb21GaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pIHsKKyAgICAgICAgICAg
IC8vIElmIG9yaWdpbiBjYW5ub3QgYmUgcmV0cmlldmVkLCBidXQgd2UgYXJlIGFza2VkIHRvIHJl
bW92ZSBkYXRhIGZvciBhbGwgb3JpZ2lucywgcmVtb3ZlIGl0LgorICAgICAgICAgICAgaWYgKGZp
bHRlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB9KSkgeworICAgICAgICAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShkaXJlY3RvcnksIG1vZGlmaWVkU2lu
Y2VUaW1lKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShkaXJlY3RvcnkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFmaWx0ZXIoKm9yaWdpbikpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZGVsZXRlZE9yaWdpbnMuYXBwZW5kKCpvcmlnaW4pOworICAgICAgICBsb2Nh
bE9yaWdpblN0b3JhZ2VNYW5hZ2VyKCpvcmlnaW4pLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlmaWVk
U2luY2VUaW1lKTsKKyAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxl
KCpvcmlnaW4pOworICAgICAgICBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoZmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIGRlbGV0ZWRPcmlnaW5zOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBl
cywgb3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgSGFzaFNl
dDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpblNldDsKKyAgICAgICAgb3JpZ2lu
U2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOworICAgICAgICBmb3Ig
KGF1dG8gb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgICAgIG9yaWdpblNldC5hZGQoV1RGTW92
ZShvcmlnaW4pKTsKKworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCAtV2FsbFRpbWU6
OmluZmluaXR5KCksIFsmb3JpZ2luU2V0XShhdXRvIG9yaWdpbikgeworICAgICAgICAgICAgcmV0
dXJuIG9yaWdpblNldC5jb250YWlucyhvcmlnaW4uY2xpZW50T3JpZ2luKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSwgW10oYXV0
byYpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9KTsKKworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhRm9y
UmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
QVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBkb21haW5zID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGRlbGV0ZWRPcmlnaW5zID0gZGVsZXRlRGF0YU9u
RGlzayh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbJmRvbWFpbnNdKGF1dG8mIG9yaWdp
bikgeworICAgICAgICAgICAgYXV0byBkb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0KTsKKyAg
ICAgICAgICAgIHJldHVybiBkb21haW5zLmNvbnRhaW5zKGRvbWFpbik7CisgICAgICAgIH0pOwor
CisgICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRlbGV0ZWREb21h
aW5zOworICAgICAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGVsZXRlZE9yaWdpbnMpIHsKKyAgICAg
ICAgICAgIGF1dG8gZG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21Ib3N0KG9yaWdpbi5jbGllbnRPcmlnaW4uaG9zdCk7CisgICAgICAgICAgICBk
ZWxldGVkRG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFpbnMg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkZWxldGVkRG9tYWlucykpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zKSk7CisgICAgICAg
IH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5oCmluZGV4IDViYzU2YjdjNjQ2YzZiMWZkN2FkNjRkZDQ4N2VkZjVkZWE2MzkzNGEu
LmVmMzY2NjMxN2E1MzM3YmM0MzQ5ZmYzZjY2OGZkYTYyYzM1ZjgzYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsyOCwxMiBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgiCiAjaW5jbHVkZSAiT3JpZ2luU3Rv
cmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsKQEAg
LTU1LDEzICs1NywyMiBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9p
ZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOworICAgIHZvaWQg
ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVs
ZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogCiBw
cml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBwYXRoKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgT3JpZ2lu
U3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJik7CisgICAgdm9pZCByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklmUG9z
c2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSgpOwogCisg
ICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnkpPiYmKTsKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBmZXRjaERh
dGFGcm9tRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CisgICAgVmVjdG9yPFdlYkNv
cmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlRGF0YU9uRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgV2FsbFRpbWUsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik+Jik7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciAoaW1wbGVtZW50ZWQg
YnkgZ2VuZXJhdGVkIGNvZGUpCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXgg
NGYwNmY0NTI0NjU2NDZkMjAxMWJjN2Y1M2JiZGIyODExNTkzYWE0My4uMjBhMjRjNjY4MzM3YzIy
M2ViNmYyNGJjNTBlNjE1ZDNiNjUzOTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCkBA
IC01MSwyMCArNTEsNjIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXItPmNvbm5lY3Rpb25DbG9zZWQoY29ubmVjdGlvbik7CiAgICAgfQogCi0gICAgU3Ry
aW5nIHR5cGVTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyKSBjb25z
dAorICAgIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgRmlsZVN5
c3RlbSwKKyAgICB9OworCisgICAgc3RhdGljIFN0cmluZyB0b1N0b3JhZ2VJZGVudGlmaWVyKFN0
b3JhZ2VUeXBlIHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAg
Y2FzZSBTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgICAgIHJldHVybiAiRmlsZVN5
c3RlbSJfczsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiJfczsKKyAg
ICB9CisKKyAgICBTdHJpbmcgdHlwZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlIHR5cGUpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gbV9yb290UGF0aC5pc0VtcHR5KCkgPyBlbXB0eVN0cmlu
ZygpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsIHN0
b3JhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBzdG9yYWdlSWRlbnRpZmllciA9IHRvU3Rv
cmFnZUlkZW50aWZpZXIodHlwZSk7CisgICAgICAgIGlmIChtX3Jvb3RQYXRoLmlzRW1wdHkoKSB8
fCBzdG9yYWdlSWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKKworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fcm9vdFBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVt
U3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiByZWdpc3RyeSkKICAgICB7CiAgICAgICAgIGlmICghbV9m
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIpCi0gICAgICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlciA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyPih0eXBlU3RvcmFn
ZVBhdGgoIkZpbGVTeXN0ZW0iKSwgcmVnaXN0cnkpOworICAgICAgICAgICAgbV9maWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcj4odHlw
ZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtKSwgcmVnaXN0cnkpOwogCiAgICAg
ICAgIHJldHVybiAqbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CiAgICAgfQogCisgICAgYm9v
bCBpc0FjdGl2ZSgpCisgICAgeworICAgICAgICByZXR1cm4gISFtX2ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlcjsKKyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSkpCisgICAg
ICAgICAgICBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEobW9kaWZpZWRTaW5jZVRpbWUpOwor
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG1fcm9vdFBhdGgp
OworICAgIH0KKwogcHJpdmF0ZToKKyAgICB2b2lkIGRlbGV0ZUZpbGVTeXN0ZW1TdG9yYWdlRGF0
YShXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAgIGlmIChtX2ZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlcikKKyAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyID0gbnVsbHB0cjsKKworICAgICAgICBhdXRvIGZpbGVTeXN0ZW1TdG9yYWdlUGF0aCA9IHR5
cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShmaWxlU3lzdGVtU3RvcmFnZVBhdGgsIG1v
ZGlmaWVkU2luY2VUaW1lKTsKKyAgICB9CisKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBT
dHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2RlIG1fbW9kZSB7IFN0b3Jh
Z2VCdWNrZXRNb2RlOjpCZXN0RWZmb3J0IH07CkBAIC03NCw2ICsxMTYsNyBAQCBwcml2YXRlOgog
T3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyKFN0cmluZyYmIHBhdGgp
CiAgICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkKIHsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIH0KIAogT3JpZ2luU3RvcmFnZU1hbmFnZXI6On5PcmlnaW5TdG9yYWdlTWFuYWdl
cigpID0gZGVmYXVsdDsKQEAgLTEwMyw1ICsxNDYsMTUgQEAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVT
eXMKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihy
ZWdpc3RyeSk7CiB9CiAKK2Jvb2wgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlKCkKK3sK
KyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZlKCk7Cit9CisKK3ZvaWQgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlw
ZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0
ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
T3JpZ2luU3RvcmFnZU1hbmFnZXIuaAppbmRleCBhNGMxMWFkNjVhNWMxOTcwM2E3YzBlOTI5NGJj
MmZlYWFhMmZmZTJlLi5kYTMxMGM4NjIyODBhZmI2MjA5YTkxMWI0NWVkMzQ2NjBlOWRiYzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3Rv
cmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
T3JpZ2luU3RvcmFnZU1hbmFnZXIuaApAQCAtMjgsMTAgKzI4LDE1IEBACiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKIGNsYXNzIEZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcjsKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7
CiAKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTQzLDEyICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwZXJzaXN0ZWQoKSBj
b25zdCB7IHJldHVybiBtX3BlcnNpc3RlZDsgfQogICAgIHZvaWQgcGVyc2lzdCgpOwogICAgIEZp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0
ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmKTsKKyAgICBib29sIGlzQWN0aXZlKCk7CisgICAgdm9p
ZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSk7CiAKIHBy
aXZhdGU6CiAgICAgZW51bSBjbGFzcyBTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2w7CiAgICAgY2xh
c3MgU3RvcmFnZUJ1Y2tldDsKICAgICBTdG9yYWdlQnVja2V0JiBkZWZhdWx0QnVja2V0KCk7CiAK
KyAgICB2b2lkIGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mKTsKKyAgICB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSgpOworCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VCdWNrZXQ+IG1fZGVmYXVsdEJ1Y2tldDsKICAgICBT
dHJpbmcgbV9wYXRoOwogICAgIGJvb2wgbV9wZXJzaXN0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCmluZGV4IGYzNzI5
MDEzOGI0ZmFmZjMyMzUzYjJhY2RhZGU4MzQwMGRhOWNjOGEuLmY5YjJmZTA0MDlkYzQzMGIxZDNk
M2FlYjAwZTc2YjAwYjNmMDU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQCBXZWJzaXRlRGF0YVBy
b2Nlc3NUeXBlIFdlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MoV2Vic2l0ZURhdGFUeXBlIGRhdGFU
eXBlKQogICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzOgogICAg
ICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKICNlbmRpZgorICAg
IGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOgorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFUeXBlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVR5cGUuaAppbmRleCA3YTllNTAwZmUxYjA5ZTM4OTVkZDc0M2UxNjVjOTg5MThi
ZTdhOGRiLi5lNDU5YTA5MDM4YTQ4YTE5ODZkNmQzMzk2NjQzMzI4MzM3NWE0NTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaApA
QCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90IHsK
ICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQogICAgIEFsdGVybmF0aXZl
U2VydmljZXMgPSAxIDw8IDE4LAogI2VuZGlmCisgICAgRmlsZVN5c3RlbSA9IDEgPDwgMTksCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKQEAgLTc5LDEwICs4MCwxMSBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB7CiAjZW5kaWYKICAg
ICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLAogICAgICAgICBXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZTo6RGV2aWNlSWRIYXNoU2FsdCwKLSAgICAgICAgV2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cworICAgICAgICBXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzLAogI2lmIEhBVkUoQ0ZORVRX
T1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgICAgICwgV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkFsdGVybmF0aXZlU2VydmljZXMKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6
OkFsdGVybmF0aXZlU2VydmljZXMsCiAjZW5kaWYKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkZpbGVTeXN0ZW0KICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQppbmRleCBjODI2
MTZmNzkwYzZmYzY5MGE2Y2JkNjk3YTBlOGVjZGE1MjI3ZmIxLi5mYTExMTNlNDdjMmE0NDQxNGJk
MmFkZDE5MmQwMmU3NTA3ZjMyNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtNTEsNiArNTEsNyBA
QCBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0
YVR5cGVBZENsaWNrQXR0cmlidXRpb25zID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0
cmlidXRpb25zIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNl
cnZpY2VzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzIjsKK05TU3Ry
aW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSA9IEAiX1dLV2Vic2l0ZURh
dGFUeXBlRmlsZVN5c3RlbSI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0
IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJ
bkRhdGEiOwpAQCAtMTEwLDYgKzExMSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9T
dHJpbmcoTlNTZXQgKmRhdGFUeXBlcykKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAgICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6QCJBbHRlcm5hdGl2ZSBTZXJ2aWNlcyJdOworICAgIGlmIChbZGF0YVR5cGVz
IGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dKQorICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OkAiRmlsZSBTeXN0ZW0iXTsKIAogICAgIHJldHVybiBbYXJyYXkgY29t
cG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaAppbmRleCBkYmM1ZjNmN2ExZmY0ZmI3NDlhYWZkNzBlNTcwYmEwNDg1NjhhY2Q2Li45MTQ0
OGVlMWQ1NTFkZTQyMDY1ODY3YjgxNWRiZGYxZGVmYTc1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oCkBAIC03Nyw2ICs3Nyw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25h
bDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlCiAg
ICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlw
ZUFsdGVybmF0aXZlU2VydmljZXNdKQogICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpB
bHRlcm5hdGl2ZVNlcnZpY2VzOwogI2VuZGlmCisgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNF
cXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dKQorICAgICAgICByZXR1
cm4gV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKQEAgLTEzNCw2ICsxMzYsOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4g
dG9XS1dlYnNpdGVEYXRhVHlwZXMoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdAogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVT
ZXJ2aWNlcykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNp
dGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdOwogI2VuZGlmCisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKSkKKyAgICAgICAg
W3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3Rl
bV07CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZFByaXZhdGUuaAppbmRleCBkNjA3ZGZlMTNmNjEyYjU4MjIwZTVhMzUyNTc3NDcwNTMxZWU0OTA3
Li4yY2Y5YTRkMmEwYzdmY2UyNWI2NTA2YWMxN2JkNzExMTdjOTc1MWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZFByaXZhdGUuaApAQCAtMzcsNiArMzcsNyBAQCBXS19FWFRFUk4gTlNTdHJpbmcgKiBj
b25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KAogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0
dHJpYnV0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIFdL
X0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01l
YXN1cmVtZW50cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogV0tf
RVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2
aWNlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOworV0tfRVhURVJO
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRBUkdF
VF9PU19JUEhPTkUKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlw
ZVBsdWdJbkRhdGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
aW5kZXggZTJiMDczNjQ2NGIxNjZkZDkyMGNmMzU1MTcxZmIzYTU2MzcwYTM4NC4uN2VmMDY5NTBh
YjA3ZDNlMWE3NjE2Y2JjYjU4YmQyNTc4NTM1OWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0yNDgs
NyArMjQ4LDggQEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0lu
Y2x1ZGluZ1ByaXZhdGUKICAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxz
LAogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucywKICAg
ICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1cmVtZW50cywKLSAg
ICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMKKyAgICAgICAg
ICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMsCisgICAgICAgICAgICBf
V0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKICAgICAg
ICAgICAgICwgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMTIwNGUzYzQz
YmI4NmFlZDQ2YjNjNTExMDM1MzhlYTU3MmI4ZDgwLi41NWI4ZDNlMDE1M2RkMDA5MDdkOGNkODQw
OWNjM2JiMDBjZDQ1NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE0OTcsNiArMTQ5Nyw5IEBACiAJCTkzRDZCN0I1MjU1MjY4RDcw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEyMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9OwogCQk5
M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQz
OTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0U3OTk4NTI3NTZGQTU1MDA3NDAwOEEgLyogV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgyMjc1NkZBNTQwMDc0
MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OworCQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTkzRTc5OTg4
Mjc1NkZBQzIwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNzk5
ODEyNzU2RkE1MzAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi87IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4
MDI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRG
MUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CiAJCTk1NjUwODM5MjZEODdBMkIw
MEUxNUNCNyAvKiBBcHBsZU1lZGlhU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NjUwODM3MjZEODdBMkIwMEUxNUNCNyAvKiBBcHBs
ZU1lZGlhU2VydmljZXNTUEkuaCAqLzsgfTsKQEAgLTUyOTAsNiArNTI5MywxMCBAQAogCQk5M0Q2
QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTc5OTdFMjc1NkY2NzAwMDc0MDA4QSAvKiBXZWJG
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3
OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVz
c2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMx
NzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBX
S01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tNb3VzZURldmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9ic2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDU2NSw2ICsxMDU3Miw3IEBACiAJ
CQkJQkMwMzJENjgxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkVkaXRvckNsaWVudC5oICovLAogCQkJ
CTkzNTQyNDJCMjcwM0JEQ0IwMDVDQTcyQyAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b24uY3BwICovLAogCQkJCTkzNTQyNDJBMjcwM0JEQ0IwMDVDQTcyQyAvKiBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24uaCAqLywKKwkJCQk5M0U3OTk3RTI3NTZGNjcwMDA3NDAwOEEgLyog
V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTEx
QTU4MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJ
QkMwMzJENkExMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCiAJ
CQkJQkMxQkUxREYxMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCAq
LywKQEAgLTEyMDM5LDYgKzEyMDQ3LDkgQEAKIAkJCQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi8sCiAJCQkJ
RTM4NjZCMDQyMzk5OTc5QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTM4NjZCMDUyMzk5OTc5QzAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2Vz
LmggKi8sCisJCQkJOTNFNzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTNFNzk5ODEyNzU2RkE1
MzAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8s
CisJCQkJOTNFNzk5ODMyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCUNENzNCQTQ4MTMxQUNEOEUwMEVFREVE
MiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0Q3
M0JBNDkxMzFBQ0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaCAq
LywKIAkJCQlDRDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMjQ0OSw4ICsxMjQ2MCw4IEBACiAJCQkJ
NTE2MEU5NUUyNzRDMkEwMzAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE2MEU5NTkyNzRDMEQ4OTAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5kbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjdCQjdCMjc0NEM1MDcwMEM0NUE3MiAvKiBQdXNoQ2xp
ZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE3QjVGMkYyNzU3MzgyQjAwMkRD
MjJEIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxN0I1RjJGMjc1NzM4MkIwMDJEQzIyRCAvKiBXZWJQdXNoRGFlbW9u
Q29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTMyODYsNiArMTMy
OTcsOCBAQAogCQkJCUJDMDMyREJCMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTExQjVEMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJF
dmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTQyNDJDMjcwM0JEQ0IwMDVDQTcy
QyAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzRTc5OTg4Mjc1NkZBQzIwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFNzk5ODcyNzU2RkFCNDAwNzQwMDhB
IC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE5MEMxRUUxMjY0RkQ1MDAwM0U0NEQ0IC8qIFdlYkZpbmRPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0Njk1NDEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9y
bUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNDY5NTYxMjE0RTZDQjAwMEI5OEVCIC8q
IFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzM5
OCw2ICsxMzQxMSw3IEBACiAJCQkJMUExRTA5MzQxODg2MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUQxMkE4ODM4ODAw
NjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQ0Q2
OTgyNzIxRUZDODAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MTdCNUYyRTI3NTczODJBMDAyREMyMkQgLyogV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJDRDY5QTI3MjFGMEE5
MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDYxQ0NDQTYyMzE0ODVBQTAwQjY1OUI5IC8qIFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTg2MEU3MTIzMEY2N0ZDMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJ
bnRlcmNlcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEzNTQ4LDcgKzEzNTYyLDYg
QEAKIAkJCQk1Qzc5NUQ3MDIyOUYzNzNGMDAzRkYxQzQgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Qzc5NUQ3MTIyOUYzNzU3MDAzRkYxQzQgLyogV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNTU1
RjYxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTdCNUYyRTI3NTczODJBMDAyREMyMkQgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25D
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJD
RUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFQTAy
MzgxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNDOTM4RTExMTgwREU0NDAwODVFNUZFIC8qIFdLQ29udGV4dFByaXZhdGUuaCBp
biBIZWFkZXJzICovLApAQCAtMTUzODAsNiArMTUzOTMsNyBAQAogCQkJCUUzODY2QUU1MjM5NzQw
MDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0g
aW4gU291cmNlcyAqLywKIAkJCQlFMzg2NkIwOTIzOTlBMkQ1MDBGODhGRTkgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOTJBNzg5MjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk5M0U3OTk4NTI3NTZGQTU1MDA3NDAwOEEgLyogV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDczQkE0NzEzMUFDQzlBMDBFRURFRDIg
LyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzBFNjA2MTEyRDZCQTkxMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uOTRk
OWQyY2MzZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKQEAgLTEx
OSw2ICsxMjEsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgICAgIHN0b3Jh
Z2VBcmVhTWFwLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbigpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgVVNFKExJQldFQlJUQykKICAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlJUQ01vbml0b3I6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJlY2RjZjdk
OWQ1MTU3Y2Y4M2JiYjI0MzM0MGVhZThmMzU3Y2I3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CisgICAgSW52YWxpZGF0ZUFjY2Vzc0hhbmRsZShXZWJD
b3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZGFh
OWQ3NGYwYTc4MmEyOTI3MjM5OGJjYWJhN2E1M2E2YWQ3NTRmLi4xMzc0OWNmMDQ5ZDJiMzBlMTM4
YTlmMWM1OGQyNTZlYTAyOGQwZDg3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMDEgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5
c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9GaWxlU3lzdGVtQWNjZXNzLm1tOgorCiAyMDIxLTEyLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlIHNob3Vs
ZCBiZSBpbnZhbGlkYXRlZCB3aGVuIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3Mu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nl
c3MubW0KaW5kZXggN2JiZTNjOWY2MmMxZDk3YzMxOTU1MmExOTAzZDkxNWFkNWY3YTIxYS4uMmQ0
M2Q1Mzg3ODE3MmFiOTU5M2M0MGU2MzliNjgyNGRjNGFjZmZmMiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5t
bQpAQCAtMjksMTEgKzI5LDEzIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMu
aCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFSZWNv
cmRQcml2YXRlLmg+CiAKIEBpbnRlcmZhY2UgRmlsZVN5c3RlbUFjY2Vzc01lc3NhZ2VIYW5kbGVy
IDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5kCkBAIC00OCw3ICs1MCw3
IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxl
ciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiAKIEBlbmQKIAotc3RhdGljIE5TU3RyaW5nICpt
YWluRnJhbWVTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKK3N0YXRpYyBOU1N0cmluZyAqd29ya2VyRnJh
bWVTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKICAgICBmdW5jdGlvbiBzdGFydCgpIHsgXAogICAgICAg
ICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcignd29ya2VyLmpzJyk7IFwKICAgICAgICAgd29ya2Vy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKQEAgLTExNSw3ICsxMTcsNyBAQCBURVNU
KEZpbGVTeXN0ZW1BY2Nlc3MsIFdlYlByb2Nlc3NDcmFzaER1cmluZ1dyaXRlKQogICAgIFtjb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJ3ZWJraXQiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6
Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOndvcmtlckZyYW1l
U3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3Jn
Il1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
KTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJwYWdlIGlzIGxvYWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CkBAIC0xMjYs
NyArMTI4LDcgQEAgVEVTVChGaWxlU3lzdGVtQWNjZXNzLCBXZWJQcm9jZXNzQ3Jhc2hEdXJpbmdX
cml0ZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJzdWNjZXNzOiB3cml0ZSAxMCBieXRlcyIsIFts
YXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtzZWNvbmRX
ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbc2Vjb25kV2ViVmlldyBs
b2FkSFRNTFN0cmluZzp3b3JrZXJGcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicGFnZSBpcyBsb2FkZWQiLCBbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV0pOwpAQCAtMTY4LDcgKzE3MCw3IEBAIFRFU1QoRmlsZVN5c3RlbUFjY2Vz
cywgTmV0d29ya1Byb2Nlc3NDcmFzaER1cmluZ1dyaXRlKQogICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ3ZWJr
aXQiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1l
U3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3Jn
Il1dOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOndvcmtlckZyYW1lU3RyaW5nIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1dOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwYWdlIGlz
IGxvYWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CkBAIC0yNTgsNCArMjYwLDE5MSBA
QCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIE1pZ3JhdGVUb05ld1N0b3JhZ2VEaXJlY3RvcnkpCiAg
ICAgRVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2Ug
Ym9keV0pOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBAIjxzY3JpcHQ+IFwK
KyAgICBhc3luYyBmdW5jdGlvbiBvcGVuKHNob3VsZENyZWF0ZUZpbGUpIFwKKyAgICB7IFwKKyAg
ICAgICAgdHJ5IHsgXAorICAgICAgICAgICAgdmFyIHJvb3RIYW5kbGUgPSBhd2FpdCBuYXZpZ2F0
b3Iuc3RvcmFnZS5nZXREaXJlY3RvcnkoKTsgXAorICAgICAgICAgICAgdmFyIGZpbGVIYW5kbGUg
PSBhd2FpdCByb290SGFuZGxlLmdldEZpbGVIYW5kbGUoJ2ZpbGUtc3lzdGVtLWFjY2Vzcy50eHQn
LCB7ICdjcmVhdGUnIDogc2hvdWxkQ3JlYXRlRmlsZSB9KTsgXAorICAgICAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2ZpbGUgaXMg
b3BlbmVkJyk7IFwKKyAgICAgICAgfSBjYXRjaChlcnIpIHsgXAorICAgICAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2Vycm9yOiAn
ICsgZXJyLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlKTsgXAorICAgICAgICB9IFwKKyAgICB9
IFwKKyAgICBvcGVuKHRydWUpOyBcCisgICAgPC9zY3JpcHQ+IjsKKworVEVTVChGaWxlU3lzdGVt
QWNjZXNzLCBGZXRjaEFuZFJlbW92ZURhdGEpCit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsK
KyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0
b3JlXTsKKyAgICBhdXRvIHR5cGVzID0gW05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURh
dGFUeXBlRmlsZVN5c3RlbV07CisKKyAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGF0YS4KKyAgICBk
b25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlw
ZXMgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
IHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMuX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0g
WUVTOworICAgIHByZWZlcmVuY2VzLl9zdG9yYWdlQVBJRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnRlc3RTdHJpbmcgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBb
bGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworCisgICAgLy8gRmV0Y2ggZGF0YSBhbmQgcmVtb3Zl
IGl0IGJ5IG9yaWdpbi4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUg
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5
PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHJl
Y29yZHMuY291bnQsIDF1KTsKKyAgICAgICAgYXV0byByZWNvcmQgPSBbcmVjb3JkcyBvYmplY3RB
dEluZGV4OjBdOworICAgICAgICBFWFBFQ1RfU1RSRVEoIndlYmtpdC5vcmciLCBbcmVjb3JkLmRp
c3BsYXlOYW1lIFVURjhTdHJpbmddKTsKKworICAgICAgICAvLyBSZW1vdmUgZGF0YS4KKyAgICAg
ICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgZm9yRGF0YVJlY29y
ZHM6cmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisKKyAgICAvLyBGZXRjaCBkYXRhIGFmdGVyIHJlbW92YWwuCisgICAgZG9uZSA9IGZhbHNl
OworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRz
KSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAwdSk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH1dOworCisgICAgLy8gRmlsZSBjYW5ub3QgYmUgb3BlbmVkIGFmdGVyIGRh
dGEgcmVtb3ZhbC4KKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJvcGVuKGZhbHNl
KSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZXJyb3I6IE5vdEZvdW5kRXJyb3IgLSBUaGUgb2Jq
ZWN0IGNhbiBub3QgYmUgZm91bmQgaGVyZS4iLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
fQorCitURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIFJlbW92ZURhdGFCeU1vZGlmaWNhdGlvblRpbWUp
Cit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2Nv
bmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNj
ZXNzRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZ
RVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUg
aXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIGF1dG8gd2Vic2l0
ZURhdGFTdG9yZSA9IFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdOworICAgIGF1dG8g
dHlwZXMgPSBbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVt
XTsKKyAgICBkb25lID0gZmFsc2U7CisgICAgX19ibG9jayBOU1VJbnRlZ2VyIHJlY29yZHNDb3Vu
dDsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3Jk
cykgeworICAgICAgICByZWNvcmRzQ291bnQgPSByZWNvcmRzLmNvdW50OworICAgICAgICBFWFBF
Q1RfR1QocmVjb3Jkc0NvdW50LCAwdSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7
CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgbW9kaWZpZWRT
aW5jZTpbTlNEYXRlIG5vd10gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIFt3ZWJzaXRl
RGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgICAg
ICByZWNvcmRzQ291bnQgPSByZWNvcmRzLmNvdW50OworICAgICAgICAgICAgRVhQRUNUX0VRKHJl
Y29yZHMuY291bnQsIHJlY29yZHNDb3VudCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZU
eXBlczp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25I
YW5kbGVyOl4geworICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29y
ZCAqPiAqcmVjb3JkcykgeworICAgICAgICAgICAgRVhQRUNUX0VRKHJlY29yZHMuY291bnQsIDB1
KTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitzdGF0aWMgTlNTdHJpbmcgKm1h
aW5GcmFtZVN0cmluZyA9IEAiPHNjcmlwdD4gXAorICAgIGZ1bmN0aW9uIHBvc3RSZXN1bHQoZXZl
bnQpIFwKKyAgICB7IFwKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IFwKKyAgICB9IFwKKyAgICBhZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgcG9zdFJlc3VsdCwgZmFsc2UpOyBcCisgICAgPC9zY3JpcHQ+
IFwKKyAgICA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS8nPiI7CisKK3N0YXRp
YyBjb25zdCBjaGFyKiBmcmFtZUJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCis8c2NyaXB0PgorZnVu
Y3Rpb24gcG9zdE1lc3NhZ2UobWVzc2FnZSkKK3sKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2UobWVz
c2FnZSwgJyonKTsKK30KK2FzeW5jIGZ1bmN0aW9uIG9wZW4oKQoreworICAgIHRyeSB7CisgICAg
ICAgIHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9yLnN0b3JhZ2UuZ2V0RGlyZWN0b3J5
KCk7CisgICAgICAgIHZhciBmaWxlSGFuZGxlID0gYXdhaXQgcm9vdEhhbmRsZS5nZXRGaWxlSGFu
ZGxlKCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0JywgeyAnY3JlYXRlJyA6IHRydWUgfSk7CisgICAg
ICAgIHBvc3RNZXNzYWdlKCdmaWxlIGlzIG9wZW5lZCcpOworICAgIH0gY2F0Y2goZXJyKSB7Cisg
ICAgICAgIHBvc3RNZXNzYWdlKCdlcnJvcjogJyArIGVyci5uYW1lICsgJyAtICcgKyBlcnIubWVz
c2FnZSk7CisgICAgfQorfQorb3BlbigpOworPC9zY3JpcHQ+CispVEVTVFJFU09VUkNFIjsKKwor
VEVTVChGaWxlU3lzdGVtQWNjZXNzLCBGZXRjaERhdGFGb3JUaGlyZFBhcnR5KQoreworICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgZnJhbWVC
eXRlcyB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0
byBoYW5kbGVyID0gYWRvcHROUyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAg
ICBwcmVmZXJlbmNlcy5fZmlsZVN5c3RlbUFjY2Vzc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVy
ZW5jZXMuX3N0b3JhZ2VBUElFbmFibGVkID0gWUVTOworCisgICAgYXV0byB3ZWJzaXRlRGF0YVN0
b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV07CisgICAgYXV0byB0eXBlcyA9
IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dOworICAg
IGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0
eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVy
Ol4geworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW25hdmlnYXRp
b25EZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZp
ZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2Fs
bGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50
aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVy
VHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3Jl
ZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworICAgIFtuYXZpZ2F0aW9uRGVs
ZWdhdGUgc2V0RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpbJl0oV0tOYXZpZ2F0aW9u
QWN0aW9uICphY3Rpb24sIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSkpIHsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93KTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
Om1haW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93
ZWJraXQub3JnIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJmaWxlIGlzIG9wZW5lZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7
CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVj
b3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURh
dGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHJlY29yZHMuY291bnQs
IDF1KTsKKyAgICAgICAgYXV0byByZWNvcmQgPSBbcmVjb3JkcyBvYmplY3RBdEluZGV4OjBdOwor
ICAgICAgICBFWFBFQ1RfU1RSRVEoIjEyNy4wLjAuMSIsIFtyZWNvcmQuZGlzcGxheU5hbWUgVVRG
OFN0cmluZ10pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFM
X1NESykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445813</attachid>
            <date>2021-12-02 22:58:08 -0800</date>
            <delta_ts>2021-12-03 11:22:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233567-20211202225807.patch</filename>
            <type>text/plain</type>
            <size>69078</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFjNjczMzhjYjg5MzhlYmIzYWE5NGE3
MjhjMWYzM2JmMzE1NzE4N2IuLjc0MmIxYzk3NzFhODY5NjI5NmJkYzFmM2FiOGM0NDc4MWMzZGZi
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMDIgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
U3lzdGVtSW1wbDo6cmVhZEVudGlyZUZpbGUpOiBSZWFkIHdob2xlIGZpbGUgY29udGVudCBpbnRv
IGEgVmVjdG9yLgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKTogUmVjdXJzaXZlbHkgZGVsZXRlIGZpbGVzIGFuZCBmb2xkZXJzIG1vZGlm
aWVkIGFmdGVyIAorICAgICAgICBzcGVjaWZpZWQgdGltZSBpbiBhIGRpcmVjdG9yeS4KKyAgICAg
ICAgKiB3dGYvRmlsZVN5c3RlbS5oOgorCiAyMDIxLTEyLTAyICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1BdIFN0cmVuZ3RoZW4gc2FuZGJveCB3aGVu
IEFwcENhY2hlIGlzIGRpc2FibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU5NzI0MWQzMDIwMjVmYTM5NjNm
NDRmZDY5YzFkZGE2MjFiNTRhMi4uZmM4YjY3Y2JhYjU0MjIzNmE2MmU2YjZmMTZkOTIwZjAxYjE4
YjU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCByZW1vdmUgZmlsZSBz
eXN0ZW0gZGF0YSB2aWEgV0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaDoKKwogMjAyMS0xMi0wMiAgVHlsZXIgV2lsY29jayAg
PHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBJbiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojpkb2N1bWVudExpbmtzLCB1c2UgZXhpc3RpbmcgaW1hZ2UtbWFwIGRvY3VtZW50IGxp
bmtzIGluc3RlYWQgb2YgYWx3YXlzIGNyZWF0aW5nIG5ldyBvbmVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDViYjg1
Yzk1MWIxOTQ0YTk4ZWZhYzBhMTcyZTdjN2JmZDNkMmM4YWYuLmYwM2JjY2YxZGY5NTk1ZjFiYzhk
Nzg2Nzk0OThhMTY1NDg5NWQ4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMjEtMTIt
MDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5k
IHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBX
ZWJzaXRlRGF0YVR5cGUgdmFsdWUgRmlsZVN5c3RlbSBmb3IgRmlsZVN5c3RlbUFjY2VzcyBkYXRh
LiBOZXR3b3JrIHByb2Nlc3Mgbm93IGNhbiBmZXRjaCBhbmQgCisgICAgICAgIGRlbGV0ZSB0aGlz
IHR5cGUgb2YgZGF0YSB3aGVuIGZldGNoaW5nIGFuZCBkZWxldGVpbmcgd2Vic2l0ZSBkYXRhIChp
ZiBGaWxlU3lzdGVtIHR5cGUgaXMgaW5jbHVkZWQgaW4gdGFyZ2V0CisgICAgICAgIHR5cGVzKS4K
KworICAgICAgICBUbyB0cmFjayBvcmlnaW5zIHRoYXQgaGF2ZSBGaWxlU3lzdGVtIGRhdGEsIHRo
aXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlIG5hbWVkIG9yaWdpbiBpbiB0aGUgb3JpZ2lu
J3MgCisgICAgICAgIGRpcmVjdG9yeS4gVGhpcyBmaWxlIHdpbGwgYmUgY3JlYXRlZCB3aGVuIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVG8gZGVsZXRlIGV4aXN0
aW5nIEZpbGVTeXN0ZW0gZGF0YSwgbmV0d29yayBwcm9jZXNzIGZpbmRzIG9yaWdpbnMgdGhhdCBh
cmUgcmVxdWVzdGVkIHRvIGJlIGRlbGV0ZWQgYW5kIGhhdmUgZGF0YSAKKyAgICAgICAgb24gZGlz
aywgY2xvc2VzIGFjdGl2ZSBhY2Nlc3MgaGFuZGxlcywgYW5kIGRlbGV0ZXMgdGhlIGZpbGVzLiBU
aGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3ZlIHdpbGwgYmUgZGVsZXRlZCBpZiAKKyAgICAg
ICAgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0IGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYW5k
IGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVsZXRlZC4KKworICAgICAgICBOZXcgQVBJIHRl
c3RzOiBGaWxlU3lzdGVtQWNjZXNzLkZldGNoQW5kUmVtb3ZlRGF0YQorICAgICAgICAgICAgICAg
ICAgICAgICBGaWxlU3lzdGVtQWNjZXNzLlJlbW92ZURhdGFCeU1vZGlmaWNhdGlvblRpbWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbUFjY2Vzcy5GZXRjaERhdGFGb3JUaGlyZFBh
cnR5CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3Jl
ZERhdGFUeXBlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJz
aXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAg
KFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUg
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2Vy
Ojp+RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWRP
cmlnaW5Gcm9tRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlT3JpZ2luVG9GaWxlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
b3JpZ2luRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YUZvclJlZ2lzdHJh
YmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Om9yaWdpblBhdGgpOiBEZWxldGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojp0
b1N0b3JhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQ6OnR5cGVTdG9yYWdlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0
Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlXSk6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjI4MzE3OSkgR29vZ2xlIERyaXZlIGZyZWV6ZXMgYWZ0
ZXIgZG93bmxvYWRpbmcgYSBmb2xkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNjRiYWM2YjZi
NzAwMTYxMGI1M2YyZTFkMzA5MjY3YmQ1YTQwZjUzOC4uZjY5MDQ5MjhlZjU1YjBhYjgxZTYwMDUw
YjM5M2FkYzRjNzk5MTY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxNCw2ICs1MTQsNjAg
QEAgc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgp
CiAgICAgcmV0dXJuIHNhbHQ7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBy
ZWFkRW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGlmICghRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaGFuZGxlKS52YWx1
ZV9vcigwKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICB1bnNpZ25lZCBieXRlc1RvUmVhZDsKKyAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShz
aXplLCBieXRlc1RvUmVhZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKKyAgICB1bnNpZ25lZCB0b3RhbEJ5
dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisK
K3ZvaWQgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
LCBXYWxsVGltZSB0aW1lKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGRlbGV0ZSBkaXJl
Y3RvcnkgZm9sZGVyLgorICAgIGlmICh0aW1lID09IC1XYWxsVGltZTo6aW5maW5pdHkoKSkgewor
ICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBjaGlsZHJlbiA9IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5
KTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKKyAgICAgICAgYXV0byBjaGls
ZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCBj
aGlsZCk7CisgICAgICAgIGF1dG8gY2hpbGRUeXBlID0gZmlsZVR5cGUoY2hpbGRQYXRoKTsKKyAg
ICAgICAgaWYgKCFjaGlsZFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBz
d2l0Y2ggKCpjaGlsZFR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWxlVHlwZTo6UmVndWxhcjogewor
ICAgICAgICAgICAgaWYgKGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVN
b2RpZmljYXRpb25UaW1lKGNoaWxkUGF0aCk7IG1vZGlmaWNhdGlvblRpbWUgJiYgKm1vZGlmaWNh
dGlvblRpbWUgPj0gdGltZSkKKyAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGNoaWxkUGF0aCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbGVUeXBlOjpE
aXJlY3Rvcnk6CisgICAgICAgICAgICBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY2hpbGRQ
YXRoLCB0aW1lKTsKKyAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNoaWxkUGF0aCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWxlVHlwZTo6U3ltYm9saWNMaW5r
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOworfQorCiAjaWYgSEFWRShTVERfRklM
RVNZU1RFTSkgfHwgSEFWRShTVERfRVhQRVJJTUVOVEFMX0ZJTEVTWVNURU0pCiAKIGJvb2wgZGVs
ZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4
IDk5NmJjMGI2ZjdkYThhZGQwYTZlNWI5MTdhYzg2Y2VjNWFmNzA5YTQuLmZkODUzYTQ5YWFjOGRj
MDFmMzE1NzA0Y2U0OWQ3MzQ2NWFlMDU2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEwOCw2ICsx
MDgsNyBAQCBlbnVtIGNsYXNzIE1hcHBlZEZpbGVNb2RlIHsKIAogV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxl
dGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUpOwogV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNv
bnN0IFN0cmluZyYgbmV3UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJik7IC8vIEZvbGxvd3Mgc3ltbGlua3MuCkBA
IC0xNDYsNiArMTQ3LDcgQEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9y
bUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAogdXNpbmcgU2FsdCA9
IHN0ZDo6YXJyYXk8dWludDhfdCwgOD47CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25h
bDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUpOwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxk
IGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDM1OWMyNDY3ODBmOTY1MjQ5MmM1MGUxZThm
NTRmOTA0Y2E3ODk2OWQuLjc3NmUxM2NhNWViNjQ3OTc5NDNlZjNiYzQ4NTNhMzFkZGVkZmIzNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUHJv
Y2Vzc1F1YWxpZmllZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IGU4ZWFkNjAyNzNiNzUxODk0MDE2
NjJkNGRmYTBiMzE3M2IyMmM4YjQuLmIxZGJiYjU1NDlmN2EwNTFiY2NiMGRiZTJmMjM5OWFhYmYx
YWI5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMzEwLDYgKzMxMCw3IEBAIHNldChXZWJLaXRf
TUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvUmVtb3Rl
V2ViTG9ja1JlZ2lzdHJ5CiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCA4NTkyZDk5ZDJlMzZhZmM5ZWY4NWRjYzFjM2Y1NzRlYzE5NWVlZjU1Li41YmE2NGI0
NGJlMWU1Nzc1MDg4ZmM2ZTkwNTU5OWM3Y2Q1NzgzY2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMjEsNiArMjIxLDcgQEAgJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
aW5kZXggYTU5ZTYyM2IwOWU2YTk3ZWZmZWQ0ZjljNTJmNTczNjM2NDVlYWM1ZC4uNjYzMTRkZGIy
ZjFjZTljNWQ3NzE5MWQ3ODJmNDkyNjcyODRiZWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC00OTMsNiArNDkzLDkgQEAgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlck0KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAxOTMzODg0OTYxYjRiYzMwNGYwODliMGI1NGUxNDg5MWI1
YzM0OGY0Li42ODRmYWNkNWQ3NmZjMjRhMjdiMDdhZjQ3MGNjM2Y5YTNjZDFjMDYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9SZW1vdGVXZWJMb2NrUmVnaXN0cnkg
XAogCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
IFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXIgXAorCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZGU3NjVkZTQ1MDcxZjQxZjNmYzRkNDY5NzA1MzgxNmUx
ODk5ZWJmYS4uNzBiNWFmZGE1MjZlOTkwOWI5NjJkNzEyMTNkODViNjBiNTM3MTgxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTc0LDYg
Kzc0LDcgQEAgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMs
CiAjZW5kaWYKKyAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLAogICAgIH0pKTsK
IAogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDY2NmJjYzFiMjFiOTVkMDg5MmIy
ZjIzZmRjMTI5ZmJhZTYxZmUzMjEuLmIzNzI1NTYxMTk4N2VlZTE1OGJjYjQzMGU5ZjVjZmJjZGQ2
NDk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC0xNTU0LDYgKzE1NTQsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAg
ICAgICAgfQogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3Jh
Z2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJz
LmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZmV0Y2hEYXRhKHdlYnNpdGVEYXRh
VHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRW
ZWN0b3IoV1RGTW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xNjI4LDYgKzE2MzQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgICAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyhtb2RpZmllZFNp
bmNlKTsKICAgICB9CiAjZW5kaWYKKworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdl
TWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5l
bmQoKSkKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhTW9kaWZpZWRTaW5jZSh3
ZWJzaXRlRGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7
CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNh
Y2hlKiBjYWNoZSwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MzUsNiAr
MTc0NCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgfQogI2VuZGlmCiAKKyAgICBp
ZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRl
cmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZS0+ZGVsZXRlRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NI
YW5kbGVyXSB7IH0pOworCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvcjsKICAgICAgICAgZm9y
IChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCkBAIC0xOTU4LDYgKzE5NzAsMTMgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgaWYgKGF1
dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9y
ICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+
ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyh3ZWJzaXRlRGF0YVR5cGVzLCBkb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgW2NhbGxiYWNrQWdncmVnYXRvcl0o
YXV0byBkZWxldGVkRG9tYWlucykgbXV0YWJsZSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZG9t
YWluIDogZGVsZXRlZERvbWFpbnMpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX2RvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7CisgICAgICAgIH0pOworICAgIH0KKwog
ICAgIGF1dG8gZGF0YVR5cGVzRm9yVUlQcm9jZXNzID0gV2Vic2l0ZURhdGE6OmZpbHRlcih3ZWJz
aXRlRGF0YVR5cGVzLCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSSk7CiAgICAgaWYgKCFkYXRh
VHlwZXNGb3JVSVByb2Nlc3MuaXNFbXB0eSgpICYmICFkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvci5pc0VtcHR5KCkpIHsKICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxl
ciA9IFtjYWxsYmFja0FnZ3JlZ2F0b3JdIChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYgZG9tYWlucykgewpAQCAtMjA3NCw2ICsyMDkzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgaWYgKGF1dG8g
aXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9
IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZmV0
Y2hEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmll
cykgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOwor
ICAgIH0KIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElP
TikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0Zp
bGVTeXN0ZW1TdG9yYWdlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaAppbmRleCBmYjkyOTgxNDFiMGRiYzM4MWZh
OGIzYjM4MTdlNjhjYTAxODk3OWRhLi40NzMzOGVmZTUzODIyYTc2YTU0ODRmMjljOTM1NzY3OGY0
MDE4ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaApAQCAtNjIsNiArNjIsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpG
aWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRs
ZT47CiAgICAgRXhwZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJv
cj4gY3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gY2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJ
ZGVudGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNj
ZXNzSGFuZGxlSWRlbnRpZmllcj4gYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZTsgfQogCiBwcml2YXRlOgogICAgIEV4cGVjdGVk
PFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVy
cm9yPiByZXF1ZXN0Q3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFR5cGUs
IFN0cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCAzOGFhMjY1NWMzOWRkYzIzN2JhNWEzODBhNWQ1NDkxMjQy
YzM3ZjUxLi4yOWNmYjBjNmIzNzNhMjVmZjAxY2NlODYzM2M5NWU1NmIxYWNiN2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b25NZXNzYWdlcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDIsOCArNDMsNyBAQCBG
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6On5GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZm9yIChhdXRvIGlkZW50aWZp
ZXIgOiBtX2hhbmRsZXMua2V5cygpKQotICAgICAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJIYW5k
bGUoaWRlbnRpZmllcik7CisgICAgY2xvc2UoKTsKIH0KIAogRXhwZWN0ZWQ8V2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0
ZW1TdG9yYWdlTWFuYWdlcjo6Y3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQg
Y29ubmVjdGlvbiwgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OlR5cGUgdHlwZSwgU3RyaW5nJiYg
cGF0aCwgU3RyaW5nJiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSkKQEAgLTE0OSw0ICsx
NDksMjQgQEAgYm9vbCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OnJlbGVhc2VMb2NrRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K3ZvaWQgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uSUQsIGlkZW50
aWZpZXJzXSA6IG1faGFuZGxlc0J5Q29ubmVjdGlvbikgeworICAgICAgICBmb3IgKGF1dG8gaWRl
bnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgICAgICBhdXRvIHRha2VuSGFuZGxlID0g
bV9oYW5kbGVzLnRha2UoaWRlbnRpZmllcik7CisgICAgICAgICAgICBtX3JlZ2lzdHJ5LnVucmVn
aXN0ZXJIYW5kbGUoaWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIC8vIFNlbmQgbWVzc2FnZSB0
byB3ZWIgcHJvY2VzcyB0byBpbnZhbGlkYXRlIGFjdGl2ZSBzeW5jIGFjY2VzcyBoYW5kbGUuCisg
ICAgICAgICAgICBpZiAoYXV0byBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyID0gdGFrZW5IYW5kbGUt
PmFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSkKKyAgICAgICAgICAgICAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uOjpJbnZhbGlkYXRlQWNjZXNzSGFuZGxlKCphY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwg
MCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQobV9oYW5kbGVzLmlzRW1wdHkoKSk7
CisgICAgbV9oYW5kbGVzQnlDb25uZWN0aW9uLmNsZWFyKCk7CisgICAgbV9sb2NrTWFwLmNsZWFy
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
ci5oCmluZGV4IGI4NTc2NzY4YjM1NWFjYjNhYTBjMzcwMzhjYzUxZWNjOTMyYjM5NmMuLjUzNTk4
OTU4MTBkODc0ODU2MDlhNDBjZmE1MzcxY2M2OWVlYjA2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogICAgIGJvb2wgcmVsZWFzZUxv
Y2tGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIpOwogCiBwcml2YXRlOgorICAgIHZvaWQgY2xvc2UoKTsKKwogICAgIFN0cmluZyBt
X3BhdGg7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgbV9yZWdpc3RyeTsK
ICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8V2ViQ29yZTo6
RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXI+PiBtX2hhbmRsZXNCeUNvbm5lY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDI5NzhhMjVlZjEyNTI0NzJjY2YyZTZmMWQzMmY1
MWIwNTEwMmYwNjIuLmY1MDIyNGNhOWI4YWEwODk5OGI1NjQxMjk2YzFmNjkwZmEwNzk4MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0zMCwxMSArMzAsNjkgQEAKICNpbmNsdWRl
ICJGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdl
c3QuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gcmVh
ZE9yaWdpbkZyb21GaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmls
ZVBhdGgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBvcmlnaW5G
aWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZFdyaXRlKTsKKyAgICBhdXRvIGNsb3NlRmlsZSA9IG1ha2VTY29wZUV4
aXQoWyZdIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG9yaWdpbkZpbGVIYW5kbGUp
OworICAgIH0pOworCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG9yaWdpbkZp
bGVIYW5kbGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBvcmln
aW5Db250ZW50ID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUob3JpZ2luRmlsZUhhbmRsZSk7
CisgICAgaWYgKCFvcmlnaW5Db250ZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHsgb3JpZ2luQ29udGVudC0+
ZGF0YSgpLCBvcmlnaW5Db250ZW50LT5zaXplKCkgfSk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbjsKKyAgICBkZWNvZGVyID4+IG9yaWdpbjsKKyAgICBy
ZXR1cm4gb3JpZ2luOworfQorCitzdGF0aWMgdm9pZCB3cml0ZU9yaWdpblRvRmlsZUlmTmVjZXNz
YXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luKQoreworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVT
eXN0ZW06OnBhcmVudFBhdGgoZmlsZVBhdGgpKTsKKyAgICBhdXRvIG9yaWdpbkZpbGVIYW5kbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpSZWFkV3JpdGUpOworICAgIGF1dG8gY2xvc2VGaWxlID0gbWFrZVNjb3BlRXhpdChbJl0gewor
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUob3JpZ2luRmlsZUhhbmRsZSk7CisgICAgfSk7
CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQob3JpZ2luRmlsZUhhbmRsZSkp
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJ3cml0ZU9yaWdpblRvRmlsZUlmTmVjZXNzYXJ5OiBGYWls
ZWQgdG8gb3BlbiBvcmlnaW4gZmlsZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgb3JpZ2lu
OworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG9yaWdpbkZpbGVIYW5kbGUsIGVuY29kZXIu
YnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKworc3RhdGljIHZvaWQgZGVsZXRl
T3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgYXV0
byBwYXJlbnRQYXRoID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChmaWxlUGF0aCk7CisgICAgYXV0
byBjaGlsZHJlbiA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGFyZW50UGF0aCk7CisgICAg
aWYgKGNoaWxkcmVuLnNpemUoKSA9PSAxKQorICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGZpbGVQYXRoKTsKK30KKwogUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
KHNlc3Npb25JRCwgcGF0aCkpOwpAQCAtMTE2LDcgKzE3NCw3IEBAIHN0YXRpYyBTdHJpbmcgZW5j
b2RlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaWxlU3lzdGVtOjpTYWx0IHNhbHQpCiAgICAgcmV0
dXJuIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7CiB9
CiAKLXN0YXRpYyBTdHJpbmcgb3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgRmlsZVN5c3RlbTo6U2FsdCBzYWx0KQor
c3RhdGljIFN0cmluZyBvcmlnaW5EaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBGaWxlU3lzdGVtOjpTYWx0IHNh
bHQpCiB7CiAgICAgaWYgKHJvb3RQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJvb3RQ
YXRoOwpAQCAtMTI2LDE1ICsxODQsMzAgQEAgc3RhdGljIFN0cmluZyBvcmlnaW5QYXRoKGNvbnN0
IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3IKICAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhyb290UGF0aCwgeyBl
bmNvZGVkVG9wT3JpZ2luLCBlbmNvZGVkT3BlbmluZ09yaWdpbiB9KTsKIH0KIAorc3RhdGljIFN0
cmluZyBvcmlnaW5GaWxlUGF0aChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIm9yaWdp
biJfcyk7Cit9CisKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICByZXR1cm4g
Km1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgWyZdIHsKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KG9yaWdpblBhdGgobV9w
YXRoLCBvcmlnaW4sIG1fc2FsdCkpOworICAgICAgICBhdXRvIG9yaWdpbkRpcmVjdG9yeSA9IG9y
aWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCBvcmlnaW4sIG1fc2FsdCk7CisgICAgICAgIHdyaXRl
T3JpZ2luVG9GaWxlSWZOZWNlc3Nhcnkob3JpZ2luRmlsZVBhdGgob3JpZ2luRGlyZWN0b3J5KSwg
b3JpZ2luKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+
KFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQog
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJ
ZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlm
IChhdXRvIGl0ZXJhdG9yID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5maW5kKG9yaWdp
bik7IGl0ZXJhdG9yICE9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZW5kKCkpIHsKKyAg
ICAgICAgaWYgKCFpdGVyYXRvci0+dmFsdWUtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2xv
Y2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnJlbW92ZShpdGVyYXRvcik7CisgICAgfQorfQorCiB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cGVyc2lzdGVkKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMzA1LDUg
KzM3OCwxNjEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldEhhbmRsZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OkZpbGUKICAgICBjb21wbGV0aW9uSGFuZGxl
cihoYW5kbGUtPmdldEhhbmRsZShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIFdURk1vdmUobmFtZSkp
KTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVE
YXRhVHlwZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VUeXBlKQoreworICAgIGlmIChzdG9yYWdlVHlw
ZSA9PSAiRmlsZVN5c3RlbSIpCisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkZpbGVT
eXN0ZW07CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCit2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Zm9yRWFjaE9yaWdpbkRpcmVjdG9yeShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5KT4mJiBhcHBseSkKK3sKKyAgICBmb3IgKGF1dG8mIHRvcE9yaWdpbiA6
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKSkgeworICAgICAgICBhdXRvIHRvcE9y
aWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Bh
dGgsIHRvcE9yaWdpbik7CisgICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbnMgPSBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgIGlmIChvcGVuaW5n
T3JpZ2lucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoYXV0byYgb3BlbmluZ09yaWdpbiA6IG9wZW5pbmdPcmln
aW5zKSB7CisgICAgICAgICAgICBhdXRvIG9wZW5pbmdPcmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodG9wT3JpZ2luRGlyZWN0b3J5LCBvcGVuaW5n
T3JpZ2luKTsKKyAgICAgICAgICAgIGFwcGx5KG9wZW5pbmdPcmlnaW5EaXJlY3RvcnkpOworICAg
ICAgICB9CisgICAgfQorfQorCitWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmZldGNoRGF0YUZyb21EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHRhcmdldFR5cGVzKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
SGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+PiBvcmlnaW5UeXBlczsKKyAgICBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KFsmXShhdXRv
IGRpcmVjdG9yeSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gb3JpZ2luID0gcmVhZE9yaWdpbkZy
b21GaWxlKG9yaWdpbkZpbGVQYXRoKGRpcmVjdG9yeSkpOworICAgICAgICBpZiAoIW9yaWdpbikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VUeXBlIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnkpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byB0eXBlID0gdG9XZWJzaXRlRGF0YVR5cGUoc3RvcmFnZVR5cGUpOyB0eXBlICYmIHRhcmdl
dFR5cGVzLmNvbnRhaW5zKCp0eXBlKSkgeworICAgICAgICAgICAgICAgIC8vIFJldHVybiBib3Ro
IHRvcCBvcmlnaW4gYW5kIG9wZW5pbmcgb3JpZ2luIGZvciB0aGlzIGRhdGEuCisgICAgICAgICAg
ICAgICAgb3JpZ2luVHlwZXMuYWRkKG9yaWdpbi0+Y2xpZW50T3JpZ2luLCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoKnR5cGUpOworICAgICAgICAg
ICAgICAgIG9yaWdpblR5cGVzLmFkZChvcmlnaW4tPnRvcE9yaWdpbiwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4geyB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCp0eXBlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4g
ZW50cmllczsKKyAgICBmb3IgKGF1dG8gW29yaWdpbiwgdHlwZXNdIDogb3JpZ2luVHlwZXMpIHsK
KyAgICAgICAgZm9yIChhdXRvIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIGVudHJpZXMuYXBw
ZW5kKHsgV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCB0eXBlLCAwIH0gfSk7CisgICAgfQor
CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpm
ZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xv
c2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgdHlwZXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZW50cmllcyA9IGZldGNoRGF0YUZy
b21EaXNrKHR5cGVzKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZW50cmllcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KGVudHJpZXMpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoZW50cmllcykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworVmVjdG9yPFdlYkNv
cmU6OkNsaWVudE9yaWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNr
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
VGltZSwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKT4m
IGZpbHRlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFZlY3Rv
cjxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IGRlbGV0ZWRPcmlnaW5zOworICAgIGZvckVhY2hPcmln
aW5EaXJlY3RvcnkoWyZdKGF1dG8gZGlyZWN0b3J5KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBm
aWxlUGF0aCA9IG9yaWdpbkZpbGVQYXRoKGRpcmVjdG9yeSk7CisgICAgICAgIGF1dG8gb3JpZ2lu
ID0gcmVhZE9yaWdpbkZyb21GaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pIHsK
KyAgICAgICAgICAgIC8vIElmIG9yaWdpbiBjYW5ub3QgYmUgcmV0cmlldmVkLCBidXQgd2UgYXJl
IGFza2VkIHRvIHJlbW92ZSBkYXRhIGZvciBhbGwgb3JpZ2lucywgcmVtb3ZlIGl0LgorICAgICAg
ICAgICAgaWYgKGZpbHRlcihXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB9KSkgeworICAgICAgICAg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShkaXJlY3Rvcnks
IG1vZGlmaWVkU2luY2VUaW1lKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmaWx0ZXIoKm9yaWdpbikpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZGVsZXRlZE9yaWdpbnMuYXBwZW5kKCpvcmlnaW4pOwor
ICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKCpvcmlnaW4pLmRlbGV0ZURhdGEodHlw
ZXMsIG1vZGlmaWVkU2luY2VUaW1lKTsKKyAgICAgICAgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFn
ZXJJZlBvc3NpYmxlKCpvcmlnaW4pOworICAgICAgICBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3Nh
cnkoZmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShk
aXJlY3RvcnkpOworICAgIH0pOworCisgICAgcmV0dXJuIGRlbGV0ZWRPcmlnaW5zOworfQorCit2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB0eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
IG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQp
OworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCB0eXBlcywgb3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5zKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpblNldDsKKyAg
ICAgICAgb3JpZ2luU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwor
ICAgICAgICBmb3IgKGF1dG8gb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgICAgIG9yaWdpblNl
dC5hZGQoV1RGTW92ZShvcmlnaW4pKTsKKworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVz
LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFsmb3JpZ2luU2V0XShhdXRvIG9yaWdpbikgeworICAg
ICAgICAgICAgcmV0dXJuIG9yaWdpblNldC5jb250YWlucyhvcmlnaW4udG9wT3JpZ2luKSB8fCBv
cmlnaW5TZXQuY29udGFpbnMob3JpZ2luLmNsaWVudE9yaWdpbik7CisgICAgICAgIH0pOworCisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZURhdGFNb2RpZmllZFNpbmNlKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxs
VGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNT
RVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgZGVsZXRlRGF0YU9uRGlzayh0eXBlcywgbW9kaWZpZWRTaW5jZVRpbWUsIFtdKGF1dG8mKSB7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VS
VCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShkb21h
aW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgYXV0byBkZWxldGVkT3JpZ2lucyA9IGRlbGV0ZURhdGFPbkRpc2so
dHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgWyZkb21haW5zXShhdXRvJiBvcmlnaW4pIHsK
KyAgICAgICAgICAgIGF1dG8gZG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbi5jbGllbnRPcmlnaW4uaG9zdCk7CisgICAgICAg
ICAgICByZXR1cm4gZG9tYWlucy5jb250YWlucyhkb21haW4pOworICAgICAgICB9KTsKKworICAg
ICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWxldGVkRG9tYWluczsK
KyAgICAgICAgZm9yIChhdXRvIG9yaWdpbiA6IGRlbGV0ZWRPcmlnaW5zKSB7CisgICAgICAgICAg
ICBhdXRvIGRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tSG9zdChvcmlnaW4uY2xpZW50T3JpZ2luLmhvc3QpOworICAgICAgICAgICAgZGVsZXRl
ZERvbWFpbnMuYWRkKGRvbWFpbik7CisgICAgICAgIH0KKworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW5zID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUoZGVsZXRlZERvbWFpbnMpKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZG9tYWlucykpOworICAgICAgICB9KTsK
KyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCA1YmM1NmI3YzY0NmM2YjFmZDdhZDY0ZGQ0ODdlZGY1ZGVhNjM5MzRhLi5lZjM2
NjYzMTdhNTMzN2JjNDM0OWZmM2Y2NjhmZGE2MmMzNWY4M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5oCkBAIC0yOCwxMCArMjgsMTIgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Ns
aWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGU7CkBAIC01NSwx
MyArNTcsMjIgQEAgcHVibGljOgogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgY2xl
YXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+JiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGRlbGV0ZURhdGFNb2RpZmllZFNpbmNlKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBX
YWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKIAogcHJpdmF0
ZToKICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CiAgICAgfk5ldHdvcmtTdG9yYWdlTWFuYWdlcigpOwogICAgIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyJiBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYpOworICAgIHZvaWQgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxl
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIEZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlUmVnaXN0cnkmIGZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsKIAorICAgIHZv
aWQgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KT4mJik7CisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZmV0Y2hEYXRhRnJv
bURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOworICAgIFZlY3RvcjxXZWJDb3JlOjpD
bGllbnRPcmlnaW4+IGRlbGV0ZURhdGFPbkRpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IFdhbGxUaW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYpPiYpOworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgKGltcGxlbWVudGVkIGJ5IGdl
bmVyYXRlZCBjb2RlKQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDRmMDZm
NDUyNDY1NjQ2ZDIwMTFiYzdmNTNiYmRiMjgxMTU5M2FhNDMuLjIwYTI0YzY2ODMzN2MyMjNlYjZm
MjRiYzUwZTYxNWQzYjY1MzkzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNTEs
MjAgKzUxLDYyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24pOwogICAgIH0KIAotICAgIFN0cmluZyB0
eXBlU3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllcikgY29uc3QKKyAg
ICBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdCB7CisgICAgICAgIEZpbGVTeXN0ZW0s
CisgICAgfTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdG9yYWdlSWRlbnRpZmllcihTdG9yYWdl
VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2Ug
U3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW06CisgICAgICAgICAgICByZXR1cm4gIkZpbGVTeXN0ZW0i
X3M7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICIiX3M7CisgICAgfQor
CisgICAgU3RyaW5nIHR5cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZSB0eXBlKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fcm9vdFBhdGguaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBzdG9yYWdl
SWRlbnRpZmllcik7CisgICAgICAgIGF1dG8gc3RvcmFnZUlkZW50aWZpZXIgPSB0b1N0b3JhZ2VJ
ZGVudGlmaWVyKHR5cGUpOworICAgICAgICBpZiAobV9yb290UGF0aC5pc0VtcHR5KCkgfHwgc3Rv
cmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CisKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3Jvb3RQYXRoLCBzdG9yYWdlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgRmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3Jh
Z2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCiAgICAgewogICAgICAgICBpZiAoIW1fZmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyKQotICAgICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcj4odHlwZVN0b3JhZ2VQYXRo
KCJGaWxlU3lzdGVtIiksIHJlZ2lzdHJ5KTsKKyAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+KHR5cGVTdG9y
YWdlUGF0aChTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbSksIHJlZ2lzdHJ5KTsKIAogICAgICAgICBy
ZXR1cm4gKm1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOwogICAgIH0KIAorICAgIGJvb2wgaXNB
Y3RpdmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXI7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAgIGlm
ICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQorICAgICAgICAg
ICAgZGVsZXRlRmlsZVN5c3RlbVN0b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKKworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShtX3Jvb3RQYXRoKTsKKyAg
ICB9CisKIHByaXZhdGU6CisgICAgdm9pZCBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUpCisgICAgeworICAgICAgICBpZiAobV9maWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIpCisgICAgICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciA9
IG51bGxwdHI7CisKKyAgICAgICAgYXV0byBmaWxlU3lzdGVtU3RvcmFnZVBhdGggPSB0eXBlU3Rv
cmFnZVBhdGgoU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW0pOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoZmlsZVN5c3RlbVN0b3JhZ2VQYXRoLCBtb2RpZmll
ZFNpbmNlVGltZSk7CisgICAgfQorCiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgU3RyaW5n
IG1faWRlbnRpZmllcjsKICAgICBTdG9yYWdlQnVja2V0TW9kZSBtX21vZGUgeyBTdG9yYWdlQnVj
a2V0TW9kZTo6QmVzdEVmZm9ydCB9OwpAQCAtNzQsNiArMTE2LDcgQEAgcHJpdmF0ZToKIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBwYXRoKQogICAg
IDogbV9wYXRoKFdURk1vdmUocGF0aCkpCiB7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiB9CiAKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjp+T3JpZ2luU3RvcmFnZU1hbmFnZXIoKSA9
IGRlZmF1bHQ7CkBAIC0xMDMsNSArMTQ2LDE1IEBAIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYg
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzCiAg
ICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0
cnkpOwogfQogCitib29sIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpCit7CisgICAg
cmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5pc0FjdGl2ZSgpOworfQorCit2b2lkIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIGRlZmF1bHRCdWNrZXQoKS5kZWxldGVEYXRh
KHR5cGVzLCBtb2RpZmllZFNpbmNlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYTRjMTFhZDY1YTVjMTk3MDNhN2MwZTkyOTRiYzJmZWFh
YTJmZmUyZS4uZGEzMTBjODYyMjgwYWZiNjIwOWE5MTFiNDVlZDM0NjYwZTlkYmMzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsyOCwxNSBAQAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNv
cmUgeworc3RydWN0IENsaWVudE9yaWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3Rv
cmFnZU1hbmFnZXI7CitlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogCiBj
bGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC00MywxMiArNDgsMTcgQEAgcHVibGljOgogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KICAgICB2b2lkIHBlcnNpc3QoKTsKICAgICBGaWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3Rv
cmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CisgICAgYm9vbCBpc0FjdGl2ZSgpOworICAgIHZvaWQgZGVs
ZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUpOwogCiBwcml2YXRl
OgogICAgIGVudW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sOwogICAgIGNsYXNzIFN0
b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1Y2tldCgpOwogCisgICAg
dm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJik7CisgICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoKTsKKwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3RyaW5n
IG1fcGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCBmMzcyOTAxMzhi
NGZhZmYzMjM1M2IyYWNkYWRlODM0MDBkYTljYzhhLi5mOWIyZmUwNDA5ZGM0MzBiMWQzZDNhZWIw
MGU3NmIwMGIzZjA1NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuY3BwCkBAIC0xMjksNiArMTI5LDggQEAgV2Vic2l0ZURhdGFQcm9jZXNz
VHlwZSBXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKFdlYnNpdGVEYXRhVHlwZSBkYXRhVHlwZSkK
ICAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczoKICAgICAgICAg
cmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAjZW5kaWYKKyAgICBjYXNl
IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRh
UHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhVHlwZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFUeXBlLmgKaW5kZXggN2E5ZTUwMGZlMWIwOWUzODk1ZGQ3NDNlMTY1Yzk4OTE4YmU3YThk
Yi4uZTQ1OWEwOTAzOGE0OGExOTg2ZDZkMzM5NjY0MzMyODMzNzVhNDU0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKQEAgLTUy
LDYgKzUyLDcgQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdCB7CiAjaWYg
SEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKICAgICBBbHRlcm5hdGl2ZVNlcnZp
Y2VzID0gMSA8PCAxOCwKICNlbmRpZgorICAgIEZpbGVTeXN0ZW0gPSAxIDw8IDE5LAogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkBAIC03OSwxMCArODAsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gewogI2VuZGlmCiAgICAgICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwKICAgICAgICAgV2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU6OkRldmljZUlkSGFzaFNhbHQsCi0gICAgICAgIFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cywKICNpZiBIQVZFKENGTkVUV09SS19B
TFRFUk5BVElWRV9TRVJWSUNFKQotICAgICAgICAsIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpB
bHRlcm5hdGl2ZVNlcnZpY2VzCisgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBbHRl
cm5hdGl2ZVNlcnZpY2VzLAogI2VuZGlmCisgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
OjpGaWxlU3lzdGVtCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggYzgyNjE2Zjc5
MGM2ZmM2OTBhNmNiZDY5N2EwZThlY2RhNTIyN2ZiMS4uZmExMTEzZTQ3YzJhNDQ0MTRiZDJhZGQx
OTJkMDJlNzUwN2YzMjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAgLTUxLDYgKzUxLDcgQEAgTlNT
dHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyA9IEAiX1dLV2Vic2l0
ZURhdGFUeXBlQ3JlZGVudGlhbHMKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBl
QWRDbGlja0F0dHJpYnV0aW9ucyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0
aW9ucyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01l
YXN1cmVtZW50cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
IjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNl
cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyI7CitOU1N0cmluZyAq
IGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0gPSBAIl9XS1dlYnNpdGVEYXRhVHlw
ZUZpbGVTeXN0ZW0iOwogCiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRh
IjsKQEAgLTExMCw2ICsxMTEsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5n
KE5TU2V0ICpkYXRhVHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50cyJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9X
S1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQogICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OkAiQWx0ZXJuYXRpdmUgU2VydmljZXMiXTsKKyAgICBpZiAoW2RhdGFUeXBlcyBjb250
YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXSkKKyAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpAIkZpbGUgU3lzdGVtIl07CiAKICAgICByZXR1cm4gW2FycmF5IGNvbXBvbmVu
dHNKb2luZWRCeVN0cmluZzpAIiwgIl07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgK
aW5kZXggZGJjNWYzZjdhMWZmNGZiNzQ5YWFmZDcwZTU3MGJhMDQ4NTY4YWNkNi4uOTE0NDhlZTFk
NTUxZGU0MjA2NTg2N2I4MTVkYmRmMWRlZmE3NWMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaApAQCAtNzcsNiArNzcsOCBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8V2Vi
c2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0cmluZyAqd2Vic2l0ZQogICAgIGlm
IChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tXZWJzaXRlRGF0YVR5cGVBbHRl
cm5hdGl2ZVNlcnZpY2VzXSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJu
YXRpdmVTZXJ2aWNlczsKICNlbmRpZgorICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxU
b1N0cmluZzpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXSkKKyAgICAgICAgcmV0dXJuIFdl
YnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CkBAIC0xMzQsNiArMTM2LDggQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tX
ZWJzaXRlRGF0YVR5cGVzKE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXQKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2Vydmlj
ZXMpKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0
YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXTsKICNlbmRpZgorICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSkpCisgICAgICAgIFt3a1dl
YnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dOwog
CiAgICAgcmV0dXJuIHdrV2Vic2l0ZURhdGFUeXBlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmgKaW5kZXggZDYwN2RmZTEzZjYxMmI1ODIyMGU1YTM1MjU3NzQ3MDUzMWVlNDkwNy4uMmNm
OWE0ZDJhMGM3ZmNlMjViNjUwNmFjMTdiZDcxMTE3Yzk3NTFlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3Qg
X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygKIFdL
X0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1
dGlvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBXS19FWFRF
Uk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIFdLX0VYVEVS
TiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKK1dLX0VYVEVSTiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0gV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRfT1Nf
SVBIT05FCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVn
SW5EYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IGUyYjA3MzY0NjRiMTY2ZGQ5MjBjZjM1NTE3MWZiM2E1NjM3MGEzODQuLjdlZjA2OTUwYWIwN2Qz
ZTFhNzYxNmNiY2I1OGJkMjU3ODUzNTllYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjQ4LDcgKzI0
OCw4IEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRp
bmdQcml2YXRlCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywKICAg
ICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMsCiAgICAgICAg
ICAgICBfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMsCi0gICAgICAg
ICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzCisgICAgICAgICAgICBf
V0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzLAorICAgICAgICAgICAgX1dLV2Vi
c2l0ZURhdGFUeXBlRmlsZVN5c3RlbQogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAgICAgICAgICAg
ICAsIF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTQ1MTE1ZjQ4OWFhMmNj
YmM5YmVjNGNlMTdkZjYwN2JlMjg1YjUyNC4uNjMxYzhmOWM4OWM2ZTFlMGY2MGYyYjVjN2VlOTMy
MGQyMTUzMmFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDk4LDYgKzE0OTgsOSBAQAogCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjIyNTUyNjhBMjAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLzsgfTsKIAkJOTNENkI3
QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZC
N0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4
QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNFNzk5ODUyNzU2RkE1NTAwNzQwMDhBIC8qIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U3OTk4MjI3NTZGQTU0MDA3NDAwOEEg
LyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJOTNFNzk5ODcyNzU2RkFCNDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNFNzk5ODMyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oICovOyB9OworCQk5M0U3OTk4ODI3NTZG
QUMyMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgxMjc1
NkZBNTMwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5o
ICovOyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0
MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8q
IFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwogCQk5NTY1MDgzOTI2RDg3QTJCMDBFMTVD
QjcgLyogQXBwbGVNZWRpYVNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NTY1MDgzNzI2RDg3QTJCMDBFMTVDQjcgLyogQXBwbGVNZWRp
YVNlcnZpY2VzU1BJLmggKi87IH07CkBAIC01Mjk4LDYgKzUzMDEsMTAgQEAKIAkJOTNENkI3Qjcy
NTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2QjdC
ODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk3RTI3NTZGNjcwMDA3NDAwOEEgLyogV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5ODEyNzU2RkE1MzAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5ODMy
NzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2Vz
UmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1
cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUI1MUUzMTc0REEw
MDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tNb3Vz
ZURldmljZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTW91
c2VEZXZpY2VPYnNlcnZlci5oOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NzcsNiArMTA1ODQsNyBAQAogCQkJCUJD
MDMyRDY4MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJFZGl0b3JDbGllbnQuaCAqLywKIAkJCQk5MzU0
MjQyQjI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNw
cCAqLywKIAkJCQk5MzU0MjQyQTI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmggKi8sCisJCQkJOTNFNzk5N0UyNzU2RjY3MDAwNzQwMDhBIC8qIFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUE1ODEx
MkY0RkJCMDAzMzdCQUIgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUJDMDMy
RDZBMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5oICovLAogCQkJCUJD
MUJFMURGMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgKi8sCkBA
IC0xMjA1NCw2ICsxMjA2Miw5IEBACiAJCQkJRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovLAogCQkJCUUzODY2
QjA0MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUzODY2QjA1MjM5OTk3OUMwMEY4OEZF
OSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCTkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTkzRTc5OTgxMjc1NkZBNTMwMDc0
MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovLAorCQkJ
CTkzRTc5OTgzMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rp
b25NZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQlDRDczQkE0ODEzMUFDRDhFMDBFRURFRDIgLyog
V2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUNENzNCQTQ5
MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJ
CQkJQ0Q3M0JBNDUxMzFBQ0M4ODAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTMzMDEsNiArMTMzMTIsOCBAQAogCQkJCUJDMDMy
REJCMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMTExQjVEMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNTQyNDJDMjcwM0JEQ0IwMDVDQTcyQyAvKiBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRTc5OTg4Mjc1NkZBQzIw
MDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTNFNzk5ODcyNzU2RkFCNDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5
MEMxRUUxMjY0RkQ1MDAwM0U0NEQ0IC8qIFdlYkZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0U0Njk1NDEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFNDY5NTYxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9u
TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTM5Niw2ICsxNTQwOSw3IEBACiAJ
CQkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzODY2QjA5MjM5OUEyRDUwMEY4
OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODkyMTJCNkFCMTAwRjQ5M0ZEIC8q
IFdlYkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzRTc5OTg1Mjc1NkZBNTUwMDc0MDA4
QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNEUxMzFBQ0RCNzAwRUVERUQyIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTQ3
MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MDYxMTJENkJBOTEwMDEyQTcyQSAvKiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2Fk
ZjBiMWRkMDBhNDhiLi45NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5YTk4OTU1ZmQ0NDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJX
ZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJN
ZXNzYWdlcy5oIgpAQCAtMTE5LDYgKzEyMSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAog
ICAgICAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBVU0UoTElC
V0VCUlRDKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUlRDTW9uaXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MmVjZGNmN2Q5ZDUxNTdjZjgzYmJiMjQzMzQwZWFlOGYzNTdjYjc0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisj
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYkZp
bGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBJbnZhbGlkYXRl
QWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDQ4NjhkMmUyMzY1ZmVlNzUxMDQxZjQ0ZmYzZTY0MGZjMGRiYWRiYWQuLjdi
NjRkNjY1OWI0ZWYzNGE5YzQwMjhiZGJiNjAzZGRlZjkxYWQwNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0x
Mi0wMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCBh
bmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0ZURhdGFTdG9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW06CisKIDIwMjEtMTItMDIgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21waWxhdGlvbiBl
cnJvciBvbiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVt
b24ubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RmlsZVN5c3RlbUFjY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRmlsZVN5c3RlbUFjY2Vzcy5tbQppbmRleCA3YmJlM2M5ZjYyYzFkOTdjMzE5NTUyYTE5MDNk
OTE1YWQ1ZjdhMjFhLi42NjA3NzRhOTE3MjMxYTIzMDZiNWQ2MjZkN2ZiNWZkYThmYmIzMTliIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0
ZW1BY2Nlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9G
aWxlU3lzdGVtQWNjZXNzLm1tCkBAIC0yOSwxMSArMjksMTMgQEAKIAogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgog
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KIAogQGludGVyZmFjZSBGaWxlU3lzdGVtQWNj
ZXNzTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBl
bmQKQEAgLTQ4LDcgKzUwLDcgQEAgLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGQKIAogQGVuZAogCi1z
dGF0aWMgTlNTdHJpbmcgKm1haW5GcmFtZVN0cmluZyA9IEAiPHNjcmlwdD4gXAorc3RhdGljIE5T
U3RyaW5nICp3b3JrZXJGcmFtZVN0cmluZyA9IEAiPHNjcmlwdD4gXAogICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgeyBcCiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCd3b3JrZXIuanMnKTsg
XAogICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsgXApAQCAtMTE1
LDcgKzExNyw3IEBAIFRFU1QoRmlsZVN5c3RlbUFjY2VzcywgV2ViUHJvY2Vzc0NyYXNoRHVyaW5n
V3JpdGUpCiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIndlYmtpdCJdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzptYWluRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAIndlYmtpdDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6d29ya2VyRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndl
YmtpdDovL3dlYmtpdC5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwog
ICAgIEVYUEVDVF9XS19TVFJFUShAInBhZ2UgaXMgbG9hZGVkIiwgW2xhc3RTY3JpcHRNZXNzYWdl
IGJvZHldKTsKQEAgLTEyNiw3ICsxMjgsNyBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIFdlYlBy
b2Nlc3NDcmFzaER1cmluZ1dyaXRlKQogICAgIEVYUEVDVF9XS19TVFJFUShAInN1Y2Nlc3M6IHdy
aXRlIDEwIGJ5dGVzIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKIAogICAgIGF1dG8gc2Vj
b25kV2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7Ci0gICAgW3NlY29uZFdlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1lU3RyaW5nIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1dOworICAg
IFtzZWNvbmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOndvcmtlckZyYW1lU3RyaW5nIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1dOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwYWdlIGlzIGxv
YWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CkBAIC0xNjgsNyArMTcwLDcgQEAgVEVT
VChGaWxlU3lzdGVtQWNjZXNzLCBOZXR3b3JrUHJvY2Vzc0NyYXNoRHVyaW5nV3JpdGUpCiAgICAg
W2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZv
clVSTFNjaGVtZTpAIndlYmtpdCJdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzptYWluRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndl
YmtpdDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6d29ya2Vy
RnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndlYmtpdDovL3dlYmtp
dC5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1l
c3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwogICAgIEVYUEVDVF9X
S19TVFJFUShAInBhZ2UgaXMgbG9hZGVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKQEAg
LTI1OCw0ICsyNjAsMTk2IEBAIFRFU1QoRmlsZVN5c3RlbUFjY2VzcywgTWlncmF0ZVRvTmV3U3Rv
cmFnZURpcmVjdG9yeSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmaWxlIGlzIG9wZW5lZCIsIFts
YXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiB9CiAKK3N0YXRpYyBOU1N0cmluZyAqdGVzdFN0cmlu
ZyA9IEAiPHNjcmlwdD4gXAorICAgIGFzeW5jIGZ1bmN0aW9uIG9wZW4oc2hvdWxkQ3JlYXRlRmls
ZSkgXAorICAgIHsgXAorICAgICAgICB0cnkgeyBcCisgICAgICAgICAgICB2YXIgcm9vdEhhbmRs
ZSA9IGF3YWl0IG5hdmlnYXRvci5zdG9yYWdlLmdldERpcmVjdG9yeSgpOyBcCisgICAgICAgICAg
ICB2YXIgZmlsZUhhbmRsZSA9IGF3YWl0IHJvb3RIYW5kbGUuZ2V0RmlsZUhhbmRsZSgnZmlsZS1z
eXN0ZW0tYWNjZXNzLnR4dCcsIHsgJ2NyZWF0ZScgOiBzaG91bGRDcmVhdGVGaWxlIH0pOyBcCisg
ICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnZmlsZSBpcyBvcGVuZWQnKTsgXAorICAgICAgICB9IGNhdGNoKGVycikgeyBcCisg
ICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0
TWVzc2FnZSgnZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2UpOyBcCisg
ICAgICAgIH0gXAorICAgIH0gXAorICAgIG9wZW4odHJ1ZSk7IFwKKyAgICA8L3NjcmlwdD4iOwor
CitURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIEZldGNoQW5kUmVtb3ZlRGF0YSkKK3sKKyAgICBhdXRv
IGhhbmRsZXIgPSBhZG9wdE5TKFtbRmlsZVN5c3RlbUFjY2Vzc01lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6
QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFtjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdOworICAgIGF1dG8gdHlwZXMgPSBbTlNTZXQgc2V0V2l0aE9i
amVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKKworICAgIC8vIFJlbW92ZSBleGlz
dGluZyBkYXRhLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1v
dmVEYXRhT2ZUeXBlczp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNv
bXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byBwcmVmZXJlbmNlcyA9
IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5fZmlsZVN5c3Rl
bUFjY2Vzc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuX3N0b3JhZ2VBUElFbmFibGVk
ID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6dGVzdFN0cmlu
ZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAg
ICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJm
aWxlIGlzIG9wZW5lZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisKKyAgICAvLyBGZXRj
aCBkYXRhIGFuZCByZW1vdmUgaXQgYnkgb3JpZ2luLgorICAgIGRvbmUgPSBmYWxzZTsKKyAgICBb
d2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAg
ICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMXUpOworICAgICAgICBhdXRvIHJlY29yZCA9
IFtyZWNvcmRzIG9iamVjdEF0SW5kZXg6MF07CisgICAgICAgIEVYUEVDVF9TVFJFUSgid2Via2l0
Lm9yZyIsIFtyZWNvcmQuZGlzcGxheU5hbWUgVVRGOFN0cmluZ10pOworCisgICAgICAgIC8vIFJl
bW92ZSBkYXRhLgorICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0
eXBlcyBmb3JEYXRhUmVjb3JkczpyZWNvcmRzIGNvbXBsZXRpb25IYW5kbGVyOl57CisgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8vIEZldGNoIGRhdGEgYWZ0ZXIgcmVtb3ZhbC4K
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jk
c09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFS
ZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHJlY29yZHMuY291bnQsIDB1
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICAvLyBGaWxlIGNhbm5vdCBi
ZSBvcGVuZWQgYWZ0ZXIgZGF0YSByZW1vdmFsLgorICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAIm9wZW4oZmFsc2UpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJlcnJvcjogTm90Rm91
bmRFcnJvciAtIFRoZSBvYmplY3QgY2FuIG5vdCBiZSBmb3VuZCBoZXJlLiIsIFtsYXN0U2NyaXB0
TWVzc2FnZSBib2R5XSk7Cit9CisKK1RFU1QoRmlsZVN5c3RlbUFjY2VzcywgUmVtb3ZlRGF0YUJ5
TW9kaWZpY2F0aW9uVGltZSkKK3sKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbRmlsZVN5
c3RlbUFjY2Vzc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8g
cHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5j
ZXMuX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9zdG9y
YWdlQVBJRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOnRlc3RTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Vi
a2l0Lm9yZyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFT
dG9yZV07CisgICAgYXV0byB0eXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVE
YXRhVHlwZUZpbGVTeXN0ZW1dOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBfX2Jsb2NrIE5TVUlu
dGVnZXIgcmVjb3Jkc0NvdW50OworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIHJlY29yZHNDb3VudCA9IHJlY29yZHMuY291
bnQ7CisgICAgICAgIEVYUEVDVF9HVChyZWNvcmRzQ291bnQsIDB1KTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgbm93XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsK
KyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29y
ZHMpIHsKKyAgICAgICAgICAgIHJlY29yZHNDb3VudCA9IHJlY29yZHMuY291bnQ7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgcmVjb3Jkc0NvdW50KTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0
b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZl
dGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxX
S1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEo
cmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1d
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK3N0
YXRpYyBOU1N0cmluZyAqbWFpbkZyYW1lU3RyaW5nID0gQCI8c2NyaXB0PiBcCisgICAgZnVuY3Rp
b24gcG9zdFJlc3VsdChldmVudCkgXAorICAgIHsgXAorICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC5kYXRhKTsgXAorICAg
IH0gXAorICAgIGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBwb3N0UmVzdWx0LCBmYWxzZSk7
IFwKKyAgICA8L3NjcmlwdD4gXAorICAgIDxpZnJhbWUgc3JjPSdodHRwczovLzEyNy4wLjAuMTo5
MDkxLyc+IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lQnl0ZXMgPSBSIlRFU1RSRVNPVVJD
RSgKKzxzY3JpcHQ+CitmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdlKQoreworICAgIHBhcmVu
dC5wb3N0TWVzc2FnZShtZXNzYWdlLCAnKicpOworfQorYXN5bmMgZnVuY3Rpb24gb3BlbigpCit7
CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJvb3RIYW5kbGUgPSBhd2FpdCBuYXZpZ2F0b3Iuc3Rv
cmFnZS5nZXREaXJlY3RvcnkoKTsKKyAgICAgICAgdmFyIGZpbGVIYW5kbGUgPSBhd2FpdCByb290
SGFuZGxlLmdldEZpbGVIYW5kbGUoJ2ZpbGUtc3lzdGVtLWFjY2Vzcy50eHQnLCB7ICdjcmVhdGUn
IDogdHJ1ZSB9KTsKKyAgICAgICAgcG9zdE1lc3NhZ2UoJ2ZpbGUgaXMgb3BlbmVkJyk7CisgICAg
fSBjYXRjaChlcnIpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoJ2Vycm9yOiAnICsgZXJyLm5hbWUg
KyAnIC0gJyArIGVyci5tZXNzYWdlKTsKKyAgICB9Cit9CitvcGVuKCk7Cis8L3NjcmlwdD4KKylU
RVNUUkVTT1VSQ0UiOworCitURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIEZldGNoRGF0YUZvclRoaXJk
UGFydHkpCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAg
ICB7ICIvIiwgeyBmcmFtZUJ5dGVzIH0gfSwKKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbRmlsZVN5c3RlbUFjY2Vzc01l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1l
OkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCA9
IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZRVM7CisKKyAgICBh
dXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXTsK
KyAgICBhdXRvIHR5cGVzID0gW05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBl
RmlsZVN5c3RlbV07CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJl
bW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
bmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
KTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFs
bGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGlj
YXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JU
cnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07Cisg
ICAgW25hdmlnYXRpb25EZWxlZ2F0ZSBzZXREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OlsmXShXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmRlY2lzaW9uSGFuZGxlciko
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworICAgIH1dOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3Jp
cHRNZXNzYWdlIGJvZHldKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFT
dG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICAvLyBTaG91
bGQgcmV0dXJuIGJvdGggb3BlbmluZyBvcmlnaW4gYW5kIHRvcCBvcmlnaW4uCisgICAgICAgIEVY
UEVDVF9FUShyZWNvcmRzLmNvdW50LCAydSk7CisgICAgICAgIGF1dG8gc29ydEZ1bmN0aW9uID0g
XihXS1dlYnNpdGVEYXRhUmVjb3JkICpyZWNvcmQxLCBXS1dlYnNpdGVEYXRhUmVjb3JkICpyZWNv
cmQyKXsKKyAgICAgICAgICAgIHJldHVybiBbcmVjb3JkMS5kaXNwbGF5TmFtZSBjb21wYXJlOnJl
Y29yZDIuZGlzcGxheU5hbWVdOworICAgICAgICB9OworICAgICAgICBhdXRvIHNvcnRlZFJlY29y
ZHMgPSBbcmVjb3JkcyBzb3J0ZWRBcnJheVVzaW5nQ29tcGFyYXRvcjpzb3J0RnVuY3Rpb25dOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCIxMjcuMC4wLjEiLCBbc29ydGVkUmVjb3JkcyBvYmpl
Y3RBdEluZGV4OjBdLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKEAid2Vi
a2l0Lm9yZyIsIFtzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MV0uZGlzcGxheU5hbWUpOwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworfQorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445880</attachid>
            <date>2021-12-03 11:22:23 -0800</date>
            <delta_ts>2021-12-07 10:36:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233567-20211203112222.patch</filename>
            <type>text/plain</type>
            <size>69187</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFjNjczMzhjYjg5MzhlYmIzYWE5NGE3
MjhjMWYzM2JmMzE1NzE4N2IuLjgzMmY2ZDVmZGQ2NTUwZDU3OGJlYzMxNmE5Yjc4MzMzN2I0YTk5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJs
ZXQuCisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpyZWFkRW50aXJlRmlsZSk6IFJlYWQgd2hvbGUgZmlsZSBjb250ZW50IGludG8g
YSBWZWN0b3IuCisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVBbGxGaWxlc01v
ZGlmaWVkU2luY2UpOiBSZWN1cnNpdmVseSBkZWxldGUgZmlsZXMgYW5kIGZvbGRlcnMgbW9kaWZp
ZWQgYWZ0ZXIgCisgICAgICAgIHNwZWNpZmllZCB0aW1lIGluIGEgZGlyZWN0b3J5LgorICAgICAg
ICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisKIDIwMjEtMTItMDIgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXUF0gU3RyZW5ndGhlbiBzYW5kYm94IHdoZW4g
QXBwQ2FjaGUgaXMgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNTk3MjQxZDMwMjAyNWZhMzk2M2Y0
NGZkNjljMWRkYTYyMWI1NGEyLi4wNTJmZjNjZDJjZWUyM2I5NGNhNjM1YTA2M2JiODU4YmVjOGUz
MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMDMgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5
c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzU2NworCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmg6CisKIDIwMjEtMTItMDIgIFR5bGVyIFdpbGNvY2sgIDx0
eWxlcl93QGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogSW4gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6ZG9jdW1lbnRMaW5rcywgdXNlIGV4aXN0aW5nIGltYWdlLW1hcCBkb2N1bWVudCBsaW5r
cyBpbnN0ZWFkIG9mIGFsd2F5cyBjcmVhdGluZyBuZXcgb25lcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YmI4NWM5
NTFiMTk0NGE5OGVmYWMwYTE3MmU3YzdiZmQzZDJjOGFmLi43NTA3MDJlYzBhNzdjYTVhYmJmNGU5
ZWJkZmEwMmFkZmEwZmIzOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIxLTEyLTAz
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCBy
ZW1vdmUgZmlsZSBzeXN0ZW0gZGF0YSB2aWEgV0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1NjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBXZWJz
aXRlRGF0YVR5cGUgdmFsdWUgRmlsZVN5c3RlbSBmb3IgRmlsZVN5c3RlbUFjY2VzcyBkYXRhLiBO
ZXR3b3JrIHByb2Nlc3Mgbm93IGNhbiBmZXRjaCBhbmQgCisgICAgICAgIGRlbGV0ZSB0aGlzIHR5
cGUgb2YgZGF0YSB3aGVuIGZldGNoaW5nIGFuZCBkZWxldGVpbmcgd2Vic2l0ZSBkYXRhIChpZiBG
aWxlU3lzdGVtIHR5cGUgaXMgaW5jbHVkZWQgaW4gdGFyZ2V0CisgICAgICAgIHR5cGVzKS4KKwor
ICAgICAgICBUbyB0cmFjayBvcmlnaW5zIHRoYXQgaGF2ZSBGaWxlU3lzdGVtIGRhdGEsIHRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlIG5hbWVkIG9yaWdpbiBpbiB0aGUgb3JpZ2luJ3Mg
CisgICAgICAgIGRpcmVjdG9yeS4gVGhpcyBmaWxlIHdpbGwgYmUgY3JlYXRlZCB3aGVuIE9yaWdp
blN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVG8gZGVsZXRlIGV4aXN0aW5n
IEZpbGVTeXN0ZW0gZGF0YSwgbmV0d29yayBwcm9jZXNzIGZpbmRzIG9yaWdpbnMgdGhhdCBhcmUg
cmVxdWVzdGVkIHRvIGJlIGRlbGV0ZWQgYW5kIGhhdmUgZGF0YSAKKyAgICAgICAgb24gZGlzaywg
Y2xvc2VzIGFjdGl2ZSBhY2Nlc3MgaGFuZGxlcywgYW5kIGRlbGV0ZXMgdGhlIGZpbGVzLiBUaGUg
b3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3ZlIHdpbGwgYmUgZGVsZXRlZCBpZiAKKyAgICAgICAg
dGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0IGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYW5kIGVt
cHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVsZXRlZC4KKworICAgICAgICBOZXcgQVBJIHRlc3Rz
OiBGaWxlU3lzdGVtQWNjZXNzLkZldGNoQW5kUmVtb3ZlRGF0YQorICAgICAgICAgICAgICAgICAg
ICAgICBGaWxlU3lzdGVtQWNjZXNzLlJlbW92ZURhdGFCeU1vZGlmaWNhdGlvblRpbWUKKyAgICAg
ICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbUFjY2Vzcy5GZXRjaERhdGFGb3JUaGlyZFBhcnR5
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERh
dGFUeXBlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaDoKKyAgICAgICAgKFdl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUgY29u
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjp+
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWRPcmln
aW5Gcm9tRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlT3JpZ2luVG9GaWxlSWZOZWNlc3Nh
cnkpOgorICAgICAgICAoV2ViS2l0OjpkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6b3Jp
Z2luRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Omxv
Y2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSk6CisgICAgICAg
IChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFGcm9tRGlzayk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNrKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Om9yaWdpblBhdGgpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojp0b1N0
b3JhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6
OlN0b3JhZ2VCdWNrZXQ6OnR5cGVTdG9yYWdlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpmaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1
Y2tldDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoK
KyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0Ojp0
b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2Fs
bFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlXSk6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZ3Jlc3Npb24ocjI4MzE3OSkgR29vZ2xlIERyaXZlIGZyZWV6ZXMgYWZ0ZXIg
ZG93bmxvYWRpbmcgYSBmb2xkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNjRiYWM2YjZiNzAw
MTYxMGI1M2YyZTFkMzA5MjY3YmQ1YTQwZjUzOC4uZjY5MDQ5MjhlZjU1YjBhYjgxZTYwMDUwYjM5
M2FkYzRjNzk5MTY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTUxNCw2ICs1MTQsNjAgQEAg
c3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgcmV0dXJuIHNhbHQ7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFk
RW50aXJlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQoreworICAgIGlmICghRmlsZVN5
c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgYXV0byBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaGFuZGxlKS52YWx1ZV9v
cigwKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICB1bnNpZ25lZCBieXRlc1RvUmVhZDsKKyAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShzaXpl
LCBieXRlc1RvUmVhZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKKyAgICB1bnNpZ25lZCB0b3RhbEJ5dGVz
UmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOworICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3Zv
aWQgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBX
YWxsVGltZSB0aW1lKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gbWF5IGRlbGV0ZSBkaXJlY3Rv
cnkgZm9sZGVyLgorICAgIGlmICh0aW1lID09IC1XYWxsVGltZTo6aW5maW5pdHkoKSkgeworICAg
ICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBjaGlsZHJlbiA9IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5KTsK
KyAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKKyAgICAgICAgYXV0byBjaGlsZFBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCBjaGls
ZCk7CisgICAgICAgIGF1dG8gY2hpbGRUeXBlID0gZmlsZVR5cGUoY2hpbGRQYXRoKTsKKyAgICAg
ICAgaWYgKCFjaGlsZFR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzd2l0
Y2ggKCpjaGlsZFR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWxlVHlwZTo6UmVndWxhcjogeworICAg
ICAgICAgICAgaWYgKGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNoaWxkUGF0aCk7IG1vZGlmaWNhdGlvblRpbWUgJiYgKm1vZGlmaWNhdGlv
blRpbWUgPj0gdGltZSkKKyAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGNoaWxkUGF0aCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbGVUeXBlOjpEaXJl
Y3Rvcnk6CisgICAgICAgICAgICBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY2hpbGRQYXRo
LCB0aW1lKTsKKyAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNoaWxkUGF0aCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWxlVHlwZTo6U3ltYm9saWNMaW5rOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOworfQorCiAjaWYgSEFWRShTVERfRklMRVNZ
U1RFTSkgfHwgSEFWRShTVERfRVhQRVJJTUVOVEFMX0ZJTEVTWVNURU0pCiAKIGJvb2wgZGVsZXRl
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDk5
NmJjMGI2ZjdkYThhZGQwYTZlNWI5MTdhYzg2Y2VjNWFmNzA5YTQuLmZkODUzYTQ5YWFjOGRjMDFm
MzE1NzA0Y2U0OWQ3MzQ2NWFlMDU2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEwOCw2ICsxMDgs
NyBAQCBlbnVtIGNsYXNzIE1hcHBlZEZpbGVNb2RlIHsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRl
bGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVB
bGxGaWxlc01vZGlmaWVkU2luY2UoY29uc3QgU3RyaW5nJiwgV2FsbFRpbWUpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0
IFN0cmluZyYgbmV3UGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJik7IC8vIEZvbGxvd3Mgc3ltbGlua3MuCkBAIC0x
NDYsNiArMTQ3LDcgQEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAogdXNpbmcgU2FsdCA9IHN0
ZDo6YXJyYXk8dWludDhfdCwgOD47CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxT
YWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpOworV1RGX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZWFkRW50aXJlRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUpOwogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJl
IHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxl
SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzdWZmaXggPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDM1OWMyNDY3ODBmOTY1MjQ5MmM1MGUxZThmNTRm
OTA0Y2E3ODk2OWQuLjc3NmUxM2NhNWViNjQ3OTc5NDNlZjNiYzQ4NTNhMzFkZGVkZmIzNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUHJvY2Vz
c1F1YWxpZmllZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IGU4ZWFkNjAyNzNiNzUxODk0MDE2NjJk
NGRmYTBiMzE3M2IyMmM4YjQuLmIxZGJiYjU1NDlmN2EwNTFiY2NiMGRiZTJmMjM5OWFhYmYxYWI5
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMzEwLDYgKzMxMCw3IEBAIHNldChXZWJLaXRfTUVT
U0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvUmVtb3RlV2Vi
TG9ja1JlZ2lzdHJ5CiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbgogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApp
bmRleCA4NTkyZDk5ZDJlMzZhZmM5ZWY4NWRjYzFjM2Y1NzRlYzE5NWVlZjU1Li41YmE2NGI0NGJl
MWU1Nzc1MDg4ZmM2ZTkwNTU5OWM3Y2Q1NzgzY2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMjEsNiArMjIxLDcgQEAgJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoblByb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmkKICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
UmVtb3RlV2ViTG9ja1JlZ2lzdHJ5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5k
ZXggYTU5ZTYyM2IwOWU2YTk3ZWZmZWQ0ZjljNTJmNTczNjM2NDVlYWM1ZC4uNjYzMTRkZGIyZjFj
ZTljNWQ3NzE5MWQ3ODJmNDkyNjcyODRiZWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC00OTMsNiArNDkzLDkgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlck0KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJGdWxsU2NyZWVu
TWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAxOTMzODg0OTYxYjRiYzMwNGYwODliMGI1NGUxNDg5MWI1YzM0
OGY0Li42ODRmYWNkNWQ3NmZjMjRhMjdiMDdhZjQ3MGNjM2Y5YTNjZDFjMDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMg
PSBcCiAJV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9SZW1vdGVXZWJMb2NrUmVnaXN0cnkgXAog
CVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IFwK
IAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXIgXAorCVdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VD
b25uZWN0aW9uIFwKIAlXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbiBcCiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggZGU3NjVkZTQ1MDcxZjQxZjNmYzRkNDY5NzA1MzgxNmUxODk5
ZWJmYS4uNzBiNWFmZGE1MjZlOTkwOWI5NjJkNzEyMTNkODViNjBiNTM3MTgxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTc0LDYgKzc0
LDcgQEAgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMsCiAj
ZW5kaWYKKyAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLAogICAgIH0pKTsKIAog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDY2NmJjYzFiMjFiOTVkMDg5MmIyZjIz
ZmRjMTI5ZmJhZTYxZmUzMjEuLmIzNzI1NTYxMTk4N2VlZTE1OGJjYjQzMGU5ZjVjZmJjZGQ2NDk5
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0xNTU0LDYgKzE1NTQsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAg
ICAgfQogICAgIH0KICNlbmRpZgorCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VN
YW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVu
ZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZmV0Y2hEYXRhKHdlYnNpdGVEYXRhVHlw
ZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0
b3IoV1RGTW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2Rp
ZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0xNjI4LDYgKzE2MzQsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgICAgICAg
ICAgbmV0d29ya1Nlc3Npb24tPmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyhtb2RpZmllZFNpbmNl
KTsKICAgICB9CiAjZW5kaWYKKworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFu
YWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQo
KSkKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhTW9kaWZpZWRTaW5jZSh3ZWJz
aXRlRGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiB9
CiAKIHN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNhY2hl
KiBjYWNoZSwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MzUsNiArMTc0
NCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAo
YXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0
b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+
ZGVsZXRlRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOworCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvcjsKICAgICAgICAgZm9yIChh
dXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCkBAIC0xOTU4LDYgKzE5NzAsMTMgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJh
YmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgaWYgKGF1dG8g
aXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9
IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVs
ZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyh3ZWJzaXRlRGF0YVR5cGVzLCBkb21haW5zVG9E
ZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0
byBkZWxldGVkRG9tYWlucykgbXV0YWJsZSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZG9tYWlu
IDogZGVsZXRlZERvbWFpbnMpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMuYWRkKFdURk1vdmUoZG9tYWluKSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAg
IGF1dG8gZGF0YVR5cGVzRm9yVUlQcm9jZXNzID0gV2Vic2l0ZURhdGE6OmZpbHRlcih3ZWJzaXRl
RGF0YVR5cGVzLCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSSk7CiAgICAgaWYgKCFkYXRhVHlw
ZXNGb3JVSVByb2Nlc3MuaXNFbXB0eSgpICYmICFkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVX
ZWJzaXRlRGF0YUZvci5pc0VtcHR5KCkpIHsKICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxlciA9
IFtjYWxsYmFja0FnZ3JlZ2F0b3JdIChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucykgewpAQCAtMjA3NCw2ICsyMDkzLDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
Z2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgaWYgKGF1dG8gaXRl
cmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1f
c3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZmV0Y2hE
YXRhKHdlYnNpdGVEYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykg
bXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAg
IH0KIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaAppbmRleCBmYjkyOTgxNDFiMGRiYzM4MWZhOGIz
YjM4MTdlNjhjYTAxODk3OWRhLi40NzMzOGVmZTUzODIyYTc2YTU0ODRmMjljOTM1NzY3OGY0MDE4
ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGUuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxl
U3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRsZT47
CiAgICAgRXhwZWN0ZWQ8QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4g
Y3JlYXRlU3luY0FjY2Vzc0hhbmRsZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0
b3JhZ2VFcnJvcj4gY2xvc2UoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVu
dGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllcj4gYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlU3luY0FjY2Vzc0hhbmRsZTsgfQogCiBwcml2YXRlOgogICAgIEV4cGVjdGVkPFdl
YkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9y
PiByZXF1ZXN0Q3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFR5cGUsIFN0
cmluZyYmIG5hbWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyLmNwcAppbmRleCAzOGFhMjY1NWMzOWRkYzIzN2JhNWEzODBhNWQ1NDkxMjQyYzM3
ZjUxLi4yOWNmYjBjNmIzNzNhMjVmZjAxY2NlODYzM2M5NWU1NmIxYWNiN2Y0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDIsOCArNDMsNyBAQCBGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXI6On5GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIg
OiBtX2hhbmRsZXMua2V5cygpKQotICAgICAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJIYW5kbGUo
aWRlbnRpZmllcik7CisgICAgY2xvc2UoKTsKIH0KIAogRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5
c3RlbUhhbmRsZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29u
bmVjdGlvbiwgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OlR5cGUgdHlwZSwgU3RyaW5nJiYgcGF0
aCwgU3RyaW5nJiYgbmFtZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSkKQEAgLTE0OSw0ICsxNDks
MjQgQEAgYm9vbCBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OnJlbGVhc2VMb2NrRm9yRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OkYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uSUQsIGlkZW50aWZp
ZXJzXSA6IG1faGFuZGxlc0J5Q29ubmVjdGlvbikgeworICAgICAgICBmb3IgKGF1dG8gaWRlbnRp
ZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgICAgICBhdXRvIHRha2VuSGFuZGxlID0gbV9o
YW5kbGVzLnRha2UoaWRlbnRpZmllcik7CisgICAgICAgICAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0
ZXJIYW5kbGUoaWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIC8vIFNlbmQgbWVzc2FnZSB0byB3
ZWIgcHJvY2VzcyB0byBpbnZhbGlkYXRlIGFjdGl2ZSBzeW5jIGFjY2VzcyBoYW5kbGUuCisgICAg
ICAgICAgICBpZiAoYXV0byBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyID0gdGFrZW5IYW5kbGUtPmFj
dGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSkKKyAgICAgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246
OnNlbmQoY29ubmVjdGlvbklELCBNZXNzYWdlczo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpJbnZhbGlkYXRlQWNjZXNzSGFuZGxlKCphY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwgMCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQobV9oYW5kbGVzLmlzRW1wdHkoKSk7Cisg
ICAgbV9oYW5kbGVzQnlDb25uZWN0aW9uLmNsZWFyKCk7CisgICAgbV9sb2NrTWFwLmNsZWFyKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5o
CmluZGV4IGI4NTc2NzY4YjM1NWFjYjNhYTBjMzcwMzhjYzUxZWNjOTMyYjM5NmMuLjUzNTk4OTU4
MTBkODc0ODU2MDlhNDBjZmE1MzcxY2M2OWVlYjA2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogICAgIGJvb2wgcmVsZWFzZUxvY2tG
b3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIpOwogCiBwcml2YXRlOgorICAgIHZvaWQgY2xvc2UoKTsKKwogICAgIFN0cmluZyBtX3Bh
dGg7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgbV9yZWdpc3RyeTsKICAg
ICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8V2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXI+PiBtX2hhbmRsZXNCeUNvbm5lY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDI5NzhhMjVlZjEyNTI0NzJjY2YyZTZmMWQzMmY1MWIw
NTEwMmYwNjIuLmY4YjM2ZTEzZmFjOGZiYmY2YTEwNTgwNzJhYjFlMzdmNTVhMzAyNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0zMCwxMSArMzAsNjkgQEAKICNpbmNsdWRlICJG
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3Qu
aD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVu
Y29kZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gcmVhZE9y
aWdpbkZyb21GaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZVBh
dGgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBvcmlnaW5GaWxl
SGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVP
cGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBjbG9zZUZpbGUgPSBtYWtlU2NvcGVFeGl0KFsmXSB7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShvcmlnaW5GaWxlSGFuZGxlKTsKKyAgICB9
KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChvcmlnaW5GaWxlSGFuZGxl
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gb3JpZ2luQ29udGVu
dCA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKG9yaWdpbkZpbGVIYW5kbGUpOworICAgIGlm
ICghb3JpZ2luQ29udGVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcih7IG9yaWdpbkNvbnRlbnQtPmRhdGEoKSwg
b3JpZ2luQ29udGVudC0+c2l6ZSgpIH0pOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xp
ZW50T3JpZ2luPiBvcmlnaW47CisgICAgZGVjb2RlciA+PiBvcmlnaW47CisgICAgcmV0dXJuIG9y
aWdpbjsKK30KKworc3RhdGljIHZvaWQgd3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikK
K3sKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpw
YXJlbnRQYXRoKGZpbGVQYXRoKSk7CisgICAgYXV0byBvcmlnaW5GaWxlSGFuZGxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdy
aXRlKTsKKyAgICBhdXRvIGNsb3NlRmlsZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG9yaWdpbkZpbGVIYW5kbGUpOworICAgIH0pOworCisgICAg
aWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG9yaWdpbkZpbGVIYW5kbGUpKSB7CisgICAg
ICAgIExPR19FUlJPUigid3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeTogRmFpbGVkIHRvIG9w
ZW4gb3JpZ2luIGZpbGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdURjo6UGVy
c2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IG9yaWdpbjsKKyAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShvcmlnaW5GaWxlSGFuZGxlLCBlbmNvZGVyLmJ1ZmZlcigp
LCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRlbGV0ZU9yaWdpbkZp
bGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIGF1dG8gcGFyZW50
UGF0aCA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoZmlsZVBhdGgpOworICAgIGF1dG8gY2hpbGRy
ZW4gPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhcmVudFBhdGgpOworICAgIGlmIChjaGls
ZHJlbi5zaXplKCkgPT0gMSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0
aCk7Cit9CisKIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdlcihzZXNzaW9u
SUQsIHBhdGgpKTsKQEAgLTExNiw3ICsxNzQsNyBAQCBzdGF0aWMgU3RyaW5nIGVuY29kZShjb25z
dCBTdHJpbmcmIHN0cmluZywgRmlsZVN5c3RlbTo6U2FsdCBzYWx0KQogICAgIHJldHVybiBiYXNl
NjRVUkxFbmNvZGVUb1N0cmluZyhoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkpOwogfQogCi1zdGF0
aWMgU3RyaW5nIG9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIEZpbGVTeXN0ZW06OlNhbHQgc2FsdCkKK3N0YXRpYyBT
dHJpbmcgb3JpZ2luRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgRmlsZVN5c3RlbTo6U2FsdCBzYWx0KQogewog
ICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByb290UGF0aDsKQEAg
LTEyNiwxNSArMTg0LDMwIEBAIHN0YXRpYyBTdHJpbmcgb3JpZ2luUGF0aChjb25zdCBTdHJpbmcm
IHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yCiAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMocm9vdFBhdGgsIHsgZW5jb2RlZFRv
cE9yaWdpbiwgZW5jb2RlZE9wZW5pbmdPcmlnaW4gfSk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgb3Jp
Z2luRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCit7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJvcmlnaW4iX3MpOwor
fQorCiBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpsb2NhbE9y
aWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgcmV0dXJuICptX2xvY2Fs
T3JpZ2luU3RvcmFnZU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFsmXSB7Ci0gICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihvcmlnaW5QYXRoKG1fcGF0aCwgb3Jp
Z2luLCBtX3NhbHQpKTsKKyAgICAgICAgYXV0byBvcmlnaW5EaXJlY3RvcnkgPSBvcmlnaW5EaXJl
Y3RvcnlQYXRoKG1fcGF0aCwgb3JpZ2luLCBtX3NhbHQpOworICAgICAgICB3cml0ZU9yaWdpblRv
RmlsZUlmTmVjZXNzYXJ5KG9yaWdpbkZpbGVQYXRoKG9yaWdpbkRpcmVjdG9yeSksIG9yaWdpbik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihXVEZNb3Zl
KG9yaWdpbkRpcmVjdG9yeSkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAordm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJs
ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBpZiAoYXV0byBp
dGVyYXRvciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZmluZChvcmlnaW4pOyBpdGVy
YXRvciAhPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAgIGlm
ICghaXRlcmF0b3ItPnZhbHVlLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9sb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2Vycy5yZW1vdmUoaXRlcmF0b3IpOworICAgIH0KK30KKwogdm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OnBlcnNpc3RlZChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTMwNSw1ICszNzgsMTYy
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRIYW5kbGUoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBXZWJDb3JlOjpGaWxlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxl
LT5nZXRIYW5kbGUoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBXVEZNb3ZlKG5hbWUpKSk7CiB9CiAK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUo
Y29uc3QgU3RyaW5nJiBzdG9yYWdlVHlwZSkKK3sKKyAgICBpZiAoc3RvcmFnZVR5cGUgPT0gIkZp
bGVTeXN0ZW0iKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOwor
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmZvckVhY2hPcmlnaW5EaXJlY3RvcnkoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmKT4mIGFwcGx5KQoreworICAgIGZvciAoYXV0byYgdG9wT3JpZ2luIDogRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShtX3BhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgdG9wT3JpZ2lu
KTsKKyAgICAgICAgYXV0byBvcGVuaW5nT3JpZ2lucyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkodG9wT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKG9wZW5pbmdPcmlnaW5zLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkodG9w
T3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgZm9yIChhdXRvJiBvcGVuaW5nT3JpZ2luIDogb3BlbmluZ09yaWdpbnMpIHsKKyAgICAg
ICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIG9wZW5pbmdPcmlnaW4pOworICAg
ICAgICAgICAgYXBwbHkob3BlbmluZ09yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK1ZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZmV0Y2hEYXRhRnJvbURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdGFyZ2V0VHlwZXMp
Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4+IG9yaWdp
blR5cGVzOworICAgIGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoWyZdKGF1dG8gZGlyZWN0b3J5KSBt
dXRhYmxlIHsKKyAgICAgICAgYXV0byBvcmlnaW4gPSByZWFkT3JpZ2luRnJvbUZpbGUob3JpZ2lu
RmlsZVBhdGgoZGlyZWN0b3J5KSk7CisgICAgICAgIGlmICghb3JpZ2luKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGZvciAoYXV0byYgc3RvcmFnZVR5cGUgOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KGRpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHR5cGUgPSB0
b1dlYnNpdGVEYXRhVHlwZShzdG9yYWdlVHlwZSk7IHR5cGUgJiYgdGFyZ2V0VHlwZXMuY29udGFp
bnMoKnR5cGUpKSB7CisgICAgICAgICAgICAgICAgLy8gUmV0dXJuIGJvdGggdG9wIG9yaWdpbiBh
bmQgb3BlbmluZyBvcmlnaW4gZm9yIHRoaXMgZGF0YS4KKyAgICAgICAgICAgICAgICBvcmlnaW5U
eXBlcy5hZGQob3JpZ2luLT5jbGllbnRPcmlnaW4sIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHsgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgqdHlwZSk7CisgICAgICAgICAgICAgICAgb3JpZ2lu
VHlwZXMuYWRkKG9yaWdpbi0+dG9wT3JpZ2luLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB7
IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoKnR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSk7CisKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBlbnRyaWVzOworICAg
IGZvciAoYXV0byBbb3JpZ2luLCB0eXBlc10gOiBvcmlnaW5UeXBlcykgeworICAgICAgICBmb3Ig
KGF1dG8gdHlwZSA6IHR5cGVzKQorICAgICAgICAgICAgZW50cmllcy5hcHBlbmQoeyBXZWJzaXRl
RGF0YTo6RW50cnkgeyBvcmlnaW4sIHR5cGUsIDAgfSB9KTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZW50cmllczsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZldGNoRGF0YShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0
eXBlcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgYXV0byBlbnRyaWVzID0gZmV0Y2hEYXRhRnJvbURpc2sodHlwZXMp
OworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBlbnRyaWVzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZW50cmllcykpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlbnRyaWVz
KSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitWZWN0b3I8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFPbkRpc2soT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBjb25zdCBG
dW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpPiYgZmlsdGVyKQorewor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OkNs
aWVudE9yaWdpbj4gZGVsZXRlZE9yaWdpbnM7CisgICAgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShb
Jl0oYXV0byBkaXJlY3RvcnkpIG11dGFibGUgeworICAgICAgICBhdXRvIGZpbGVQYXRoID0gb3Jp
Z2luRmlsZVBhdGgoZGlyZWN0b3J5KTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSByZWFkT3JpZ2lu
RnJvbUZpbGUoZmlsZVBhdGgpOworICAgICAgICBpZiAoIW9yaWdpbikgeworICAgICAgICAgICAg
Ly8gSWYgb3JpZ2luIGNhbm5vdCBiZSByZXRyaWV2ZWQsIGJ1dCB3ZSBhcmUgYXNrZWQgdG8gcmVt
b3ZlIGRhdGEgZm9yIGFsbCBvcmlnaW5zLCByZW1vdmUgaXQuCisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25E
aXNrIGZhaWxlZCB0byByZWFkIG9yaWdpbiBmcm9tICclcyciLCBmaWxlUGF0aC51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIGlmIChmaWx0ZXIoV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgfSkp
IHsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01vZGlmaWVkU2lu
Y2UoZGlyZWN0b3J5LCBtb2RpZmllZFNpbmNlVGltZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZmlsdGVyKCpvcmln
aW4pKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlbGV0ZWRPcmlnaW5zLmFwcGVu
ZCgqb3JpZ2luKTsKKyAgICAgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcigqb3JpZ2luKS5k
ZWxldGVEYXRhKHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSk7CisgICAgICAgIHJlbW92ZU9yaWdp
blN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZSgqb3JpZ2luKTsKKyAgICAgICAgZGVsZXRlT3JpZ2lu
RmlsZUlmTmVjZXNzYXJ5KGZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICB9KTsKKworICAgIHJldHVybiBkZWxldGVkT3Jp
Z2luczsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NF
UlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIG9yaWdpbnMgPSBjcm9zc1RocmVhZENvcHkob3Jp
Z2lucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBv
cmlnaW5TZXQ7CisgICAgICAgIG9yaWdpblNldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdp
bnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAg
ICAgICBvcmlnaW5TZXQuYWRkKFdURk1vdmUob3JpZ2luKSk7CisKKyAgICAgICAgZGVsZXRlRGF0
YU9uRGlzayh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbJm9yaWdpblNldF0oYXV0byBv
cmlnaW4pIHsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5TZXQuY29udGFpbnMob3JpZ2luLnRv
cE9yaWdpbikgfHwgb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbi5jbGllbnRPcmlnaW4pOworICAg
ICAgICB9KTsKKworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgbW9kaWZpZWRTaW5jZVRp
bWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIGRlbGV0ZURhdGFPbkRpc2sodHlwZXMsIG1vZGlmaWVkU2luY2VUaW1l
LCBbXShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0pOworCisg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlw
ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIGRvbWFpbnMgPSBjcm9zc1Ro
cmVhZENvcHkoZG9tYWlucyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZGVsZXRlZE9yaWdpbnMgPSBkZWxl
dGVEYXRhT25EaXNrKHR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFsmZG9tYWluc10oYXV0
byYgb3JpZ2luKSB7CisgICAgICAgICAgICBhdXRvIGRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW4uY2xpZW50T3JpZ2luLmhv
c3QpOworICAgICAgICAgICAgcmV0dXJuIGRvbWFpbnMuY29udGFpbnMoZG9tYWluKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVs
ZXRlZERvbWFpbnM7CisgICAgICAgIGZvciAoYXV0byBvcmlnaW4gOiBkZWxldGVkT3JpZ2lucykg
eworICAgICAgICAgICAgYXV0byBkb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0KTsKKyAgICAg
ICAgICAgIGRlbGV0ZWREb21haW5zLmFkZChkb21haW4pOworICAgICAgICB9CisKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
ZG9tYWlucyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRlbGV0ZWREb21haW5zKSldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnMpKTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNWJjNTZiN2M2NDZjNmIxZmQ3YWQ2NGRkNDg3ZWRmNWRl
YTYzOTM0YS4uMmFkZGYyYjVlMjBhZDM2ZDI4ZTQ0NTk3ZWE0MTNmZmU4OTYxYTQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMjgsMTAgKzI4LDEyIEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3IuaCIKICNpbmNsdWRlICJP
cmlnaW5TdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1I
YW5kbGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBTaGFyZWRGaWxlSGFu
ZGxlOwpAQCAtNTUsMTMgKzU3LDIyIEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsK
ICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4mJik7Cisg
ICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIH5OZXR3b3JrU3RvcmFnZU1hbmFnZXIoKTsKICAg
ICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICB2b2lkIHJlbW92ZU9yaWdpblN0b3JhZ2VNYW5h
Z2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICBGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiBmaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5
KCk7CiAKKyAgICB2b2lkIGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mKTsKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBmZXRj
aERhdGFGcm9tRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPik7CisgICAgVmVjdG9yPFdl
YkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlRGF0YU9uRGlzayhPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV2FsbFRpbWUsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik+Jik7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciAoaW1wbGVtZW50
ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKaW5k
ZXggNGYwNmY0NTI0NjU2NDZkMjAxMWJjN2Y1M2JiZGIyODExNTkzYWE0My4uYTIwODBmOWMzM2Q4
MDM4NTI2ODlkNjg5YWQ1ZDI4MDE2ZDQ5YzhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3Bw
CkBAIC01MSwyMCArNTEsNjEgQEAgcHVibGljOgogICAgICAgICAgICAgbV9maWxlU3lzdGVtU3Rv
cmFnZU1hbmFnZXItPmNvbm5lY3Rpb25DbG9zZWQoY29ubmVjdGlvbik7CiAgICAgfQogCi0gICAg
U3RyaW5nIHR5cGVTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyKSBj
b25zdAorICAgIGVudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90IHsKKyAgICAgICAgRmls
ZVN5c3RlbSwKKyAgICB9OworCisgICAgc3RhdGljIFN0cmluZyB0b1N0b3JhZ2VJZGVudGlmaWVy
KFN0b3JhZ2VUeXBlIHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgY2FzZSBTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgICAgIHJldHVybiAiRmls
ZVN5c3RlbSJfczsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiJfczsK
KyAgICB9CisKKyAgICBTdHJpbmcgdHlwZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlIHR5cGUpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9yb290UGF0aC5pc0VtcHR5KCkgPyBlbXB0eVN0
cmluZygpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgs
IHN0b3JhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBzdG9yYWdlSWRlbnRpZmllciA9IHRv
U3RvcmFnZUlkZW50aWZpZXIodHlwZSk7CisgICAgICAgIGlmIChtX3Jvb3RQYXRoLmlzRW1wdHko
KSB8fCBzdG9yYWdlSWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKKworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1fcm9vdFBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBG
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lz
dGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5JiByZWdpc3RyeSkKICAgICB7CiAgICAgICAgIGlmICgh
bV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIpCi0gICAgICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyPih0eXBlU3Rv
cmFnZVBhdGgoIkZpbGVTeXN0ZW0iKSwgcmVnaXN0cnkpOworICAgICAgICAgICAgbV9maWxlU3lz
dGVtU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcj4o
dHlwZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtKSwgcmVnaXN0cnkpOwogCiAg
ICAgICAgIHJldHVybiAqbV9maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CiAgICAgfQogCisgICAg
Ym9vbCBpc0FjdGl2ZSgpCisgICAgeworICAgICAgICByZXR1cm4gISFtX2ZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlcjsKKyAgICB9CisKKyAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lKQorICAgIHsKKyAg
ICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSkpCisg
ICAgICAgICAgICBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEobW9kaWZpZWRTaW5jZVRpbWUp
OworCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG1fcm9vdFBh
dGgpOworICAgIH0KKwogcHJpdmF0ZToKKyAgICB2b2lkIGRlbGV0ZUZpbGVTeXN0ZW1TdG9yYWdl
RGF0YShXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAgIG1fZmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyID0gbnVsbHB0cjsKKworICAgICAgICBhdXRvIGZpbGVTeXN0ZW1T
dG9yYWdlUGF0aCA9IHR5cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShmaWxlU3lzdGVt
U3RvcmFnZVBhdGgsIG1vZGlmaWVkU2luY2VUaW1lKTsKKyAgICB9CisKICAgICBTdHJpbmcgbV9y
b290UGF0aDsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFN0b3JhZ2VCdWNrZXRNb2Rl
IG1fbW9kZSB7IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0RWZmb3J0IH07CkBAIC03NCw2ICsxMTUs
NyBAQCBwcml2YXRlOgogT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
KFN0cmluZyYmIHBhdGgpCiAgICAgOiBtX3BhdGgoV1RGTW92ZShwYXRoKSkKIHsKKyAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogT3JpZ2luU3RvcmFnZU1hbmFnZXI6On5Pcmln
aW5TdG9yYWdlTWFuYWdlcigpID0gZGVmYXVsdDsKQEAgLTEwMyw1ICsxNDUsMTYgQEAgRmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3Jh
Z2VNYW5hZ2VyKEZpbGVTeXMKICAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlcihyZWdpc3RyeSk7CiB9CiAKK2Jvb2wgT3JpZ2luU3RvcmFnZU1hbmFnZXI6
OmlzQWN0aXZlKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZlKCk7Cit9
CisKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlw
ZXMsIG1vZGlmaWVkU2luY2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3Rv
cmFnZU1hbmFnZXIuaAppbmRleCBhNGMxMWFkNjVhNWMxOTcwM2E3YzBlOTI5NGJjMmZlYWFhMmZm
ZTJlLi5kYTMxMGM4NjIyODBhZmI2MjA5YTkxMWI0NWVkMzQ2NjBlOWRiYzMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3Rv
cmFnZU1hbmFnZXIuaApAQCAtMjgsMTAgKzI4LDE1IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeTsKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlcjsKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiAKIGNsYXNz
IE9yaWdpblN0b3JhZ2VNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTQzLDEyICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwZXJzaXN0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX3BlcnNpc3RlZDsgfQogICAgIHZvaWQgcGVyc2lzdCgpOwogICAgIEZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlUmVnaXN0cnkmKTsKKyAgICBib29sIGlzQWN0aXZlKCk7CisgICAgdm9pZCBkZWxldGVE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSk7CiAKIHByaXZhdGU6CiAg
ICAgZW51bSBjbGFzcyBTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2w7CiAgICAgY2xhc3MgU3RvcmFn
ZUJ1Y2tldDsKICAgICBTdG9yYWdlQnVja2V0JiBkZWZhdWx0QnVja2V0KCk7CiAKKyAgICB2b2lk
IGNyZWF0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKKyAgICB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeSgpOworCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFN0b3JhZ2VCdWNrZXQ+IG1fZGVmYXVsdEJ1Y2tldDsKICAgICBTdHJpbmcgbV9w
YXRoOwogICAgIGJvb2wgbV9wZXJzaXN0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCmluZGV4IGYzNzI5MDEzOGI0ZmFm
ZjMyMzUzYjJhY2RhZGU4MzQwMGRhOWNjOGEuLmY5YjJmZTA0MDlkYzQzMGIxZDNkM2FlYjAwZTc2
YjAwYjNmMDU2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBl
IFdlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MoV2Vic2l0ZURhdGFUeXBlIGRhdGFUeXBlKQogICAg
IGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzOgogICAgICAgICByZXR1
cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKICNlbmRpZgorICAgIGNhc2UgV2Vi
c2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9j
ZXNzVHlwZTo6TmV0d29yazsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFUeXBlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVR5cGUuaAppbmRleCA3YTllNTAwZmUxYjA5ZTM4OTVkZDc0M2UxNjVjOTg5MThiZTdhOGRiLi5l
NDU5YTA5MDM4YTQ4YTE5ODZkNmQzMzk2NjQzMzI4MzM3NWE0NTRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaApAQCAtNTIsNiAr
NTIsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90IHsKICNpZiBIQVZF
KENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQogICAgIEFsdGVybmF0aXZlU2VydmljZXMg
PSAxIDw8IDE4LAogI2VuZGlmCisgICAgRmlsZVN5c3RlbSA9IDEgPDwgMTksCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKQEAgLTc5LDEwICs4MCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB7CiAjZW5kaWYKICAgICAgICAgV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLAogICAgICAgICBXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6RGV2aWNlSWRIYXNoU2FsdCwKLSAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cworICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzLAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVS
TkFUSVZFX1NFUlZJQ0UpCi0gICAgICAgICwgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFsdGVy
bmF0aXZlU2VydmljZXMKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0
aXZlU2VydmljZXMsCiAjZW5kaWYKKyAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkZp
bGVTeXN0ZW0KICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQppbmRleCBjODI2MTZmNzkwYzZm
YzY5MGE2Y2JkNjk3YTBlOGVjZGE1MjI3ZmIxLi5mYTExMTNlNDdjMmE0NDQxNGJkMmFkZDE5MmQw
MmU3NTA3ZjMyNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtNTEsNiArNTEsNyBAQCBOU1N0cmlu
ZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzID0gQCJfV0tXZWJzaXRlRGF0
YVR5cGVDcmVkZW50aWFscwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBZENs
aWNrQXR0cmlidXRpb25zID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25z
IjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMiOwog
TlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzID0g
QCJfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzIjsKK05TU3RyaW5nICogY29u
c3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlRmls
ZVN5c3RlbSI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNp
dGVEYXRhVHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEiOwpA
QCAtMTEwLDYgKzExMSw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNT
ZXQgKmRhdGFUeXBlcykKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIlByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vi
c2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAgICAgICAgIFthcnJheSBhZGRPYmpl
Y3Q6QCJBbHRlcm5hdGl2ZSBTZXJ2aWNlcyJdOworICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5z
T2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dKQorICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OkAiRmlsZSBTeXN0ZW0iXTsKIAogICAgIHJldHVybiBbYXJyYXkgY29tcG9uZW50c0pv
aW5lZEJ5U3RyaW5nOkAiLCAiXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRl
eCBkYmM1ZjNmN2ExZmY0ZmI3NDlhYWZkNzBlNTcwYmEwNDg1NjhhY2Q2Li45MTQ0OGVlMWQ1NTFk
ZTQyMDY1ODY3YjgxNWRiZGYxZGVmYTc1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5h
bC5oCkBAIC03Nyw2ICs3Nyw4IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRl
RGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlCiAgICAgaWYgKFt3
ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0
aXZlU2VydmljZXNdKQogICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2
ZVNlcnZpY2VzOwogI2VuZGlmCisgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3Ry
aW5nOl9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dKQorICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFUeXBlOjpGaWxlU3lzdGVtOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAg
LTEzNCw2ICsxMzYsOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNp
dGVEYXRhVHlwZXMoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykp
CiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlw
ZUFsdGVybmF0aXZlU2VydmljZXNdOwogI2VuZGlmCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKSkKKyAgICAgICAgW3drV2Vic2l0
ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV07CiAKICAg
ICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUu
aAppbmRleCBkNjA3ZGZlMTNmNjEyYjU4MjIwZTVhMzUyNTc3NDcwNTMxZWU0OTA3Li4yY2Y5YTRk
MmEwYzdmY2UyNWI2NTA2YWMxN2JkNzExMTdjOTc1MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFBy
aXZhdGUuaApAQCAtMzcsNiArMzcsNyBAQCBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBXS19BUElfQVZBSUxBQkxFKG1hY29zKAogV0tfRVhU
RVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9u
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIFdLX0VYVEVSTiBO
U1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1cmVtZW50
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogV0tfRVhURVJOIE5T
U3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOworV0tfRVhURVJOIE5TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhP
TkUKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRh
dGEgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggZTJi
MDczNjQ2NGIxNjZkZDkyMGNmMzU1MTcxZmIzYTU2MzcwYTM4NC4uN2VmMDY5NTBhYjA3ZDNlMWE3
NjE2Y2JjYjU4YmQyNTc4NTM1OWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0yNDgsNyArMjQ4LDgg
QEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1By
aXZhdGUKICAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzLAogICAgICAg
ICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucywKICAgICAgICAgICAg
IF9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVDbGlja01lYXN1cmVtZW50cywKLSAgICAgICAgICAg
IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMKKyAgICAgICAgICAgIF9XS1dl
YnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMsCisgICAgICAgICAgICBfV0tXZWJzaXRl
RGF0YVR5cGVGaWxlU3lzdGVtCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKICAgICAgICAgICAgICwg
X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNDUxMTVmNDg5YWEyY2NiYzli
ZWM0Y2UxN2RmNjA3YmUyODViNTI0Li42MzFjOGY5Yzg5YzZlMWUwZjYwZjJiNWM3ZWU5MzIwZDIx
NTMyYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE0OTgsNiArMTQ5OCw5IEBACiAJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9OwogCQk5M0Q2QjdCOTI1
NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3Qjcy
NTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U2
QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3
IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5M0U3OTk4NTI3NTZGQTU1MDA3NDAwOEEgLyogV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBX
ZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owor
CQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CisJCTkzRTc5OTg4Mjc1NkZBQzIw
MDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNzk5ODEyNzU2RkE1
MzAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87
IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNTQ5
QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4MDI1MjQxNEVB
MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tN
b3VzZURldmljZU9ic2VydmVyLmggKi87IH07CiAJCTk1NjUwODM5MjZEODdBMkIwMEUxNUNCNyAv
KiBBcHBsZU1lZGlhU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk1NjUwODM3MjZEODdBMkIwMEUxNUNCNyAvKiBBcHBsZU1lZGlhU2Vy
dmljZXNTUEkuaCAqLzsgfTsKQEAgLTUyOTgsNiArNTMwMSwxMCBAQAogCQk5M0Q2QjdCNzI1NTM0
QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCN0I4MjU1
MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzRTc5OTdFMjc1NkY2NzAwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5M0U3OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk4MzI3NTZG
QTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBs
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3
MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2
aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tNb3VzZURl
dmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9ic2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDU3Nyw2ICsxMDU4NCw3IEBACiAJCQkJQkMwMzJE
NjgxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkVkaXRvckNsaWVudC5oICovLAogCQkJCTkzNTQyNDJC
MjcwM0JEQ0IwMDVDQTcyQyAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwICov
LAogCQkJCTkzNTQyNDJBMjcwM0JEQ0IwMDVDQTcyQyAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24uaCAqLywKKwkJCQk5M0U3OTk3RTI3NTZGNjcwMDA3NDAwOEEgLyogV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTExQTU4MTEyRjRG
QkIwMDMzN0JBQiAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENkEx
MEY0Mzc4RDAwNThDMTVBIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJQkMxQkUx
REYxMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCAqLywKQEAgLTEy
MDU0LDYgKzEyMDYyLDkgQEAKIAkJCQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi8sCiAJCQkJRTM4NjZCMDQy
Mzk5OTc5QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTM4NjZCMDUyMzk5OTc5QzAwRjg4RkU5IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJOTNFNzk5ODIyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTNFNzk5ODEyNzU2RkE1MzAwNzQwMDhB
IC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8sCisJCQkJOTNF
Nzk5ODMyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1l
c3NhZ2VzUmVwbGllcy5oICovLAogCQkJCUNENzNCQTQ4MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJG
dWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQ0Q3M0JBNDkxMzFB
Q0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQlD
RDczQkE0NTEzMUFDQzg4MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMzMwMSw2ICsxMzMxMiw4IEBACiAJCQkJQkMwMzJEQkIx
MEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxMTFCNUQxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM1NDI0MkMyNzAzQkRDQjAwNUNBNzJDIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFNzk5ODgyNzU2RkFDMjAwNzQw
MDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0U3OTk4NzI3NTZGQUI0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFF
RTEyNjRGRDUwMDAzRTQ0RDQgLyogV2ViRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRTQ2OTU0MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0U0Njk1NjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTE1Mzk2LDYgKzE1NDA5LDcgQEAKIAkJCQlF
Mzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4NjZCMDkyMzk5QTJENTAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4OTIxMkI2QUIxMDBGNDkzRkQgLyogV2Vi
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTNFNzk5ODUyNzU2RkE1NTAwNzQwMDhBIC8q
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDczQkE0RTEzMUFDREI3MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNDcxMzFB
Q0M5QTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYwNjExMkQ2QkE5MTAwMTJBNzJBIC8qIFdlYkdl
b2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIx
ZGQwMGE0OGIuLjk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIldlYkNh
Y2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3Nh
Z2VzLmgiCkBAIC0xMTksNiArMTIxLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAg
ICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIFVTRShMSUJXRUJS
VEMpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJSVENNb25pdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYyZWNkY2Y3ZDlkNTE1N2NmODNiYmIyNDMzNDBlYWU4ZjM1N2NiNzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIEludmFsaWRhdGVBY2Nl
c3NIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCit9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4uY2UwMDY3
MjZmM2IyZGFlOThmNGU1MTg5YjE0MDA3Yzc5YjdiNmE3YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAz
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCBy
ZW1vdmUgZmlsZSBzeXN0ZW0gZGF0YSB2aWEgV0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1NjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tOgorCiAyMDIxLTEyLTAyICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Ig
b24gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1t
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVT
eXN0ZW1BY2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Zp
bGVTeXN0ZW1BY2Nlc3MubW0KaW5kZXggN2JiZTNjOWY2MmMxZDk3YzMxOTU1MmExOTAzZDkxNWFk
NWY3YTIxYS4uNjYwNzc0YTkxNzIzMWEyMzA2YjVkNjI2ZDdmYjVmZGE4ZmJiMzE5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNj
ZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5
c3RlbUFjY2Vzcy5tbQpAQCAtMjksMTEgKzI5LDEzIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRH
bG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJU
ZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
c2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CiAKIEBpbnRlcmZhY2UgRmlsZVN5c3RlbUFjY2Vzc01l
c3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5kCkBA
IC00OCw3ICs1MCw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250
ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiAKIEBlbmQKIAotc3RhdGlj
IE5TU3RyaW5nICptYWluRnJhbWVTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKK3N0YXRpYyBOU1N0cmlu
ZyAqd29ya2VyRnJhbWVTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKICAgICBmdW5jdGlvbiBzdGFydCgp
IHsgXAogICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcignd29ya2VyLmpzJyk7IFwKICAg
ICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKQEAgLTExNSw3ICsx
MTcsNyBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIFdlYlByb2Nlc3NDcmFzaER1cmluZ1dyaXRl
KQogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJ3ZWJraXQiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OndvcmtlckZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6
Ly93ZWJraXQub3JnIl1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJwYWdlIGlzIGxvYWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5
XSk7CkBAIC0xMjYsNyArMTI4LDcgQEAgVEVTVChGaWxlU3lzdGVtQWNjZXNzLCBXZWJQcm9jZXNz
Q3Jhc2hEdXJpbmdXcml0ZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJzdWNjZXNzOiB3cml0ZSAx
MCBieXRlcyIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICBhdXRvIHNlY29uZFdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwot
ICAgIFtzZWNvbmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbc2Vj
b25kV2ViVmlldyBsb2FkSFRNTFN0cmluZzp3b3JrZXJGcmFtZVN0cmluZyBiYXNlVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlID0gZmFsc2U7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicGFnZSBpcyBsb2FkZWQi
LCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwpAQCAtMTY4LDcgKzE3MCw3IEBAIFRFU1QoRmls
ZVN5c3RlbUFjY2VzcywgTmV0d29ya1Byb2Nlc3NDcmFzaER1cmluZ1dyaXRlKQogICAgIFtjb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJ3ZWJraXQiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6
Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOndvcmtlckZyYW1l
U3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3Jn
Il1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
KTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJwYWdlIGlzIGxvYWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CkBAIC0yNTgs
NCArMjYwLDE5NiBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIE1pZ3JhdGVUb05ld1N0b3JhZ2VE
aXJlY3RvcnkpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNj
cmlwdE1lc3NhZ2UgYm9keV0pOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBA
IjxzY3JpcHQ+IFwKKyAgICBhc3luYyBmdW5jdGlvbiBvcGVuKHNob3VsZENyZWF0ZUZpbGUpIFwK
KyAgICB7IFwKKyAgICAgICAgdHJ5IHsgXAorICAgICAgICAgICAgdmFyIHJvb3RIYW5kbGUgPSBh
d2FpdCBuYXZpZ2F0b3Iuc3RvcmFnZS5nZXREaXJlY3RvcnkoKTsgXAorICAgICAgICAgICAgdmFy
IGZpbGVIYW5kbGUgPSBhd2FpdCByb290SGFuZGxlLmdldEZpbGVIYW5kbGUoJ2ZpbGUtc3lzdGVt
LWFjY2Vzcy50eHQnLCB7ICdjcmVhdGUnIDogc2hvdWxkQ3JlYXRlRmlsZSB9KTsgXAorICAgICAg
ICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3Nh
Z2UoJ2ZpbGUgaXMgb3BlbmVkJyk7IFwKKyAgICAgICAgfSBjYXRjaChlcnIpIHsgXAorICAgICAg
ICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3Nh
Z2UoJ2Vycm9yOiAnICsgZXJyLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlKTsgXAorICAgICAg
ICB9IFwKKyAgICB9IFwKKyAgICBvcGVuKHRydWUpOyBcCisgICAgPC9zY3JpcHQ+IjsKKworVEVT
VChGaWxlU3lzdGVtQWNjZXNzLCBGZXRjaEFuZFJlbW92ZURhdGEpCit7CisgICAgYXV0byBoYW5k
bGVyID0gYWRvcHROUyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3
ZWJzaXRlRGF0YVN0b3JlXTsKKyAgICBhdXRvIHR5cGVzID0gW05TU2V0IHNldFdpdGhPYmplY3Q6
X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV07CisKKyAgICAvLyBSZW1vdmUgZXhpc3Rpbmcg
ZGF0YS4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0
YU9mVHlwZXM6dHlwZXMgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0
aW9uSGFuZGxlcjpeIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMuX2ZpbGVTeXN0ZW1BY2Nl
c3NFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLl9zdG9yYWdlQVBJRW5hYmxlZCA9IFlF
UzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnRlc3RTdHJpbmcgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBp
cyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworCisgICAgLy8gRmV0Y2ggZGF0
YSBhbmQgcmVtb3ZlIGl0IGJ5IG9yaWdpbi4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNp
dGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAg
RVhQRUNUX0VRKHJlY29yZHMuY291bnQsIDF1KTsKKyAgICAgICAgYXV0byByZWNvcmQgPSBbcmVj
b3JkcyBvYmplY3RBdEluZGV4OjBdOworICAgICAgICBFWFBFQ1RfU1RSRVEoIndlYmtpdC5vcmci
LCBbcmVjb3JkLmRpc3BsYXlOYW1lIFVURjhTdHJpbmddKTsKKworICAgICAgICAvLyBSZW1vdmUg
ZGF0YS4KKyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMg
Zm9yRGF0YVJlY29yZHM6cmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICAvLyBGZXRjaCBkYXRhIGFmdGVyIHJlbW92YWwuCisgICAg
ZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3Jk
ICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAwdSk7Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgLy8gRmlsZSBjYW5ub3QgYmUgb3Bl
bmVkIGFmdGVyIGRhdGEgcmVtb3ZhbC4KKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJvcGVuKGZhbHNlKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZXJyb3I6IE5vdEZvdW5kRXJy
b3IgLSBUaGUgb2JqZWN0IGNhbiBub3QgYmUgZm91bmQgaGVyZS4iLCBbbGFzdFNjcmlwdE1lc3Nh
Z2UgYm9keV0pOworfQorCitURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIFJlbW92ZURhdGFCeU1vZGlm
aWNhdGlvblRpbWUpCit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0ZpbGVTeXN0ZW1B
Y2Nlc3NNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHByZWZl
cmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9m
aWxlU3lzdGVtQWNjZXNzRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQ
SUVuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0
ZXN0U3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5v
cmciXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19T
VFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAg
IGF1dG8gd2Vic2l0ZURhdGFTdG9yZSA9IFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVd
OworICAgIGF1dG8gdHlwZXMgPSBbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5
cGVGaWxlU3lzdGVtXTsKKyAgICBkb25lID0gZmFsc2U7CisgICAgX19ibG9jayBOU1VJbnRlZ2Vy
IHJlY29yZHNDb3VudDsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZU
eXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29y
ZCAqPiAqcmVjb3JkcykgeworICAgICAgICByZWNvcmRzQ291bnQgPSByZWNvcmRzLmNvdW50Owor
ICAgICAgICBFWFBFQ1RfR1QocmVjb3Jkc0NvdW50LCAwdSk7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBk
b25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlw
ZXMgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIG5vd10gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAg
ICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7
CisgICAgICAgICAgICByZWNvcmRzQ291bnQgPSByZWNvcmRzLmNvdW50OworICAgICAgICAgICAg
RVhQRUNUX0VRKHJlY29yZHMuY291bnQsIHJlY29yZHNDb3VudCk7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSBy
ZW1vdmVEYXRhT2ZUeXBlczp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERh
dGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJz
aXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICAgICAgRVhQRUNUX0VRKHJlY29y
ZHMuY291bnQsIDB1KTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitzdGF0aWMg
TlNTdHJpbmcgKm1haW5GcmFtZVN0cmluZyA9IEAiPHNjcmlwdD4gXAorICAgIGZ1bmN0aW9uIHBv
c3RSZXN1bHQoZXZlbnQpIFwKKyAgICB7IFwKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IFwKKyAgICB9IFwK
KyAgICBhZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcG9zdFJlc3VsdCwgZmFsc2UpOyBcCisg
ICAgPC9zY3JpcHQ+IFwKKyAgICA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS8n
PiI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBmcmFtZUJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCis8
c2NyaXB0PgorZnVuY3Rpb24gcG9zdE1lc3NhZ2UobWVzc2FnZSkKK3sKKyAgICBwYXJlbnQucG9z
dE1lc3NhZ2UobWVzc2FnZSwgJyonKTsKK30KK2FzeW5jIGZ1bmN0aW9uIG9wZW4oKQoreworICAg
IHRyeSB7CisgICAgICAgIHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9yLnN0b3JhZ2Uu
Z2V0RGlyZWN0b3J5KCk7CisgICAgICAgIHZhciBmaWxlSGFuZGxlID0gYXdhaXQgcm9vdEhhbmRs
ZS5nZXRGaWxlSGFuZGxlKCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0JywgeyAnY3JlYXRlJyA6IHRy
dWUgfSk7CisgICAgICAgIHBvc3RNZXNzYWdlKCdmaWxlIGlzIG9wZW5lZCcpOworICAgIH0gY2F0
Y2goZXJyKSB7CisgICAgICAgIHBvc3RNZXNzYWdlKCdlcnJvcjogJyArIGVyci5uYW1lICsgJyAt
ICcgKyBlcnIubWVzc2FnZSk7CisgICAgfQorfQorb3BlbigpOworPC9zY3JpcHQ+CispVEVTVFJF
U09VUkNFIjsKKworVEVTVChGaWxlU3lzdGVtQWNjZXNzLCBGZXRjaERhdGFGb3JUaGlyZFBhcnR5
KQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAi
LyIsIHsgZnJhbWVCeXRlcyB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKKworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRl
c3RIYW5kbGVyIl07CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5fZmlsZVN5c3RlbUFjY2Vzc0VuYWJsZWQgPSBZRVM7
CisgICAgcHJlZmVyZW5jZXMuX3N0b3JhZ2VBUElFbmFibGVkID0gWUVTOworCisgICAgYXV0byB3
ZWJzaXRlRGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV07CisgICAg
YXV0byB0eXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVT
eXN0ZW1dOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVE
YXRhT2ZUeXBlczp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBs
ZXRpb25IYW5kbGVyOl4geworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7Cisg
ICAgW25hdmlnYXRpb25EZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
LCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9u
TWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworICAgIFtu
YXZpZ2F0aW9uRGVsZWdhdGUgc2V0RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpbJl0o
V0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93KTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0
aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93ZWJraXQub3JnIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxz
ZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmaWxlIGlzIG9wZW5lZCIsIFtsYXN0U2NyaXB0TWVz
c2FnZSBib2R5XSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUg
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5
PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgLy8gU2hvdWxkIHJl
dHVybiBib3RoIG9wZW5pbmcgb3JpZ2luIGFuZCB0b3Agb3JpZ2luLgorICAgICAgICBFWFBFQ1Rf
RVEocmVjb3Jkcy5jb3VudCwgMnUpOworICAgICAgICBhdXRvIHNvcnRGdW5jdGlvbiA9IF4oV0tX
ZWJzaXRlRGF0YVJlY29yZCAqcmVjb3JkMSwgV0tXZWJzaXRlRGF0YVJlY29yZCAqcmVjb3JkMil7
CisgICAgICAgICAgICByZXR1cm4gW3JlY29yZDEuZGlzcGxheU5hbWUgY29tcGFyZTpyZWNvcmQy
LmRpc3BsYXlOYW1lXTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBzb3J0ZWRSZWNvcmRzID0g
W3JlY29yZHMgc29ydGVkQXJyYXlVc2luZ0NvbXBhcmF0b3I6c29ydEZ1bmN0aW9uXTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKEAiMTI3LjAuMC4xIiwgW3NvcnRlZFJlY29yZHMgb2JqZWN0QXRJ
bmRleDowXS5kaXNwbGF5TmFtZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAIndlYmtpdC5v
cmciLCBbc29ydGVkUmVjb3JkcyBvYmplY3RBdEluZGV4OjFdLmRpc3BsYXlOYW1lKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446199</attachid>
            <date>2021-12-07 10:36:17 -0800</date>
            <delta_ts>2021-12-07 10:38:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233567-20211207103615.patch</filename>
            <type>text/plain</type>
            <size>72650</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdjZTYzZmRjYTUxMGE1MDkzMzY1Y2Iy
MjE4MmViMzUwNmI3ZDQ5OTUuLjNhODdhMDk5NDZlYjU0NDUwYjFlZGE5OThmYzg2ZTcyNDBmMTQ2
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYwMjkxODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpyZWFkRW50aXJl
RmlsZSk6IFJlYWQgd2hvbGUgZmlsZSBjb250ZW50IGludG8gYSBWZWN0b3IuCisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UpOiBSZWN1cnNp
dmVseSBkZWxldGUgZmlsZXMgYW5kIGZvbGRlcnMgbW9kaWZpZWQgYWZ0ZXIgCisgICAgICAgIHNw
ZWNpZmllZCB0aW1lIGluIGEgZGlyZWN0b3J5LgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6
CisKIDIwMjEtMTItMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjI4NjUwNyk6IFttYWNPU10gTWFueSBmaWxlIHN5c3RlbSBhY2Nl
c3MgbGF5b3V0IHRlc3RzIGJlY2FtZSBmbGFreSBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ0NWQz
ZjNkODM4ZjA5ZjQyNGViNjRjZjMxMDUzZjA1ZDNkNDllN2MuLmZhYWJhMTRkZTdkNmFiYTRiNTJk
ODQ4ZGQ5ZTA3YzQ1ZDcyMTNjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0x
Mi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCBh
bmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0ZURhdGFTdG9yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTY3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84NjAyOTE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4g
RmFibGV0LgorCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1T
dG9yYWdlQ29ubmVjdGlvbi5oOgorCiAyMDIxLTEyLTA2ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBJbnNwZWN0b3I6IFVuaWZ5IEdyaWQg
b3ZlcmxheSBkcmF3aW5nIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjdmOWVhMzczMjQyNTBkNjVlNWQ2ZjE1
OWFmNWRlYmQ1NDQxMDVlYi4uNWE5MjRhMTQ5NWNjMzY3OWI1MzRjNDNjNWVlMzJlY2MyZDQzYzk3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NiBAQAorMjAyMS0xMi0wNyAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBGZXRjaCBhbmQgcmVtb3ZlIGZpbGUgc3lzdGVt
IGRhdGEgdmlhIFdLV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjAy
OTE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIElu
dHJvZHVjZSBhIG5ldyBXZWJzaXRlRGF0YVR5cGUgdmFsdWUgRmlsZVN5c3RlbSBmb3IgRmlsZVN5
c3RlbUFjY2VzcyBkYXRhLiBOZXR3b3JrIHByb2Nlc3Mgbm93IGNhbiBmZXRjaCBhbmQgCisgICAg
ICAgIGRlbGV0ZSB0aGlzIHR5cGUgb2YgZGF0YSB3aGVuIGZldGNoaW5nIGFuZCBkZWxldGVpbmcg
d2Vic2l0ZSBkYXRhIChpZiBGaWxlU3lzdGVtIHR5cGUgaXMgaW5jbHVkZWQgaW4gdGFyZ2V0Cisg
ICAgICAgIHR5cGVzKS4KKworICAgICAgICBUbyB0cmFjayBvcmlnaW5zIHRoYXQgaGF2ZSBGaWxl
U3lzdGVtIGRhdGEsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmaWxlIG5hbWVkIG9yaWdp
biBpbiB0aGUgb3JpZ2luJ3MgCisgICAgICAgIGRpcmVjdG9yeS4gVGhpcyBmaWxlIHdpbGwgYmUg
Y3JlYXRlZCB3aGVuIE9yaWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGNyZWF0ZWQuCisKKyAgICAgICAg
VG8gZGVsZXRlIGV4aXN0aW5nIEZpbGVTeXN0ZW0gZGF0YSwgbmV0d29yayBwcm9jZXNzIGZpbmRz
IG9yaWdpbnMgdGhhdCBhcmUgcmVxdWVzdGVkIHRvIGJlIGRlbGV0ZWQgYW5kIGhhdmUgZGF0YSAK
KyAgICAgICAgb24gZGlzaywgY2xvc2VzIGFjdGl2ZSBhY2Nlc3MgaGFuZGxlcywgYW5kIGRlbGV0
ZXMgdGhlIGZpbGVzLiBUaGUgb3JpZ2luIGZpbGUgbWVudGlvbmVkIGFib3ZlIHdpbGwgYmUgZGVs
ZXRlZCBpZiAKKyAgICAgICAgdGhlcmUgaXMgbm8gb3RoZXIgZmlsZSBsZWZ0IGluIHRoZSBzYW1l
IGRpcmVjdG9yeSwgYW5kIGVtcHR5IGRpcmVjdG9yaWVzIHdpbGwgYmUgZGVsZXRlZC4KKworICAg
ICAgICBOZXcgQVBJIHRlc3RzOiBGaWxlU3lzdGVtQWNjZXNzLkZldGNoQW5kUmVtb3ZlRGF0YQor
ICAgICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtQWNjZXNzLlJlbW92ZURhdGFCeU1vZGlm
aWNhdGlvblRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgRmlsZVN5c3RlbUFjY2Vzcy5GZXRj
aERhdGFGb3JUaGlyZFBhcnR5CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hX
ZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
QW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGUuaDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGU6OmFjdGl2ZVN5
bmNBY2Nlc3NIYW5kbGUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VNYW5hZ2VyOjp+RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpjbG9zZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnJlYWRPcmlnaW5Gcm9tRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OndyaXRlT3Jp
Z2luVG9GaWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpkZWxldGVPcmlnaW5GaWxl
SWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAg
ICAgICAgKFdlYktpdDo6b3JpZ2luRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlbW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQ
b3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cGVyc2lz
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdl
Rm9yVGVzdGluZyk6IE9ubHkgcmVzZXQgcGVyc2lzdGVkIHN0YXRlIGhlcmUgYXMgb3VyIHRlc3Qg
Ym90IGNhbiBydW4gCisgICAgICAgIHRlc3RzIGluIHBhcmFsbGVsLiBJZiBvbmUgd29ya2VyIGZp
bmlzaGVzIGEgdGVzdCBhbmQgYXNrcyB0byBjbGVhciBzdG9yYWdlLCB3aGlsZSBhbm90aGVyIHdv
cmtlciBpcyBydW5uaW5nIGEgCisgICAgICAgIGZpbGVzeXN0ZW0gdGVzdDsgdGhlIHRlc3QgbWF5
IGZhaWwgYXMgZGF0YSBpcyBnb25lLiAoVGhlIHdvcmtlcnMgYXJlIHVzaW5nIHRoZSBzYW1lIG5l
dHdvcmsgcHJvY2Vzcy4pCisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERhdGFG
cm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZmV0Y2hE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRh
T25EaXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRh
TW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Om9yaWdp
blBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Pcmln
aW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQnVja2V0Ojp0b1N0b3JhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnR5cGVTdG9yYWdlUGF0aCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0OjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVG
aWxlU3lzdGVtU3RvcmFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6c2V0UGVyc2lzdGVkKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OnBlcnNpc3QpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6b3duZXJQ
cm9jZXNzKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgor
ICAgICAgICAoZGF0YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vi
c2l0ZURhdGFUeXBlKToKKyAgICAgICAgKFdlYktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxXZWJzaXRlRGF0YVR5cGVzSW5jbHVk
aW5nUHJpdmF0ZV0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjogQWRkZWQuCisKIDIwMjEtMTItMDYg
IFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2Vi
IEluc3BlY3RvcjogVW5pZnkgR3JpZCBvdmVybGF5IGRyYXdpbmcgY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcAppbmRleCA2NGJhYzZiNmI3MDAxNjEwYjUzZjJlMWQzMDkyNjdiZDVhNDBmNTM4Li5mNjkw
NDkyOGVmNTViMGFiODFlNjAwNTBiMzkzYWRjNGM3OTkxNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cApAQCAtNTE0LDYgKzUxNCw2MCBAQCBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gc2FsdDsKIH0KIAorc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNpemUgPSBGaWxlU3lzdGVtOjpm
aWxlU2l6ZShoYW5kbGUpLnZhbHVlX29yKDApOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHVuc2lnbmVkIGJ5dGVzVG9SZWFkOworICAgIGlmICgh
V1RGOjpjb252ZXJ0U2FmZWx5KHNpemUsIGJ5dGVzVG9SZWFkKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwor
ICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGhh
bmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKHRvdGFsQnl0ZXNS
ZWFkICE9IGJ5dGVzVG9SZWFkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnksIFdhbGxUaW1lIHRpbWUpCit7CisgICAgLy8gVGhpcyBmdW5j
dGlvbiBtYXkgZGVsZXRlIGRpcmVjdG9yeSBmb2xkZXIuCisgICAgaWYgKHRpbWUgPT0gLVdhbGxU
aW1lOjppbmZpbml0eSgpKSB7CisgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGRpcmVj
dG9yeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoaWxkcmVuID0gbGlz
dERpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbikg
eworICAgICAgICBhdXRvIGNoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkaXJlY3RvcnksIGNoaWxkKTsKKyAgICAgICAgYXV0byBjaGlsZFR5cGUgPSBmaWxl
VHlwZShjaGlsZFBhdGgpOworICAgICAgICBpZiAoIWNoaWxkVHlwZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIHN3aXRjaCAoKmNoaWxkVHlwZSkgeworICAgICAgICBjYXNlIEZp
bGVUeXBlOjpSZWd1bGFyOiB7CisgICAgICAgICAgICBpZiAoYXV0byBtb2RpZmljYXRpb25UaW1l
ID0gRmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY2hpbGRQYXRoKTsgbW9kaWZpY2F0
aW9uVGltZSAmJiAqbW9kaWZpY2F0aW9uVGltZSA+PSB0aW1lKQorICAgICAgICAgICAgICAgIGRl
bGV0ZUZpbGUoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRmlsZVR5cGU6OkRpcmVjdG9yeToKKyAgICAgICAgICAgIGRlbGV0ZUFsbEZpbGVz
TW9kaWZpZWRTaW5jZShjaGlsZFBhdGgsIHRpbWUpOworICAgICAgICAgICAgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY2hpbGRQYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZp
bGVUeXBlOjpTeW1ib2xpY0xpbms6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7Cit9
CisKICNpZiBIQVZFKFNURF9GSUxFU1lTVEVNKSB8fCBIQVZFKFNURF9FWFBFUklNRU5UQUxfRklM
RVNZU1RFTSkKIAogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmgKaW5kZXggOTk2YmMwYjZmN2RhOGFkZDBhNmU1YjkxN2FjODZjZWM1YWY3
MDlhNC4uZmQ4NTNhNDlhYWM4ZGMwMWYzMTU3MDRjZTQ5ZDczNDY1YWUwNTY1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaApAQCAtMTA4LDYgKzEwOCw3IEBAIGVudW0gY2xhc3MgTWFwcGVkRmlsZU1vZGUgewog
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKK1dURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25zdCBTdHJpbmcm
LCBXYWxsVGltZSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1vdmVGaWxlKGNvbnN0
IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKTsKIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmKTsgLy8g
Rm9sbG93cyBzeW1saW5rcy4KQEAgLTE0Niw2ICsxNDcsNyBAQCBpbmxpbmUgYm9vbCBpc0hhbmRs
ZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUg
IT0gaQogCiB1c2luZyBTYWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIFdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYg
cGF0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IHJlYWRFbnRpcmVGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIFByZWZpeCBpcyB3aGF0
IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGgu
CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCA9IHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3Mv
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggMzU5YzI0
Njc4MGY5NjUyNDkyYzUwZTFlOGY1NGY5MDRjYTc4OTY5ZC4uNzc2ZTEzY2E1ZWI2NDc5Nzk0M2Vm
M2JjNDg1M2EzMWRkZWRmYjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZThlYWQ2MDI3M2I3NTE4OTQwMTY2MmQ0ZGZhMGIzMTczYjIyYzhiNC4uYjFkYmJiNTU0OWY3YTA1
MWJjY2IwZGJlMmYyMzk5YWFiZjFhYjkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0zMTAsNiAr
MzEwLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9SZW1vdGVXZWJMb2NrUmVnaXN0cnkKICAgICBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeQorICAgIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uCiAgICAgV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KIAogICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDg1OTJkOTlkMmUzNmFmYzllZjg1ZGNjMWMzZjU3
NGVjMTk1ZWVmNTUuLjViYTY0YjQ0YmUxZTU3NzUwODhmYzZlOTA1NTk5YzdjZDU3ODNjZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIy
MSw2ICsyMjEsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaQogJChQUk9KRUNUX0RJUikvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9SZW1vdGVXZWJMb2NrUmVnaXN0cnkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA1MjAzNWFiMGEyNDUzYjYzZjgyOTI3NmU5ODQwZWRk
MTM4MjYwZGI1Li4yMmRhN2I3NzcwODUwNzUwNmY1MThmZjQyOGYwNzY1NjFiZGVmYWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTEs
NSArMSw0IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmls
ZWxpc3RzIHNjcmlwdC4KLTw8PDw8PDwgSEVBRAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdC9BdWRpb0NhcHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9BdWRpb0Nh
cHR1cmVTYW1wbGVNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTQ5NCw2ICs0OTMsOSBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJNZQogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
clByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3Nh
Z2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2Vz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRnVsbFNj
cmVlbk1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApAQCAtNjE5LDQgKzYyMSw1IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5OZXR3
b3JrUHJvY2Vzcy5zYgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dC9jb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuUHJvY2Vzcy5zYgogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldl
YktpdC5wbHVnaW4tY29tbW9uLnNiCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYgorPDw8PDw8PCBIRUFECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggMTkzMzg4NDk2MWI0YmMzMDRmMDg5YjBiNTRlMTQ4OTFiNWMzNDhmNC4uNjg0ZmFjZDVk
NzZmYzI0YTI3YjA3YWY0NzBjYzNmOWEzY2QxYzA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjIyLDYgKzIyMiw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5IFwKIAlXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSBcCiAJV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyIFwKKwlXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBcCiAJ
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24g
XAogCVdlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXIgXAogCVdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CmluZGV4IGRlNzY1ZGU0NTA3MWY0MWYzZmM0ZDQ2OTcwNTM4MTZlMTg5OWViZmEuLjcwYjVhZmRh
NTI2ZTk5MDliOTYyZDcxMjEzZDg1YjYwYjUzNzE4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC03NCw2ICs3NCw3IEBAIGNvbnN0IE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Om1vbml0b3JlZERhdGFUCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBXZWJz
aXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLAogI2VuZGlmCisgICAgICAg
IFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSwKICAgICB9KSk7CiAKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCA5NzhjZjU2YWNmZGRiZjRhZmMyNzhjNTJjNDM3YTM0YzhkNTc1
NTE4Li40NzJjOGI1N2MzMmMzNWY4OWJlMGIxNzgxZmJkZWM4Y2YzZGFjOGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTU1NSw2
ICsxNTU1LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgICAgIH0KICAgICB9CiAj
ZW5kaWYKKworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChz
ZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkgeworICAgICAg
ICBpdGVyYXRvci0+dmFsdWUtPmZldGNoRGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yXShhdXRvIGVudHJpZXMpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kVmVjdG9yKFdURk1vdmUoZW50
cmllcykpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTYyOSw2ICsx
NjM1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICAgICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAgICAgfQogI2Vu
ZGlmCisKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vz
c2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdlTWFuYWdlcnMuZW5kKCkpCisgICAgICAgIGl0
ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2Uod2Vic2l0ZURhdGFUeXBlcywg
bW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogfQogCiBzdGF0aWMgdm9p
ZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0
IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzM2LDYgKzE3NDUsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpbwogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGF1dG8gaXRlcmF0b3Ig
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFn
ZU1hbmFnZXJzLmVuZCgpKQorICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRlbGV0ZURhdGEod2Vi
c2l0ZURhdGFUeXBlcywgb3JpZ2luRGF0YXMsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKwog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9t
YWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3I7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0
YSA6IG9yaWdpbkRhdGFzKQpAQCAtMTk1OSw2ICsxOTcxLDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFM
OjpTZXNzCiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9z
dG9yYWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5h
Z2Vycy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmRlbGV0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnMod2Vic2l0ZURhdGFUeXBlcywgZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29v
a2llV2Vic2l0ZURhdGFGb3IsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZGVsZXRlZERvbWFp
bnMpIG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvIGRvbWFpbiA6IGRlbGV0ZWREb21h
aW5zKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChX
VEZNb3ZlKGRvbWFpbikpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBhdXRvIGRhdGFUeXBl
c0ZvclVJUHJvY2VzcyA9IFdlYnNpdGVEYXRhOjpmaWx0ZXIod2Vic2l0ZURhdGFUeXBlcywgV2Vi
c2l0ZURhdGFQcm9jZXNzVHlwZTo6VUkpOwogICAgIGlmICghZGF0YVR5cGVzRm9yVUlQcm9jZXNz
LmlzRW1wdHkoKSAmJiAhZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3Iu
aXNFbXB0eSgpKSB7CiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbY2FsbGJhY2tBZ2dy
ZWdhdG9yXSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpIHsKQEAg
LTIwNzUsNiArMjA5NCwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwogICAgIH0KKworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9y
YWdlTWFuYWdlcnMuZmluZChzZXNzaW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vy
cy5lbmQoKSkgeworICAgICAgICBpdGVyYXRvci0+dmFsdWUtPmZldGNoRGF0YSh3ZWJzaXRlRGF0
YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJpZXMpIG11dGFibGUgeworICAg
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5k
VmVjdG9yKFdURk1vdmUoZW50cmllcykpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlLmgKaW5kZXggZmI5Mjk4MTQxYjBkYmMzODFmYThiM2IzODE3ZTY4Y2EwMTg5
NzlkYS4uNDczMzhlZmU1MzgyMmE3NmE1NDg0ZjI5YzkzNTc2NzhmNDAxODg1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IEFjY2Vzc0hhbmRsZUluZm8gPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nl
c3NIYW5kbGVJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEZpbGVIYW5kbGU+OwogICAgIEV4cGVjdGVk
PEFjY2Vzc0hhbmRsZUluZm8sIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNyZWF0ZVN5bmNBY2Nl
c3NIYW5kbGUoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IGNs
b3NlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmllcik7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vzc0hhbmRsZUlkZW50aWZp
ZXI+IGFjdGl2ZVN5bmNBY2Nlc3NIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVN5bmNB
Y2Nlc3NIYW5kbGU7IH0KIAogcHJpdmF0ZToKICAgICBFeHBlY3RlZDxXZWJDb3JlOjpGaWxlU3lz
dGVtSGFuZGxlSWRlbnRpZmllciwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVxdWVzdENyZWF0
ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBUeXBlLCBTdHJpbmcmJiBuYW1lLCBi
b29sIGNyZWF0ZUlmTmVjZXNzYXJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAK
aW5kZXggMzhhYTI2NTVjMzlkZGMyMzdiYTVhMzgwYTVkNTQ5MTI0MmMzN2Y1MS4uMjljZmIwYzZi
MzczYTI1ZmYwMWNjZTg2MzNjOTVlNTZiMWFjYjdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9y
YWdlRXJyb3IuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCIKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQyLDggKzQzLDcgQEAgRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyOjp+RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIAotICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogbV9oYW5kbGVzLmtl
eXMoKSkKLSAgICAgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVySGFuZGxlKGlkZW50aWZpZXIpOwor
ICAgIGNsb3NlKCk7CiB9CiAKIEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVu
dGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZUhhbmRsZShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlOjpUeXBlIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5h
bWUsIGJvb2wgY3JlYXRlSWZOZWNlc3NhcnkpCkBAIC0xNDksNCArMTQ5LDI0IEBAIGJvb2wgRmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOjpyZWxlYXNlTG9ja0ZvckZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBXZWJDb3JlOjpGCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlcjo6Y2xvc2UoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbklELCBpZGVudGlmaWVyc10gOiBtX2hhbmRs
ZXNCeUNvbm5lY3Rpb24pIHsKKyAgICAgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBpZGVudGlm
aWVycykgeworICAgICAgICAgICAgYXV0byB0YWtlbkhhbmRsZSA9IG1faGFuZGxlcy50YWtlKGlk
ZW50aWZpZXIpOworICAgICAgICAgICAgbV9yZWdpc3RyeS51bnJlZ2lzdGVySGFuZGxlKGlkZW50
aWZpZXIpOworCisgICAgICAgICAgICAvLyBTZW5kIG1lc3NhZ2UgdG8gd2ViIHByb2Nlc3MgdG8g
aW52YWxpZGF0ZSBhY3RpdmUgc3luYyBhY2Nlc3MgaGFuZGxlLgorICAgICAgICAgICAgaWYgKGF1
dG8gYWNjZXNzSGFuZGxlSWRlbnRpZmllciA9IHRha2VuSGFuZGxlLT5hY3RpdmVTeW5jQWNjZXNz
SGFuZGxlKCkpCisgICAgICAgICAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rp
b25JRCwgTWVzc2FnZXM6OldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6SW52YWxpZGF0
ZUFjY2Vzc0hhbmRsZSgqYWNjZXNzSGFuZGxlSWRlbnRpZmllciksIDApOworICAgICAgICB9Cisg
ICAgfQorCisgICAgQVNTRVJUKG1faGFuZGxlcy5pc0VtcHR5KCkpOworICAgIG1faGFuZGxlc0J5
Q29ubmVjdGlvbi5jbGVhcigpOworICAgIG1fbG9ja01hcC5jbGVhcigpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAppbmRleCBiODU3Njc2
OGIzNTVhY2IzYWEwYzM3MDM4Y2M1MWVjYzkzMmIzOTZjLi41MzU5ODk1ODEwZDg3NDg1NjA5YTQw
Y2ZhNTM3MWNjNjllZWIwNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oCkBAIC00
OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICBib29sIHJlbGVhc2VMb2NrRm9yRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyKTsKIAogcHJp
dmF0ZToKKyAgICB2b2lkIGNsb3NlKCk7CisKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIG1fcmVnaXN0cnk7CiAgICAgSGFzaE1hcDxJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBIYXNoU2V0PFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyPj4gbV9oYW5kbGVzQnlDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcAppbmRleCBjZmFjMDFhMzhmMjAyY2JiZjQ4YWZkZDg1NjUyMjkyNjJmMWQ5MmI0Li5lZWI2
MDQ1ZmE4MzJhOTQ4MzNhZWY5NWRlMzM1MmY3NWNlM2Y0NGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtMzEsMTEgKzMxLDY5IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRl
IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgorI2luY2x1ZGUgPHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jh
c2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6Q2xpZW50T3JpZ2luPiByZWFkT3JpZ2luRnJvbUZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmICghRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBhdXRvIG9yaWdpbkZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGNsb3Nl
RmlsZSA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KG9yaWdpbkZpbGVIYW5kbGUpOworICAgIH0pOworCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKG9yaWdpbkZpbGVIYW5kbGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgYXV0byBvcmlnaW5Db250ZW50ID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUo
b3JpZ2luRmlsZUhhbmRsZSk7CisgICAgaWYgKCFvcmlnaW5Db250ZW50KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVy
KHsgb3JpZ2luQ29udGVudC0+ZGF0YSgpLCBvcmlnaW5Db250ZW50LT5zaXplKCkgfSk7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG9yaWdpbjsKKyAgICBkZWNvZGVy
ID4+IG9yaWdpbjsKKyAgICByZXR1cm4gb3JpZ2luOworfQorCitzdGF0aWMgdm9pZCB3cml0ZU9y
aWdpblRvRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoZmlsZVBhdGgpKTsKKyAgICBhdXRv
IG9yaWdpbkZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkV3JpdGUpOworICAgIGF1dG8gY2xvc2VGaWxlID0gbWFr
ZVNjb3BlRXhpdChbJl0geworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUob3JpZ2luRmls
ZUhhbmRsZSk7CisgICAgfSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
b3JpZ2luRmlsZUhhbmRsZSkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJ3cml0ZU9yaWdpblRvRmls
ZUlmTmVjZXNzYXJ5OiBGYWlsZWQgdG8gb3BlbiBvcmlnaW4gZmlsZSIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOworICAg
IGVuY29kZXIgPDwgb3JpZ2luOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG9yaWdpbkZp
bGVIYW5kbGUsIGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKwor
c3RhdGljIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCit7CisgICAgYXV0byBwYXJlbnRQYXRoID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChm
aWxlUGF0aCk7CisgICAgYXV0byBjaGlsZHJlbiA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
cGFyZW50UGF0aCk7CisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA9PSAxKQorICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKK30KKwogUmVmPE5ldHdvcmtTdG9yYWdlTWFu
YWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgcGF0aCkpOwpAQCAtMTE3LDcgKzE3NSw3IEBA
IHN0YXRpYyBTdHJpbmcgZW5jb2RlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaWxlU3lzdGVtOjpT
YWx0IHNhbHQpCiAgICAgcmV0dXJuIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGhhc2guZGF0YSgp
LCBoYXNoLnNpemUoKSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgb3JpZ2luUGF0aChjb25zdCBTdHJp
bmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgRmlsZVN5
c3RlbTo6U2FsdCBzYWx0KQorc3RhdGljIFN0cmluZyBvcmlnaW5EaXJlY3RvcnlQYXRoKGNvbnN0
IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBG
aWxlU3lzdGVtOjpTYWx0IHNhbHQpCiB7CiAgICAgaWYgKHJvb3RQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHJvb3RQYXRoOwpAQCAtMTI3LDE1ICsxODUsMzAgQEAgc3RhdGljIFN0cmlu
ZyBvcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3IKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50cyhyb290UGF0aCwgeyBlbmNvZGVkVG9wT3JpZ2luLCBlbmNvZGVkT3BlbmluZ09yaWdpbiB9
KTsKIH0KIAorc3RhdGljIFN0cmluZyBvcmlnaW5GaWxlUGF0aChjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRpcmVjdG9yeSwgIm9yaWdpbiJfcyk7Cit9CisKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICByZXR1cm4gKm1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZW5zdXJlKG9y
aWdpbiwgWyZdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFn
ZXI+KG9yaWdpblBhdGgobV9wYXRoLCBvcmlnaW4sIG1fc2FsdCkpOworICAgICAgICBhdXRvIG9y
aWdpbkRpcmVjdG9yeSA9IG9yaWdpbkRpcmVjdG9yeVBhdGgobV9wYXRoLCBvcmlnaW4sIG1fc2Fs
dCk7CisgICAgICAgIHdyaXRlT3JpZ2luVG9GaWxlSWZOZWNlc3Nhcnkob3JpZ2luRmlsZVBhdGgo
b3JpZ2luRGlyZWN0b3J5KSwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3Jp
Z2luU3RvcmFnZU1hbmFnZXI+KFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogfQogCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlT3Jp
Z2luU3RvcmFnZU1hbmFnZXJJZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luKQoreworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2Vycy5maW5kKG9yaWdpbik7IGl0ZXJhdG9yICE9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFu
YWdlcnMuZW5kKCkpIHsKKyAgICAgICAgaWYgKCFpdGVyYXRvci0+dmFsdWUtPmlzQWN0aXZlKCkp
CisgICAgICAgICAgICBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnJlbW92ZShpdGVyYXRv
cik7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cGVyc2lzdGVkKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtMTQ3LDcgKzIyMCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpw
ZXJzaXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0CiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKG9yaWdpbikucGVyc2lzdCgpOworICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXRQZXJzaXN0ZWQodHJ1ZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
CiB9CiAKQEAgLTE1Niw4ICsyMjksMTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNs
ZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGMKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBtX2xvY2FsT3JpZ2lu
U3RvcmFnZU1hbmFnZXJzLmNsZWFyKCk7Ci0gICAgICAgIG1fc2Vzc2lvbk9yaWdpblN0b3JhZ2VN
YW5hZ2Vycy5jbGVhcigpOworICAgICAgICAvLyBSZXNldCBwZXJzaXN0ZWQgdmFsdWUuCisgICAg
ICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFs
dWVzKCkpCisgICAgICAgICAgICBtYW5hZ2VyLT5zZXRQZXJzaXN0ZWQoZmFsc2UpOworCisgICAg
ICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fc2Vzc2lvbk9yaWdpblN0b3JhZ2VNYW5hZ2Vycy52
YWx1ZXMoKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnNldFBlcnNpc3RlZChmYWxzZSk7CiAKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0z
MDYsNSArMzgzLDE2NCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0SGFuZGxlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6RmlsZQogICAgIGNvbXBsZXRpb25I
YW5kbGVyKGhhbmRsZS0+Z2V0SGFuZGxlKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgV1RGTW92ZShu
YW1lKSkpOwogfQogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vi
c2l0ZURhdGFUeXBlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVR5cGUpCit7CisgICAgaWYgKHN0b3Jh
Z2VUeXBlID09ICJGaWxlU3lzdGVtIikKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6
RmlsZVN5c3RlbTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiBhcHBseSkKK3sKKyAgICBmb3IgKGF1dG8mIHRvcE9yaWdpbiA6
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9wYXRoKSkgeworICAgICAgICBhdXRvIHRvcE9y
aWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Bh
dGgsIHRvcE9yaWdpbik7CisgICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbnMgPSBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgIGlmIChvcGVuaW5n
T3JpZ2lucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoYXV0byYgb3BlbmluZ09yaWdpbiA6IG9wZW5pbmdPcmln
aW5zKSB7CisgICAgICAgICAgICBhdXRvIG9wZW5pbmdPcmlnaW5EaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodG9wT3JpZ2luRGlyZWN0b3J5LCBvcGVuaW5n
T3JpZ2luKTsKKyAgICAgICAgICAgIGFwcGx5KG9wZW5pbmdPcmlnaW5EaXJlY3RvcnkpOworICAg
ICAgICB9CisgICAgfQorfQorCitWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmZldGNoRGF0YUZyb21EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHRhcmdldFR5cGVzKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
SGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+PiBvcmlnaW5UeXBlczsKKyAgICBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KFsmXShhdXRv
IGRpcmVjdG9yeSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gb3JpZ2luID0gcmVhZE9yaWdpbkZy
b21GaWxlKG9yaWdpbkZpbGVQYXRoKGRpcmVjdG9yeSkpOworICAgICAgICBpZiAoIW9yaWdpbikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8mIHN0b3JhZ2VUeXBlIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnkpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byB0eXBlID0gdG9XZWJzaXRlRGF0YVR5cGUoc3RvcmFnZVR5cGUpOyB0eXBlICYmIHRhcmdl
dFR5cGVzLmNvbnRhaW5zKCp0eXBlKSkgeworICAgICAgICAgICAgICAgIC8vIFJldHVybiBib3Ro
IHRvcCBvcmlnaW4gYW5kIG9wZW5pbmcgb3JpZ2luIGZvciB0aGlzIGRhdGEuCisgICAgICAgICAg
ICAgICAgb3JpZ2luVHlwZXMuYWRkKG9yaWdpbi0+Y2xpZW50T3JpZ2luLCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoKnR5cGUpOworICAgICAgICAg
ICAgICAgIG9yaWdpblR5cGVzLmFkZChvcmlnaW4tPnRvcE9yaWdpbiwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4geyB9KS5pdGVyYXRvci0+dmFsdWUuYWRkKCp0eXBlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4g
ZW50cmllczsKKyAgICBmb3IgKGF1dG8gW29yaWdpbiwgdHlwZXNdIDogb3JpZ2luVHlwZXMpIHsK
KyAgICAgICAgZm9yIChhdXRvIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIGVudHJpZXMuYXBw
ZW5kKHsgV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCB0eXBlLCAwIH0gfSk7CisgICAgfQor
CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpm
ZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIW1fY2xv
c2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgdHlwZXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gZW50cmllcyA9IGZldGNoRGF0YUZy
b21EaXNrKHR5cGVzKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZW50cmllcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KGVudHJpZXMpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoZW50cmllcykpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworVmVjdG9yPFdlYkNv
cmU6OkNsaWVudE9yaWdpbj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhT25EaXNr
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNl
VGltZSwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKT4m
IGZpbHRlcikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIFZlY3Rv
cjxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IGRlbGV0ZWRPcmlnaW5zOworICAgIGZvckVhY2hPcmln
aW5EaXJlY3RvcnkoWyZdKGF1dG8gZGlyZWN0b3J5KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBm
aWxlUGF0aCA9IG9yaWdpbkZpbGVQYXRoKGRpcmVjdG9yeSk7CisgICAgICAgIGF1dG8gb3JpZ2lu
ID0gcmVhZE9yaWdpbkZyb21GaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgaWYgKCFvcmlnaW4pIHsK
KyAgICAgICAgICAgIC8vIElmIG9yaWdpbiBjYW5ub3QgYmUgcmV0cmlldmVkLCBidXQgd2UgYXJl
IGFza2VkIHRvIHJlbW92ZSBkYXRhIGZvciBhbGwgb3JpZ2lucywgcmVtb3ZlIGl0LgorICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIk5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlRGF0YU9uRGlzayBmYWlsZWQgdG8gcmVhZCBvcmlnaW4gZnJvbSAnJXMnIiwgZmlsZVBh
dGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBpZiAoZmlsdGVyKFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiB7IH0pKSB7CisgICAgICAgICAgICAgICAgYXV0byB0ZW1wT3JpZ2luU3RvcmFnZU1h
bmFnZXIgPSBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihTdHJpbmcgeyBkaXJlY3Rv
cnkgfSk7CisgICAgICAgICAgICAgICAgdGVtcE9yaWdpblN0b3JhZ2VNYW5hZ2VyLT5kZWxldGVE
YXRhKHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSk7CisgICAgICAgICAgICAgICAgZGVsZXRlT3Jp
Z2luRmlsZUlmTmVjZXNzYXJ5KGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmaWx0ZXIoKm9yaWdpbikp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVsZXRlZE9yaWdpbnMuYXBwZW5kKCpv
cmlnaW4pOworICAgICAgICBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKCpvcmlnaW4pLmRlbGV0
ZURhdGEodHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lKTsKKyAgICAgICAgcmVtb3ZlT3JpZ2luU3Rv
cmFnZU1hbmFnZXJJZlBvc3NpYmxlKCpvcmlnaW4pOworICAgICAgICBkZWxldGVPcmlnaW5GaWxl
SWZOZWNlc3NhcnkoZmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeShkaXJlY3RvcnkpOworICAgIH0pOworCisgICAgcmV0dXJuIGRlbGV0ZWRPcmlnaW5z
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCgh
bV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgb3JpZ2lucyA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW5z
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
blNldDsKKyAgICAgICAgb3JpZ2luU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lucy5z
aXplKCkpOworICAgICAgICBmb3IgKGF1dG8gb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgICAg
IG9yaWdpblNldC5hZGQoV1RGTW92ZShvcmlnaW4pKTsKKworICAgICAgICBkZWxldGVEYXRhT25E
aXNrKHR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFsmb3JpZ2luU2V0XShhdXRvIG9yaWdp
bikgeworICAgICAgICAgICAgcmV0dXJuIG9yaWdpblNldC5jb250YWlucyhvcmlnaW4udG9wT3Jp
Z2luKSB8fCBvcmlnaW5TZXQuY29udGFpbnMob3JpZ2luLmNsaWVudE9yaWdpbik7CisgICAgICAg
IH0pOworCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmRlbGV0ZURhdGFNb2RpZmllZFNpbmNlKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5
cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgZGVsZXRlRGF0YU9uRGlzayh0eXBlcywgbW9kaWZpZWRTaW5jZVRpbWUsIFtd
KGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
IH0pOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgIEFTU0VSVCghbV9jbG9zZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgZG9tYWlucyA9IGNyb3NzVGhyZWFk
Q29weShkb21haW5zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBkZWxldGVkT3JpZ2lucyA9IGRlbGV0ZURh
dGFPbkRpc2sodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgWyZkb21haW5zXShhdXRvJiBv
cmlnaW4pIHsKKyAgICAgICAgICAgIGF1dG8gZG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbi5jbGllbnRPcmlnaW4uaG9zdCk7
CisgICAgICAgICAgICByZXR1cm4gZG9tYWlucy5jb250YWlucyhkb21haW4pOworICAgICAgICB9
KTsKKworICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWxldGVk
RG9tYWluczsKKyAgICAgICAgZm9yIChhdXRvIG9yaWdpbiA6IGRlbGV0ZWRPcmlnaW5zKSB7Cisg
ICAgICAgICAgICBhdXRvIGRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW4uY2xpZW50T3JpZ2luLmhvc3QpOworICAgICAgICAg
ICAgZGVsZXRlZERvbWFpbnMuYWRkKGRvbWFpbik7CisgICAgICAgIH0KKworICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21h
aW5zID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZGVsZXRlZERvbWFpbnMpKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZG9tYWlucykpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaAppbmRleCA1YmM1NmI3YzY0NmM2YjFmZDdhZDY0ZGQ0ODdlZGY1ZGVhNjM5
MzRhLi4yYWRkZjJiNWUyMGFkMzZkMjhlNDQ1OTdlYTQxM2ZmZTg5NjFhNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5oCkBAIC0yOCwxMCArMjgsMTIgQEAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3JhZ2VFcnJvci5oIgogI2luY2x1ZGUgIk9yaWdp
blN0b3JhZ2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFu
ZGxlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGU7
CkBAIC01NSwxMyArNTcsMjIgQEAgcHVibGljOgogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBjbG9zZSgpOwogICAg
IHZvaWQgY2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+JiYpPiYmKTsKKyAgICB2
b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGRlbGV0ZURhdGFNb2RpZmllZFNpbmNlKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBXYWxsVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IGRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsK
IAogcHJpdmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcGF0aCk7CiAgICAgfk5ldHdvcmtTdG9yYWdlTWFuYWdlcigpOwogICAgIE9y
aWdpblN0b3JhZ2VNYW5hZ2VyJiBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYpOworICAgIHZvaWQgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJ
ZlBvc3NpYmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIEZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlUmVnaXN0cnkmIGZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkoKTsK
IAorICAgIHZvaWQgZm9yRWFjaE9yaWdpbkRpcmVjdG9yeShjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYpOworICAgIFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IGZldGNoRGF0
YUZyb21EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKKyAgICBWZWN0b3I8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luPiBkZWxldGVEYXRhT25EaXNrKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBXYWxsVGltZSwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKT4mKTsKKwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIChpbXBsZW1lbnRlZCBi
eSBnZW5lcmF0ZWQgY29kZSkKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA0
ZjA2ZjQ1MjQ2NTY0NmQyMDExYmM3ZjUzYmJkYjI4MTE1OTNhYTQzLi44Y2Q2NTViZTI1MDVhNWIz
MzQ2YWEzMzU1ZGY4YjI2ODFmMTE1ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTUxLDIwICs1MSw1OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdl
TWFuYWdlci0+Y29ubmVjdGlvbkNsb3NlZChjb25uZWN0aW9uKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgdHlwZVN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIpIGNvbnN0
CisgICAgZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBGaWxlU3lz
dGVtLAorICAgIH07CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RvcmFnZUlkZW50aWZpZXIoU3Rv
cmFnZVR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Jvb3RQYXRoLmlzRW1wdHko
KSA/IGVtcHR5U3RyaW5nKCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9yb290UGF0aCwgc3RvcmFnZUlkZW50aWZpZXIpOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICAgICAgY2FzZSBTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgICAgIHJldHVy
biAiRmlsZVN5c3RlbSJfczsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
IiJfczsKKyAgICB9CisKKyAgICBTdHJpbmcgdHlwZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlIHR5
cGUpIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIHN0b3JhZ2VJZGVudGlmaWVyID0gdG9TdG9y
YWdlSWRlbnRpZmllcih0eXBlKTsKKyAgICAgICAgaWYgKG1fcm9vdFBhdGguaXNFbXB0eSgpIHx8
IHN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworCisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9yb290UGF0aCwgc3RvcmFnZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIEZpbGVT
eXN0ZW1TdG9yYWdlTWFuYWdlciYgZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0ZW1T
dG9yYWdlSGFuZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQogICAgIHsKICAgICAgICAgaWYgKCFtX2Zp
bGVTeXN0ZW1TdG9yYWdlTWFuYWdlcikKLSAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+KHR5cGVTdG9yYWdl
UGF0aCgiRmlsZVN5c3RlbSIpLCByZWdpc3RyeSk7CisgICAgICAgICAgICBtX2ZpbGVTeXN0ZW1T
dG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyPih0eXBl
U3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW0pLCByZWdpc3RyeSk7CiAKICAgICAg
ICAgcmV0dXJuICptX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjsKICAgICB9CiAKKyAgICBib29s
IGlzQWN0aXZlKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1fZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyOworICAgIH0KKworICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUpCisgICAgeworICAgICAg
ICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtKSkKKyAgICAg
ICAgICAgIGRlbGV0ZUZpbGVTeXN0ZW1TdG9yYWdlRGF0YShtb2RpZmllZFNpbmNlVGltZSk7Cisg
ICAgfQorCiBwcml2YXRlOgorICAgIHZvaWQgZGVsZXRlRmlsZVN5c3RlbVN0b3JhZ2VEYXRhKFdh
bGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lKQorICAgIHsKKyAgICAgICAgbV9maWxlU3lzdGVtU3Rv
cmFnZU1hbmFnZXIgPSBudWxscHRyOworCisgICAgICAgIGF1dG8gZmlsZVN5c3RlbVN0b3JhZ2VQ
YXRoID0gdHlwZVN0b3JhZ2VQYXRoKFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGZpbGVTeXN0ZW1TdG9yYWdl
UGF0aCwgbW9kaWZpZWRTaW5jZVRpbWUpOworICAgIH0KKwogICAgIFN0cmluZyBtX3Jvb3RQYXRo
OwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgU3RvcmFnZUJ1Y2tldE1vZGUgbV9tb2Rl
IHsgU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQgfTsKQEAgLTc0LDYgKzExMyw3IEBAIHBy
aXZhdGU6CiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIoU3RyaW5n
JiYgcGF0aCkKICAgICA6IG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogeworICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogfQogCiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6fk9yaWdpblN0b3Jh
Z2VNYW5hZ2VyKCkgPSBkZWZhdWx0OwpAQCAtOTIsMTUgKzEzMiwyOCBAQCBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCYgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlZmF1bHRCdWNr
ZXQoKQogICAgIHJldHVybiAqbV9kZWZhdWx0QnVja2V0OwogfQogCi12b2lkIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpwZXJzaXN0KCkKK0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlciYgT3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcihGaWxlU3lzdGVtU3RvcmFnZUhh
bmRsZVJlZ2lzdHJ5JiByZWdpc3RyeSkKIHsKLSAgICBtX3BlcnNpc3RlZCA9IHRydWU7Ci0gICAg
ZGVmYXVsdEJ1Y2tldCgpLnNldE1vZGUoU3RvcmFnZUJ1Y2tldE1vZGU6OlBlcnNpc3RlbnQpOwor
ICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKHJlZ2lz
dHJ5KTsKIH0KIAotRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdl
cjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0
cnkmIHJlZ2lzdHJ5KQorYm9vbCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUoKQogewot
ICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKHJlZ2lz
dHJ5KTsKKyAgICByZXR1cm4gZGVmYXVsdEJ1Y2tldCgpLmlzQWN0aXZlKCk7Cit9CisKK3ZvaWQg
T3JpZ2luU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgZGVmYXVsdEJ1Y2tldCgpLmRlbGV0ZURhdGEodHlwZXMsIG1vZGlm
aWVkU2luY2UpOworfQorCit2b2lkIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpzZXRQZXJzaXN0ZWQo
Ym9vbCB2YWx1ZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1f
cGVyc2lzdGVkID0gdmFsdWU7CisgICAgZGVmYXVsdEJ1Y2tldCgpLnNldE1vZGUodmFsdWUgPyBT
dG9yYWdlQnVja2V0TW9kZTo6UGVyc2lzdGVudCA6IFN0b3JhZ2VCdWNrZXRNb2RlOjpCZXN0RWZm
b3J0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCmlu
ZGV4IGE0YzExYWQ2NWE1YzE5NzAzYTdjMGU5Mjk0YmMyZmVhYWEyZmZlMmUuLjdhZGZhNWIwM2I2
YmE2ZTNmODY5ODBiMTJkMmY4YTQ0ZDllNGU2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCkBA
IC0yOCwxMCArMjgsMTUgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDbGllbnRP
cmlnaW47Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFn
ZUhhbmRsZVJlZ2lzdHJ5OwogY2xhc3MgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOworZW51bSBj
bGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKIAogY2xhc3MgT3JpZ2luU3RvcmFnZU1h
bmFnZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDEsMTQgKzQ2LDE5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEKTsKICAgICBib29sIHBlcnNpc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVk
OyB9Ci0gICAgdm9pZCBwZXJzaXN0KCk7CisgICAgdm9pZCBzZXRQZXJzaXN0ZWQoYm9vbCB2YWx1
ZSk7CiAgICAgRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYpOworICAgIGJvb2wgaXNBY3RpdmUo
KTsKKyAgICB2b2lkIGRlbGV0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxU
aW1lKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0b3JhZ2VCdWNrZXRNb2RlIDogYm9v
bDsKICAgICBjbGFzcyBTdG9yYWdlQnVja2V0OwogICAgIFN0b3JhZ2VCdWNrZXQmIGRlZmF1bHRC
dWNrZXQoKTsKIAorICAgIHZvaWQgY3JlYXRlT3JpZ2luRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVjZXNz
YXJ5KCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4gbV9kZWZhdWx0QnVj
a2V0OwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX3BlcnNpc3RlZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAK
aW5kZXggZjM3MjkwMTM4YjRmYWZmMzIzNTNiMmFjZGFkZTgzNDAwZGE5Y2M4YS4uZjliMmZlMDQw
OWRjNDMwYjFkM2QzYWViMDBlNzZiMDBiM2YwNTZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApAQCAtMTI5LDYgKzEyOSw4IEBAIFdl
YnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmVyUHJvY2VzcyhXZWJzaXRlRGF0
YVR5cGUgZGF0YVR5cGUpCiAgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2Vy
dmljZXM6CiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOwog
I2VuZGlmCisgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW06CisgICAgICAgIHJl
dHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOwogICAgIH0KIAogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCmluZGV4IDdhOWU1MDBmZTFiMDllMzg5NWRkNzQz
ZTE2NWM5ODkxOGJlN2E4ZGIuLmU0NTlhMDkwMzhhNDhhMTk4NmQ2ZDMzOTY2NDMzMjgzMzc1YTQ1
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhVHlwZS5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDog
dWludDMyX3QgewogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAg
QWx0ZXJuYXRpdmVTZXJ2aWNlcyA9IDEgPDwgMTgsCiAjZW5kaWYKKyAgICBGaWxlU3lzdGVtID0g
MSA8PCAxOSwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtNzksMTAgKzgwLDExIEBA
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHsK
ICNlbmRpZgogICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsCiAgICAg
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0LAotICAgICAgICBX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzCisgICAgICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMsCiAjaWYg
SEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICAgICAgLCBXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcworICAgICAgICBXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcywKICNlbmRpZgorICAgICAgICBXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbQogICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1t
CmluZGV4IGM4MjYxNmY3OTBjNmZjNjkwYTZjYmQ2OTdhMGU4ZWNkYTUyMjdmYjEuLmZhMTExM2U0
N2MyYTQ0NDE0YmQyYWRkMTkyZDAyZTc1MDdmMzI1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCkBAIC01
MSw2ICs1MSw3IEBAIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzCiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgPSBAIl9XS1dlYnNpdGVEYXRhVHlw
ZUFkQ2xpY2tBdHRyaWJ1dGlvbnMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVByaXZhdGVD
bGlja01lYXN1cmVtZW50cyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFs
dGVybmF0aXZlU2VydmljZXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2Vydmlj
ZXMiOworTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtID0gQCJf
V0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtIjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIE5TU3Ry
aW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vic2l0ZURh
dGFUeXBlUGx1Z0luRGF0YSI7CkBAIC0xMTAsNiArMTExLDggQEAgc3RhdGljIE5TU3RyaW5nICpk
YXRhVHlwZXNUb1N0cmluZyhOU1NldCAqZGF0YVR5cGVzKQogICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OkAiUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudHMiXTsKICAgICBpZiAoW2RhdGFUeXBlcyBj
b250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSkKICAg
ICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkFsdGVybmF0aXZlIFNlcnZpY2VzIl07CisgICAgaWYg
KFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV0p
CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJGaWxlIFN5c3RlbSJdOwogCiAgICAgcmV0dXJu
IFthcnJheSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJdOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oCmluZGV4IGRiYzVmM2Y3YTFmZjRmYjc0OWFhZmQ3MGU1NzBiYTA0ODU2
OGFjZDYuLjkxNDQ4ZWUxZDU1MWRlNDIwNjU4NjdiODE1ZGJkZjFkZWZhNzVjMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3Jk
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAgLTc3LDYgKzc3LDggQEAgc3RhdGljIGlubGluZSBz
dGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcg
KndlYnNpdGUKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vi
c2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXM7CiAjZW5kaWYKKyAgICBpZiAoW3dlYnNpdGVE
YXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV0pCisg
ICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW07CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTM0LDYgKzEzNiw4IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWlu
UHRyPE5TU2V0PiB0b1dLV2Vic2l0ZURhdGFUeXBlcyhPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RGF0CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpB
bHRlcm5hdGl2ZVNlcnZpY2VzKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc107CiAjZW5kaWYKKyAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0p
KQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5
cGVGaWxlU3lzdGVtXTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkUHJpdmF0ZS5oCmluZGV4IGQ2MDdkZmUxM2Y2MTJiNTgyMjBlNWEzNTI1Nzc0
NzA1MzFlZTQ5MDcuLjJjZjlhNGQyYTBjN2ZjZTI1YjY1MDZhYzE3YmQ3MTExN2M5NzUxZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdLX0VYVEVSTiBO
U1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVBZENsaWNrQXR0cmlidXRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygx
NS4wKSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBbHRl
cm5hdGl2ZVNlcnZpY2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7
CitXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVt
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
ICNpZiAhVEFSR0VUX09TX0lQSE9ORQogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vi
c2l0ZURhdGFUeXBlUGx1Z0luRGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQppbmRleCBlMmIwNzM2NDY0YjE2NmRkOTIwY2YzNTUxNzFmYjNhNTYzNzBhMzg0
Li43ZWYwNjk1MGFiMDdkM2UxYTc2MTZjYmNiNThiZDI1Nzg1MzU5ZWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KQEAgLTI0OCw3ICsyNDgsOCBAQCArIChOU1NldDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRl
RGF0YVR5cGVzSW5jbHVkaW5nUHJpdmF0ZQogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBl
Q3JlZGVudGlhbHMsCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmli
dXRpb25zLAogICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzLAotICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNl
cworICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcywKKyAg
ICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0KICNpZiAhVEFSR0VUX09TX0lQ
SE9ORQogICAgICAgICAgICAgLCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRkYTE3NDkyOWIwOTQ1YzE2Yjc0ZDA4OGFmOTBjNzM0YTNhZDE3ZDkuLjhiNGE0NmQwMzNjMTBm
Y2Y3NzBlNzUwZTkzMDlhN2I2MTBjN2ZmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUwNCw2ICsxNTA0LDkgQEAKIAkJOTNENkI3
QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0Iy
MjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgg
Ki87IH07CiAJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVz
dWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2
QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRTc5OTg1Mjc1NkZBNTUwMDc0
MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNzk5ODIy
NzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CisJCTkzRTc5OTg3Mjc1NkZBQjQwMDc0MDA4QSAvKiBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTc5OTgzMjc1NkZBNTQwMDc0MDA4QSAv
KiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsK
KwkJOTNFNzk5ODgyNzU2RkFDMjAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0U3OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25u
ZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTk1MEYyODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEYyODdFMjUy
NDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTU2NTA4
MzkyNkQ4N0EyQjAwRTE1Q0I3IC8qIEFwcGxlTWVkaWFTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU2NTA4MzcyNkQ4N0EyQjAwRTE1
Q0I3IC8qIEFwcGxlTWVkaWFTZXJ2aWNlc1NQSS5oICovOyB9OwpAQCAtNTMyMiw2ICs1MzI1LDEw
IEBACiAJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0
UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1
bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5N0UyNzU2RjY3MDAwNzQw
MDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTc5OTgxMjc1NkZBNTMwMDc0MDA4
QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk4MjI3NTZGQTU0MDA3
NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRTc5OTgzMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJh
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0UyNTI0MTRFOTAw
Qjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9XS01vdXNlRGV2
aWNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjI3LDYgKzEw
NjM0LDcgQEAKIAkJCQlCQzAzMkQ2ODEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRWRpdG9yQ2xpZW50
LmggKi8sCiAJCQkJOTM1NDI0MkIyNzAzQkRDQjAwNUNBNzJDIC8qIFdlYkZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJOTM1NDI0MkEyNzAzQkRDQjAwNUNBNzJDIC8qIFdl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzRTc5OTdFMjc1NkY2NzAw
MDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8s
CiAJCQkJQkMxMTFBNTgxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCAqLywKIAkJCQlCQzAzMkQ2QTEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCAqLywKIAkJCQlCQzFCRTFERjEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwICovLApAQCAtMTIxMDQsNiArMTIxMTIsOSBAQAogCQkJCUUzODY2QjA3MjM5OTk3
OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMu
aCAqLywKIAkJCQlFMzg2NkIwNDIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMzg2NkIw
NTIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5TWVzc2FnZXMuaCAqLywKKwkJCQk5M0U3OTk4MjI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk5M0U3
OTk4MTI3NTZGQTUzMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVz
c2FnZXMuaCAqLywKKwkJCQk5M0U3OTk4MzI3NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJQ0Q3M0JBNDgxMzFB
Q0Q4RTAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKIAkJCQlDRDczQkE0OTEzMUFDRDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJN
ZXNzYWdlcy5oICovLAogCQkJCUNENzNCQTQ1MTMxQUNDODgwMEVFREVEMiAvKiBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEzMzUwLDYgKzEzMzYx
LDggQEAKIAkJCQlCQzAzMkRCQjEwRjQzODBGMDA1OEMxNUEgLyogV2ViRXZlbnRDb252ZXJzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzExMUI1RDExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZl
bnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzU0MjQyQzI3MDNCRENCMDA1Q0E3MkMg
LyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0U3OTk4ODI3NTZGQUMyMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRTc5OTg3Mjc1NkZBQjQwMDc0MDA4QSAv
KiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBOTBDMUVFMTI2NEZENTAwMDNFNDRENCAvKiBXZWJGaW5kT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNDY5NTQxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1D
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ2OTU2MTIxNEU2Q0IwMDBCOThFQiAvKiBX
ZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTU0Nzgs
NiArMTU0OTEsNyBAQAogCQkJCUUzODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMzg2
NkIwOTIzOTlBMkQ1MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg5MjEy
QjZBQjEwMEY0OTNGRCAvKiBXZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5M0U3OTk4
NTI3NTZGQTU1MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVE
MiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDczQkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNjA2MTEyRDZC
QTkxMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2
MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uOTRkOWQyY2MzZWIyODgwY2RjZjIyYzA3MmEz
OWE5ODk1NWZkNDQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw4
IEBACiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJD
b29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJGaWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKQEAgLTExOSw2ICsxMjEsMTAgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVAKICAgICAgICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpLmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAjaWYgVVNFKExJQldFQlJUQykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlJUQ01vbml0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJlY2RjZjdkOWQ1MTU3Y2Y4M2JiYjI0MzM0MGVhZThm
MzU3Y2I3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitt
ZXNzYWdlcyAtPiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7
CisgICAgSW52YWxpZGF0ZUFjY2Vzc0hhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYzcxNWI5MjFlOGExNzc1MTgxOGJhNjQ4OTI5
ZmI3MjFlYmU3ODE1Li4wODdmZWYwMzkyNjUzMmM5OWYyMGJlNjA1ZTFhNDg5NTM2NGIxZGRlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjEtMTItMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRhIHZpYSBXS1dlYnNpdGVE
YXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzU2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYwMjkxODU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5tbToKKwogMjAyMS0xMi0wNiAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gdGVzdHMgZm9yIGR1cGxpY2F0ZSBzdWIgZG9tYWlucwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNz
Lm1tCmluZGV4IDdiYmUzYzlmNjJjMWQ5N2MzMTk1NTJhMTkwM2Q5MTVhZDVmN2EyMWEuLjY2MDc3
NGE5MTcyMzFhMjMwNmI1ZDYyNmQ3ZmI1ZmRhOGZiYjMxOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0K
QEAgLTI5LDExICsyOSwxMyBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUu
aCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhUmVjb3Jk
UHJpdmF0ZS5oPgogCiBAaW50ZXJmYWNlIEZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciA6
IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogQGVuZApAQCAtNDgsNyArNTAsNyBA
QCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
Kil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogCiBAZW5kCiAKLXN0YXRpYyBOU1N0cmluZyAqbWFp
bkZyYW1lU3RyaW5nID0gQCI8c2NyaXB0PiBcCitzdGF0aWMgTlNTdHJpbmcgKndvcmtlckZyYW1l
U3RyaW5nID0gQCI8c2NyaXB0PiBcCiAgICAgZnVuY3Rpb24gc3RhcnQoKSB7IFwKICAgICAgICAg
dmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3dvcmtlci5qcycpOyBcCiAgICAgICAgIHdvcmtlci5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeyBcCkBAIC0xMTUsNyArMTE3LDcgQEAgVEVTVChG
aWxlU3lzdGVtQWNjZXNzLCBXZWJQcm9jZXNzQ3Jhc2hEdXJpbmdXcml0ZSkKICAgICBbY29uZmln
dXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAid2Via2l0Il07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
Om1haW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8v
d2Via2l0Lm9yZyJdXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp3b3JrZXJGcmFtZVN0
cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJd
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7
CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAgICAgRVhQRUNUX1dLX1NUUkVR
KEAicGFnZSBpcyBsb2FkZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwpAQCAtMTI2LDcg
KzEyOCw3IEBAIFRFU1QoRmlsZVN5c3RlbUFjY2VzcywgV2ViUHJvY2Vzc0NyYXNoRHVyaW5nV3Jp
dGUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAic3VjY2Vzczogd3JpdGUgMTAgYnl0ZXMiLCBbbGFz
dFNjcmlwdE1lc3NhZ2UgYm9keV0pOwogCiAgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbc2Vjb25kV2Vi
VmlldyBsb2FkSFRNTFN0cmluZzptYWluRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAIndlYmtpdDovL3dlYmtpdC5vcmciXV07CisgICAgW3NlY29uZFdlYlZpZXcgbG9h
ZEhUTUxTdHJpbmc6d29ya2VyRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAIndlYmtpdDovL3dlYmtpdC5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZh
bHNlOwogICAgIEVYUEVDVF9XS19TVFJFUShAInBhZ2UgaXMgbG9hZGVkIiwgW2xhc3RTY3JpcHRN
ZXNzYWdlIGJvZHldKTsKQEAgLTE2OCw3ICsxNzAsNyBAQCBURVNUKEZpbGVTeXN0ZW1BY2Nlc3Ms
IE5ldHdvcmtQcm9jZXNzQ3Jhc2hEdXJpbmdXcml0ZSkKICAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAid2Via2l0
Il07CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0
cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJd
XTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp3b3JrZXJGcmFtZVN0cmluZyBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicGFnZSBpcyBs
b2FkZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwpAQCAtMjU4LDQgKzI2MCwxOTYgQEAg
VEVTVChGaWxlU3lzdGVtQWNjZXNzLCBNaWdyYXRlVG9OZXdTdG9yYWdlRGlyZWN0b3J5KQogICAg
IEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJv
ZHldKTsKIH0KIAorc3RhdGljIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gQCI8c2NyaXB0PiBcCisg
ICAgYXN5bmMgZnVuY3Rpb24gb3BlbihzaG91bGRDcmVhdGVGaWxlKSBcCisgICAgeyBcCisgICAg
ICAgIHRyeSB7IFwKKyAgICAgICAgICAgIHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9y
LnN0b3JhZ2UuZ2V0RGlyZWN0b3J5KCk7IFwKKyAgICAgICAgICAgIHZhciBmaWxlSGFuZGxlID0g
YXdhaXQgcm9vdEhhbmRsZS5nZXRGaWxlSGFuZGxlKCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0Jywg
eyAnY3JlYXRlJyA6IHNob3VsZENyZWF0ZUZpbGUgfSk7IFwKKyAgICAgICAgICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdmaWxlIGlzIG9w
ZW5lZCcpOyBcCisgICAgICAgIH0gY2F0Y2goZXJyKSB7IFwKKyAgICAgICAgICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdlcnJvcjogJyAr
IGVyci5uYW1lICsgJyAtICcgKyBlcnIubWVzc2FnZSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBc
CisgICAgb3Blbih0cnVlKTsgXAorICAgIDwvc2NyaXB0PiI7CisKK1RFU1QoRmlsZVN5c3RlbUFj
Y2VzcywgRmV0Y2hBbmRSZW1vdmVEYXRhKQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMo
W1tGaWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07Cisg
ICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9y
ZV07CisgICAgYXV0byB0eXBlcyA9IFtOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRh
VHlwZUZpbGVTeXN0ZW1dOworCisgICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGRhdGEuCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVz
IG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XiB7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNjZXNzRW5hYmxlZCA9IFlF
UzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMgb3BlbmVkIiwgW2xh
c3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIC8vIEZldGNoIGRhdGEgYW5kIHJlbW92ZSBp
dCBieSBvcmlnaW4uCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZl
dGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxX
S1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNv
cmRzLmNvdW50LCAxdSk7CisgICAgICAgIGF1dG8gcmVjb3JkID0gW3JlY29yZHMgb2JqZWN0QXRJ
bmRleDowXTsKKyAgICAgICAgRVhQRUNUX1NUUkVRKCJ3ZWJraXQub3JnIiwgW3JlY29yZC5kaXNw
bGF5TmFtZSBVVEY4U3RyaW5nXSk7CisKKyAgICAgICAgLy8gUmVtb3ZlIGRhdGEuCisgICAgICAg
IFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIGZvckRhdGFSZWNvcmRz
OnJlY29yZHMgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworCisgICAgLy8gRmV0Y2ggZGF0YSBhZnRlciByZW1vdmFsLgorICAgIGRvbmUgPSBmYWxzZTsK
KyAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3Jkcykg
eworICAgICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3VudCwgMHUpOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIC8vIEZpbGUgY2Fubm90IGJlIG9wZW5lZCBhZnRlciBkYXRh
IHJlbW92YWwuCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAib3BlbihmYWxzZSki
IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OworICAgIEVYUEVDVF9XS19TVFJFUShAImVycm9yOiBOb3RGb3VuZEVycm9yIC0gVGhlIG9iamVj
dCBjYW4gbm90IGJlIGZvdW5kIGhlcmUuIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKK30K
KworVEVTVChGaWxlU3lzdGVtQWNjZXNzLCBSZW1vdmVEYXRhQnlNb2RpZmljYXRpb25UaW1lKQor
eworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tGaWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5fZmlsZVN5c3RlbUFjY2Vz
c0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuX3N0b3JhZ2VBUElFbmFibGVkID0gWUVT
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6dGVzdFN0cmluZyBiYXNl
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmaWxlIGlz
IG9wZW5lZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisKKyAgICBhdXRvIHdlYnNpdGVE
YXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXTsKKyAgICBhdXRvIHR5
cGVzID0gW05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbV07
CisgICAgZG9uZSA9IGZhbHNlOworICAgIF9fYmxvY2sgTlNVSW50ZWdlciByZWNvcmRzQ291bnQ7
CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29t
cGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMp
IHsKKyAgICAgICAgcmVjb3Jkc0NvdW50ID0gcmVjb3Jkcy5jb3VudDsKKyAgICAgICAgRVhQRUNU
X0dUKHJlY29yZHNDb3VudCwgMHUpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzIG1vZGlmaWVkU2lu
Y2U6W05TRGF0ZSBub3ddIGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBbd2Vic2l0ZURh
dGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICAgICAg
cmVjb3Jkc0NvdW50ID0gcmVjb3Jkcy5jb3VudDsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWNv
cmRzLmNvdW50LCByZWNvcmRzQ291bnQpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisK
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlw
ZXM6dHlwZXMgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeIHsKKyAgICAgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQg
Kj4gKnJlY29yZHMpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAwdSk7
CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworc3RhdGljIE5TU3RyaW5nICptYWlu
RnJhbWVTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKKyAgICBmdW5jdGlvbiBwb3N0UmVzdWx0KGV2ZW50
KSBcCisgICAgeyBcCisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RI
YW5kbGVyLnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEpOyBcCisgICAgfSBcCisgICAgYWRkRXZlbnRM
aXN0ZW5lcignbWVzc2FnZScsIHBvc3RSZXN1bHQsIGZhbHNlKTsgXAorICAgIDwvc2NyaXB0PiBc
CisgICAgPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvJz4iOworCitzdGF0aWMg
Y29uc3QgY2hhciogZnJhbWVCeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorPHNjcmlwdD4KK2Z1bmN0
aW9uIHBvc3RNZXNzYWdlKG1lc3NhZ2UpCit7CisgICAgcGFyZW50LnBvc3RNZXNzYWdlKG1lc3Nh
Z2UsICcqJyk7Cit9Cithc3luYyBmdW5jdGlvbiBvcGVuKCkKK3sKKyAgICB0cnkgeworICAgICAg
ICB2YXIgcm9vdEhhbmRsZSA9IGF3YWl0IG5hdmlnYXRvci5zdG9yYWdlLmdldERpcmVjdG9yeSgp
OworICAgICAgICB2YXIgZmlsZUhhbmRsZSA9IGF3YWl0IHJvb3RIYW5kbGUuZ2V0RmlsZUhhbmRs
ZSgnZmlsZS1zeXN0ZW0tYWNjZXNzLnR4dCcsIHsgJ2NyZWF0ZScgOiB0cnVlIH0pOworICAgICAg
ICBwb3N0TWVzc2FnZSgnZmlsZSBpcyBvcGVuZWQnKTsKKyAgICB9IGNhdGNoKGVycikgeworICAg
ICAgICBwb3N0TWVzc2FnZSgnZXJyb3I6ICcgKyBlcnIubmFtZSArICcgLSAnICsgZXJyLm1lc3Nh
Z2UpOworICAgIH0KK30KK29wZW4oKTsKKzwvc2NyaXB0PgorKVRFU1RSRVNPVVJDRSI7CisKK1RF
U1QoRmlsZVN5c3RlbUFjY2VzcywgRmV0Y2hEYXRhRm9yVGhpcmRQYXJ0eSkKK3sKKyAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IGZyYW1lQnl0
ZXMgfSB9LAorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW1tGaWxlU3lzdGVtQWNjZXNzTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwor
ICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAg
cHJlZmVyZW5jZXMuX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVu
Y2VzLl9zdG9yYWdlQVBJRW5hYmxlZCA9IFlFUzsKKworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9y
ZSA9IFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdOworICAgIGF1dG8gdHlwZXMgPSBb
TlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsKKyAgICBk
b25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlw
ZXMgbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
IHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtuYXZpZ2F0aW9u
RGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3
ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxi
YWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlh
bCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRy
dXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRl
bnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHNldERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246WyZdKFdLTmF2aWdhdGlvbkFj
dGlvbiAqYWN0aW9uLCB2b2lkICheZGVjaXNpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3kpKSB7CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdyk7CisgICAgfV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpt
YWluRnJhbWVTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Vi
a2l0Lm9yZyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRh
UmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIC8vIFNob3VsZCByZXR1cm4gYm90aCBvcGVu
aW5nIG9yaWdpbiBhbmQgdG9wIG9yaWdpbi4KKyAgICAgICAgRVhQRUNUX0VRKHJlY29yZHMuY291
bnQsIDJ1KTsKKyAgICAgICAgYXV0byBzb3J0RnVuY3Rpb24gPSBeKFdLV2Vic2l0ZURhdGFSZWNv
cmQgKnJlY29yZDEsIFdLV2Vic2l0ZURhdGFSZWNvcmQgKnJlY29yZDIpeworICAgICAgICAgICAg
cmV0dXJuIFtyZWNvcmQxLmRpc3BsYXlOYW1lIGNvbXBhcmU6cmVjb3JkMi5kaXNwbGF5TmFtZV07
CisgICAgICAgIH07CisgICAgICAgIGF1dG8gc29ydGVkUmVjb3JkcyA9IFtyZWNvcmRzIHNvcnRl
ZEFycmF5VXNpbmdDb21wYXJhdG9yOnNvcnRGdW5jdGlvbl07CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShAIjEyNy4wLjAuMSIsIFtzb3J0ZWRSZWNvcmRzIG9iamVjdEF0SW5kZXg6MF0uZGlzcGxh
eU5hbWUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ3ZWJraXQub3JnIiwgW3NvcnRlZFJl
Y29yZHMgb2JqZWN0QXRJbmRleDoxXS5kaXNwbGF5TmFtZSk7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKICNl
bmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446200</attachid>
            <date>2021-12-07 10:38:14 -0800</date>
            <delta_ts>2021-12-07 11:33:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233567-20211207103813.patch</filename>
            <type>text/plain</type>
            <size>72649</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdjZTYzZmRjYTUxMGE1MDkzMzY1Y2Iy
MjE4MmViMzUwNmI3ZDQ5OTUuLmIxZmZjY2Q1MDFlNzM3OThkZWMzMGM5MDVkZDAzZTM5NjhiZTU2
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDcgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgRmV0Y2ggYW5kIHJlbW92ZSBmaWxlIHN5c3RlbSBkYXRh
IHZpYSBXS1dlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzU2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYwMjkxODU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIHd0Zi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OnJlYWRFbnRpcmVG
aWxlKTogUmVhZCB3aG9sZSBmaWxlIGNvbnRlbnQgaW50byBhIFZlY3Rvci4KKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZSk6IFJlY3Vyc2l2
ZWx5IGRlbGV0ZSBmaWxlcyBhbmQgZm9sZGVycyBtb2RpZmllZCBhZnRlciAKKyAgICAgICAgc3Bl
Y2lmaWVkIHRpbWUgaW4gYSBkaXJlY3RvcnkuCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uaDoK
KwogMjAyMS0xMi0wNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChyMjg2NTA3KTogW21hY09TXSBNYW55IGZpbGUgc3lzdGVtIGFjY2Vz
cyBsYXlvdXQgdGVzdHMgYmVjYW1lIGZsYWt5IGZhaWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ1ZDNm
M2Q4MzhmMDlmNDI0ZWI2NGNmMzEwNTNmMDVkM2Q0OWU3Yy4uZmFhYmExNGRlN2Q2YWJhNGI1MmQ4
NDhkZDllMDdjNDVkNzIxM2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEy
LTA3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEZldGNoIGFu
ZCByZW1vdmUgZmlsZSBzeXN0ZW0gZGF0YSB2aWEgV0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1NjcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzg2MDI5MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBG
YWJsZXQuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisKIDIwMjEtMTItMDYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3RvcjogVW5pZnkgR3JpZCBv
dmVybGF5IGRyYXdpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2N2Y5ZWEzNzMyNDI1MGQ2NWU1ZDZmMTU5
YWY1ZGViZDU0NDEwNWViLi41YTkyNGExNDk1Y2MzNjc5YjUzNGM0M2M1ZWUzMmVjYzJkNDNjOTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIxLTEyLTA3ICBTaWh1aSBMaXUgIDxzaWh1
aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEZldGNoIGFuZCByZW1vdmUgZmlsZSBzeXN0ZW0g
ZGF0YSB2aWEgV0tXZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM1NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg2MDI5
MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgSW50
cm9kdWNlIGEgbmV3IFdlYnNpdGVEYXRhVHlwZSB2YWx1ZSBGaWxlU3lzdGVtIGZvciBGaWxlU3lz
dGVtQWNjZXNzIGRhdGEuIE5ldHdvcmsgcHJvY2VzcyBub3cgY2FuIGZldGNoIGFuZCAKKyAgICAg
ICAgZGVsZXRlIHRoaXMgdHlwZSBvZiBkYXRhIHdoZW4gZmV0Y2hpbmcgYW5kIGRlbGV0ZWluZyB3
ZWJzaXRlIGRhdGEgKGlmIEZpbGVTeXN0ZW0gdHlwZSBpcyBpbmNsdWRlZCBpbiB0YXJnZXQKKyAg
ICAgICAgdHlwZXMpLgorCisgICAgICAgIFRvIHRyYWNrIG9yaWdpbnMgdGhhdCBoYXZlIEZpbGVT
eXN0ZW0gZGF0YSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZpbGUgbmFtZWQgb3JpZ2lu
IGluIHRoZSBvcmlnaW4ncyAKKyAgICAgICAgZGlyZWN0b3J5LiBUaGlzIGZpbGUgd2lsbCBiZSBj
cmVhdGVkIHdoZW4gT3JpZ2luU3RvcmFnZU1hbmFnZXIgaXMgY3JlYXRlZC4KKworICAgICAgICBU
byBkZWxldGUgZXhpc3RpbmcgRmlsZVN5c3RlbSBkYXRhLCBuZXR3b3JrIHByb2Nlc3MgZmluZHMg
b3JpZ2lucyB0aGF0IGFyZSByZXF1ZXN0ZWQgdG8gYmUgZGVsZXRlZCBhbmQgaGF2ZSBkYXRhIAor
ICAgICAgICBvbiBkaXNrLCBjbG9zZXMgYWN0aXZlIGFjY2VzcyBoYW5kbGVzLCBhbmQgZGVsZXRl
cyB0aGUgZmlsZXMuIFRoZSBvcmlnaW4gZmlsZSBtZW50aW9uZWQgYWJvdmUgd2lsbCBiZSBkZWxl
dGVkIGlmIAorICAgICAgICB0aGVyZSBpcyBubyBvdGhlciBmaWxlIGxlZnQgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LCBhbmQgZW1wdHkgZGlyZWN0b3JpZXMgd2lsbCBiZSBkZWxldGVkLgorCisgICAg
ICAgIE5ldyBBUEkgdGVzdHM6IEZpbGVTeXN0ZW1BY2Nlc3MuRmV0Y2hBbmRSZW1vdmVEYXRhCisg
ICAgICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW1BY2Nlc3MuUmVtb3ZlRGF0YUJ5TW9kaWZp
Y2F0aW9uVGltZQorICAgICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtQWNjZXNzLkZldGNo
RGF0YUZvclRoaXJkUGFydHkKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVB
bmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZUhhbmRs
ZS5oOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZTo6YWN0aXZlU3lu
Y0FjY2Vzc0hhbmRsZSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9G
aWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXI6On5GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI6OmNsb3NlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6cmVhZE9yaWdpbkZyb21GaWxlKToKKyAgICAgICAgKFdlYktpdDo6d3JpdGVPcmln
aW5Ub0ZpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OmRlbGV0ZU9yaWdpbkZpbGVJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Om9yaWdpbkRpcmVjdG9yeVBhdGgpOgorICAg
ICAgICAoV2ViS2l0OjpvcmlnaW5GaWxlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBv
c3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwZXJzaXN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbGVhclN0b3JhZ2VG
b3JUZXN0aW5nKTogT25seSByZXNldCBwZXJzaXN0ZWQgc3RhdGUgaGVyZSBhcyBvdXIgdGVzdCBi
b3QgY2FuIHJ1biAKKyAgICAgICAgdGVzdHMgaW4gcGFyYWxsZWwuIElmIG9uZSB3b3JrZXIgZmlu
aXNoZXMgYSB0ZXN0IGFuZCBhc2tzIHRvIGNsZWFyIHN0b3JhZ2UsIHdoaWxlIGFub3RoZXIgd29y
a2VyIGlzIHJ1bm5pbmcgYSAKKyAgICAgICAgZmlsZXN5c3RlbSB0ZXN0OyB0aGUgdGVzdCBtYXkg
ZmFpbCBhcyBkYXRhIGlzIGdvbmUuIChUaGUgd29ya2VycyBhcmUgdXNpbmcgdGhlIHNhbWUgbmV0
d29yayBwcm9jZXNzLikKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZvckVhY2hPcmlnaW5EaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZldGNoRGF0YUZy
b21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpmZXRjaERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFP
bkRpc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFN
b2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpk
ZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6b3JpZ2lu
UGF0aCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdp
blN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQ6OnRvU3RvcmFnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6dHlwZVN0b3JhZ2VQYXRoIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNr
ZXQ6OmZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojppc0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmRlbGV0ZUZp
bGVTeXN0ZW1TdG9yYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpzZXRQZXJzaXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6cGVyc2lzdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjpvd25lclBy
b2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW06Cisg
ICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJz
aXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgor
ICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRp
bmdQcml2YXRlXSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5
c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAyMS0xMi0wNiAg
UGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIg
SW5zcGVjdG9yOiBVbmlmeSBHcmlkIG92ZXJsYXkgZHJhd2luZyBjb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
Y3BwCmluZGV4IDY0YmFjNmI2YjcwMDE2MTBiNTNmMmUxZDMwOTI2N2JkNWE0MGY1MzguLmY2OTA0
OTI4ZWY1NWIwYWI4MWU2MDA1MGIzOTNhZGM0Yzc5OTE2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3Bw
CkBAIC01MTQsNiArNTE0LDYwIEBAIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBzYWx0OwogfQogCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gcmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gc2l6ZSA9IEZpbGVTeXN0ZW06OmZp
bGVTaXplKGhhbmRsZSkudmFsdWVfb3IoMCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgdW5zaWduZWQgYnl0ZXNUb1JlYWQ7CisgICAgaWYgKCFX
VEY6OmNvbnZlcnRTYWZlbHkoc2l6ZSwgYnl0ZXNUb1JlYWQpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7Cisg
ICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBpZiAodG90YWxCeXRlc1Jl
YWQgIT0gYnl0ZXNUb1JlYWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCit2b2lkIGRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSwgV2FsbFRpbWUgdGltZSkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0
aW9uIG1heSBkZWxldGUgZGlyZWN0b3J5IGZvbGRlci4KKyAgICBpZiAodGltZSA9PSAtV2FsbFRp
bWU6OmluZmluaXR5KCkpIHsKKyAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkoZGlyZWN0
b3J5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2hpbGRyZW4gPSBsaXN0
RGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7
CisgICAgICAgIGF1dG8gY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGRpcmVjdG9yeSwgY2hpbGQpOworICAgICAgICBhdXRvIGNoaWxkVHlwZSA9IGZpbGVU
eXBlKGNoaWxkUGF0aCk7CisgICAgICAgIGlmICghY2hpbGRUeXBlKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgc3dpdGNoICgqY2hpbGRUeXBlKSB7CisgICAgICAgIGNhc2UgRmls
ZVR5cGU6OlJlZ3VsYXI6IHsKKyAgICAgICAgICAgIGlmIChhdXRvIG1vZGlmaWNhdGlvblRpbWUg
PSBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShjaGlsZFBhdGgpOyBtb2RpZmljYXRp
b25UaW1lICYmICptb2RpZmljYXRpb25UaW1lID49IHRpbWUpCisgICAgICAgICAgICAgICAgZGVs
ZXRlRmlsZShjaGlsZFBhdGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBGaWxlVHlwZTo6RGlyZWN0b3J5OgorICAgICAgICAgICAgZGVsZXRlQWxsRmlsZXNN
b2RpZmllZFNpbmNlKGNoaWxkUGF0aCwgdGltZSk7CisgICAgICAgICAgICBkZWxldGVFbXB0eURp
cmVjdG9yeShjaGlsZFBhdGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmls
ZVR5cGU6OlN5bWJvbGljTGluazoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKK30K
KwogI2lmIEhBVkUoU1REX0ZJTEVTWVNURU0pIHx8IEhBVkUoU1REX0VYUEVSSU1FTlRBTF9GSUxF
U1lTVEVNKQogCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uaAppbmRleCA5OTZiYzBiNmY3ZGE4YWRkMGE2ZTViOTE3YWM4NmNlYzVhZjcw
OWE0Li5mZDg1M2E0OWFhYzhkYzAxZjMxNTcwNGNlNDlkNzM0NjVhZTA1NjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCkBAIC0xMDgsNiArMTA4LDcgQEAgZW51bSBjbGFzcyBNYXBwZWRGaWxlTW9kZSB7CiAK
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKGNvbnN0IFN0cmluZyYs
IFdhbGxUaW1lKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgbW92ZUZpbGUoY29uc3Qg
U3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwogV1RGX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKGNvbnN0IFN0cmluZyYpOyAvLyBG
b2xsb3dzIHN5bWxpbmtzLgpAQCAtMTQ2LDYgKzE0Nyw3IEBAIGlubGluZSBib29sIGlzSGFuZGxl
VmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAh
PSBpCiAKIHVzaW5nIFNhbHQgPSBzdGQ6OmFycmF5PHVpbnQ4X3QsIDg+OwogV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBw
YXRoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
cmVhZEVudGlyZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKIAogLy8gUHJlZml4IGlzIHdoYXQg
dGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4K
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc3VmZml4ID0geyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbWFjY2Vzcy9G
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9GaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCAzNTljMjQ2
NzgwZjk2NTI0OTJjNTBlMWU4ZjU0ZjkwNGNhNzg5NjlkLi43NzZlMTNjYTVlYjY0Nzk3OTQzZWYz
YmM0ODUzYTMxZGRlZGZiMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW1hY2Nlc3MvRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL0ZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJGaWxlU3lzdGVtSGFuZGxlSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlByb2Nlc3NRdWFsaWZpZWQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBl
OGVhZDYwMjczYjc1MTg5NDAxNjYyZDRkZmEwYjMxNzNiMjJjOGI0Li5iMWRiYmI1NTQ5ZjdhMDUx
YmNjYjBkYmUyZjIzOTlhYWJmMWFiOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTMxMCw2ICsz
MTAsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1JlbW90ZVdlYkxvY2tSZWdpc3RyeQogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5CisgICAgV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24KICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgogCiAgICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggODU5MmQ5OWQyZTM2YWZjOWVmODVkY2MxYzNmNTc0
ZWMxOTVlZWY1NS4uNWJhNjRiNDRiZTFlNTc3NTA4OGZjNmU5MDU1OTljN2NkNTc4M2NkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjIx
LDYgKzIyMSw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1JlbW90ZVdlYkxvY2tSZWdpc3RyeS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbgor
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDUyMDM1YWIwYTI0NTNiNjNmODI5Mjc2ZTk4NDBlZGQx
MzgyNjBkYjUuLjIyZGE3Yjc3NzA4NTA3NTA2ZjUxOGZmNDI4ZjA3NjU2MWJkZWZhYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMSw1
ICsxLDQgQEAKICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdGUteGNmaWxl
bGlzdHMgc2NyaXB0LgotPDw8PDw8PCBIRUFECiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L0F1ZGlvQ2FwdHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0F1ZGlvQ2Fw
dHVyZVNhbXBsZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNDk0LDYgKzQ5Myw5IEBAICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlck1lCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdC9XZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2Fn
ZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZXMu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJGdWxsU2Ny
ZWVuTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCkBAIC02MTksNCArNjIxLDUgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0Lk5ldHdv
cmtQcm9jZXNzLnNiCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L2NvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG5Qcm9jZXNzLnNiCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYgog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2Vi
S2l0LnBsdWdpbi1jb21tb24uc2IKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBs
ZS5XZWJQcm9jZXNzLnNiCis8PDw8PDw8IEhFQUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAxOTMzODg0OTYxYjRiYzMwNGYwODliMGI1NGUxNDg5MWI1YzM0OGY0Li42ODRmYWNkNWQ3
NmZjMjRhMjdiMDdhZjQ3MGNjM2Y5YTNjZDFjMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9SZW1vdGVXZWJMb2NrUmVnaXN0cnkgXAogCVdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IFwKIAlXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIgXAorCVdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uIFwKIAlX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBc
CiAJV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlciBcCiAJV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
aW5kZXggZGU3NjVkZTQ1MDcxZjQxZjNmYzRkNDY5NzA1MzgxNmUxODk5ZWJmYS4uNzBiNWFmZGE1
MjZlOTkwOWI5NjJkNzEyMTNkODViNjBiNTM3MTgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTc0LDYgKzc0LDcgQEAgY29uc3QgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bW9uaXRvcmVkRGF0YVQKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgIFdlYnNp
dGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMsCiAjZW5kaWYKKyAgICAgICAg
V2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtLAogICAgIH0pKTsKIAogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDk3OGNmNTZhY2ZkZGJmNGFmYzI3OGM1MmM0MzdhMzRjOGQ1NzU1
MTguLjQ3MmM4YjU3YzMyYzM1Zjg5YmUwYjE3ODFmYmRlYzhjZjNkYWM4YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNTU1LDYg
KzE1NTUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgfQogICAgIH0KICNl
bmRpZgorCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5maW5kKHNl
c3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJzLmVuZCgpKSB7CisgICAgICAg
IGl0ZXJhdG9yLT52YWx1ZS0+ZmV0Y2hEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoV1RGTW92ZShlbnRy
aWVzKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNjI5LDYgKzE2
MzUsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgICAgICAgICAgbmV0d29ya1Nlc3Np
b24tPmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyhtb2RpZmllZFNpbmNlKTsKICAgICB9CiAjZW5k
aWYKKworICAgIGlmIChhdXRvIGl0ZXJhdG9yID0gbV9zdG9yYWdlTWFuYWdlcnMuZmluZChzZXNz
aW9uSUQpOyBpdGVyYXRvciAhPSBtX3N0b3JhZ2VNYW5hZ2Vycy5lbmQoKSkKKyAgICAgICAgaXRl
cmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhTW9kaWZpZWRTaW5jZSh3ZWJzaXRlRGF0YVR5cGVzLCBt
b2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGNsZWFyRGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3Qg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MzYsNiArMTc0NSw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAoYXV0byBpdGVyYXRvciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmZpbmQoc2Vzc2lvbklEKTsgaXRlcmF0b3IgIT0gbV9zdG9yYWdl
TWFuYWdlcnMuZW5kKCkpCisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YSh3ZWJz
aXRlRGF0YVR5cGVzLCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOworCiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvcjsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRh
IDogb3JpZ2luRGF0YXMpCkBAIC0xOTU5LDYgKzE5NzEsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3MKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0
b3JhZ2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFn
ZXJzLmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YUZvclJlZ2lz
dHJhYmxlRG9tYWlucyh3ZWJzaXRlRGF0YVR5cGVzLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvciwgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBkZWxldGVkRG9tYWlu
cykgbXV0YWJsZSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZG9tYWluIDogZGVsZXRlZERvbWFp
bnMpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFdU
Rk1vdmUoZG9tYWluKSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8gZGF0YVR5cGVz
Rm9yVUlQcm9jZXNzID0gV2Vic2l0ZURhdGE6OmZpbHRlcih3ZWJzaXRlRGF0YVR5cGVzLCBXZWJz
aXRlRGF0YVByb2Nlc3NUeXBlOjpVSSk7CiAgICAgaWYgKCFkYXRhVHlwZXNGb3JVSVByb2Nlc3Mu
aXNFbXB0eSgpICYmICFkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvci5p
c0VtcHR5KCkpIHsKICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykgewpAQCAt
MjA3NSw2ICsyMDk0LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWlu
c1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX3N0b3Jh
Z2VNYW5hZ2Vycy5maW5kKHNlc3Npb25JRCk7IGl0ZXJhdG9yICE9IG1fc3RvcmFnZU1hbmFnZXJz
LmVuZCgpKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZmV0Y2hEYXRhKHdlYnNpdGVEYXRh
VHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRW
ZWN0b3IoV1RGTW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAgIH0KIH0KICNlbmRpZiAv
LyBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGUuaAppbmRleCBmYjkyOTgxNDFiMGRiYzM4MWZhOGIzYjM4MTdlNjhjYTAxODk3
OWRhLi40NzMzOGVmZTUzODIyYTc2YTU0ODRmMjljOTM1NzY3OGY0MDE4ODVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGUuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
QWNjZXNzSGFuZGxlSW5mbyA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtU3luY0FjY2Vz
c0hhbmRsZUlkZW50aWZpZXIsIElQQzo6U2hhcmVkRmlsZUhhbmRsZT47CiAgICAgRXhwZWN0ZWQ8
QWNjZXNzSGFuZGxlSW5mbywgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY3JlYXRlU3luY0FjY2Vz
c0hhbmRsZSgpOwogICAgIHN0ZDo6b3B0aW9uYWw8RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gY2xv
c2UoV2ViQ29yZTo6RmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5kbGVJZGVudGlmaWVyKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNzSGFuZGxlSWRlbnRpZmll
cj4gYWN0aXZlU3luY0FjY2Vzc0hhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU3luY0Fj
Y2Vzc0hhbmRsZTsgfQogCiBwcml2YXRlOgogICAgIEV4cGVjdGVkPFdlYkNvcmU6OkZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyLCBGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXF1ZXN0Q3JlYXRl
SGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFR5cGUsIFN0cmluZyYmIG5hbWUsIGJv
b2wgY3JlYXRlSWZOZWNlc3NhcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCAzOGFhMjY1NWMzOWRkYzIzN2JhNWEzODBhNWQ1NDkxMjQyYzM3ZjUxLi4yOWNmYjBjNmIz
NzNhMjVmZjAxY2NlODYzM2M5NWU1NmIxYWNiN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oIgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDIsOCArNDMsNyBAQCBGaWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXI6On5GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBtX2hhbmRsZXMua2V5
cygpKQotICAgICAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJIYW5kbGUoaWRlbnRpZmllcik7Cisg
ICAgY2xvc2UoKTsKIH0KIAogRXhwZWN0ZWQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIsIEZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlSGFuZGxlKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGU6OlR5cGUgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFt
ZSwgYm9vbCBjcmVhdGVJZk5lY2Vzc2FyeSkKQEAgLTE0OSw0ICsxNDksMjQgQEAgYm9vbCBGaWxl
U3lzdGVtU3RvcmFnZU1hbmFnZXI6OnJlbGVhc2VMb2NrRm9yRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIFdlYkNvcmU6OkYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgRmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyOjpjbG9zZSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CisKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uSUQsIGlkZW50aWZpZXJzXSA6IG1faGFuZGxl
c0J5Q29ubmVjdGlvbikgeworICAgICAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGlkZW50aWZp
ZXJzKSB7CisgICAgICAgICAgICBhdXRvIHRha2VuSGFuZGxlID0gbV9oYW5kbGVzLnRha2UoaWRl
bnRpZmllcik7CisgICAgICAgICAgICBtX3JlZ2lzdHJ5LnVucmVnaXN0ZXJIYW5kbGUoaWRlbnRp
Zmllcik7CisKKyAgICAgICAgICAgIC8vIFNlbmQgbWVzc2FnZSB0byB3ZWIgcHJvY2VzcyB0byBp
bnZhbGlkYXRlIGFjdGl2ZSBzeW5jIGFjY2VzcyBoYW5kbGUuCisgICAgICAgICAgICBpZiAoYXV0
byBhY2Nlc3NIYW5kbGVJZGVudGlmaWVyID0gdGFrZW5IYW5kbGUtPmFjdGl2ZVN5bmNBY2Nlc3NI
YW5kbGUoKSkKKyAgICAgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlv
bklELCBNZXNzYWdlczo6V2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpJbnZhbGlkYXRl
QWNjZXNzSGFuZGxlKCphY2Nlc3NIYW5kbGVJZGVudGlmaWVyKSwgMCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBBU1NFUlQobV9oYW5kbGVzLmlzRW1wdHkoKSk7CisgICAgbV9oYW5kbGVzQnlD
b25uZWN0aW9uLmNsZWFyKCk7CisgICAgbV9sb2NrTWFwLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oCmluZGV4IGI4NTc2NzY4
YjM1NWFjYjNhYTBjMzcwMzhjYzUxZWNjOTMyYjM5NmMuLjUzNTk4OTU4MTBkODc0ODU2MDlhNDBj
ZmE1MzcxY2M2OWVlYjA2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTQ5
LDYgKzQ5LDggQEAgcHVibGljOgogICAgIGJvb2wgcmVsZWFzZUxvY2tGb3JGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIpOwogCiBwcml2
YXRlOgorICAgIHZvaWQgY2xvc2UoKTsKKwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgbV9yZWdpc3RyeTsKICAgICBIYXNoTWFwPElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZXI+PiBtX2hhbmRsZXNCeUNvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
Y3BwCmluZGV4IGNmYWMwMWEzOGYyMDJjYmJmNDhhZmRkODU2NTIyOTI2MmYxZDkyYjQuLmVlYjYw
NDVmYTgzMmE5NDgzM2FlZjk1ZGUzMzUyZjc1Y2UzZjQ0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwCkBAIC0zMSwxMSArMzEsNjkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJPcmlnaW5T
dG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5j
bHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDbGllbnRPcmlnaW4+IHJlYWRPcmlnaW5Gcm9tRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKCFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIGF1dG8gb3JpZ2luRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gY2xvc2VG
aWxlID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
b3JpZ2luRmlsZUhhbmRsZSk7CisgICAgfSk7CisKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFu
ZGxlVmFsaWQob3JpZ2luRmlsZUhhbmRsZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBhdXRvIG9yaWdpbkNvbnRlbnQgPSBGaWxlU3lzdGVtOjpyZWFkRW50aXJlRmlsZShv
cmlnaW5GaWxlSGFuZGxlKTsKKyAgICBpZiAoIW9yaWdpbkNvbnRlbnQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
eyBvcmlnaW5Db250ZW50LT5kYXRhKCksIG9yaWdpbkNvbnRlbnQtPnNpemUoKSB9KTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gb3JpZ2luOworICAgIGRlY29kZXIg
Pj4gb3JpZ2luOworICAgIHJldHVybiBvcmlnaW47Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRlT3Jp
Z2luVG9GaWxlSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCit7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZmlsZVBhdGgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChmaWxlUGF0aCkpOworICAgIGF1dG8g
b3JpZ2luRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CisgICAgYXV0byBjbG9zZUZpbGUgPSBtYWtl
U2NvcGVFeGl0KFsmXSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShvcmlnaW5GaWxl
SGFuZGxlKTsKKyAgICB9KTsKKworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChv
cmlnaW5GaWxlSGFuZGxlKSkgeworICAgICAgICBMT0dfRVJST1IoIndyaXRlT3JpZ2luVG9GaWxl
SWZOZWNlc3Nhcnk6IEZhaWxlZCB0byBvcGVuIG9yaWdpbiBmaWxlIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CisgICAg
ZW5jb2RlciA8PCBvcmlnaW47CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUob3JpZ2luRmls
ZUhhbmRsZSwgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworfQorCitz
dGF0aWMgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK3sKKyAgICBhdXRvIHBhcmVudFBhdGggPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGZp
bGVQYXRoKTsKKyAgICBhdXRvIGNoaWxkcmVuID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShw
YXJlbnRQYXRoKTsKKyAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEpCisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworfQorCiBSZWY8TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrU3RvcmFnZU1hbmFnZXIoc2Vzc2lvbklELCBwYXRoKSk7CkBAIC0xMTcsNyArMTc1LDcgQEAg
c3RhdGljIFN0cmluZyBlbmNvZGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbGVTeXN0ZW06OlNh
bHQgc2FsdCkKICAgICByZXR1cm4gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaGFzaC5kYXRhKCks
IGhhc2guc2l6ZSgpKTsKIH0KIAotc3RhdGljIFN0cmluZyBvcmlnaW5QYXRoKGNvbnN0IFN0cmlu
ZyYgcm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBGaWxlU3lz
dGVtOjpTYWx0IHNhbHQpCitzdGF0aWMgU3RyaW5nIG9yaWdpbkRpcmVjdG9yeVBhdGgoY29uc3Qg
U3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIEZp
bGVTeXN0ZW06OlNhbHQgc2FsdCkKIHsKICAgICBpZiAocm9vdFBhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gcm9vdFBhdGg7CkBAIC0xMjcsMTUgKzE4NSwzMCBAQCBzdGF0aWMgU3RyaW5n
IG9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcgogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKHJvb3RQYXRoLCB7IGVuY29kZWRUb3BPcmlnaW4sIGVuY29kZWRPcGVuaW5nT3JpZ2luIH0p
OwogfQogCitzdGF0aWMgU3RyaW5nIG9yaWdpbkZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGlyZWN0b3J5LCAib3JpZ2luIl9zKTsKK30KKwogT3JpZ2luU3RvcmFnZU1hbmFnZXImIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAogICAgIHJldHVybiAqbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5lbnN1cmUob3Jp
Z2luLCBbJl0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdl
cj4ob3JpZ2luUGF0aChtX3BhdGgsIG9yaWdpbiwgbV9zYWx0KSk7CisgICAgICAgIGF1dG8gb3Jp
Z2luRGlyZWN0b3J5ID0gb3JpZ2luRGlyZWN0b3J5UGF0aChtX3BhdGgsIG9yaWdpbiwgbV9zYWx0
KTsKKyAgICAgICAgd3JpdGVPcmlnaW5Ub0ZpbGVJZk5lY2Vzc2FyeShvcmlnaW5GaWxlUGF0aChv
cmlnaW5EaXJlY3RvcnkpLCBvcmlnaW4pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmln
aW5TdG9yYWdlTWFuYWdlcj4oV1RGTW92ZShvcmlnaW5EaXJlY3RvcnkpKTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVPcmln
aW5TdG9yYWdlTWFuYWdlcklmUG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCit7CisgICAgaWYgKGF1dG8gaXRlcmF0b3IgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXJzLmZpbmQob3JpZ2luKTsgaXRlcmF0b3IgIT0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2Vycy5lbmQoKSkgeworICAgICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS0+aXNBY3RpdmUoKSkK
KyAgICAgICAgICAgIG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMucmVtb3ZlKGl0ZXJhdG9y
KTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpwZXJzaXN0ZWQoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC0xNDcsNyArMjIwLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnBl
cnNpc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXQKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIob3JpZ2luKS5wZXJzaXN0KCk7CisgICAgbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLnNldFBlcnNpc3RlZCh0cnVlKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
IH0KIApAQCAtMTU2LDggKzIyOSwxMiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xl
YXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgYwogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIG1fbG9jYWxPcmlnaW5T
dG9yYWdlTWFuYWdlcnMuY2xlYXIoKTsKLSAgICAgICAgbV9zZXNzaW9uT3JpZ2luU3RvcmFnZU1h
bmFnZXJzLmNsZWFyKCk7CisgICAgICAgIC8vIFJlc2V0IHBlcnNpc3RlZCB2YWx1ZS4KKyAgICAg
ICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy52YWx1
ZXMoKSkKKyAgICAgICAgICAgIG1hbmFnZXItPnNldFBlcnNpc3RlZChmYWxzZSk7CisKKyAgICAg
ICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9zZXNzaW9uT3JpZ2luU3RvcmFnZU1hbmFnZXJzLnZh
bHVlcygpKQorICAgICAgICAgICAgbWFuYWdlci0+c2V0UGVyc2lzdGVkKGZhbHNlKTsKIAogICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTMw
Niw1ICszODMsMTY0IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRIYW5kbGUoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpGaWxlCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoaGFuZGxlLT5nZXRIYW5kbGUoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBXVEZNb3ZlKG5h
bWUpKSk7CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJz
aXRlRGF0YVR5cGUoY29uc3QgU3RyaW5nJiBzdG9yYWdlVHlwZSkKK3sKKyAgICBpZiAoc3RvcmFn
ZVR5cGUgPT0gIkZpbGVTeXN0ZW0iKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpG
aWxlU3lzdGVtOworCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmZvckVhY2hPcmlnaW5EaXJlY3RvcnkoY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mIGFwcGx5KQoreworICAgIGZvciAoYXV0byYgdG9wT3JpZ2luIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3BhdGgpKSB7CisgICAgICAgIGF1dG8gdG9wT3Jp
Z2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0
aCwgdG9wT3JpZ2luKTsKKyAgICAgICAgYXV0byBvcGVuaW5nT3JpZ2lucyA9IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKG9wZW5pbmdP
cmlnaW5zLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkodG9wT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yIChhdXRvJiBvcGVuaW5nT3JpZ2luIDogb3BlbmluZ09yaWdp
bnMpIHsKKyAgICAgICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIG9wZW5pbmdP
cmlnaW4pOworICAgICAgICAgICAgYXBwbHkob3BlbmluZ09yaWdpbkRpcmVjdG9yeSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK1ZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+IE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6ZmV0Y2hEYXRhRnJvbURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dGFyZ2V0VHlwZXMpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4+IG9yaWdpblR5cGVzOworICAgIGZvckVhY2hPcmlnaW5EaXJlY3RvcnkoWyZdKGF1dG8g
ZGlyZWN0b3J5KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBvcmlnaW4gPSByZWFkT3JpZ2luRnJv
bUZpbGUob3JpZ2luRmlsZVBhdGgoZGlyZWN0b3J5KSk7CisgICAgICAgIGlmICghb3JpZ2luKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoYXV0byYgc3RvcmFnZVR5cGUgOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIHR5cGUgPSB0b1dlYnNpdGVEYXRhVHlwZShzdG9yYWdlVHlwZSk7IHR5cGUgJiYgdGFyZ2V0
VHlwZXMuY29udGFpbnMoKnR5cGUpKSB7CisgICAgICAgICAgICAgICAgLy8gUmV0dXJuIGJvdGgg
dG9wIG9yaWdpbiBhbmQgb3BlbmluZyBvcmlnaW4gZm9yIHRoaXMgZGF0YS4KKyAgICAgICAgICAg
ICAgICBvcmlnaW5UeXBlcy5hZGQob3JpZ2luLT5jbGllbnRPcmlnaW4sIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHsgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgqdHlwZSk7CisgICAgICAgICAg
ICAgICAgb3JpZ2luVHlwZXMuYWRkKG9yaWdpbi0+dG9wT3JpZ2luLCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB7IH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoKnR5cGUpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiBl
bnRyaWVzOworICAgIGZvciAoYXV0byBbb3JpZ2luLCB0eXBlc10gOiBvcmlnaW5UeXBlcykgewor
ICAgICAgICBmb3IgKGF1dG8gdHlwZSA6IHR5cGVzKQorICAgICAgICAgICAgZW50cmllcy5hcHBl
bmQoeyBXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4sIHR5cGUsIDAgfSB9KTsKKyAgICB9CisK
KyAgICByZXR1cm4gZW50cmllczsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmZl
dGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVCghbV9jbG9z
ZWQpOworCisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCB0eXBlcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBlbnRyaWVzID0gZmV0Y2hEYXRhRnJv
bURpc2sodHlwZXMpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBlbnRyaWVzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
ZW50cmllcykpXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShlbnRyaWVzKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitWZWN0b3I8V2ViQ29y
ZTo6Q2xpZW50T3JpZ2luPiBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFPbkRpc2so
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VU
aW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpPiYg
ZmlsdGVyKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgVmVjdG9y
PFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gZGVsZXRlZE9yaWdpbnM7CisgICAgZm9yRWFjaE9yaWdp
bkRpcmVjdG9yeShbJl0oYXV0byBkaXJlY3RvcnkpIG11dGFibGUgeworICAgICAgICBhdXRvIGZp
bGVQYXRoID0gb3JpZ2luRmlsZVBhdGgoZGlyZWN0b3J5KTsKKyAgICAgICAgYXV0byBvcmlnaW4g
PSByZWFkT3JpZ2luRnJvbUZpbGUoZmlsZVBhdGgpOworICAgICAgICBpZiAoIW9yaWdpbikgewor
ICAgICAgICAgICAgLy8gSWYgb3JpZ2luIGNhbm5vdCBiZSByZXRyaWV2ZWQsIGJ1dCB3ZSBhcmUg
YXNrZWQgdG8gcmVtb3ZlIGRhdGEgZm9yIGFsbCBvcmlnaW5zLCByZW1vdmUgaXQuCisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpk
ZWxldGVEYXRhT25EaXNrIGZhaWxlZCB0byByZWFkIG9yaWdpbiBmcm9tICclcyciLCBmaWxlUGF0
aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlmIChmaWx0ZXIoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIHsgfSkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRlbXBPcmlnaW5TdG9yYWdlTWFu
YWdlciA9IG1ha2VVbmlxdWU8T3JpZ2luU3RvcmFnZU1hbmFnZXI+KFN0cmluZyB7IGRpcmVjdG9y
eSB9KTsKKyAgICAgICAgICAgICAgICB0ZW1wT3JpZ2luU3RvcmFnZU1hbmFnZXItPmRlbGV0ZURh
dGEodHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lKTsKKyAgICAgICAgICAgICAgICBkZWxldGVPcmln
aW5GaWxlSWZOZWNlc3NhcnkoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZpbHRlcigqb3JpZ2luKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkZWxldGVkT3JpZ2lucy5hcHBlbmQoKm9y
aWdpbik7CisgICAgICAgIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoKm9yaWdpbikuZGVsZXRl
RGF0YSh0eXBlcywgbW9kaWZpZWRTaW5jZVRpbWUpOworICAgICAgICByZW1vdmVPcmlnaW5TdG9y
YWdlTWFuYWdlcklmUG9zc2libGUoKm9yaWdpbik7CisgICAgICAgIGRlbGV0ZU9yaWdpbkZpbGVJ
Zk5lY2Vzc2FyeShmaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gZGVsZXRlZE9yaWdpbnM7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYgb3JpZ2lucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKCFt
X2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBvcmlnaW5zID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbnMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lu
U2V0OworICAgICAgICBvcmlnaW5TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcmlnaW5zLnNp
emUoKSk7CisgICAgICAgIGZvciAoYXV0byBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICAgICAg
b3JpZ2luU2V0LmFkZChXVEZNb3ZlKG9yaWdpbikpOworCisgICAgICAgIGRlbGV0ZURhdGFPbkRp
c2sodHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgWyZvcmlnaW5TZXRdKGF1dG8gb3JpZ2lu
KSB7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2luU2V0LmNvbnRhaW5zKG9yaWdpbi50b3BPcmln
aW4pIHx8IG9yaWdpblNldC5jb250YWlucyhvcmlnaW4uY2xpZW50T3JpZ2luKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlw
ZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICBBU1NFUlQoIW1fY2xvc2VkKTsKKworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIG1vZGlmaWVkU2luY2VUaW1lLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBkZWxldGVEYXRhT25EaXNrKHR5cGVzLCBtb2RpZmllZFNpbmNlVGltZSwgW10o
YXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9KTsKKworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgQVNTRVJUKCFtX2Nsb3NlZCk7CisKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHR5cGVzLCBkb21haW5zID0gY3Jvc3NUaHJlYWRD
b3B5KGRvbWFpbnMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGRlbGV0ZWRPcmlnaW5zID0gZGVsZXRlRGF0
YU9uRGlzayh0eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbJmRvbWFpbnNdKGF1dG8mIG9y
aWdpbikgeworICAgICAgICAgICAgYXV0byBkb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0KTsK
KyAgICAgICAgICAgIHJldHVybiBkb21haW5zLmNvbnRhaW5zKGRvbWFpbik7CisgICAgICAgIH0p
OworCisgICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRlbGV0ZWRE
b21haW5zOworICAgICAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGVsZXRlZE9yaWdpbnMpIHsKKyAg
ICAgICAgICAgIGF1dG8gZG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbi5jbGllbnRPcmlnaW4uaG9zdCk7CisgICAgICAgICAg
ICBkZWxldGVkRG9tYWlucy5hZGQoZG9tYWluKTsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFp
bnMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkZWxldGVkRG9tYWlucykpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zKSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oCmluZGV4IDViYzU2YjdjNjQ2YzZiMWZkN2FkNjRkZDQ4N2VkZjVkZWE2Mzkz
NGEuLjJhZGRmMmI1ZTIwYWQzNmQyOGU0NDU5N2VhNDEzZmZlODk2MWE0MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI4LDEwICsyOCwxMiBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtU3RvcmFnZUVycm9yLmgiCiAjaW5jbHVkZSAiT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbVN5bmNBY2Nlc3NIYW5k
bGVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsK
QEAgLTU1LDEzICs1NywyMiBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7CiAgICAg
dm9pZCBjbGVhclN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOworICAgIHZv
aWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
ZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwog
CiBwcml2YXRlOgogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBwYXRoKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgT3Jp
Z2luU3RvcmFnZU1hbmFnZXImIGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJik7CisgICAgdm9pZCByZW1vdmVPcmlnaW5TdG9yYWdlTWFuYWdlcklm
UG9zc2libGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeSYgZmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSgpOwog
CisgICAgdm9pZCBmb3JFYWNoT3JpZ2luRGlyZWN0b3J5KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+Jik7CisgICAgVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4gZmV0Y2hEYXRh
RnJvbURpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOworICAgIFZlY3RvcjxXZWJDb3Jl
OjpDbGllbnRPcmlnaW4+IGRlbGV0ZURhdGFPbkRpc2soT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIFdhbGxUaW1lLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYpPiYpOworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgKGltcGxlbWVudGVkIGJ5
IGdlbmVyYXRlZCBjb2RlKQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDRm
MDZmNDUyNDY1NjQ2ZDIwMTFiYzdmNTNiYmRiMjgxMTU5M2FhNDMuLjhjZDY1NWJlMjUwNWE1YjMz
NDZhYTMzNTVkZjhiMjY4MWYxMTVlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAt
NTEsMjAgKzUxLDU5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VN
YW5hZ2VyLT5jb25uZWN0aW9uQ2xvc2VkKGNvbm5lY3Rpb24pOwogICAgIH0KIAotICAgIFN0cmlu
ZyB0eXBlU3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllcikgY29uc3QK
KyAgICBlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdCB7CisgICAgICAgIEZpbGVTeXN0
ZW0sCisgICAgfTsKKworICAgIHN0YXRpYyBTdHJpbmcgdG9TdG9yYWdlSWRlbnRpZmllcihTdG9y
YWdlVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcm9vdFBhdGguaXNFbXB0eSgp
ID8gZW1wdHlTdHJpbmcoKSA6IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3Jvb3RQYXRoLCBzdG9yYWdlSWRlbnRpZmllcik7CisgICAgICAgIHN3aXRjaCAodHlwZSkgewor
ICAgICAgICBjYXNlIFN0b3JhZ2VUeXBlOjpGaWxlU3lzdGVtOgorICAgICAgICAgICAgcmV0dXJu
ICJGaWxlU3lzdGVtIl9zOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAi
Il9zOworICAgIH0KKworICAgIFN0cmluZyB0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGUgdHlw
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8gc3RvcmFnZUlkZW50aWZpZXIgPSB0b1N0b3Jh
Z2VJZGVudGlmaWVyKHR5cGUpOworICAgICAgICBpZiAobV9yb290UGF0aC5pc0VtcHR5KCkgfHwg
c3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX3Jvb3RQYXRoLCBzdG9yYWdlSWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgRmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyJiBmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0
b3JhZ2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCiAgICAgewogICAgICAgICBpZiAoIW1fZmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKQotICAgICAgICAgICAgbV9maWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXIgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcj4odHlwZVN0b3JhZ2VQ
YXRoKCJGaWxlU3lzdGVtIiksIHJlZ2lzdHJ5KTsKKyAgICAgICAgICAgIG1fZmlsZVN5c3RlbVN0
b3JhZ2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+KHR5cGVT
dG9yYWdlUGF0aChTdG9yYWdlVHlwZTo6RmlsZVN5c3RlbSksIHJlZ2lzdHJ5KTsKIAogICAgICAg
ICByZXR1cm4gKm1fZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOwogICAgIH0KIAorICAgIGJvb2wg
aXNBY3RpdmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9maWxlU3lzdGVtU3RvcmFnZU1h
bmFnZXI7CisgICAgfQorCisgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSkKKyAgICB7CisgICAgICAg
IGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkZpbGVTeXN0ZW0pKQorICAgICAg
ICAgICAgZGVsZXRlRmlsZVN5c3RlbVN0b3JhZ2VEYXRhKG1vZGlmaWVkU2luY2VUaW1lKTsKKyAg
ICB9CisKIHByaXZhdGU6CisgICAgdm9pZCBkZWxldGVGaWxlU3lzdGVtU3RvcmFnZURhdGEoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUpCisgICAgeworICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9y
YWdlTWFuYWdlciA9IG51bGxwdHI7CisKKyAgICAgICAgYXV0byBmaWxlU3lzdGVtU3RvcmFnZVBh
dGggPSB0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6OkZpbGVTeXN0ZW0pOworICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01vZGlmaWVkU2luY2UoZmlsZVN5c3RlbVN0b3JhZ2VQ
YXRoLCBtb2RpZmllZFNpbmNlVGltZSk7CisgICAgfQorCiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7
CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBTdG9yYWdlQnVja2V0TW9kZSBtX21vZGUg
eyBTdG9yYWdlQnVja2V0TW9kZTo6QmVzdEVmZm9ydCB9OwpAQCAtNzQsNiArMTEzLDcgQEAgcHJp
dmF0ZToKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdlTWFuYWdlcihTdHJpbmcm
JiBwYXRoKQogICAgIDogbV9wYXRoKFdURk1vdmUocGF0aCkpCiB7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiB9CiAKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjp+T3JpZ2luU3RvcmFn
ZU1hbmFnZXIoKSA9IGRlZmF1bHQ7CkBAIC05MiwxNSArMTMyLDI4IEBAIE9yaWdpblN0b3JhZ2VN
YW5hZ2VyOjpTdG9yYWdlQnVja2V0JiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tl
dCgpCiAgICAgcmV0dXJuICptX2RlZmF1bHRCdWNrZXQ7CiB9CiAKLXZvaWQgT3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OnBlcnNpc3QoKQorRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyJiBPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQogewotICAgIG1fcGVyc2lzdGVkID0gdHJ1ZTsKLSAgICBk
ZWZhdWx0QnVja2V0KCkuc2V0TW9kZShTdG9yYWdlQnVja2V0TW9kZTo6UGVyc2lzdGVudCk7Cisg
ICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0
cnkpOwogfQogCi1GaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3Ry
eSYgcmVnaXN0cnkpCitib29sIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjppc0FjdGl2ZSgpCiB7Ci0g
ICAgcmV0dXJuIGRlZmF1bHRCdWNrZXQoKS5maWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIocmVnaXN0
cnkpOworICAgIHJldHVybiBkZWZhdWx0QnVja2V0KCkuaXNBY3RpdmUoKTsKK30KKwordm9pZCBP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0eXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBkZWZhdWx0QnVja2V0KCkuZGVsZXRlRGF0YSh0eXBlcywgbW9kaWZp
ZWRTaW5jZSk7Cit9CisKK3ZvaWQgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OnNldFBlcnNpc3RlZChi
b29sIHZhbHVlKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgbV9w
ZXJzaXN0ZWQgPSB2YWx1ZTsKKyAgICBkZWZhdWx0QnVja2V0KCkuc2V0TW9kZSh2YWx1ZSA/IFN0
b3JhZ2VCdWNrZXRNb2RlOjpQZXJzaXN0ZW50IDogU3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZv
cnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKaW5k
ZXggYTRjMTFhZDY1YTVjMTk3MDNhN2MwZTkyOTRiYzJmZWFhYTJmZmUyZS4uN2FkZmE1YjAzYjZi
YTZlM2Y4Njk4MGIxMmQyZjhhNDRkOWU0ZTY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmgKQEAg
LTI4LDEwICsyOCwxNSBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENsaWVudE9y
aWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbGVTeXN0ZW1TdG9yYWdl
SGFuZGxlUmVnaXN0cnk7CiBjbGFzcyBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI7CitlbnVtIGNs
YXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogCiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFu
YWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MSwxNCArNDYsMTkgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQpOwogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7
IH0KLSAgICB2b2lkIHBlcnNpc3QoKTsKKyAgICB2b2lkIHNldFBlcnNpc3RlZChib29sIHZhbHVl
KTsKICAgICBGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXImIGZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdl
cihGaWxlU3lzdGVtU3RvcmFnZUhhbmRsZVJlZ2lzdHJ5Jik7CisgICAgYm9vbCBpc0FjdGl2ZSgp
OworICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRp
bWUpOwogCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RvcmFnZUJ1Y2tldE1vZGUgOiBib29s
OwogICAgIGNsYXNzIFN0b3JhZ2VCdWNrZXQ7CiAgICAgU3RvcmFnZUJ1Y2tldCYgZGVmYXVsdEJ1
Y2tldCgpOwogCisgICAgdm9pZCBjcmVhdGVPcmlnaW5GaWxlSWZOZWNlc3NhcnkoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgdm9pZCBkZWxldGVPcmlnaW5GaWxlSWZOZWNlc3Nh
cnkoKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNr
ZXQ7CiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApp
bmRleCBmMzcyOTAxMzhiNGZhZmYzMjM1M2IyYWNkYWRlODM0MDBkYTljYzhhLi5mOWIyZmUwNDA5
ZGM0MzBiMWQzZDNhZWIwMGU3NmIwMGIzZjA1NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCkBAIC0xMjksNiArMTI5LDggQEAgV2Vi
c2l0ZURhdGFQcm9jZXNzVHlwZSBXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKFdlYnNpdGVEYXRh
VHlwZSBkYXRhVHlwZSkKICAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2
aWNlczoKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAj
ZW5kaWYKKyAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbToKKyAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAgICAgfQogCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKaW5kZXggN2E5ZTUwMGZlMWIwOWUzODk1ZGQ3NDNl
MTY1Yzk4OTE4YmU3YThkYi4uZTQ1OWEwOTAzOGE0OGExOTg2ZDZkMzM5NjY0MzMyODMzNzVhNDU0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFUeXBlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFUeXBlLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1
aW50MzJfdCB7CiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKICAgICBB
bHRlcm5hdGl2ZVNlcnZpY2VzID0gMSA8PCAxOCwKICNlbmRpZgorICAgIEZpbGVTeXN0ZW0gPSAx
IDw8IDE5LAogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkBAIC03OSwxMCArODAsMTEgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gewog
I2VuZGlmCiAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwKICAgICAg
ICAgV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRldmljZUlkSGFzaFNhbHQsCi0gICAgICAgIFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMKKyAgICAgICAg
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cywKICNpZiBI
QVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgICAgICAsIFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzCisgICAgICAgIFdlYktpdDo6V2Vic2l0
ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLAogI2VuZGlmCisgICAgICAgIFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpGaWxlU3lzdGVtCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0K
aW5kZXggYzgyNjE2Zjc5MGM2ZmM2OTBhNmNiZDY5N2EwZThlY2RhNTIyN2ZiMS4uZmExMTEzZTQ3
YzJhNDQ0MTRiZDJhZGQxOTJkMDJlNzUwN2YzMjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAgLTUx
LDYgKzUxLDcgQEAgTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFs
cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMKIE5TU3RyaW5nICogY29uc3QgX1dL
V2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBl
QWRDbGlja0F0dHJpYnV0aW9ucyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlw
ZVByaXZhdGVDbGlja01lYXN1cmVtZW50cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0
ZXJuYXRpdmVTZXJ2aWNlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNl
cyI7CitOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0gPSBAIl9X
S1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0iOwogCiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0
YVR5cGVQbHVnSW5EYXRhIjsKQEAgLTExMCw2ICsxMTEsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRh
dGFUeXBlc1RvU3RyaW5nKE5TU2V0ICpkYXRhVHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmpl
Y3Q6QCJQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50cyJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNv
bnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQogICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiQWx0ZXJuYXRpdmUgU2VydmljZXMiXTsKKyAgICBpZiAo
W2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXSkK
KyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkZpbGUgU3lzdGVtIl07CiAKICAgICByZXR1cm4g
W2FycmF5IGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiwgIl07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZEludGVybmFsLmgKaW5kZXggZGJjNWYzZjdhMWZmNGZiNzQ5YWFmZDcwZTU3MGJhMDQ4NTY4
YWNkNi4uOTE0NDhlZTFkNTUxZGU0MjA2NTg2N2I4MTVkYmRmMWRlZmE3NWMyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkSW50ZXJuYWwuaApAQCAtNzcsNiArNzcsOCBAQCBzdGF0aWMgaW5saW5lIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0cmluZyAq
d2Vic2l0ZQogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tXZWJz
aXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVE
YXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczsKICNlbmRpZgorICAgIGlmIChbd2Vic2l0ZURh
dGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXSkKKyAg
ICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbTsKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCkBAIC0xMzQsNiArMTM2LDggQEAgc3RhdGljIGlubGluZSBSZXRhaW5Q
dHI8TlNTZXQ+IHRvV0tXZWJzaXRlRGF0YVR5cGVzKE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVE
YXQKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFs
dGVybmF0aXZlU2VydmljZXMpKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVj
dDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXTsKICNlbmRpZgorICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RmlsZVN5c3RlbSkp
CisgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlw
ZUZpbGVTeXN0ZW1dOwogCiAgICAgcmV0dXJuIHdrV2Vic2l0ZURhdGFUeXBlczsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRQcml2YXRlLmgKaW5kZXggZDYwN2RmZTEzZjYxMmI1ODIyMGU1YTM1MjU3NzQ3
MDUzMWVlNDkwNy4uMmNmOWE0ZDJhMGM3ZmNlMjViNjUwNmFjMTdiZDcxMTE3Yzk3NTFlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAgV0tfRVhURVJOIE5T
U3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlw
ZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1
LjApKTsKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVy
bmF0aXZlU2VydmljZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsK
K1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW0g
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAog
I2lmICFUQVJHRVRfT1NfSVBIT05FCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJz
aXRlRGF0YVR5cGVQbHVnSW5EYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCmluZGV4IGUyYjA3MzY0NjRiMTY2ZGQ5MjBjZjM1NTE3MWZiM2E1NjM3MGEzODQu
LjdlZjA2OTUwYWIwN2QzZTFhNzYxNmNiY2I1OGJkMjU3ODUzNTllYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQpAQCAtMjQ4LDcgKzI0OCw4IEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVE
YXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVD
cmVkZW50aWFscywKICAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1
dGlvbnMsCiAgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHMsCi0gICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
CisgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzLAorICAg
ICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlRmlsZVN5c3RlbQogI2lmICFUQVJHRVRfT1NfSVBI
T05FCiAgICAgICAgICAgICAsIF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZGRhMTc0OTI5YjA5NDVjMTZiNzRkMDg4YWY5MGM3MzRhM2FkMTdkOS4uOGI0YTQ2ZDAzM2MxMGZj
Zjc3MGU3NTBlOTMwOWE3YjYxMGM3ZmZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTA0LDYgKzE1MDQsOSBAQAogCQk5M0Q2QjdC
NTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjIy
NTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAq
LzsgfTsKIAkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZB
NEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNFNzk5ODUyNzU2RkE1NTAwNzQw
MDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U3OTk4MjI3
NTZGQTU0MDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNFNzk5ODcyNzU2RkFCNDAwNzQwMDhBIC8qIFdlYkZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNzk5ODMyNzU2RkE1NDAwNzQwMDhBIC8q
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oICovOyB9Owor
CQk5M0U3OTk4ODI3NTZGQUMyMDA3NDAwOEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRTc5OTgxMjc1NkZBNTMwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmln
dXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
IAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0
MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwogCQk5NTY1MDgz
OTI2RDg3QTJCMDBFMTVDQjcgLyogQXBwbGVNZWRpYVNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTY1MDgzNzI2RDg3QTJCMDBFMTVD
QjcgLyogQXBwbGVNZWRpYVNlcnZpY2VzU1BJLmggKi87IH07CkBAIC01MzIyLDYgKzUzMjUsMTAg
QEAKIAkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RS
ZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3Vs
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0U3OTk3RTI3NTZGNjcwMDA3NDAw
OEEgLyogV2ViRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNzk5ODEyNzU2RkE1MzAwNzQwMDhB
IC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTc5OTgyMjc1NkZBNTQwMDc0
MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNFNzk5ODMyNzU2RkE1NDAwNzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29u
bmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25h
cHNob3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
U25hcHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjU0OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBGMjg3RTI1MjQxNEU5MDBC
NzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBwYXRoID0gaW9zL1dLTW91c2VEZXZp
Y2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2MjcsNiArMTA2
MzQsNyBAQAogCQkJCUJDMDMyRDY4MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJFZGl0b3JDbGllbnQu
aCAqLywKIAkJCQk5MzU0MjQyQjI3MDNCRENCMDA1Q0E3MkMgLyogV2ViRmlsZVN5c3RlbVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk5MzU0MjQyQTI3MDNCRENCMDA1Q0E3MkMgLyogV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmggKi8sCisJCQkJOTNFNzk5N0UyNzU2RjY3MDAw
NzQwMDhBIC8qIFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywK
IAkJCQlCQzExMUE1ODExMkY0RkJCMDAzMzdCQUIgLyogV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
ICovLAogCQkJCUJDMDMyRDZBMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJGcmFtZUxvYWRlckNsaWVu
dC5oICovLAogCQkJCUJDMUJFMURGMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAgKi8sCkBAIC0xMjEwNCw2ICsxMjExMiw5IEBACiAJCQkJRTM4NjZCMDcyMzk5OTc5
RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5o
ICovLAogCQkJCUUzODY2QjA0MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUzODY2QjA1
MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHlNZXNzYWdlcy5oICovLAorCQkJCTkzRTc5OTgyMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTkzRTc5
OTgxMjc1NkZBNTMwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNz
YWdlcy5oICovLAorCQkJCTkzRTc5OTgzMjc1NkZBNTQwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVt
U3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQlDRDczQkE0ODEzMUFD
RDhFMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAogCQkJCUNENzNCQTQ5MTMxQUNEOEUwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1l
c3NhZ2VzLmggKi8sCiAJCQkJQ0Q3M0JBNDUxMzFBQ0M4ODAwRUVERUQyIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTMzNTAsNiArMTMzNjEs
OCBAQAogCQkJCUJDMDMyREJCMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTExQjVEMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVu
dEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTQyNDJDMjcwM0JEQ0IwMDVDQTcyQyAv
KiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
RTc5OTg4Mjc1NkZBQzIwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFNzk5ODcyNzU2RkFCNDAwNzQwMDhBIC8q
IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE5MEMxRUUxMjY0RkQ1MDAwM0U0NEQ0IC8qIFdlYkZpbmRPcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0Njk1NDEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNDY5NTYxMjE0RTZDQjAwMEI5OEVCIC8qIFdl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTQ3OCw2
ICsxNTQ5MSw3IEBACiAJCQkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzODY2
QjA5MjM5OUEyRDUwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODkyMTJC
NkFCMTAwRjQ5M0ZEIC8qIFdlYkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzRTc5OTg1
Mjc1NkZBNTUwMDc0MDA4QSAvKiBXZWJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNEUxMzFBQ0RCNzAwRUVERUQy
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNENzNCQTQ3MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MDYxMTJENkJB
OTEwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYx
M2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi45NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcyYTM5
YTk4OTU1ZmQ0NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDgg
QEAKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkNv
b2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
IldlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0
ZW1TdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNp
bmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAtMTE5LDYgKzEyMSwxMCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUAogICAgICAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViRmlsZVN5c3Rl
bVN0b3JhZ2VDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkuZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKICNpZiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUlRDTW9uaXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmVjZGNmN2Q5ZDUxNTdjZjgzYmJiMjQzMzQwZWFlOGYz
NTdjYjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21l
c3NhZ2VzIC0+IFdlYkZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsK
KyAgICBJbnZhbGlkYXRlQWNjZXNzSGFuZGxlKFdlYkNvcmU6OkZpbGVTeXN0ZW1TeW5jQWNjZXNz
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyKQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVjNzE1YjkyMWU4YTE3NzUxODE4YmE2NDg5Mjlm
YjcyMWViZTc4MTUuLjA4N2ZlZjAzOTI2NTMyYzk5ZjIwYmU2MDVlMWE0ODk1MzY0YjFkZGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMS0xMi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBGZXRjaCBhbmQgcmVtb3ZlIGZpbGUgc3lzdGVtIGRhdGEgdmlhIFdLV2Vic2l0ZURh
dGFTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjAyOTE4NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tOgorCiAyMDIxLTEyLTA2ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0ZXN0cyBmb3IgZHVwbGljYXRlIHN1YiBkb21haW5zCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3MubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbGVTeXN0ZW1BY2Nlc3Mu
bW0KaW5kZXggN2JiZTNjOWY2MmMxZDk3YzMxOTU1MmExOTAzZDkxNWFkNWY3YTIxYS4uNjYwNzc0
YTkxNzIzMWEyMzA2YjVkNjI2ZDdmYjVmZGE4ZmJiMzE5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaWxlU3lzdGVtQWNjZXNzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmlsZVN5c3RlbUFjY2Vzcy5tbQpA
QCAtMjksMTEgKzI5LDEzIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZp
ZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFSZWNvcmRQ
cml2YXRlLmg+CiAKIEBpbnRlcmZhY2UgRmlsZVN5c3RlbUFjY2Vzc01lc3NhZ2VIYW5kbGVyIDog
TlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5kCkBAIC00OCw3ICs1MCw3IEBA
IC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAq
KXVzZXJDb250ZW50Q29udHJvbGxlciBkCiAKIEBlbmQKIAotc3RhdGljIE5TU3RyaW5nICptYWlu
RnJhbWVTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKK3N0YXRpYyBOU1N0cmluZyAqd29ya2VyRnJhbWVT
dHJpbmcgPSBAIjxzY3JpcHQ+IFwKICAgICBmdW5jdGlvbiBzdGFydCgpIHsgXAogICAgICAgICB2
YXIgd29ya2VyID0gbmV3IFdvcmtlcignd29ya2VyLmpzJyk7IFwKICAgICAgICAgd29ya2VyLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7IFwKQEAgLTExNSw3ICsxMTcsNyBAQCBURVNUKEZp
bGVTeXN0ZW1BY2Nlc3MsIFdlYlByb2Nlc3NDcmFzaER1cmluZ1dyaXRlKQogICAgIFtjb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hl
bWU6QCJ3ZWJraXQiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
bWFpbkZyYW1lU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93
ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOndvcmtlckZyYW1lU3Ry
aW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1d
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
ICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJwYWdlIGlzIGxvYWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CkBAIC0xMjYsNyAr
MTI4LDcgQEAgVEVTVChGaWxlU3lzdGVtQWNjZXNzLCBXZWJQcm9jZXNzQ3Jhc2hEdXJpbmdXcml0
ZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJzdWNjZXNzOiB3cml0ZSAxMCBieXRlcyIsIFtsYXN0
U2NyaXB0TWVzc2FnZSBib2R5XSk7CiAKICAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFtzZWNvbmRXZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbc2Vjb25kV2ViVmlldyBsb2Fk
SFRNTFN0cmluZzp3b3JrZXJGcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAid2Via2l0Oi8vd2Via2l0Lm9yZyJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicGFnZSBpcyBsb2FkZWQiLCBbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV0pOwpAQCAtMTY4LDcgKzE3MCw3IEBAIFRFU1QoRmlsZVN5c3RlbUFjY2Vzcywg
TmV0d29ya1Byb2Nlc3NDcmFzaER1cmluZ1dyaXRlKQogICAgIFtjb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ3ZWJraXQi
XTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkZyYW1lU3Ry
aW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1d
OworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOndvcmtlckZyYW1lU3RyaW5nIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly93ZWJraXQub3JnIl1dOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwYWdlIGlzIGxv
YWRlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CkBAIC0yNTgsNCArMjYwLDE5NiBAQCBU
RVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIE1pZ3JhdGVUb05ld1N0b3JhZ2VEaXJlY3RvcnkpCiAgICAg
RVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9k
eV0pOwogfQogCitzdGF0aWMgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKKyAg
ICBhc3luYyBmdW5jdGlvbiBvcGVuKHNob3VsZENyZWF0ZUZpbGUpIFwKKyAgICB7IFwKKyAgICAg
ICAgdHJ5IHsgXAorICAgICAgICAgICAgdmFyIHJvb3RIYW5kbGUgPSBhd2FpdCBuYXZpZ2F0b3Iu
c3RvcmFnZS5nZXREaXJlY3RvcnkoKTsgXAorICAgICAgICAgICAgdmFyIGZpbGVIYW5kbGUgPSBh
d2FpdCByb290SGFuZGxlLmdldEZpbGVIYW5kbGUoJ2ZpbGUtc3lzdGVtLWFjY2Vzcy50eHQnLCB7
ICdjcmVhdGUnIDogc2hvdWxkQ3JlYXRlRmlsZSB9KTsgXAorICAgICAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2ZpbGUgaXMgb3Bl
bmVkJyk7IFwKKyAgICAgICAgfSBjYXRjaChlcnIpIHsgXAorICAgICAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2Vycm9yOiAnICsg
ZXJyLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlKTsgXAorICAgICAgICB9IFwKKyAgICB9IFwK
KyAgICBvcGVuKHRydWUpOyBcCisgICAgPC9zY3JpcHQ+IjsKKworVEVTVChGaWxlU3lzdGVtQWNj
ZXNzLCBGZXRjaEFuZFJlbW92ZURhdGEpCit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
W0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAg
ICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3Jl
XTsKKyAgICBhdXRvIHR5cGVzID0gW05TU2V0IHNldFdpdGhPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlRmlsZVN5c3RlbV07CisKKyAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGF0YS4KKyAgICBkb25l
ID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMg
bW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeIHsK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMuX2ZpbGVTeXN0ZW1BY2Nlc3NFbmFibGVkID0gWUVT
OworICAgIHByZWZlcmVuY2VzLl9zdG9yYWdlQVBJRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnRlc3RTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZmlsZSBpcyBvcGVuZWQiLCBbbGFz
dFNjcmlwdE1lc3NhZ2UgYm9keV0pOworCisgICAgLy8gRmV0Y2ggZGF0YSBhbmQgcmVtb3ZlIGl0
IGJ5IG9yaWdpbi4KKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdL
V2Vic2l0ZURhdGFSZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgRVhQRUNUX0VRKHJlY29y
ZHMuY291bnQsIDF1KTsKKyAgICAgICAgYXV0byByZWNvcmQgPSBbcmVjb3JkcyBvYmplY3RBdElu
ZGV4OjBdOworICAgICAgICBFWFBFQ1RfU1RSRVEoIndlYmtpdC5vcmciLCBbcmVjb3JkLmRpc3Bs
YXlOYW1lIFVURjhTdHJpbmddKTsKKworICAgICAgICAvLyBSZW1vdmUgZGF0YS4KKyAgICAgICAg
W3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgZm9yRGF0YVJlY29yZHM6
cmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisKKyAgICAvLyBGZXRjaCBkYXRhIGFmdGVyIHJlbW92YWwuCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJzaXRlRGF0YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7
CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAwdSk7CisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworCisgICAgLy8gRmlsZSBjYW5ub3QgYmUgb3BlbmVkIGFmdGVyIGRhdGEg
cmVtb3ZhbC4KKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJvcGVuKGZhbHNlKSIg
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZXJyb3I6IE5vdEZvdW5kRXJyb3IgLSBUaGUgb2JqZWN0
IGNhbiBub3QgYmUgZm91bmQgaGVyZS4iLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworfQor
CitURVNUKEZpbGVTeXN0ZW1BY2Nlc3MsIFJlbW92ZURhdGFCeU1vZGlmaWNhdGlvblRpbWUpCit7
CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLl9maWxlU3lzdGVtQWNjZXNz
RW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3RvcmFnZUFQSUVuYWJsZWQgPSBZRVM7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0U3RyaW5nIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmciXV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIEVYUEVDVF9XS19TVFJFUShAImZpbGUgaXMg
b3BlbmVkIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKworICAgIGF1dG8gd2Vic2l0ZURh
dGFTdG9yZSA9IFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdOworICAgIGF1dG8gdHlw
ZXMgPSBbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVGaWxlU3lzdGVtXTsK
KyAgICBkb25lID0gZmFsc2U7CisgICAgX19ibG9jayBOU1VJbnRlZ2VyIHJlY29yZHNDb3VudDsK
KyAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp0eXBlcyBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3Jkcykg
eworICAgICAgICByZWNvcmRzQ291bnQgPSByZWNvcmRzLmNvdW50OworICAgICAgICBFWFBFQ1Rf
R1QocmVjb3Jkc0NvdW50LCAwdSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgW3dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMgbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIG5vd10gY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIFt3ZWJzaXRlRGF0
YVN0b3JlIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOnR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgICAgICBy
ZWNvcmRzQ291bnQgPSByZWNvcmRzLmNvdW50OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlY29y
ZHMuY291bnQsIHJlY29yZHNDb3VudCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBl
czp0eXBlcyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4geworICAgICAgICBbd2Vic2l0ZURhdGFTdG9yZSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czp0eXBlcyBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAq
PiAqcmVjb3JkcykgeworICAgICAgICAgICAgRVhQRUNUX0VRKHJlY29yZHMuY291bnQsIDB1KTsK
KyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitzdGF0aWMgTlNTdHJpbmcgKm1haW5G
cmFtZVN0cmluZyA9IEAiPHNjcmlwdD4gXAorICAgIGZ1bmN0aW9uIHBvc3RSZXN1bHQoZXZlbnQp
IFwKKyAgICB7IFwKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IFwKKyAgICB9IFwKKyAgICBhZGRFdmVudExp
c3RlbmVyKCdtZXNzYWdlJywgcG9zdFJlc3VsdCwgZmFsc2UpOyBcCisgICAgPC9zY3JpcHQ+IFwK
KyAgICA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS8nPiI7CisKK3N0YXRpYyBj
b25zdCBjaGFyKiBmcmFtZUJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCis8c2NyaXB0PgorZnVuY3Rp
b24gcG9zdE1lc3NhZ2UobWVzc2FnZSkKK3sKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2UobWVzc2Fn
ZSwgJyonKTsKK30KK2FzeW5jIGZ1bmN0aW9uIG9wZW4oKQoreworICAgIHRyeSB7CisgICAgICAg
IHZhciByb290SGFuZGxlID0gYXdhaXQgbmF2aWdhdG9yLnN0b3JhZ2UuZ2V0RGlyZWN0b3J5KCk7
CisgICAgICAgIHZhciBmaWxlSGFuZGxlID0gYXdhaXQgcm9vdEhhbmRsZS5nZXRGaWxlSGFuZGxl
KCdmaWxlLXN5c3RlbS1hY2Nlc3MudHh0JywgeyAnY3JlYXRlJyA6IHRydWUgfSk7CisgICAgICAg
IHBvc3RNZXNzYWdlKCdmaWxlIGlzIG9wZW5lZCcpOworICAgIH0gY2F0Y2goZXJyKSB7CisgICAg
ICAgIHBvc3RNZXNzYWdlKCdlcnJvcjogJyArIGVyci5uYW1lICsgJyAtICcgKyBlcnIubWVzc2Fn
ZSk7CisgICAgfQorfQorb3BlbigpOworPC9zY3JpcHQ+CispVEVTVFJFU09VUkNFIjsKKworVEVT
VChGaWxlU3lzdGVtQWNjZXNzLCBGZXRjaERhdGFGb3JUaGlyZFBhcnR5KQoreworICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgZnJhbWVCeXRl
cyB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
LCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBo
YW5kbGVyID0gYWRvcHROUyhbW0ZpbGVTeXN0ZW1BY2Nlc3NNZXNzYWdlSGFuZGxlciBhbGxvY10g
aW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07Cisg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBw
cmVmZXJlbmNlcy5fZmlsZVN5c3RlbUFjY2Vzc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5j
ZXMuX3N0b3JhZ2VBUElFbmFibGVkID0gWUVTOworCisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3Jl
ID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV07CisgICAgYXV0byB0eXBlcyA9IFtO
U1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUZpbGVTeXN0ZW1dOworICAgIGRv
bmUgPSBmYWxzZTsKKyAgICBbd2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBl
cyBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4g
eworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW25hdmlnYXRpb25E
ZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcg
KiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJh
Y2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFs
ICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1
c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworICAgIFtuYXZpZ2F0aW9uRGVsZWdh
dGUgc2V0RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpbJl0oV0tOYXZpZ2F0aW9uQWN0
aW9uICphY3Rpb24sIHZvaWQgKF5kZWNpc2lvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSkpIHsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93KTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1h
aW5GcmFtZVN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJr
aXQub3JnIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJmaWxlIGlzIG9wZW5lZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisK
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jk
c09mVHlwZXM6dHlwZXMgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFS
ZWNvcmQgKj4gKnJlY29yZHMpIHsKKyAgICAgICAgLy8gU2hvdWxkIHJldHVybiBib3RoIG9wZW5p
bmcgb3JpZ2luIGFuZCB0b3Agb3JpZ2luLgorICAgICAgICBFWFBFQ1RfRVEocmVjb3Jkcy5jb3Vu
dCwgMnUpOworICAgICAgICBhdXRvIHNvcnRGdW5jdGlvbiA9IF4oV0tXZWJzaXRlRGF0YVJlY29y
ZCAqcmVjb3JkMSwgV0tXZWJzaXRlRGF0YVJlY29yZCAqcmVjb3JkMil7CisgICAgICAgICAgICBy
ZXR1cm4gW3JlY29yZDEuZGlzcGxheU5hbWUgY29tcGFyZTpyZWNvcmQyLmRpc3BsYXlOYW1lXTsK
KyAgICAgICAgfTsKKyAgICAgICAgYXV0byBzb3J0ZWRSZWNvcmRzID0gW3JlY29yZHMgc29ydGVk
QXJyYXlVc2luZ0NvbXBhcmF0b3I6c29ydEZ1bmN0aW9uXTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKEAiMTI3LjAuMC4xIiwgW3NvcnRlZFJlY29yZHMgb2JqZWN0QXRJbmRleDowXS5kaXNwbGF5
TmFtZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShAIndlYmtpdC5vcmciLCBbc29ydGVkUmVj
b3JkcyBvYmplY3RBdEluZGV4OjFdLmRpc3BsYXlOYW1lKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogI2Vu
ZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>