<?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>236611</bug_id>
          
          <creation_ts>2022-02-14 14:54:37 -0800</creation_ts>
          <short_desc>Migrate IndexedDB and LocalStorage data to GeneralStorageDirectory</short_desc>
          <delta_ts>2022-02-22 16:44:22 -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>Website Storage</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=237065</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>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1841418</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-14 14:54:37 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841429</commentid>
    <comment_count>1</comment_count>
      <attachid>451947</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-14 15:24:11 -0800</bug_when>
    <thetext>Created attachment 451947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841951</commentid>
    <comment_count>2</comment_count>
      <attachid>451947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-15 14:41:13 -0800</bug_when>
    <thetext>Comment on attachment 451947
Patch

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

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:181
&gt;          auto files = FileSystem::listDirectory(m_rootPath);

Can we please add an assertion that this is called off the main thread given that it does file system operations?

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:193
&gt; +        FileSystem::deleteEmptyDirectory(currentIDBStoragePath);

I will say it is fishy that a function called &quot;isEmpty()&quot; tries to remove a directory on disk (even an empty one).

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:247
&gt; +        if (!m_resolvedIDBStoragePath.isNull())

Can we please add an assertion that this is called off the main thread given that it does file system operations?

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:251
&gt; +            ASSERT(!(m_customIDBStoragePath.isEmpty() ^ m_rootPath.isEmpty()));

Odd to be using ^ here. Would this be identical:
`ASSERT(m_customIDBStoragePath.isEmpty() == m_rootPath.isEmpty()));` ?

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:359
&gt; +            ASSERT(!(m_customLocalStoragePath.isEmpty() ^ m_rootPath.isEmpty()));

Ditto. Not very readable.

&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:79
&gt; +    bool m_useCustomPaths;

Can we move all the booleans together and at the end for better packing?

&gt; Source/WebKit/Shared/WebsiteDataStoreParameters.cpp:165
&gt; +    parameters.useCustomStoragePaths = WTFMove(*useCustomStoragePaths);

No WTFMove() for a boolean.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:135
&gt; +    bool useCustomStoragePaths() const { return m_useCustomStoragePaths; }

This is not a good name for a getter, this is why we usually have prefixes for getters in Webkit.
For example, I think we would usually name this `shouldUseCustomStoragePaths`. Alternatively, at the WebKit API layer, we also use things like &quot;usesCustomStoragePaths()&quot;. &quot;useCustomStoragePage()&quot; for a getter is confusing though.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:210
&gt; +    bool m_useCustomStoragePaths { true };

Ditto about naming.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:851
&gt; +        configuration = nil;

These 3 commands should not be needed since they are scope local and we&apos;re about to go out of scope.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:934
&gt; +        configuration = nil;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841984</commentid>
    <comment_count>3</comment_count>
      <attachid>451947</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-15 15:43:13 -0800</bug_when>
    <thetext>Comment on attachment 451947
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:181
&gt;&gt;          auto files = FileSystem::listDirectory(m_rootPath);
&gt; 
&gt; Can we please add an assertion that this is called off the main thread given that it does file system operations?

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:193
&gt;&gt; +        FileSystem::deleteEmptyDirectory(currentIDBStoragePath);
&gt; 
&gt; I will say it is fishy that a function called &quot;isEmpty()&quot; tries to remove a directory on disk (even an empty one).

I will change it to check if the idb directory has any files in it.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:247
&gt;&gt; +        if (!m_resolvedIDBStoragePath.isNull())
&gt; 
&gt; Can we please add an assertion that this is called off the main thread given that it does file system operations?

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:251
&gt;&gt; +            ASSERT(!(m_customIDBStoragePath.isEmpty() ^ m_rootPath.isEmpty()));
&gt; 
&gt; Odd to be using ^ here. Would this be identical:
&gt; `ASSERT(m_customIDBStoragePath.isEmpty() == m_rootPath.isEmpty()));` ?

Sure.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:359
&gt;&gt; +            ASSERT(!(m_customLocalStoragePath.isEmpty() ^ m_rootPath.isEmpty()));
&gt; 
&gt; Ditto. Not very readable.

Will change.

&gt;&gt; Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:79
&gt;&gt; +    bool m_useCustomPaths;
&gt; 
&gt; Can we move all the booleans together and at the end for better packing?

Okay.

&gt;&gt; Source/WebKit/Shared/WebsiteDataStoreParameters.cpp:165
&gt;&gt; +    parameters.useCustomStoragePaths = WTFMove(*useCustomStoragePaths);
&gt; 
&gt; No WTFMove() for a boolean.

Will remove.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:135
&gt;&gt; +    bool useCustomStoragePaths() const { return m_useCustomStoragePaths; }
&gt; 
&gt; This is not a good name for a getter, this is why we usually have prefixes for getters in Webkit.
&gt; For example, I think we would usually name this `shouldUseCustomStoragePaths`. Alternatively, at the WebKit API layer, we also use things like &quot;usesCustomStoragePaths()&quot;. &quot;useCustomStoragePage()&quot; for a getter is confusing though.

Will change to shouldUseCustomStoragePaths.

&gt;&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:210
&gt;&gt; +    bool m_useCustomStoragePaths { true };
&gt; 
&gt; Ditto about naming.

Will change.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:851
&gt;&gt; +        configuration = nil;
&gt; 
&gt; These 3 commands should not be needed since they are scope local and we&apos;re about to go out of scope.

Sure.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:934
&gt;&gt; +        configuration = nil;
&gt; 
&gt; ditto.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842104</commentid>
    <comment_count>4</comment_count>
      <attachid>452130</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-15 20:35:19 -0800</bug_when>
    <thetext>Created attachment 452130
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842105</commentid>
    <comment_count>5</comment_count>
      <attachid>452131</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-15 20:35:57 -0800</bug_when>
    <thetext>Created attachment 452131
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842141</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 22:49:17 -0800</bug_when>
    <thetext>Committed r289878 (247316@main): &lt;https://commits.webkit.org/247316@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452131.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842143</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-15 22:50:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/89008688&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451947</attachid>
            <date>2022-02-14 15:24:11 -0800</date>
            <delta_ts>2022-02-15 20:35:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236611-20220214152410.patch</filename>
            <type>text/plain</type>
            <size>55868</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM1NmQ3NjE4OWI0ZThlN2E4
YjE5NmQ3M2JjMTZmZjk0ZTlmMGEyMzMuLjE4NTk2OTJiMWU4NWIzNDczMDU2ODEwZGNkNzhjNzUw
YzZmZTRjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjItMDItMTQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBJbmRleGVkREIgYW5k
IExvY2FsU3RvcmFnZSBkYXRhIHRvIEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgcGFyYW1ldGVy
IHVzZUN1c3RvbVN0b3JhZ2VQYXRocyBvbiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiB0
byBzcGVjaWZ5IHdoZXRoZXIgV2ViS2l0IHNob3VsZCB1c2UgCisgICAgICAgIGN1c3RvbSBzdG9y
YWdlIHBhdGhzLiBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgV2ViS2l0IHdpbGwga2VlcCB1c2luZyB0
aGUgY3VzdG9tIGxvY2FsU3RvcmFnZURpcmVjdG9yeSBhbmQgCisgICAgICAgIGluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5IHBhdGhzIGFzIGl0IGlzIG5vdy4gSWYgdGhlIHZhbHVlIGlzIGZhbHNl
LCBXZWJLaXQgd2lsbCBtaWdyYXRlIGRhdGEgZnJvbSAKKyAgICAgICAgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5IGFuZCBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSB0byBuZXcgcGF0aHMgc2V0IGJ5
IFdlYktpdCB1bmRlciBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeS4KKworICAgICAgICBBUEkgdGVz
dDogV2ViS2l0Lk1pZ3JhdGVMb2NhbFN0b3JhZ2VEYXRhVG9HZW5lcmFsU3RvcmFnZURpcmVjdG9y
eQorICAgICAgICAgICAgICAgICAgV2ViS2l0Lk1pZ3JhdGVJbmRleGVkREJEYXRhVG9HZW5lcmFs
U3RvcmFnZURpcmVjdG9yeQorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFT
dG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpvcmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
b3JpZ2luRmlsZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdp
blN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpTdG9yYWdlQnVja2V0KToKKyAgICAgICAg
KFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmxvY2FsU3RvcmFn
ZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6aWRiU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6Ok9y
aWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0
b3JhZ2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3Jh
Z2VCdWNrZXQ6OmZldGNoRGF0YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlTG9jYWxTdG9yYWdl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVj
a2V0OjpkZWxldGVJREJTdG9yYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgpOgorICAg
ICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6b3JpZ2luRmlsZUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1
Y2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tl
dDo6aXNFbXB0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gdXNlQ3VzdG9tU3RvcmFnZVBhdGhzXSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldFVzZUN1c3RvbVN0b3JhZ2VQ
YXRoczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OnVzZUN1c3RvbVN0b3JhZ2VQYXRocyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRVc2VDdXN0b21TdG9yYWdl
UGF0aHMpOgorCiAyMDIyLTAyLTEzICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIG5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDNmNjZlM2Vi
MzQ0OWViOGVkYTc3MWMzZTA5NGJkMWFhZmZhYzQ5MmQuLjYxYjJmMDQ2OWNlMDdkNTI3YzNkMDIy
YzU2OTRmODM0Yjc5NDI4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00MDMsNyArNDAzLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMKICAgICBhZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFt
ZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmln
aW5TdG9yYWdlUXVvdGEsIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgc2Vzc2lv
bi0+YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJl
Y3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEsIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSk7CisgICAgICAg
IHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9y
YWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBw
YXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwg
cGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMucGVyT3JpZ2luU3Rv
cmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBh
cmFtZXRlcnMudXNlQ3VzdG9tU3RvcmFnZVBhdGhzKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICAgICAgc2Vzc2lvbi0+YWRkU2VydmljZVdvcmtlclNlc3Npb24ocGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSksIHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
aW5kZXggNGE3MTk0MWNhZTcwNmQ3MzBiYWUyMGIyODBlM2Q4ZmY3NWQ5NDUzMi4uOGY5ZmJkMGNl
MzkwZmZkY2QyOWYwMDA1MDhkMGY4MzY2ZmRjMjUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTY1OSw3ICs2NTksNyBAQCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTaGFyZWRXb3JrZXJTZXJ2
ZXIoKQogICAgIHJldHVybiAqbV9zaGFyZWRXb3JrZXJTZXJ2ZXI7CiB9CiAKLXZvaWQgTmV0d29y
a1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxT
dG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhI
YW5kbGUsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBsb2NhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25z
dCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwg
dWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSkKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFk
ZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2Nh
bFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNh
Y2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVm
YXVsdFRoaXJkUGFydHlRdW90YSwgYm9vbCB1c2VDdXN0b21TdG9yYWdlUGF0aHMpCiB7CiAgICAg
aWYgKG1fc3RvcmFnZU1hbmFnZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3ICs2NzAsNyBA
QCB2b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3Ry
aW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsCiAgICAgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uSUQ7CiAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBuZXR3b3JrUHJvY2Vzcygp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCiAgICAgICAgIGNvbm5lY3Rpb25JRCA9IGNvbm5l
Y3Rpb24tPnVuaXF1ZUlEKCk7Ci0gICAgbV9zdG9yYWdlTWFuYWdlciA9IE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBjb25uZWN0aW9uSUQsIGdlbmVyYWxTdG9yYWdl
UGF0aCwgbG9jYWxTdG9yYWdlUGF0aCwgaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGgs
IGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFydHlRdW90YSk7CisgICAgbV9zdG9y
YWdlTWFuYWdlciA9IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBj
b25uZWN0aW9uSUQsIGdlbmVyYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCwgaWRiU3Rv
cmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRo
aXJkUGFydHlRdW90YSwgdXNlQ3VzdG9tU3RvcmFnZVBhdGhzKTsKIH0KIAogdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6ZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVu
Z2luZSYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCmluZGV4IDc5ZDdjZTQ0MDRhMTM4ZGY5Yjg4YWFlYzk3YjY5MTNhZjYwYTRj
ZWMuLjdkYTE1YTI2ZTE5MjZjMzU1ODQ3M2I1YTExZjRmYmNkOWNhZmMxZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTIxNSw3ICsyMTUs
NyBAQCBwdWJsaWM6CiAgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBlbnN1cmVTaGFyZWRXb3Jr
ZXJTZXJ2ZXIoKTsKIAogICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIo
KSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9Ci0gICAgdm9pZCBhZGRTdG9yYWdl
TWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdl
UGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3Jh
Z2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGly
ZFBhcnR5UXVvdGEpOworICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0
cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVy
YWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgaWRiU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaWRiU3RvcmFnZVBh
dGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVs
dE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCBib29sIHVzZUN1
c3RvbVN0b3JhZ2VQYXRocyk7CiAKICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSogY2FjaGVFbmdp
bmUoKSB7IHJldHVybiBtX2NhY2hlRW5naW5lLmdldCgpOyB9CiAgICAgdm9pZCBlbnN1cmVDYWNo
ZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3RvcmFnZTo6RW5naW5lJik+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3Rv
cmFnZU1hbmFnZXIuY3BwCmluZGV4IDNjZTBlYzg1NzNkOThjOWQ3NDhkNzA0YjJkYzlkYzhjOTE5
ZDZmN2MuLjhjZGE2NmFhY2UzZjkyNmYxNzkxZWYyYWI2YTE2YmVkM2MzYTlkNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxT
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAv
LyBTdWdnZXN0ZWQgYnkgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnN0b3JhZ2UvI2Rpc2stc3Bh
Y2UKIGNvbnN0ZXhwciB1bnNpZ25lZCBsb2NhbFN0b3JhZ2VRdW90YUluQnl0ZXMgPSA1ICogTUI7
CiBjb25zdGV4cHIgYXV0byBmaWxlU3VmZml4ID0gIi5sb2NhbHN0b3JhZ2UiX3M7Citjb25zdGV4
cHIgYXV0byBmaWxlTmFtZSA9ICJsb2NhbHN0b3JhZ2Uuc3FsaXRlMyJfczsKIAogLy8gVGhpcyBp
cyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBleGlzdGluZyBmaWxlcy4KIC8vIFdlIHNob3VsZCBu
b3QgaW5jbHVkZSBvcmlnaW4gaW4gZmlsZSBuYW1lLgpAQCAtNzUsMTEgKzc2LDE5IEBAIFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IExvY2FsU3RvcmFnZU1hbmFnZXI6Om9yaWdp
bnNPZkxvY2FsU3RvcmFnZURhCiBTdHJpbmcgTG9jYWxTdG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9y
YWdlRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luKQogewogICAgIGlmIChkaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nIHsgfTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwg
b3JpZ2luVG9GaWxlTmFtZShvcmlnaW4pKTsKIH0KIAorU3RyaW5nIExvY2FsU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQoreworICAg
IGlmIChkaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0
b3J5LCBmaWxlTmFtZSk7Cit9CisKIExvY2FsU3RvcmFnZU1hbmFnZXI6OkxvY2FsU3RvcmFnZU1h
bmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBTdG9yYWdlQXJlYVJlZ2lzdHJ5JiByZWdpc3RyeSkK
ICAgICA6IG1fcGF0aChwYXRoKQogICAgICwgbV9yZWdpc3RyeShyZWdpc3RyeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
TWFuYWdlci5oCmluZGV4IGNkY2I2ODEyZjhmZWQ2OWJjZGE0OWY2OTQyZDY3Y2RhMmQxMGYxNTgu
LmY2MmRkYzcwMWRjZGRmMjg5MjM5ZTZiMjU0YzRlNGNkODhiMTlhYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1h
bmFnZXIuaApAQCAtNDUsNyArNDUsOCBAQCBjbGFzcyBMb2NhbFN0b3JhZ2VNYW5hZ2VyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luc09mTG9jYWxTdG9yYWdlRGF0YShjb25z
dCBTdHJpbmcmIHBhdGgpOwotICAgIHN0YXRpYyBTdHJpbmcgbG9jYWxTdG9yYWdlRmlsZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBz
dGF0aWMgU3RyaW5nIGxvY2FsU3RvcmFnZUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBzdGF0aWMgU3RyaW5nIGxvY2Fs
U3RvcmFnZUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIAogICAgIExvY2FsU3Rv
cmFnZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoLCBTdG9yYWdlQXJlYVJlZ2lzdHJ5Jik7CiAg
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRl
eCBkMmI3ZTE2Njg3OTBmMTZkNmJmNDg0MjllYzBjMWVjN2Y0MzVkNWFhLi5lZGFmNjFjZGI3NzVl
NzdjMjUxOWFhNjk4MTFhMGJmOGZjMWI0YzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNw
cApAQCAtMTA4LDEyICsxMDgsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlT3JpZ2luRmlsZUlmTmVj
ZXNzYXJ5KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZVBhdGgpOwogfQogCi1SZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3Rv
cmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3Qg
ZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3Rh
KQorUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0
b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJp
bmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwg
dWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSwgYm9vbCB1c2VDdXN0b21QYXRo
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoc2Vz
c2lvbklELCBjb25uZWN0aW9uLCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjdXN0b21J
REJTdG9yYWdlUGF0aCwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgZGVmYXVsdE9yaWdpblF1b3Rh
LCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgY29ubmVjdGlvbiwgcGF0aCwgY3Vz
dG9tTG9jYWxTdG9yYWdlUGF0aCwgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGN1c3RvbUNhY2hlU3Rv
cmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90
YSwgdXNlQ3VzdG9tUGF0aHMpKTsKIH0KIAotTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRP
cmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKK05ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3Ry
aW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3Jh
Z2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGly
ZFBhcnR5T3JpZ2luUXVvdGEsIGJvb2wgdXNlQ3VzdG9tUGF0aHMpCiAgICAgOiBtX3Nlc3Npb25J
RChzZXNzaW9uSUQpCiAgICAgLCBtX3F1ZXVlKFN1c3BlbmRhYmxlV29ya1F1ZXVlOjpjcmVhdGUo
ImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZSIpKQogICAgICwgbV9kZWZhdWx0T3JpZ2luUXVvdGEo
ZGVmYXVsdE9yaWdpblF1b3RhKQpAQCAtMTIyLDEwICsxMjIsMTEgQEAgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJ
UEM6OkNvbm4KIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBwYXRoID0g
cGF0aC5pc29sYXRlZENvcHkoKSwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFk
Q29weShjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKSwgY3VzdG9tSURCU3RvcmFnZVBhdGggPSBjcm9z
c1RocmVhZENvcHkoY3VzdG9tSURCU3RvcmFnZVBhdGgpLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgpXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBj
cm9zc1RocmVhZENvcHkoY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KGN1c3RvbUlEQlN0b3JhZ2VQYXRoKSwgY3VzdG9tQ2FjaGVT
dG9yYWdlUGF0aCA9IGNyb3NzVGhyZWFkQ29weShjdXN0b21DYWNoZVN0b3JhZ2VQYXRoKSwgdXNl
Q3VzdG9tUGF0aHNdKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZmlsZVN5c3RlbVN0b3JhZ2VIYW5k
bGVSZWdpc3RyeSA9IG1ha2VVbmlxdWU8RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeT4o
KTsKICAgICAgICAgbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQXJl
YVJlZ2lzdHJ5PigpOwogICAgICAgICBtX2lkYlN0b3JhZ2VSZWdpc3RyeSA9IG1ha2VVbmlxdWU8
SURCU3RvcmFnZVJlZ2lzdHJ5PigpOworICAgICAgICBtX3VzZUN1c3RvbVBhdGhzID0gdXNlQ3Vz
dG9tUGF0aHM7CiAgICAgICAgIG1fcGF0aCA9IHBhdGg7CiAgICAgICAgIG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CiAgICAgICAgIG1fY3VzdG9tSURC
U3RvcmFnZVBhdGggPSBjdXN0b21JREJTdG9yYWdlUGF0aDsKQEAgLTIxMSw3ICsyMTIsNyBAQCBz
dGF0aWMgU3RyaW5nIGVuY29kZShjb25zdCBTdHJpbmcmIHN0cmluZywgRmlsZVN5c3RlbTo6U2Fs
dCBzYWx0KQogc3RhdGljIFN0cmluZyBvcmlnaW5EaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYg
cm9vdFBhdGgsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBGaWxlU3lzdGVt
OjpTYWx0IHNhbHQpCiB7CiAgICAgaWYgKHJvb3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZyB7IH07CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgYXV0
byBlbmNvZGVkVG9wT3JpZ2luID0gZW5jb2RlKG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwg
c2FsdCk7CiAgICAgYXV0byBlbmNvZGVkT3BlbmluZ09yaWdpbiA9IGVuY29kZShvcmlnaW4uY2xp
ZW50T3JpZ2luLnRvU3RyaW5nKCksIHNhbHQpOwpAQCAtMjIxLDggKzIyMiw5IEBAIHN0YXRpYyBT
dHJpbmcgb3JpZ2luRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPCiBzdGF0aWMgU3RyaW5nIG9yaWdpbkZpbGVQYXRoKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KQogewogICAgIGlmIChkaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nIHsgfTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgIm9yaWdpbiJfcyk7CisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworCisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkaXJlY3RvcnksIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5GaWxlSWRlbnRpZmllcigp
KTsKIH0KIAogT3JpZ2luU3RvcmFnZU1hbmFnZXImIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9j
YWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
bikKQEAgLTI0Nyw3ICsyNDksNyBAQCBPcmlnaW5TdG9yYWdlTWFuYWdlciYgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYgogICAgICAgICBR
dW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24g
PSBbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIG9yaWdpbiwgY29ubmVjdGlvbiA9IG1fcGFyZW50
Q29ubmVjdGlvbl0gKGF1dG8gaWRlbnRpZmllciwgYXV0byBjdXJyZW50UXVvdGEsIGF1dG8gY3Vy
cmVudFVzYWdlLCBhdXRvIHJlcXVlc3RlZEluY3JlYXNlKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6SW5jcmVhc2VRdW90YShzZXNzaW9uSUQsIG9yaWdpbiwgaWRlbnRpZmllciwgY3Vy
cmVudFF1b3RhLCBjdXJyZW50VXNhZ2UsIHJlcXVlc3RlZEluY3JlYXNlKSwgMCk7CiAgICAgICAg
IH07Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihxdW90
YSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pLCBXVEZNb3ZlKG9yaWdpbkRpcmVjdG9y
eSksIFdURk1vdmUobG9jYWxTdG9yYWdlUGF0aCksIFdURk1vdmUoaWRiU3RvcmFnZVBhdGgpLCBX
VEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8T3Jp
Z2luU3RvcmFnZU1hbmFnZXI+KHF1b3RhLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbiks
IFdURk1vdmUob3JpZ2luRGlyZWN0b3J5KSwgV1RGTW92ZShsb2NhbFN0b3JhZ2VQYXRoKSwgV1RG
TW92ZShpZGJTdG9yYWdlUGF0aCksIFdURk1vdmUoY2FjaGVTdG9yYWdlUGF0aCksIG1fdXNlQ3Vz
dG9tUGF0aHMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5oCmluZGV4IDljM2QyZDY0MDZmZWU5YjJiNGU2Y2EyNmY3YjY1ZmUwYzc4YjgzYmQuLjQ5
ZmNkZWY0YjMyNzA1MmQyYjRhOWRlNmRkYTEyMDIxYmUyMjRhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFSZWdpc3RyeTsKIAog
Y2xhc3MgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlv
bjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5l
dHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVv
dGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpOworICAgIHN0YXRpYyBS
ZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmln
aW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSwgYm9vbCB1c2VD
dXN0b21QYXRocyk7CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlVHlwZXMoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4pOwogCiAgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKQEAgLTk1LDggKzk1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYpOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUxvY2FsU3RvcmFnZVBhdGgpOwotICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURC
U3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0
X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1
b3RhKTsKKyAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmln
aW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSwgYm9vbCB1c2VD
dXN0b21QYXRocyk7CiAgICAgfk5ldHdvcmtTdG9yYWdlTWFuYWdlcigpOwogICAgIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyJiBsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYpOwogICAgIGJvb2wgcmVtb3ZlT3JpZ2luU3RvcmFnZU1hbmFnZXJJZlBvc3Np
YmxlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwpAQCAtMTgxLDYgKzE4MCw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKICAgICB1aW50NjRf
dCBtX2RlZmF1bHRPcmlnaW5RdW90YTsKICAgICB1aW50NjRfdCBtX2RlZmF1bHRUaGlyZFBhcnR5
T3JpZ2luUXVvdGE7CisgICAgYm9vbCBtX3VzZUN1c3RvbVBhdGhzOwogICAgIElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgbV9wYXJlbnRDb25uZWN0aW9uOwogICAgIEhhc2hNYXA8SVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCwgSGFzaFNldDxTdHJpbmc+PiBtX3RlbXBvcmFyeUJsb2JQYXRoc0J5
Q29ubmVjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBiY2MwZjMzODc3
OWY0OTMxMDA3NGE3YzZjYmQyZmNhZTc1MzZkYzA2Li5iOThlYzc2ODM4M2FhYWNjMWE0MWMxY2Ux
ODNiOWU1YmJlMzUzMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQ3LDExICs0
NywxMiBAQCBlbnVtIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0TW9k
ZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQZXJzaXN0ZQogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VCdWNrZXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFN0b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmlu
ZyYgaWRiU3RvcmFnZVBhdGgpCisgICAgU3RvcmFnZUJ1Y2tldChjb25zdCBTdHJpbmcmIHJvb3RQ
YXRoLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdl
UGF0aCwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgYm9vbCB1c2VDdXN0b21QYXRocykK
ICAgICAgICAgOiBtX3Jvb3RQYXRoKHJvb3RQYXRoKQogICAgICAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQotICAgICAgICAsIG1fbG9jYWxTdG9yYWdlUGF0aChsb2NhbFN0b3JhZ2VQYXRo
KQotICAgICAgICAsIG1faWRiU3RvcmFnZVBhdGgoaWRiU3RvcmFnZVBhdGgpCisgICAgICAgICwg
bV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKGxvY2FsU3RvcmFnZVBhdGgpCisgICAgICAgICwgbV9j
dXN0b21JREJTdG9yYWdlUGF0aChpZGJTdG9yYWdlUGF0aCkKKyAgICAgICAgLCBtX3VzZUN1c3Rv
bVBhdGhzKHVzZUN1c3RvbVBhdGhzKQogICAgIHsKICAgICB9CiAKQEAgLTEyOSw3ICsxMzAsNyBA
QCBwdWJsaWM6CiAgICAgTG9jYWxTdG9yYWdlTWFuYWdlciYgbG9jYWxTdG9yYWdlTWFuYWdlcihT
dG9yYWdlQXJlYVJlZ2lzdHJ5JiByZWdpc3RyeSkKICAgICB7CiAgICAgICAgIGlmICghbV9sb2Nh
bFN0b3JhZ2VNYW5hZ2VyKQotICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyID0gbWFr
ZVVuaXF1ZTxMb2NhbFN0b3JhZ2VNYW5hZ2VyPihtX2xvY2FsU3RvcmFnZVBhdGgsIHJlZ2lzdHJ5
KTsKKyAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8TG9jYWxT
dG9yYWdlTWFuYWdlcj4ocmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoKCksIHJlZ2lzdHJ5KTsKIAog
ICAgICAgICByZXR1cm4gKm1fbG9jYWxTdG9yYWdlTWFuYWdlcjsKICAgICB9CkBAIC0xNTUsNyAr
MTU2LDcgQEAgcHVibGljOgogICAgIElEQlN0b3JhZ2VNYW5hZ2VyJiBpZGJTdG9yYWdlTWFuYWdl
cihJREJTdG9yYWdlUmVnaXN0cnkmIHJlZ2lzdHJ5LCBJREJTdG9yYWdlTWFuYWdlcjo6UXVvdGFD
aGVja0Z1bmN0aW9uJiYgcXVvdGFDaGVja0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKCFt
X2lkYlN0b3JhZ2VNYW5hZ2VyKQotICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFuYWdlciA9IG1h
a2VVbmlxdWU8SURCU3RvcmFnZU1hbmFnZXI+KG1faWRiU3RvcmFnZVBhdGgsIHJlZ2lzdHJ5LCBX
VEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpOworICAgICAgICAgICAgbV9pZGJTdG9yYWdlTWFu
YWdlciA9IG1ha2VVbmlxdWU8SURCU3RvcmFnZU1hbmFnZXI+KHJlc29sdmVkSURCU3RvcmFnZVBh
dGgoKSwgcmVnaXN0cnksIFdURk1vdmUocXVvdGFDaGVja0Z1bmN0aW9uKSk7CiAKICAgICAgICAg
cmV0dXJuICptX2lkYlN0b3JhZ2VNYW5hZ2VyOwogICAgIH0KQEAgLTE3NSw3ICsxNzYsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICB8fCAobV9pZGJTdG9yYWdlTWFuYWdlciAmJiAobV9pZGJTdG9y
YWdlTWFuYWdlci0+aGFzRGF0YUluTWVtb3J5KCkgfHwgbV9pZGJTdG9yYWdlTWFuYWdlci0+aXNB
Y3RpdmUoKSkpOwogICAgIH0KIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgYm9vbCBp
c0VtcHR5KCkKICAgICB7CiAgICAgICAgIGF1dG8gZmlsZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KG1fcm9vdFBhdGgpOwogICAgICAgICBhdXRvIGhhc1ZhbGlkRmlsZSA9IFdURjo6YW55
T2YoZmlsZXMsIFsmXShhdXRvIGZpbGUpIHsKQEAgLTE4OCw4ICsxODksOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChoYXNWYWxpZEZpbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9pZGJTdG9yYWdlUGF0aCk7
Ci0gICAgICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBh
dGgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1faWRiU3RvcmFnZVBhdGgpOworICAgICAg
ICBhdXRvIGN1cnJlbnRJREJTdG9yYWdlUGF0aCA9IHJlc29sdmVkSURCU3RvcmFnZVBhdGgoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY3VycmVudElEQlN0b3Jh
Z2VQYXRoKTsKKyAgICAgICAgcmV0dXJuICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHJlc29sdmVk
TG9jYWxTdG9yYWdlUGF0aCgpKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhjdXJyZW50SURC
U3RvcmFnZVBhdGgpOwogICAgIH0KIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGZl
dGNoRGF0YVR5cGVzSW5MaXN0KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzKQpAQCAt
MjI3LDE3ICsyMjksNDEgQEAgcHVibGljOgogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoKSk7CiAgICAgICAgIEZpbGVTeXN0
ZW06Om1vdmVGaWxlKG1fcm9vdFBhdGgsIHBhdGgpOwogCi0gICAgICAgIGlmICghbV9sb2NhbFN0
b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhbG9jYWxTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYXV0byBjdXJyZW50TG9jYWxTdG9yYWdlUGF0aCA9IHJlc29sdmVkTG9jYWxTdG9yYWdl
UGF0aCgpOworICAgICAgICBpZiAoIWN1cnJlbnRMb2NhbFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAm
JiAhbG9jYWxTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGxvY2FsU3RvcmFnZVBh
dGgpKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFz
ZUZpbGUobV9sb2NhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgICAg
IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFzZUZpbGUoY3VycmVudExvY2Fs
U3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCFtX2lkYlN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgp
KSB7CisgICAgICAgIGF1dG8gY3VycmVudElEQlN0b3JhZ2VQYXRoID0gcmVzb2x2ZWRJREJTdG9y
YWdlUGF0aCgpOworICAgICAgICBpZiAoIWN1cnJlbnRJREJTdG9yYWdlUGF0aC5pc0VtcHR5KCkg
JiYgIWlkYlN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoaWRiU3RvcmFnZVBhdGgp
KTsKLSAgICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1vdmVEYXRhYmFzZUZp
bGUobV9pZGJTdG9yYWdlUGF0aCwgaWRiU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShjdXJyZW50SURCU3RvcmFnZVBh
dGgsIGlkYlN0b3JhZ2VQYXRoKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIFN0cmluZyByZXNv
bHZlZElEQlN0b3JhZ2VQYXRoKCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXNvbHZlZElEQlN0
b3JhZ2VQYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRJREJTdG9y
YWdlUGF0aDsKKworICAgICAgICBpZiAobV91c2VDdXN0b21QYXRocykgeworICAgICAgICAgICAg
QVNTRVJUKCEobV9jdXN0b21JREJTdG9yYWdlUGF0aC5pc0VtcHR5KCkgXiBtX3Jvb3RQYXRoLmlz
RW1wdHkoKSkpOworICAgICAgICAgICAgbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRoID0gbV9jdXN0
b21JREJTdG9yYWdlUGF0aDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gaWRi
U3RvcmFnZVBhdGggPSB0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6OkluZGV4ZWREQik7Cisg
ICAgICAgICAgICBpZiAoIW1fY3VzdG9tSURCU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGlkYlN0b3JhZ2VQYXRoKSkgeworICAgICAgICAgICAgICAgIEZp
bGVTeXN0ZW06Om1vdmVGaWxlKG1fY3VzdG9tSURCU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRo
KTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoaWRiU3Rv
cmFnZVBhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX3Jlc29sdmVkSURCU3Rv
cmFnZVBhdGggPSBpZGJTdG9yYWdlUGF0aDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
QVNTRVJUKCFtX3Jlc29sdmVkSURCU3RvcmFnZVBhdGguaXNOdWxsKCkpOworICAgICAgICByZXR1
cm4gbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRoOworICAgIH0KKwogcHJpdmF0ZToKICAgICBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBmZXRjaERhdGFUeXBlc0luTGlzdEZyb21NZW1vcnkoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCiAgICAgewpAQCAtMjY5LDEyICsyOTUsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSkgJiYgIXJlc3VsdC5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZSkpIHsKLSAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCkpCisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhyZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgoKSkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmICFyZXN1bHQuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBkYXRhYmFzZXMgPSBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KG1faWRiU3RvcmFnZVBhdGgpOyAhZGF0YWJhc2VzLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIGlmIChhdXRvIGRhdGFiYXNlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpKTsgIWRhdGFiYXNlcy5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcyk7
CiAgICAgICAgIH0KIApAQCAtMjkxLDEwICszMTcsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
ZGVsZXRlTG9jYWxTdG9yYWdlRGF0YShXYWxsVGltZSB0aW1lKQogICAgIHsKLSAgICAgICAgaWYg
KEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKG1fbG9jYWxTdG9yYWdlUGF0aCkgPj0g
dGltZSkgeworICAgICAgICBhdXRvIGN1cnJlbnRMb2NhbFN0b3JhZ2VQYXRoID0gcmVzb2x2ZWRM
b2NhbFN0b3JhZ2VQYXRoKCk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0
aW9uVGltZShjdXJyZW50TG9jYWxTdG9yYWdlUGF0aCkgPj0gdGltZSkgewogICAgICAgICAgICAg
aWYgKG1fbG9jYWxTdG9yYWdlTWFuYWdlcikKICAgICAgICAgICAgICAgICBtX2xvY2FsU3RvcmFn
ZU1hbmFnZXItPmNsZWFyRGF0YU9uRGlzaygpOwotICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRl
RmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKG1fbG9jYWxTdG9yYWdlUGF0aCk7CisgICAg
ICAgICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoY3Vy
cmVudExvY2FsU3RvcmFnZVBhdGgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2xvY2Fs
U3RvcmFnZU1hbmFnZXIpCkBAIC0zMjAsMjAgKzM0Nyw0OSBAQCBwcml2YXRlOgogICAgICAgICBp
ZiAobV9pZGJTdG9yYWdlTWFuYWdlcikKICAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIt
PmNsb3NlRGF0YWJhc2VzRm9yRGVsZXRpb24oKTsKIAotICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVBbGxGaWxlc01vZGlmaWVkU2luY2UobV9pZGJTdG9yYWdlUGF0aCwgdGltZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUFsbEZpbGVzTW9kaWZpZWRTaW5jZShyZXNvbHZlZElEQlN0b3Jh
Z2VQYXRoKCksIHRpbWUpOwogICAgIH0KICAgICAKKyAgICBTdHJpbmcgcmVzb2x2ZWRMb2NhbFN0
b3JhZ2VQYXRoKCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBh
dGguaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBh
dGg7CisKKyAgICAgICAgaWYgKG1fdXNlQ3VzdG9tUGF0aHMpIHsKKyAgICAgICAgICAgIEFTU0VS
VCghKG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aC5pc0VtcHR5KCkgXiBtX3Jvb3RQYXRoLmlzRW1w
dHkoKSkpOworICAgICAgICAgICAgbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGggPSBtX2N1c3Rv
bUxvY2FsU3RvcmFnZVBhdGg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvIGxv
Y2FsU3RvcmFnZVBhdGggPSBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0
aCh0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6OkxvY2FsU3RvcmFnZSkpOworICAgICAgICAg
ICAgaWYgKCFtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGxvY2FsU3RvcmFnZVBhdGgpKSB7CisgICAgICAgICAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgobG9jYWxTdG9y
YWdlUGF0aCkpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om1v
dmVEYXRhYmFzZUZpbGUobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBsb2NhbFN0b3JhZ2VQYXRo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBh
dGggPSBsb2NhbFN0b3JhZ2VQYXRoOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1fcmVz
b2x2ZWRMb2NhbFN0b3JhZ2VQYXRoOworICAgIH0KKwogICAgIFN0cmluZyBtX3Jvb3RQYXRoOwog
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgU3RvcmFnZUJ1Y2tldE1vZGUgbV9tb2RlIHsg
U3RvcmFnZUJ1Y2tldE1vZGU6OkJlc3RFZmZvcnQgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmls
ZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyPiBtX2ZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TG9jYWxTdG9yYWdlTWFuYWdlcj4gbV9sb2NhbFN0b3JhZ2VNYW5hZ2Vy
OwotICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aDsKKyAgICBTdHJpbmcgbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGg7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25TdG9yYWdlTWFuYWdlcj4gbV9zZXNzaW9uU3RvcmFn
ZU1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlN0b3JhZ2VNYW5hZ2VyPiBtX2lkYlN0
b3JhZ2VNYW5hZ2VyOwotICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBt
X2N1c3RvbUlEQlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX3Jlc29sdmVkSURCU3RvcmFnZVBh
dGg7CisgICAgYm9vbCBtX3VzZUN1c3RvbVBhdGhzOwogfTsKIAorU3RyaW5nIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpvcmlnaW5GaWxlSWRlbnRpZmllcigpCit7CisgICAgcmV0dXJuIG9yaWdpbkZp
bGVOYW1lOworfQorCiBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4gY3JlYXRlUXVvdGFNYW5hZ2Vy
KHVpbnQ2NF90IHF1b3RhLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJp
bmcmIGNhY2hlU3RvcmFnZVBhdGgsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9u
JiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQogewogICAgIFF1b3RhTWFuYWdlcjo6R2V0VXNhZ2VG
dW5jdGlvbiBnZXRVc2FnZUZ1bmN0aW9uID0gW2lkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQ
YXRoXSgpIHsKQEAgLTM0MiwxMiArMzk4LDE0IEBAIHN0YXRpYyBSZWY8UXVvdGFNYW5hZ2VyPiBj
cmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0IFN0cmluZyYgaWRiU3RvCiAg
ICAgcmV0dXJuIFF1b3RhTWFuYWdlcjo6Y3JlYXRlKHF1b3RhLCBXVEZNb3ZlKGdldFVzYWdlRnVu
Y3Rpb24pLCBXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpOwogfQogCi1PcmlnaW5TdG9y
YWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFF1b3RhTWFu
YWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uLCBTdHJp
bmcmJiBwYXRoLCBTdHJpbmcmJiBsb2NhbFN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBpZGJTdG9yYWdl
UGF0aCwgU3RyaW5nJiYgY2FjaGVTdG9yYWdlUGF0aCkKK09yaWdpblN0b3JhZ2VNYW5hZ2VyOjpP
cmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFz
ZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0
cmluZyYmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoLCBTdHJpbmcmJiBjYWNoZVN0b3JhZ2VQYXRoLCBib29sIHVzZUN1c3RvbVBhdGhzKQogICAg
IDogbV9wYXRoKFdURk1vdmUocGF0aCkpCi0gICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgoV1RGTW92
ZShsb2NhbFN0b3JhZ2VQYXRoKSkKLSAgICAsIG1faWRiU3RvcmFnZVBhdGgoV1RGTW92ZShpZGJT
dG9yYWdlUGF0aCkpCisgICAgLCBtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgoV1RGTW92ZShjdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoKSkKKyAgICAsIG1fY3VzdG9tSURCU3RvcmFnZVBhdGgoV1RGTW92
ZShjdXN0b21JREJTdG9yYWdlUGF0aCkpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVBhdGgoV1RGTW92
ZShjYWNoZVN0b3JhZ2VQYXRoKSkKLSAgICAsIG1fcXVvdGFNYW5hZ2VyKGNyZWF0ZVF1b3RhTWFu
YWdlcihxdW90YSwgbV9pZGJTdG9yYWdlUGF0aCwgbV9jYWNoZVN0b3JhZ2VQYXRoLCBXVEZNb3Zl
KGluY3JlYXNlUXVvdGFGdW5jdGlvbikpKQorICAgICwgbV91c2VDdXN0b21QYXRocyh1c2VDdXN0
b21QYXRocykKKyAgICAsIG1fcXVvdGEocXVvdGEpCisgICAgLCBtX2luY3JlYXNlUXVvdGFGdW5j
dGlvbihXVEZNb3ZlKGluY3JlYXNlUXVvdGFGdW5jdGlvbikpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiB9CkBAIC0zNjMsMTQgKzQyMSwxOSBAQCB2b2lkIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29u
bmVjdGlvbgogT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQmIE9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpkZWZhdWx0QnVja2V0KCkKIHsKICAgICBpZiAoIW1fZGVmYXVsdEJ1Y2tldCkK
LSAgICAgICAgbV9kZWZhdWx0QnVja2V0ID0gbWFrZVVuaXF1ZTxTdG9yYWdlQnVja2V0PihtX3Bh
dGgsICJkZWZhdWx0Il9zLCBtX2xvY2FsU3RvcmFnZVBhdGgsIG1faWRiU3RvcmFnZVBhdGgpOwor
ICAgICAgICBtX2RlZmF1bHRCdWNrZXQgPSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0
aCwgImRlZmF1bHQiX3MsIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgbV9jdXN0b21JREJTdG9y
YWdlUGF0aCwgbV91c2VDdXN0b21QYXRocyk7CiAKICAgICByZXR1cm4gKm1fZGVmYXVsdEJ1Y2tl
dDsKIH0KIAogUXVvdGFNYW5hZ2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6cXVvdGFNYW5hZ2Vy
KCkKIHsKLSAgICByZXR1cm4gbV9xdW90YU1hbmFnZXIuZ2V0KCk7CisgICAgaWYgKCFtX3F1b3Rh
TWFuYWdlcikgeworICAgICAgICBhdXRvIGlkYlN0b3JhZ2VQYXRoID0gZGVmYXVsdEJ1Y2tldCgp
LnJlc29sdmVkSURCU3RvcmFnZVBhdGgoKTsKKyAgICAgICAgbV9xdW90YU1hbmFnZXIgPSBjcmVh
dGVRdW90YU1hbmFnZXIobV9xdW90YSwgaWRiU3RvcmFnZVBhdGgsIG1fY2FjaGVTdG9yYWdlUGF0
aCwgc3RkOjpleGNoYW5nZShtX2luY3JlYXNlUXVvdGFGdW5jdGlvbiwgeyB9KSk7CisgICAgfQor
CisgICAgcmV0dXJuICptX3F1b3RhTWFuYWdlcjsKIH0KIAogRmlsZVN5c3RlbVN0b3JhZ2VNYW5h
Z2VyJiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyKEZpbGVT
eXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnkmIHJlZ2lzdHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIu
aAppbmRleCBlYzQ2YzU0YjMxMTFmYjAxYjNjZTY5NjkyMDdjMTNiZTVkOTk5ZDk2Li4wMGJiNDYy
OGYzYjk4MGI4NDE5MzZhZjBjNGM2M2RkNDRhMjdhYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIu
aApAQCAtNDMsNyArNDMsOSBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90
OwogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIE9yaWdpblN0b3JhZ2VNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBR
dW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmLCBTdHJpbmcmJiBwYXRoLCBTdHJp
bmcmJiBsb2NhbFN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBpZGJTdG9yYWdlUGF0aCwgU3RyaW5nJiYg
Y2FjaGVTdG9yYWdlUGF0aCk7CisgICAgc3RhdGljIFN0cmluZyBvcmlnaW5GaWxlSWRlbnRpZmll
cigpOworCisgICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFF1b3RhTWFu
YWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGN1
c290bUxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBTdHJp
bmcmJiBjYWNoZVN0b3JhZ2VQYXRoLCBib29sIHVzZUN1c3RvbVBhdGhzKTsKICAgICB+T3JpZ2lu
U3RvcmFnZU1hbmFnZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEKTsKQEAgLTcxLDEwICs3MywxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTdG9yYWdlQnVja2V0PiBtX2RlZmF1bHRCdWNrZXQ7CiAgICAgU3RyaW5nIG1f
cGF0aDsKICAgICBib29sIG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKLSAgICBTdHJpbmcgbV9sb2Nh
bFN0b3JhZ2VQYXRoOwotICAgIFN0cmluZyBtX2lkYlN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBt
X2N1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3VzdG9tSURCU3RvcmFnZVBh
dGg7CiAgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlUGF0aDsKLSAgICBSZWY8UXVvdGFNYW5hZ2Vy
PiBtX3F1b3RhTWFuYWdlcjsKKyAgICBib29sIG1fdXNlQ3VzdG9tUGF0aHM7CisgICAgdWludDY0
X3QgbV9xdW90YTsKKyAgICBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiBtX2lu
Y3JlYXNlUXVvdGFGdW5jdGlvbjsKKyAgICBSZWZQdHI8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFu
YWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCmluZGV4IDc3YWE3YTNlMGM4
YTNmZmJlMWFlMGRmY2Q0MTY3NGFhNzdjZDI1MjQuLmJiYjJmZTg0M2M4NWRmZjZmODNjZDNkZjJl
N2UxMTUwZDA2ZWY1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKQEAgLTUyLDYgKzUyLDggQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
ICAgIGVuY29kZXIgPDwgcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGVuY29kZXIgPDwgcGVy
VGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKKworICAgIGVuY29kZXIgPDwgdXNlQ3VzdG9t
U3RvcmFnZVBhdGhzOwogfQogCiBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzPiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKQEAgLTE1NSw2ICsxNTcsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEMKICAgICBp
ZiAoIXBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3Rh
ID0gKnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHVzZUN1c3RvbVN0b3JhZ2VQYXRoczsKKyAgICBkZWNvZGVyID4+IHVzZUN1c3RvbVN0
b3JhZ2VQYXRoczsKKyAgICBpZiAoIXVzZUN1c3RvbVN0b3JhZ2VQYXRocykKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLnVzZUN1c3RvbVN0b3JhZ2VQYXRocyA9
IFdURk1vdmUoKnVzZUN1c3RvbVN0b3JhZ2VQYXRocyk7CiAgICAgCiAgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuaAppbmRleCAyMDk4NDY4MTYyOTkwNDczMzg4NGNmY2IxMjdhYTU3MjFkMmNlZTg5
Li4zYWIyMDNhOGM2OWI3NzFkNjllN2I3ZDYxMjk5YzMwM2Q2Yjg5M2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTczLDYg
KzczLDggQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKIAogICAgIHVpbnQ2
NF90IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3Jp
Z2luU3RvcmFnZVF1b3RhOworCisgICAgYm9vbCB1c2VDdXN0b21TdG9yYWdlUGF0aHMgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCmluZGV4IGYyODBmY2IzNzVjMjNlMmQzNWM3NjkxOWI1YmVlMzUxMzU0
M2YxMDQuLjQ3ODYwZDFkZjc0YzM5NmUzZDQ3MjhmMGEwNTMxZTc3NDNkNzEyZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC04Niw2ICs4Niw3IEBAIFdLX0NM
QVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSkKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKmFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGly
ZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICpzdGFuZGFsb25lQXBwbGljYXRp
b25VUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKmdlbmVyYWxTdG9yYWdlRGlyZWN0
b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB1c2VDdXN0b21TdG9yYWdlUGF0aHMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGVz
dGluZyBvbmx5LgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsTG9hZHNCbG9ja2VkQnlE
ZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE1KSwgaW9zKDEzLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbQppbmRleCBkYTY0NzA5NzYyNDcyZWRhOThlNjhmYzViNmJlNmY5ZGUzYTVkNGMzLi4z
ZmY3ZTRkNjA1NzcyYTg1MDBlYzA3M2I4MWZlMmJlMDkwZjdiMzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCkBAIC0zNTEsNiArMzUxLDE2IEBAIHN0YXRpYyB2
b2lkIGNoZWNrVVJMQXJndW1lbnQoTlNVUkwgKnVybCkKICAgICBfY29uZmlndXJhdGlvbi0+c2V0
R2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCistIChCT09MKXVzZUN1c3Rv
bVN0b3JhZ2VQYXRocworeworICAgIHJldHVybiBfY29uZmlndXJhdGlvbi0+dXNlQ3VzdG9tU3Rv
cmFnZVBhdGhzKCk7Cit9CisKKy0gKHZvaWQpc2V0VXNlQ3VzdG9tU3RvcmFnZVBhdGhzOihCT09M
KXVzZQoreworICAgIF9jb25maWd1cmF0aW9uLT5zZXRVc2VDdXN0b21TdG9yYWdlUGF0aHModXNl
KTsKK30KKwogLSAoQk9PTClkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZAogewog
ICAgIHJldHVybiBfY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Vu
YWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggOGEyZWFkYTk3OTljZDcyYzQ1MzdiMmI5MDhi
YjI2N2Q2YTdmOWMxYS4uMzNlYzY2ZDhlNDVkYjFkNWRmZmU1NTc5NWY3NmUzNjEwMTg3OWM5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE4NzksNiArMTg3OSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkoZGlyZWN0b3J5KSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KKyAgICBwYXJhbWV0ZXJz
LnVzZUN1c3RvbVN0b3JhZ2VQYXRocyA9IGNvbmZpZ3VyYXRpb24oKS51c2VDdXN0b21TdG9yYWdl
UGF0aHMoKTsKIAogICAgIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyT3Jp
Z2luU3RvcmFnZVF1b3RhKCk7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3Rv
cmFnZVF1b3RhID0gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDFhZTZkMGIxMWFkMzg0ZjY0MTZm
ZmQzYmY1NDgzNzI1YTRmZjNiMzguLjg4ZjliNzg4NDY0ZDdlZmFkODk3ZjI1MTViODhiOTM4NmJl
NTlkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTY2
LDYgKzY2LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9zdGFsZVdoaWxl
UmV2YWxpZGF0ZUVuYWJsZWQgPSB0aGlzLT5tX3N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsK
ICAgICBjb3B5LT5tX2NhY2hlU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fY2FjaGVTdG9yYWdl
RGlyZWN0b3J5OwogICAgIGNvcHktPm1fZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5t
X2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGNvcHktPm1fdXNlQ3VzdG9tU3RvcmFnZVBh
dGhzID0gdGhpcy0+bV91c2VDdXN0b21TdG9yYWdlUGF0aHM7CiAgICAgY29weS0+bV9wZXJPcmln
aW5TdG9yYWdlUXVvdGEgPSB0aGlzLT5tX3Blck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBjb3B5
LT5tX25ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fbmV0d29ya0NhY2hlRGlyZWN0b3J5
OwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
CmluZGV4IDMwYTI5OTMxMDIyN2QyZjcyNGY0MjU3NmI2NjEyNTQ3Yjk2MWNmMjguLmRhN2JmNGUy
OTc3Zjg0YjViYTA4NTgyNGNjNGQwMzE1NmYxODlhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaApAQCAtMTMyLDYgKzEzMiw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmFs
U3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0R2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnko
U3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KIAorICAgIGJvb2wgdXNlQ3VzdG9tU3RvcmFnZVBhdGhzKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VDdXN0b21TdG9yYWdlUGF0aHM7IH0KKyAgICB2b2lkIHNldFVzZUN1c3Rv
bVN0b3JhZ2VQYXRocyhib29sIHVzZSkgeyBtX3VzZUN1c3RvbVN0b3JhZ2VQYXRocyA9IHVzZTsg
fQorCiAgICAgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lOyB9CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWUgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KICAgICAKQEAgLTIwNCw2
ICsyMDcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElzUGVyc2lzdGVudCBtX2lzUGVyc2lz
dGVudCB7IElzUGVyc2lzdGVudDo6Tm8gfTsKIAorICAgIGJvb2wgbV91c2VDdXN0b21TdG9yYWdl
UGF0aHMgeyB0cnVlIH07CiAgICAgU3RyaW5nIG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAg
IFN0cmluZyBtX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIHVpbnQ2NF90IG1fcGVyT3Jp
Z2luU3RvcmFnZVF1b3RhOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDk5NjdhMDkyYjAxNjBhY2Y1Nzg1ZmJhZjY5YjI4NmM0MGYzODZjZGEuLjQ0
ODA2Y2EzNWNhMjhmNzgzNjhhNjNiYjI3MzJkYTVlZmE2OGFkMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0w
Mi0xNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBNaWdyYXRl
IEluZGV4ZWREQiBhbmQgTG9jYWxTdG9yYWdlIGRhdGEgdG8gR2VuZXJhbFN0b3JhZ2VEaXJlY3Rv
cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjYx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2dlbmVyYWwtc3RvcmFnZS1kaXJlY3Rvcnkuc2FsdDogQWRkZWQuCisK
IDIwMjItMDItMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24oKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZDhjZDU2Y2QyOGEwMTA2Y2VhZGJkNmM4NzdmMTgw
MDNjYTk3OWU0Li45YzM5ZDI0OTc0MzI5Mjc4NGFkOWM4NTNkMDI3YTc1OWNiN2I0NDdkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQ1LDYgKzc0NSw3IEBACiAJCTkzNjI1RDI3MUNEOTc0
MUMwMDZEQzFGMSAvKiBsYXJnZS12aWRlby13aXRob3V0LWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2MjVEMjYxQ0Q5NzNB
RjAwNkRDMUYxIC8qIGxhcmdlLXZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbCAqLzsgfTsKIAkJOTM2
OEEyNUUyMjlFRkI0NzAwQTgyOUNBIC8qIGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0x
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM2OEEyNUQyMjlFRkIzQTAwQTgyOUNBIC8qIGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNw
ZW5kcy0xLmh0bWwgKi87IH07CiAJCTkzNjhBMjVGMjI5RUZCNDcwMEE4MjlDQSAvKiBsb2NhbC1z
dG9yYWdlLXByb2Nlc3Mtc3VzcGVuZHMtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjhBMjVDMjI5RUZCM0EwMEE4MjlDQSAvKiBs
b2NhbC1zdG9yYWdlLXByb2Nlc3Mtc3VzcGVuZHMtMi5odG1sICovOyB9OworCQk5MzZFQzM2NjI3
QkEzQjBEMDBBRkE4QUUgLyogZ2VuZXJhbC1zdG9yYWdlLWRpcmVjdG9yeS5zYWx0IGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNkVDMzY1MjdC
QTNBRjIwMEFGQThBRSAvKiBnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQgKi87IH07CiAJ
CTkzNkY3MjgwMUNEN0Q5RUMwMDY4QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlvLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2
RjcyN0UxQ0Q3RDlEMDAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsg
fTsKIAkJOTM2RjcyODExQ0Q3RDlFQzAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdpdGgtYXVkaW8u
bXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNkY3MjdGMUNEN0Q5RDAwMDY4QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCAq
LzsgfTsKIAkJOTM3QTZDOEEyNDM1N0MxNzAwQzNBNkIwIC8qIEtpbGxXZWJQcm9jZXNzV2l0aE9w
ZW5Db25uZWN0aW9uLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzdBNkM4ODI0MzU3QkYzMDBDM0E2QjAgLyogS2lsbFdlYlByb2Nl
c3NXaXRoT3BlbkNvbm5lY3Rpb24tMS5odG1sICovOyB9OwpAQCAtMTM1Nyw2ICsxMzU4LDcgQEAK
IAkJCQkzRkJEMUI0QTFEM0Q2NkFCMDBFNkQ2RkEgLyogRnVsbHNjcmVlbkxheW91dENvbnN0cmFp
bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RFMTk1QjUxQ0ZFMEI4ODAwNTNE
MjU2IC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlDREJGQ0M0NjFBOUZGNDlFMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFs
RnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk5MzZFQzM2NjI3QkEzQjBEMDBB
RkE4QUUgLyogZ2VuZXJhbC1zdG9yYWdlLWRpcmVjdG9yeS5zYWx0IGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTI2RjUyRUFEMTgyODgyN0IwMDIzRDQxMiAvKiBnZW9sb2NhdGlvbkdldEN1cnJl
bnRQb3NpdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTYzNjM1M0E3MUU5ODY2
NUQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTI2RjUyRUFGMTgyODhDMjMwMDIzRDQxMiAvKiBnZW9s
b2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvbldpdGhIaWdoQWNjdXJhY3kuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKQEAgLTI1MTgsNiArMjUyMCw3IEBACiAJCTkzNjI1RDI2MUNEOTczQUYwMDZE
QzFGMSAvKiBsYXJnZS12aWRlby13aXRob3V0LWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8td2l0aG91dC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM2OEEyNUMyMjlFRkIzQTAwQTgyOUNBIC8qIGxvY2FsLXN0b3Jh
Z2UtcHJvY2Vzcy1zdXNwZW5kcy0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
bG9jYWwtc3RvcmFnZS1wcm9jZXNzLXN1c3BlbmRzLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNjhBMjVEMjI5RUZCM0EwMEE4MjlDQSAvKiBsb2NhbC1zdG9yYWdlLXBy
b2Nlc3Mtc3VzcGVuZHMtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvY2Fs
LXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MzZFQzM2NTI3QkEzQUYyMDBBRkE4QUUgLyogZ2VuZXJhbC1zdG9yYWdlLWRpcmVj
dG9yeS5zYWx0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gZmlsZTsgcGF0aCA9ICJnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzZGNzI3RTFDRDdEOUQwMDA2OEEwRkIgLyogbGFyZ2Ut
dmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdl
LXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
NkY3MjdGMUNEN0Q5RDAwMDY4QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGgg
PSAibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5tcDQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzdBNkM4ODI0MzU3QkYzMDBDM0E2QjAgLyogS2lsbFdlYlByb2Nlc3NXaXRoT3BlbkNv
bm5lY3Rpb24tMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIktpbGxXZWJQcm9j
ZXNzV2l0aE9wZW5Db25uZWN0aW9uLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MTE3LDYgKzQxMjAsNyBAQAogCQkJCUNENzhFMTFCMURCN0VBMzYwMDE0QTJERSAvKiBG
dWxsc2NyZWVuRGVsZWdhdGUuaHRtbCAqLywKIAkJCQkzRkJEMUI0OTFEMzlEMURCMDBFNkQ2RkEg
LyogRnVsbHNjcmVlbkxheW91dENvbnN0cmFpbnRzLmh0bWwgKi8sCiAJCQkJQ0RFMTk1QjIxQ0ZF
MEFERTAwNTNEMjU2IC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQuaHRtbCAqLywKKwkJCQk5
MzZFQzM2NTI3QkEzQUYyMDBBRkE4QUUgLyogZ2VuZXJhbC1zdG9yYWdlLWRpcmVjdG9yeS5zYWx0
ICovLAogCQkJCTYzNjM1M0E2MUU5ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJl
bnRQb3NpdGlvblJlc3VsdC5odG1sICovLAogCQkJCTA3RTFGNkExMUZGQzQ0RjkwMDk2QzdFQyAv
KiBnZXREaXNwbGF5TWVkaWEuaHRtbCAqLywKIAkJCQk0NjdDNTY1MTIxQjVFQ0RGMDA1NzUxNkQg
LyogR2V0U2Vzc2lvbkNvb2tpZS5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbQppbmRleCA4MTY1M2Q1ZTRhNjYyZGE4MzBjYThiMjY2ZDlkMmI1N2VjOWFhYzIw
Li42M2FiMzBkNjAyNjA0MGJlZTM1ZWM5ZjhlZmNlNDI5NjBiMGNmOGJmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAi
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDQ29uZmlnLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NRTGl0
ZUZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYktpdC9XS0hUVFBDb29raWVTdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNSZWYuaD4KQEAgLTgwMiwzICs4MDMsMTQ5IEBAIFRFU1QoV2ViS2l0
LCBNZWRpYUNhY2hlKQogICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOnBhdGggZXJy
b3I6JmVycm9yXTsKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwogfQorCitURVNUKFdlYktpdCwg
TWlncmF0ZUxvY2FsU3RvcmFnZURhdGFUb0dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KQoreworICAg
IE5TVVJMICpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltA
In4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdl
YnNpdGVEYXRhL0xvY2FsU3RvcmFnZS8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlz
RGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmxvY2FsU3RvcmFnZUZpbGUgPSBbbG9jYWxTdG9y
YWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImh0dHBzX3dlYmtpdC5v
cmdfMC5sb2NhbHN0b3JhZ2UiXTsKKyAgICBOU1VSTCAqZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0RlZmF1bHQiIHN0cmluZ0J5RXhw
YW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKnJlc291cmNl
U2FsdCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJnZW5lcmFsLXN0
b3JhZ2UtZGlyZWN0b3J5IiB3aXRoRXh0ZW5zaW9uOkAic2FsdCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBOU1VSTCAqbmV3TG9jYWxTdG9yYWdlRmlsZSA9
IFtnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJZ
VW5fd2dSNTFWTFZvOWxjNXhpaXZBelo4VE1tb2pvYTBJYlczMjNxaWJzL1lVbl93Z1I1MVZMVm85
bGM1eGlpdkF6WjhUTW1vam9hMEliVzMyM3FpYnMvTG9jYWxTdG9yYWdlL2xvY2Fsc3RvcmFnZS5z
cWxpdGUzIl07CisgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl07CisgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRl
bUF0VVJMOmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IGVycm9yOm5pbF07CisgICAgW2ZpbGVNYW5h
Z2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IHdpdGhJbnRl
cm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKKyAgICBb
ZmlsZU1hbmFnZXIgY29weUl0ZW1BdFVSTDpyZXNvdXJjZVNhbHQgdG9VUkw6W2dlbmVyYWxTdG9y
YWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInNhbHQiXSBlcnJvcjpu
aWxdOworCisgICAgTlNTdHJpbmcgKmh0bWxTdHJpbmcgPSBAIjxzY3JpcHQ+IFwKKyAgICAgICAg
cmVzdWx0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rlc3RrZXknKTsgXAorICAgICAgICBpZiAo
IXJlc3VsdCkgXAorICAgICAgICAgICAgcmVzdWx0ID0gJ1tudWxsXSc7IFwKKyAgICAgICAgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UocmVzdWx0
KTsgXAorICAgICAgICA8L3NjcmlwdD4iOworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5fd2Vi
U3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICB3ZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSA9IGdlbmVy
YWxTdG9yYWdlRGlyZWN0b3J5OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpLnVzZUN1c3RvbVN0b3JhZ2VQYXRocyA9IHRydWU7CisgICAgYXV0byBtZXNzYWdlSGFuZGxl
ciA9IGFkb3B0TlMoW1tXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdF0pOworCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKKyAgICAgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVz
c2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiW251bGxd
IiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKyAgICAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0ZXN0a2V5JywgJ3Rlc3R2
YWx1ZScpIl07CisKKyAgICAgICAgLy8gRW5zdXJlIGl0ZW0gaXMgc3RvcmVkIGJ5IGdldHRpbmcg
aXQgaW4gYW5vdGhlciBXS1dlYlZpZXcuCisgICAgICAgIGF1dG8gc2Vjb25kV2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgICAgICBbc2Vjb25kV2ViVmlldyBsb2Fk
SFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL3dlYmtpdC5vcmcvIl1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgidGVzdHZhbHVl
IiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6bG9jYWxTdG9yYWdlRmlsZS5wYXRoXSk7CisKKyAgICAgICAg
Y29uZmlndXJhdGlvbiA9IG5pbDsKKyAgICAgICAgd2ViVmlldyA9IG5pbDsKKyAgICAgICAgc2Vj
b25kV2ViVmlldyA9IG5pbDsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgV2Vic2l0ZURh
dGFTdG9yZSB0aGF0IHBlcmZvcm1zIG1pZ3JhdGlvbi4KKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS51c2VDdXN0b21TdG9yYWdlUGF0aHMgPSBmYWxzZTsKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdl
SGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHRoaXJkV2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW3RoaXJkV2ViVmlldyBsb2FkSFRN
TFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczov
L3dlYmtpdC5vcmcvIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3R2YWx1ZSIsIGdldE5leHRN
ZXNzYWdlKCkuYm9keSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpsb2NhbFN0b3JhZ2VGaWxlLnBhdGhdKTsKKyAgICBF
WFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpuZXdMb2NhbFN0b3JhZ2VG
aWxlLnBhdGhdKTsKK30KKworVEVTVChXZWJLaXQsIE1pZ3JhdGVJbmRleGVkREJEYXRhVG9HZW5l
cmFsU3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICBOU1VSTCAqaW5kZXhlZERCRGlyZWN0b3J5ID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9JbmRleGVkREIiIHN0cmluZ0J5RXhw
YW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmluZGV4ZWRE
Qk9yaWdpbkRpcmVjdG9yeSA9IFtpbmRleGVkREJEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAidjEvaHR0cHNfd2Via2l0Lm9yZ18wIl07CisgICAgTlNTdHJpbmcgKmluZGV4
ZWREQkRhdGFiYXNlTmFtZSA9IEAiVGVzdERhdGFiYXNlIjsKKyAgICBOU1N0cmluZyAqaGFzaGVk
SW5kZXhlZERCRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0
ZUhhc2hGb3JGaWxlTmFtZShpbmRleGVkREJEYXRhYmFzZU5hbWUpOworICAgIE5TVVJMICppbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFtpbmRleGVkREJPcmlnaW5EaXJlY3RvcnkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZV07CisgICAg
TlNVUkwgKmluZGV4ZWREQkZpbGUgPSBbaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAq
Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGli
cmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVE
YXRhL0RlZmF1bHQiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllF
U107CisgICAgTlNVUkwgKnJlc291cmNlU2FsdCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5IiB3aXRoRXh0ZW5zaW9uOkAi
c2FsdCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBOU1VS
TCAqbmV3SW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5ID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIllVbl93Z1I1MVZMVm85bGM1eGlpdkF6WjhU
TW1vam9hMEliVzMyM3FpYnMvWVVuX3dnUjUxVkxWbzlsYzV4aWl2QXpaOFRNbW9qb2EwSWJXMzIz
cWlicy9JbmRleGVkREIvIl07CisgICAgTlNVUkwgKm5ld0luZGV4ZWREQkRpcmVjdG9yeSA9IFtu
ZXdJbmRleGVkREJPcmlnaW5EaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhh
c2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZV07CisgICAgTlNVUkwgKm5ld0luZGV4ZWREQkZpbGUg
PSBbbmV3SW5kZXhlZERCRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklu
ZGV4ZWREQi5zcWxpdGUzIl07CisKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRl
bUF0VVJMOmluZGV4ZWREQkRpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBy
ZW1vdmVJdGVtQXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKyAgICBb
ZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0b1VSTDpbZ2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAic2FsdCJd
IGVycm9yOm5pbF07CisKKyAgICBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPHNjcmlwdD4gXAor
ICAgICAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbignVGVzdERhdGFiYXNl
Jyk7IFwKKyAgICAgICAgdmFyIHVwZ3JhZGVuZWVkZWRSZWNlaXZlZCA9IGZhbHNlOyBcCisgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsgXAorICAgICAg
ICAgICAgdmFyIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsgXAorICAgICAgICAgICAgdmFyIG9z
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOyBcCisgICAgICAgICAg
ICBvcy5wdXQoJ3ZhbHVlJywgJ2tleScpOyBcCisgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgaXMgY3JlYXRl
ZCcpOyBcCisgICAgICAgICAgICB1cGdyYWRlbmVlZGVkUmVjZWl2ZWQgPSB0cnVlOyBcCisgICAg
ICAgIH07IFwKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeyBc
CisgICAgICAgICAgICBpZiAodXBncmFkZW5lZWRlZFJlY2VpdmVkKSBcCisgICAgICAgICAgICAg
ICAgcmV0dXJuOyBcCisgICAgICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7IFwKKyAg
ICAgICAgICAgIGRiLnRyYW5zYWN0aW9uKCdUZXN0T2JqZWN0U3RvcmUnKS5vYmplY3RTdG9yZSgn
VGVzdE9iamVjdFN0b3JlJykuZ2V0KCdrZXknKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkg
eyBcCisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV2ZW50LnRhcmdldC5yZXN1bHQgPyBl
dmVudC50YXJnZXQucmVzdWx0IDogJ1tudWxsXSc7IFwKKyAgICAgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShyZXN1bHQpOyBc
CisgICAgICAgICAgICB9OyBcCisgICAgICAgIH07IFwKKyAgICAgICAgPC9zY3JpcHQ+IjsKKyAg
ICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgd2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5k
ZXhlZERCRGlyZWN0b3J5OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
LmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAg
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkudXNlQ3VzdG9tU3RvcmFnZVBhdGhz
ID0gdHJ1ZTsKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1dlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRp
b24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdl
dCgpXSkuZ2V0KCldOworICAgICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAi
dGVzdEhhbmRsZXIiXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07Cisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVkIiwgZ2V0TmV4dE1l
c3NhZ2UoKS5ib2R5KTsKKworICAgICAgICAvLyBFbnN1cmUgaXRlbSBpcyBzdG9yZWQgYnkgZ2V0
dGluZyBpdCBpbiBhbm90aGVyIFdLV2ViVmlldy4KKyAgICAgICAgYXV0byBzZWNvbmRXZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAg
ICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIFtzZWNvbmRXZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJ2YWx1
ZSIsIGdldE5leHRNZXNzYWdlKCkuYm9keSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFu
YWdlciBmaWxlRXhpc3RzQXRQYXRoOmluZGV4ZWREQkZpbGUucGF0aF0pOworCisgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBuaWw7CisgICAgICAgIHdlYlZpZXcgPSBuaWw7CisgICAgICAgIHNlY29u
ZFdlYlZpZXcgPSBuaWw7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGEgbmV3IFdlYnNpdGVEYXRh
U3RvcmUgdGhhdCBwZXJmb3JtcyBtaWdyYXRpb24uCisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uZ2V0KCkudXNlQ3VzdG9tU3RvcmFnZVBhdGhzID0gZmFsc2U7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKV07CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byB0aGlyZFdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFt0aGlyZFdlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93
ZWJraXQub3JnLyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ2YWx1ZSIsIGdldE5leHRNZXNzYWdl
KCkuYm9keSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDppbmRleGVkREJGaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJV
RShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpuZXdJbmRleGVkREJGaWxlLnBhdGhdKTsK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZ2Vu
ZXJhbC1zdG9yYWdlLWRpcmVjdG9yeS5zYWx0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9nZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNm
YjhhNzMyZTFjNzZkNDE5Y2NkNzliYmYyYTJhMDI2ZGVjNTIzNAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZ2VuZXJhbC1zdG9yYWdlLWRp
cmVjdG9yeS5zYWx0CkBAIC0wLDAgKzEgQEAKK3vQzPzcOrweClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452130</attachid>
            <date>2022-02-15 20:35:19 -0800</date>
            <delta_ts>2022-02-15 20:35:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236611-20220215203518.patch</filename>
            <type>text/plain</type>
            <size>56022</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzZDAwOGRjM2U4MTM4ZjM0
NDdiOGIzZTllOGFkOTg4MmY1OGFmMzIuLjI5YmU0Nzk2NTdlODkyZDRmZTBlYjcwNjc4ZDc5MWUz
M2RhNDExNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjItMDItMTUgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBJbmRleGVkREIgYW5k
IExvY2FsU3RvcmFnZSBkYXRhIHRvIEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICBBZGQgYSBuZXcgcGFyYW1ldGVyIHVzZUN1c3RvbVN0b3JhZ2VQYXRocyBv
biBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiB0byBzcGVjaWZ5IHdoZXRoZXIgV2ViS2l0
IHNob3VsZCB1c2UgCisgICAgICAgIGN1c3RvbSBzdG9yYWdlIHBhdGhzLiBJZiB0aGUgdmFsdWUg
aXMgdHJ1ZSwgV2ViS2l0IHdpbGwga2VlcCB1c2luZyB0aGUgY3VzdG9tIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSBhbmQgCisgICAgICAgIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IHBhdGhzIGFz
IGl0IGlzIG5vdy4gSWYgdGhlIHZhbHVlIGlzIGZhbHNlLCBXZWJLaXQgd2lsbCBtaWdyYXRlIGRh
dGEgZnJvbSAKKyAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5IGFuZCBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSB0byBuZXcgcGF0aHMgc2V0IGJ5IFdlYktpdCB1bmRlciBnZW5lcmFsU3Rv
cmFnZURpcmVjdG9yeS4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0Lk1pZ3JhdGVMb2NhbFN0
b3JhZ2VEYXRhVG9HZW5lcmFsU3RvcmFnZURpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgV2Vi
S2l0Lk1pZ3JhdGVJbmRleGVkREJEYXRhVG9HZW5lcmFsU3RvcmFnZURpcmVjdG9yeQorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9j
YWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpvcmlnaW5E
aXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6b3JpZ2luRmlsZVBhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFn
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0OjpTdG9yYWdlQnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmxvY2FsU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aWRiU3RvcmFnZU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tl
dDo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9y
YWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5h
Z2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFdl
YktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmZldGNoRGF0YVR5cGVz
SW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlTG9jYWxTdG9yYWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9yYWdlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0
OjpyZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9y
YWdlTWFuYWdlcjo6b3JpZ2luRmlsZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAgIChXZWJLaXQ6
Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aXNFbXB0eSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdl
ci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
c2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uIHNldFNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRoczpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRTaG91bGRVc2VDdXN0b21TdG9yYWdl
UGF0aHMpOgorCiAyMDIyLTAyLTE1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBGaXhlcyBmb3IgYnVpbGQtd2Via2l0IC0tbWluaW1hbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAzZjY2
ZTNlYjM0NDllYjhlZGE3NzFjM2UwOTRiZDFhYWZmYWM0OTJkLi4xMmY4ZThhNWI1OWYwMGRkN2I3
ZWZkM2IyYWQxMzU3ZmEyNTE2OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDAzLDcgKzQwMyw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzCiAgICAgYWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBw
YXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5
T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIHNl
c3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdl
RGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxlLCBwYXJh
bWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSwgcGFy
YW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpOworICAg
ICAgICBzZXNzaW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5nZW5lcmFs
U3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeUhhbmRs
ZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUsIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnBlck9yaWdp
blN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3Rh
LCBwYXJhbWV0ZXJzLnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyk7CisKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwg
V1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBw
YXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCmluZGV4IDRhNzE5NDFjYWU3MDZkNzMwYmFlMjBiMjgwZTNkOGZmNzVkOTQ1MzIu
LmQyODIwZWFkYjNiODhkNDQ2MmFiZjQ2N2ZhZGI4Zjg2YjY2MDg1NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC02NTksNyArNjU5
LDcgQEAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU2hhcmVk
V29ya2VyU2VydmVyKCkKICAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOwogfQogCi12
b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5n
JiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0
b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBp
ZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhh
bmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3Jp
Z2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpCit2b2lkIE5ldHdvcmtT
ZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5lcmFsU3Rv
cmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQYXRoSGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3Qg
U3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVp
bnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tU3RvcmFn
ZVBhdGhzKQogewogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQogICAgICAgICByZXR1cm47CkBA
IC02NzAsNyArNjcwLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLAogICAgIElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEOwogICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICAgICBjb25u
ZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlxdWVJRCgpOwotICAgIG1fc3RvcmFnZU1hbmFnZXIg
PSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklE
LCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBj
YWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVv
dGEpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3Rv
cmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIHNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRo
cyk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmVuc3VyZUNhY2hlRW5naW5lKEZ1bmN0aW9u
PHZvaWQoQ2FjaGVTdG9yYWdlOjpFbmdpbmUmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCA3OWQ3Y2U0NDA0YTEzOGRm
OWI4OGFhZWM5N2I2OTEzYWY2MGE0Y2VjLi44NWM3Y2JkNjkwMzRkOWNiYTdmNDQ1ZGE5ZGU0NzVh
MWQ3YjM1MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgogICAgIFdlYlNoYXJlZFdvcmtlclNl
cnZlciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CiAKICAgICBOZXR3b3JrU3RvcmFnZU1h
bmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsg
fQotICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJh
bFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0
aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgaWRiU3RvcmFn
ZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaWRiU3RvcmFnZVBhdGhIYW5kbGUsIGNv
bnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3Rh
LCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKKyAgICB2b2lkIGFkZFN0b3JhZ2VN
YW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYg
bG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0b3JhZ2VQ
YXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFn
ZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJk
UGFydHlRdW90YSwgYm9vbCBzaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMpOwogCiAgICAgQ2Fj
aGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyByZXR1cm4gbV9jYWNoZUVuZ2luZS5n
ZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0
b3JhZ2U6OkVuZ2luZSYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCAzY2UwZWM4
NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4YzkxOWQ2ZjdjLi44Y2RhNjZhYWNlM2Y5MjZmMTc5MWVm
MmFiNmExNmJlZDNjM2E5ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0zNiw2ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gU3VnZ2VzdGVkIGJ5IGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi93ZWJzdG9yYWdlLyNkaXNrLXNwYWNlCiBjb25zdGV4cHIgdW5zaWduZWQgbG9jYWxT
dG9yYWdlUXVvdGFJbkJ5dGVzID0gNSAqIE1COwogY29uc3RleHByIGF1dG8gZmlsZVN1ZmZpeCA9
ICIubG9jYWxzdG9yYWdlIl9zOworY29uc3RleHByIGF1dG8gZmlsZU5hbWUgPSAibG9jYWxzdG9y
YWdlLnNxbGl0ZTMiX3M7CiAKIC8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZXhp
c3RpbmcgZmlsZXMuCiAvLyBXZSBzaG91bGQgbm90IGluY2x1ZGUgb3JpZ2luIGluIGZpbGUgbmFt
ZS4KQEAgLTc1LDExICs3NiwxOSBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZMb2NhbFN0b3JhZ2VEYQogU3RyaW5nIExv
Y2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBpZiAo
ZGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZyB7IH07CisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIG9yaWdpblRvRmlsZU5hbWUob3JpZ2luKSk7CiB9
CiAKK1N0cmluZyBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0aChjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBpZiAoZGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgZmlsZU5hbWUpOworfQorCiBMb2NhbFN0
b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCwgU3Rv
cmFnZUFyZWFSZWdpc3RyeSYgcmVnaXN0cnkpCiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1f
cmVnaXN0cnkocmVnaXN0cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaAppbmRleCBjZGNiNjgxMmY4ZmVk
NjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4Li5mNjJkZGM3MDFkY2RkZjI4OTIzOWU2YjI1NGM0
ZTRjZDg4YjE5YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTQ1LDcgKzQ1LDggQEAgY2xh
c3MgTG9jYWxTdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9y
aWdpbnNPZkxvY2FsU3RvcmFnZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBzdGF0aWMg
U3RyaW5nIGxvY2FsU3RvcmFnZUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgc3RhdGljIFN0cmluZyBsb2NhbFN0b3JhZ2VGaWxl
UGF0aChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
Jik7CisgICAgc3RhdGljIFN0cmluZyBsb2NhbFN0b3JhZ2VGaWxlUGF0aChjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSk7CiAKICAgICBMb2NhbFN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0
aCwgU3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZDJiN2UxNjY4NzkwZjE2ZDZiZjQ4NDI5ZWMw
YzFlYzdmNDM1ZDVhYS4uZTYwOGI4ODVkNThhOGZiMjlhZDQ4ZjUxZmNlMDMxNmQyM2Q5ZTQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEwOCwxMiArMTA4LDEyIEBAIHN0YXRp
YyB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKIH0KIAotUmVmPE5l
dHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24s
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3Qg
ZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKK1JlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1
aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3Jp
Z2luUXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgY29ubmVjdGlvbiwgcGF0
aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGN1c3RvbUNh
Y2hlU3RvcmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFydHlPcmln
aW5RdW90YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlTWFuYWdl
cihzZXNzaW9uSUQsIGNvbm5lY3Rpb24sIHBhdGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGN1
c3RvbUlEQlN0b3JhZ2VQYXRoLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEsIHNob3VsZFVzZUN1c3RvbVBhdGhz
KSk7CiB9CiAKLU5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2
NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCitOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3Rv
cmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3Qg
ZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3Rh
LCBib29sIHNob3VsZFVzZUN1c3RvbVBhdGhzKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQogICAgICwgbV9xdWV1ZShTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUu
V2ViS2l0LlN0b3JhZ2UiKSkKICAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3RhKGRlZmF1bHRPcmln
aW5RdW90YSkKQEAgLTEyMiwxMCArMTIyLDExIEBAIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGF0aCA9IHBhdGguaXNvbGF0
ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KGN1c3RvbUlEQlN0b3JhZ2VQYXRoKSwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShjdXN0b21DYWNoZVN0b3JhZ2VQYXRoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhdGggPSBw
YXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpLCBjdXN0b21JREJTdG9yYWdlUGF0aCA9IGNyb3Nz
VGhyZWFkQ29weShjdXN0b21JREJTdG9yYWdlUGF0aCksIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgg
PSBjcm9zc1RocmVhZENvcHkoY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCksIHNob3VsZFVzZUN1c3Rv
bVBhdGhzXSgpIG11dGFibGUgewogICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVn
aXN0cnkgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk+KCk7CiAg
ICAgICAgIG1fc3RvcmFnZUFyZWFSZWdpc3RyeSA9IG1ha2VVbmlxdWU8U3RvcmFnZUFyZWFSZWdp
c3RyeT4oKTsKICAgICAgICAgbV9pZGJTdG9yYWdlUmVnaXN0cnkgPSBtYWtlVW5pcXVlPElEQlN0
b3JhZ2VSZWdpc3RyeT4oKTsKKyAgICAgICAgbV9zaG91bGRVc2VDdXN0b21QYXRocyA9IHNob3Vs
ZFVzZUN1c3RvbVBhdGhzOwogICAgICAgICBtX3BhdGggPSBwYXRoOwogICAgICAgICBtX2N1c3Rv
bUxvY2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOwogICAgICAgICBtX2N1
c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3VzdG9tSURCU3RvcmFnZVBhdGg7CkBAIC0yMTEsNyArMjEy
LDcgQEAgc3RhdGljIFN0cmluZyBlbmNvZGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbGVTeXN0
ZW06OlNhbHQgc2FsdCkKIHN0YXRpYyBTdHJpbmcgb3JpZ2luRGlyZWN0b3J5UGF0aChjb25zdCBT
dHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgRmls
ZVN5c3RlbTo6U2FsdCBzYWx0KQogewogICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcgeyB9OworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAog
ICAgIGF1dG8gZW5jb2RlZFRvcE9yaWdpbiA9IGVuY29kZShvcmlnaW4udG9wT3JpZ2luLnRvU3Ry
aW5nKCksIHNhbHQpOwogICAgIGF1dG8gZW5jb2RlZE9wZW5pbmdPcmlnaW4gPSBlbmNvZGUob3Jp
Z2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCBzYWx0KTsKQEAgLTIyMSw4ICsyMjIsOSBAQCBz
dGF0aWMgU3RyaW5nIG9yaWdpbkRpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiByb290UGF0aCwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50Twogc3RhdGljIFN0cmluZyBvcmlnaW5GaWxlUGF0aChjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSkKIHsKICAgICBpZiAoZGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZyB7IH07Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJvcmlnaW4iX3MpOworICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZGlyZWN0b3J5LCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6b3JpZ2luRmlsZUlkZW50
aWZpZXIoKSk7CiB9CiAKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4pCkBAIC0yNDcsNyArMjQ5LDcgQEAgT3JpZ2luU3RvcmFnZU1hbmFnZXImIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBXZWIKICAg
ICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24gaW5jcmVhc2VRdW90YUZ1
bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4sIGNvbm5lY3Rpb24gPSBt
X3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8gY3VycmVudFF1b3RhLCBh
dXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlkZW50aWZp
ZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJbmNyZWFzZSksIDApOwog
ICAgICAgICB9OwotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdlTWFuYWdl
cj4ocXVvdGEsIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSwgV1RGTW92ZShvcmlnaW5E
aXJlY3RvcnkpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpLCBXVEZNb3ZlKGlkYlN0b3JhZ2VQ
YXRoKSwgV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihxdW90YSwgV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVu
Y3Rpb24pLCBXVEZNb3ZlKG9yaWdpbkRpcmVjdG9yeSksIFdURk1vdmUobG9jYWxTdG9yYWdlUGF0
aCksIFdURk1vdmUoaWRiU3RvcmFnZVBhdGgpLCBXVEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgpLCBt
X3Nob3VsZFVzZUN1c3RvbVBhdGhzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuaAppbmRleCA5YzNkMmQ2NDA2ZmVlOWIyYjRlNmNhMjZmN2I2NWZl
MGM3OGI4M2JkLi5jNzM1YTBlNGU5NTZjZWY2YWM1ODYwOGZjYTdlNmYyMGRjMzQwMTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVh
UmVnaXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBJ
UEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwg
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFn
ZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVm
YXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhKTsK
KyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6U2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRf
dCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVv
dGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwogICAgIHN0YXRpYyBib29sIGNhbkhhbmRs
ZVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKIAogICAgIHZvaWQgc3RhcnRSZWNl
aXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CkBAIC05NSw4ICs5
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9y
VGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAogcHJpdmF0ZToKLSAgICBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKTsKLSAgICBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25z
dCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNhY2hl
U3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVs
dFRoaXJkUGFydHlPcmlnaW5RdW90YSk7CisgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1
aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3Jp
Z2luUXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwogICAgIH5OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIoKTsKICAgICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5TdG9yYWdl
TWFuYWdlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICBib29sIHJlbW92ZU9y
aWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKQEAgLTE4MSw2ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2N1c3RvbUNhY2hl
U3RvcmFnZVBhdGg7CiAgICAgdWludDY0X3QgbV9kZWZhdWx0T3JpZ2luUXVvdGE7CiAgICAgdWlu
dDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhOworICAgIGJvb2wgbV9zaG91bGRV
c2VDdXN0b21QYXRoczsKICAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fcGFyZW50Q29u
bmVjdGlvbjsKICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhhc2hTZXQ8
U3RyaW5nPj4gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb247CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9y
YWdlTWFuYWdlci5jcHAKaW5kZXggYmNjMGYzMzg3NzlmNDkzMTAwNzRhN2M2Y2JkMmZjYWU3NTM2
ZGMwNi4uMTU2N2RlYTEyNzVlMzU0MWY2MGQ5YmIxNTYxODRjMWY1MjUxNDY4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2lu
U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00NywxMSArNDcsMTIgQEAgZW51bSBjbGFzcyBPcmlnaW5T
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sIHsgQmVzdEVmZm9ydCwgUGVy
c2lzdGUKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdG9yYWdlQnVja2V0KGNvbnN0
IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKQorICAgIFN0
b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgaWRiU3Rv
cmFnZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpCiAgICAgICAgIDogbV9yb290UGF0
aChyb290UGF0aCkKICAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAg
LCBtX2xvY2FsU3RvcmFnZVBhdGgobG9jYWxTdG9yYWdlUGF0aCkKLSAgICAgICAgLCBtX2lkYlN0
b3JhZ2VQYXRoKGlkYlN0b3JhZ2VQYXRoKQorICAgICAgICAsIG1fY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aChsb2NhbFN0b3JhZ2VQYXRoKQorICAgICAgICAsIG1fY3VzdG9tSURCU3RvcmFnZVBhdGgo
aWRiU3RvcmFnZVBhdGgpCisgICAgICAgICwgbV9zaG91bGRVc2VDdXN0b21QYXRocyhzaG91bGRV
c2VDdXN0b21QYXRocykKICAgICB7CiAgICAgfQogCkBAIC0xMjksNyArMTMwLDcgQEAgcHVibGlj
OgogICAgIExvY2FsU3RvcmFnZU1hbmFnZXImIGxvY2FsU3RvcmFnZU1hbmFnZXIoU3RvcmFnZUFy
ZWFSZWdpc3RyeSYgcmVnaXN0cnkpCiAgICAgewogICAgICAgICBpZiAoIW1fbG9jYWxTdG9yYWdl
TWFuYWdlcikKLSAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlTWFuYWdlciA9IG1ha2VVbmlxdWU8
TG9jYWxTdG9yYWdlTWFuYWdlcj4obV9sb2NhbFN0b3JhZ2VQYXRoLCByZWdpc3RyeSk7CisgICAg
ICAgICAgICBtX2xvY2FsU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPExvY2FsU3RvcmFnZU1h
bmFnZXI+KHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpLCByZWdpc3RyeSk7CiAKICAgICAgICAg
cmV0dXJuICptX2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAgfQpAQCAtMTU1LDcgKzE1Niw3IEBA
IHB1YmxpYzoKICAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIoSURCU3Rv
cmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgSURCU3RvcmFnZU1hbmFnZXI6OlF1b3RhQ2hlY2tGdW5j
dGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKICAgICB7CiAgICAgICAgIGlmICghbV9pZGJTdG9y
YWdlTWFuYWdlcikKLSAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVl
PElEQlN0b3JhZ2VNYW5hZ2VyPihtX2lkYlN0b3JhZ2VQYXRoLCByZWdpc3RyeSwgV1RGTW92ZShx
dW90YUNoZWNrRnVuY3Rpb24pKTsKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIgPSBt
YWtlVW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPihyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCksIHJl
Z2lzdHJ5LCBXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpOwogCiAgICAgICAgIHJldHVybiAq
bV9pZGJTdG9yYWdlTWFuYWdlcjsKICAgICB9CkBAIC0xNzUsOCArMTc2LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHx8IChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIChtX2lkYlN0b3JhZ2VNYW5h
Z2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5pc0FjdGl2ZSgp
KSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICBib29sIGlzRW1wdHko
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAgICAgICAg
YXV0byBmaWxlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCk7CiAgICAg
ICAgIGF1dG8gaGFzVmFsaWRGaWxlID0gV1RGOjphbnlPZihmaWxlcywgWyZdKGF1dG8gZmlsZSkg
ewogICAgICAgICAgICAgYm9vbCBpc0ludmFsaWRGaWxlID0gKGZpbGUgPT0gb3JpZ2luRmlsZU5h
bWUpOwpAQCAtMTg4LDggKzE5MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGhhc1ZhbGlkRmls
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsKLSAgICAgICAgcmV0dXJuICFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCkgJiYgIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMobV9pZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIGF1dG8gaWRiU3RvcmFnZUZpbGVz
ID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCkpOwor
ICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVzb2x2ZWRMb2NhbFN0b3Jh
Z2VQYXRoKCkpICYmIGlkYlN0b3JhZ2VGaWxlcy5pc0VtcHR5KCk7CiAgICAgfQogCiAgICAgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gdHlwZXMpCkBAIC0yMjcsMTUgKzIzMCw0MSBAQCBwdWJsaWM6CiAgICAg
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRo
KHBhdGgpKTsKICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobV9yb290UGF0aCwgcGF0aCk7
CiAKLSAgICAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0
b3JhZ2VQYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGN1cnJlbnRMb2NhbFN0b3JhZ2VQ
YXRoID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoKCk7CisgICAgICAgIGlmICghY3VycmVudExv
Y2FsU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06
OnBhcmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwotICAgICAgICAgICAgV2ViQ29yZTo6U1FM
aXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgsIGxvY2Fs
U3RvcmFnZVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92
ZURhdGFiYXNlRmlsZShjdXJyZW50TG9jYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0aCk7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1faWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpICYm
ICFpZGJTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBjdXJyZW50SURCU3Rv
cmFnZVBhdGggPSByZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCk7CisgICAgICAgIGlmICghY3VycmVu
dElEQlN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6
cGFyZW50UGF0aChpZGJTdG9yYWdlUGF0aCkpOwotICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRl
RmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJTdG9yYWdl
UGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjptb3ZlRGF0YWJh
c2VGaWxlKGN1cnJlbnRJREJTdG9yYWdlUGF0aCwgaWRiU3RvcmFnZVBhdGgpOworICAgICAgICB9
CisgICAgfQorCisgICAgU3RyaW5nIHJlc29sdmVkSURCU3RvcmFnZVBhdGgoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICAgICAgaWYgKCFtX3Jlc29s
dmVkSURCU3RvcmFnZVBhdGguaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gbV9yZXNvbHZl
ZElEQlN0b3JhZ2VQYXRoOworCisgICAgICAgIGlmIChtX3Nob3VsZFVzZUN1c3RvbVBhdGhzKSB7
CisgICAgICAgICAgICBBU1NFUlQobV9jdXN0b21JREJTdG9yYWdlUGF0aC5pc0VtcHR5KCkgPT0g
bV9yb290UGF0aC5pc0VtcHR5KCkpOworICAgICAgICAgICAgbV9yZXNvbHZlZElEQlN0b3JhZ2VQ
YXRoID0gbV9jdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGF1dG8gaWRiU3RvcmFnZVBhdGggPSB0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5cGU6Oklu
ZGV4ZWREQik7CisgICAgICAgICAgICBpZiAoIW1fY3VzdG9tSURCU3RvcmFnZVBhdGguaXNFbXB0
eSgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGlkYlN0b3JhZ2VQYXRoKSkgeworICAgICAg
ICAgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG1fY3VzdG9tSURCU3RvcmFnZVBhdGgsIGlk
YlN0b3JhZ2VQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoaWRiU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX3Jl
c29sdmVkSURCU3RvcmFnZVBhdGggPSBpZGJTdG9yYWdlUGF0aDsKICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgQVNTRVJUKCFtX3Jlc29sdmVkSURCU3RvcmFnZVBhdGguaXNOdWxsKCkpOwor
ICAgICAgICByZXR1cm4gbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRoOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTI2OSwxMiArMjk4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYmICFyZXN1
bHQuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpKSB7Ci0gICAgICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpKQorICAgICAg
ICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRo
KCkpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0
b3JhZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhcmVzdWx0LmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZGF0
YWJhc2VzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsgIWRh
dGFiYXNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoYXV0byBkYXRhYmFzZXMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KHJlc29sdmVkSURCU3RvcmFnZVBhdGgoKSk7ICFkYXRhYmFz
ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpOwogICAgICAgICB9CiAKQEAgLTI5MSwxMCArMzIwLDExIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZURhdGEoV2FsbFRpbWUgdGlt
ZSkKICAgICB7Ci0gICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZSht
X2xvY2FsU3RvcmFnZVBhdGgpID49IHRpbWUpIHsKKyAgICAgICAgYXV0byBjdXJyZW50TG9jYWxT
dG9yYWdlUGF0aCA9IHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpOworICAgICAgICBpZiAoRmls
ZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY3VycmVudExvY2FsU3RvcmFnZVBhdGgpID49
IHRpbWUpIHsKICAgICAgICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZU1hbmFnZXIpCiAgICAgICAg
ICAgICAgICAgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5jbGVhckRhdGFPbkRpc2soKTsKLSAgICAg
ICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShtX2xv
Y2FsU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
ZGVsZXRlRGF0YWJhc2VGaWxlKGN1cnJlbnRMb2NhbFN0b3JhZ2VQYXRoKTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQpAQCAtMzIwLDIwICszNTAsNDkg
QEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCiAgICAgICAgICAg
ICBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7CiAKLSAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRiU3RvcmFn
ZVBhdGgsIHRpbWUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01vZGlmaWVk
U2luY2UocmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpLCB0aW1lKTsKICAgICB9CiAgICAgCisgICAg
U3RyaW5nIHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpCisgICAgeworICAgICAgICBpZiAoIW1f
cmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIG1f
cmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoOworCisgICAgICAgIGlmIChtX3Nob3VsZFVzZUN1c3Rv
bVBhdGhzKSB7CisgICAgICAgICAgICBBU1NFUlQobV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLmlz
RW1wdHkoKSA9PSBtX3Jvb3RQYXRoLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jlc29sdmVk
TG9jYWxTdG9yYWdlUGF0aCA9IG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGF1dG8gbG9jYWxTdG9yYWdlUGF0aCA9IExvY2FsU3RvcmFnZU1h
bmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKHR5cGVTdG9yYWdlUGF0aChTdG9yYWdlVHlwZTo6
TG9jYWxTdG9yYWdlKSk7CisgICAgICAgICAgICBpZiAoIW1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0
aC5pc0VtcHR5KCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobG9jYWxTdG9yYWdlUGF0aCkp
IHsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5
c3RlbTo6cGFyZW50UGF0aChsb2NhbFN0b3JhZ2VQYXRoKSk7CisgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2N1c3RvbUxvY2FsU3Rv
cmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBtX3Jlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCA9IGxvY2FsU3RvcmFnZVBhdGg7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGg7CisgICAgfQor
CiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBT
dG9yYWdlQnVja2V0TW9kZSBtX21vZGUgeyBTdG9yYWdlQnVja2V0TW9kZTo6QmVzdEVmZm9ydCB9
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+IG1fZmlsZVN5
c3RlbVN0b3JhZ2VNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3JhZ2VNYW5h
Z2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7Ci0gICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0
aDsKKyAgICBTdHJpbmcgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX3Jl
c29sdmVkTG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7Ci0gICAgU3RyaW5nIG1faWRi
U3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3VzdG9tSURCU3RvcmFnZVBhdGg7CisgICAgU3Ry
aW5nIG1fcmVzb2x2ZWRJREJTdG9yYWdlUGF0aDsKKyAgICBib29sIG1fc2hvdWxkVXNlQ3VzdG9t
UGF0aHM7CiB9OwogCitTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om9yaWdpbkZpbGVJZGVu
dGlmaWVyKCkKK3sKKyAgICByZXR1cm4gb3JpZ2luRmlsZU5hbWU7Cit9CisKIHN0YXRpYyBSZWY8
UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0IFN0
cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgUXVv
dGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24p
CiB7CiAgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVuY3Rpb24g
PSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGhdKCkgewpAQCAtMzQyLDEyICs0MDEs
MTQgQEAgc3RhdGljIFJlZjxRdW90YU1hbmFnZXI+IGNyZWF0ZVF1b3RhTWFuYWdlcih1aW50NjRf
dCBxdW90YSwgY29uc3QgU3RyaW5nJiBpZGJTdG8KICAgICByZXR1cm4gUXVvdGFNYW5hZ2VyOjpj
cmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5jcmVhc2VR
dW90YUZ1bmN0aW9uKSk7CiB9CiAKLU9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5TdG9yYWdl
TWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rp
b24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIGxvY2Fs
U3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNoZVN0b3Jh
Z2VQYXRoKQorT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyKHVpbnQ2
NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNl
UXVvdGFGdW5jdGlvbiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aCwgU3RyaW5nJiYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIFN0cmluZyYmIGNhY2hlU3RvcmFn
ZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpCiAgICAgOiBtX3BhdGgoV1RGTW92ZShw
YXRoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlUGF0aChXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgp
KQotICAgICwgbV9pZGJTdG9yYWdlUGF0aChXVEZNb3ZlKGlkYlN0b3JhZ2VQYXRoKSkKKyAgICAs
IG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aChXVEZNb3ZlKGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgp
KQorICAgICwgbV9jdXN0b21JREJTdG9yYWdlUGF0aChXVEZNb3ZlKGN1c3RvbUlEQlN0b3JhZ2VQ
YXRoKSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUGF0aChXVEZNb3ZlKGNhY2hlU3RvcmFnZVBhdGgp
KQotICAgICwgbV9xdW90YU1hbmFnZXIoY3JlYXRlUXVvdGFNYW5hZ2VyKHF1b3RhLCBtX2lkYlN0
b3JhZ2VQYXRoLCBtX2NhY2hlU3RvcmFnZVBhdGgsIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0
aW9uKSkpCisgICAgLCBtX3F1b3RhKHF1b3RhKQorICAgICwgbV9pbmNyZWFzZVF1b3RhRnVuY3Rp
b24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQorICAgICwgbV9zaG91bGRVc2VDdXN0
b21QYXRocyhzaG91bGRVc2VDdXN0b21QYXRocykKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIH0KQEAgLTM2MywxNCArNDI0LDE5IEBAIHZvaWQgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
CiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCYgT3JpZ2luU3RvcmFnZU1hbmFn
ZXI6OmRlZmF1bHRCdWNrZXQoKQogewogICAgIGlmICghbV9kZWZhdWx0QnVja2V0KQotICAgICAg
ICBtX2RlZmF1bHRCdWNrZXQgPSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0aCwgImRl
ZmF1bHQiX3MsIG1fbG9jYWxTdG9yYWdlUGF0aCwgbV9pZGJTdG9yYWdlUGF0aCk7CisgICAgICAg
IG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRoLCAiZGVm
YXVsdCJfcywgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRo
LCBtX3Nob3VsZFVzZUN1c3RvbVBhdGhzKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0QnVja2V0
OwogfQogCiBRdW90YU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIo
KQogewotICAgIHJldHVybiBtX3F1b3RhTWFuYWdlci5nZXQoKTsKKyAgICBpZiAoIW1fcXVvdGFN
YW5hZ2VyKSB7CisgICAgICAgIGF1dG8gaWRiU3RvcmFnZVBhdGggPSBkZWZhdWx0QnVja2V0KCku
cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpOworICAgICAgICBtX3F1b3RhTWFuYWdlciA9IGNyZWF0
ZVF1b3RhTWFuYWdlcihtX3F1b3RhLCBpZGJTdG9yYWdlUGF0aCwgbV9jYWNoZVN0b3JhZ2VQYXRo
LCBzdGQ6OmV4Y2hhbmdlKG1faW5jcmVhc2VRdW90YUZ1bmN0aW9uLCB7IH0pKTsKKyAgICB9CisK
KyAgICByZXR1cm4gKm1fcXVvdGFNYW5hZ2VyOwogfQogCiBGaWxlU3lzdGVtU3RvcmFnZU1hbmFn
ZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIoRmlsZVN5
c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5o
CmluZGV4IGVjNDZjNTRiMzExMWZiMDFiM2NlNjk2OTIwN2MxM2JlNWQ5OTlkOTYuLmRkZGIzMjZh
ODNiNDc4NDJjMjA3ZjU2ZmNjNTgyNGE2NzQ4YmNiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5o
CkBAIC00Myw3ICs0Myw5IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7
CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFF1
b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmluZyYmIHBhdGgsIFN0cmlu
ZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBj
YWNoZVN0b3JhZ2VQYXRoKTsKKyAgICBzdGF0aWMgU3RyaW5nIG9yaWdpbkZpbGVJZGVudGlmaWVy
KCk7CisKKyAgICBPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5h
Z2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgY3Vz
b3RtTG9jYWxTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIFN0cmlu
ZyYmIGNhY2hlU3RvcmFnZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwogICAgIH5P
cmlnaW5TdG9yYWdlTWFuYWdlcigpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwpAQCAtNzAsMTEgKzcyLDE0IEBAIHByaXZhdGU6CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4gbV9kZWZhdWx0QnVja2V0OwogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgYm9vbCBtX3BlcnNpc3RlZCB7IGZhbHNlIH07Ci0gICAgU3RyaW5n
IG1fbG9jYWxTdG9yYWdlUGF0aDsKLSAgICBTdHJpbmcgbV9pZGJTdG9yYWdlUGF0aDsKKyAgICBT
dHJpbmcgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3RvbUlEQlN0
b3JhZ2VQYXRoOwogICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7Ci0gICAgUmVmPFF1b3Rh
TWFuYWdlcj4gbV9xdW90YU1hbmFnZXI7CisgICAgdWludDY0X3QgbV9xdW90YTsKKyAgICBRdW90
YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiBtX2luY3JlYXNlUXVvdGFGdW5jdGlvbjsK
KyAgICBSZWZQdHI8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFuYWdlcjsKKyAgICBib29sIG1fcGVy
c2lzdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkVXNlQ3VzdG9tUGF0aHM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAppbmRleCA3N2FhN2EzZTBjOGEzZmZiZTFhZTBk
ZmNkNDE2NzRhYTc3Y2QyNTI0Li4xMjAzN2ZjOGZiYzY5OWI1OGQwMDlmNDc1NTIzOThkYTFjNDgz
YzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuY3BwCkBAIC01Miw2ICs1Miw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBlbmNvZGVy
IDw8IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBlbmNvZGVyIDw8IHBlclRoaXJkUGFydHlP
cmlnaW5TdG9yYWdlUXVvdGE7CisKKyAgICBlbmNvZGVyIDw8IHNob3VsZFVzZUN1c3RvbVN0b3Jh
Z2VQYXRoczsKIH0KIAogc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4g
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC0xNTUsNiArMTU3LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM+IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDCiAgICAgaWYgKCFw
ZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9ICpw
ZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOworCisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBzaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHM7CisgICAgZGVjb2RlciA+PiBzaG91bGRVc2VD
dXN0b21TdG9yYWdlUGF0aHM7CisgICAgaWYgKCFzaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5zaG91bGRVc2VD
dXN0b21TdG9yYWdlUGF0aHMgPSAqc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzOwogICAgIAog
ICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggMjA5ODQ2ODE2Mjk5MDQ3MzM4ODRjZmNi
MTI3YWE1NzIxZDJjZWU4OS4uMzdjOTdmMTMwMzA3NzVkY2U1ZTNkMTAwMjAzNWYyMWU3MzU0MGU5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycy5oCkBAIC03Myw2ICs3Myw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyB7CiAKICAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgdWludDY0X3Qg
cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKKworICAgIGJvb2wgc2hvdWxkVXNlQ3Vz
dG9tU3RvcmFnZVBhdGhzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBmMjgwZmNiMzc1YzIz
ZTJkMzVjNzY5MTliNWJlZTM1MTM1NDNmMTA0Li41OTgzYTdlZjU5NmM2MzU1ZjRhMzE4ZDBkOTdm
OGY2ZTliNGNmYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApA
QCAtODYsNiArODYsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEu
MCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICphbHRlcm5h
dGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjAp
LCBpb3MoMTQuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VS
TCAqc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCks
IGlvcygxNC4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJM
ICpnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvdWxk
VXNlQ3VzdG9tU3RvcmFnZVBhdGhzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Rpbmcgb25seS4KIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Zv
clRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KaW5kZXggZGE2NDcwOTc2MjQ3MmVk
YTk4ZTY4ZmM1YjZiZTZmOWRlM2E1ZDRjMy4uYjU0OWRlN2EyM2RkZDJmYjUwNTdhN2Q0MjJkNTc0
NmZiNjQwNTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQpA
QCAtMzUxLDYgKzM1MSwxNiBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTEFyZ3VtZW50KE5TVVJMICp1
cmwpCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KHVybC5w
YXRoKTsKIH0KIAorLSAoQk9PTClzaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMKK3sKKyAgICBy
ZXR1cm4gX2NvbmZpZ3VyYXRpb24tPnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocygpOworfQor
CistICh2b2lkKXNldFNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRoczooQk9PTCl1c2UKK3sKKyAg
ICBfY29uZmlndXJhdGlvbi0+c2V0U2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzKHVzZSk7Cit9
CisKIC0gKEJPT0wpZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQKIHsKICAgICBy
ZXR1cm4gX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDhhMmVhZGE5Nzk5Y2Q3MmM0NTM3YjJiOTA4YmIyNjdk
NmE3ZjljMWEuLjllZjE0YTVlOGY2NGQ3MzlmNGNkMzMxNjA4MTc4ZWEwNTExMjZlZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC0xODc5LDYgKzE4NzksNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5
KGRpcmVjdG9yeSkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0
b3J5SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CisgICAgcGFyYW1ldGVycy5zaG91
bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSBjb25maWd1cmF0aW9uKCkuc2hvdWxkVXNlQ3VzdG9t
U3RvcmFnZVBhdGhzKCk7CiAKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9
IHBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCAxYWU2ZDBiMTFhZDM4
NGY2NDE2ZmZkM2JmNTQ4MzcyNWE0ZmYzYjM4Li4yNWY4ZjQyOWJlNWFkZGEzYzk5MzMyNTA0YzU1
YWQ2NjVkMjNhYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3Bw
CkBAIC02Niw2ICs2Niw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fc3Rh
bGVXaGlsZVJldmFsaWRhdGVFbmFibGVkID0gdGhpcy0+bV9zdGFsZVdoaWxlUmV2YWxpZGF0ZUVu
YWJsZWQ7CiAgICAgY29weS0+bV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2NhY2hl
U3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0g
dGhpcy0+bV9nZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBjb3B5LT5tX3Nob3VsZFVzZUN1
c3RvbVN0b3JhZ2VQYXRocyA9IHRoaXMtPm1fc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzOwog
ICAgIGNvcHktPm1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gdGhpcy0+bV9wZXJPcmlnaW5TdG9y
YWdlUXVvdGE7CiAgICAgY29weS0+bV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX25l
dHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCAzMGEyOTkzMTAyMjdkMmY3MjRmNDI1NzZiNjYxMjU0
N2I5NjFjZjI4Li44ZDdmOWIyOWE3NTZiMjQ2Y2UxMzE1ZjdmM2QxODBkNDZlOGI0ODIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTEzMiw2ICsxMzIsOSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldEdlbmVy
YWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2dlbmVyYWxTdG9yYWdl
RGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAKKyAgICBib29sIHNob3VsZFVzZUN1
c3RvbVN0b3JhZ2VQYXRocygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3VzdG9tU3RvcmFn
ZVBhdGhzOyB9CisgICAgdm9pZCBzZXRTaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMoYm9vbCB1
c2UpIHsgbV9zaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSB1c2U7IH0KKwogICAgIGNvbnN0
IFN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQog
ICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZShTdHJp
bmcmJiBkaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAgICAgCkBAIC0yMDQsNiArMjA3LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBJc1BlcnNpc3RlbnQgbV9pc1BlcnNpc3RlbnQgeyBJc1BlcnNp
c3RlbnQ6Ok5vIH07CiAKKyAgICBib29sIG1fc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzIHsg
dHJ1ZSB9OwogICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcg
bV9nZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKICAgICB1aW50NjRfdCBtX3Blck9yaWdpblN0b3Jh
Z2VRdW90YTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA0YTU5MDk3N2IyM2E5MDMxN2I4MDFhYmY2YmQyODI1NTIyMGMwZmUwLi4xN2Q2MmRmNTIz
YzA0MTVkYzk5YWYzNmI2YjYxYzQ0NDNkODIxZjAyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTUgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBJbmRleGVk
REIgYW5kIExvY2FsU3RvcmFnZSBkYXRhIHRvIEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2MTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9nZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQ6IEFkZGVkLgorCiAyMDIyLTAyLTE1
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEhlYXBUeXBl
IGFuIGVudW0gY2xhc3MuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVkOGNkNTZjZDI4YTAx
MDZjZWFkYmQ2Yzg3N2YxODAwM2NhOTc5ZTQuLjljMzlkMjQ5NzQzMjkyNzg0YWQ5Yzg1M2QwMjdh
NzU5Y2I3YjQ0N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUsNiArNzQ1LDcgQEAK
IAkJOTM2MjVEMjcxQ0Q5NzQxQzAwNkRDMUYxIC8qIGxhcmdlLXZpZGVvLXdpdGhvdXQtYXVkaW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzYyNUQyNjFDRDk3M0FGMDA2REMxRjEgLyogbGFyZ2UtdmlkZW8td2l0aG91dC1hdWRpby5o
dG1sICovOyB9OwogCQk5MzY4QTI1RTIyOUVGQjQ3MDBBODI5Q0EgLyogbG9jYWwtc3RvcmFnZS1w
cm9jZXNzLXN1c3BlbmRzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzY4QTI1RDIyOUVGQjNBMDBBODI5Q0EgLyogbG9jYWwtc3Rv
cmFnZS1wcm9jZXNzLXN1c3BlbmRzLTEuaHRtbCAqLzsgfTsKIAkJOTM2OEEyNUYyMjlFRkI0NzAw
QTgyOUNBIC8qIGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0yLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2OEEyNUMyMjlF
RkIzQTAwQTgyOUNBIC8qIGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0yLmh0bWwgKi87
IH07CisJCTkzNkVDMzY2MjdCQTNCMEQwMEFGQThBRSAvKiBnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0
b3J5LnNhbHQgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM2RUMzNjUyN0JBM0FGMjAwQUZBOEFFIC8qIGdlbmVyYWwtc3RvcmFnZS1kaXJlY3Rv
cnkuc2FsdCAqLzsgfTsKIAkJOTM2RjcyODAxQ0Q3RDlFQzAwNjhBMEZCIC8qIGxhcmdlLXZpZGVv
LXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzZGNzI3RTFDRDdEOUQwMDA2OEEwRkIgLyogbGFyZ2UtdmlkZW8td2l0
aC1hdWRpby5odG1sICovOyB9OwogCQk5MzZGNzI4MTFDRDdEOUVDMDA2OEEwRkIgLyogbGFyZ2Ut
dmlkZW8td2l0aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM2RjcyN0YxQ0Q3RDlEMDAwNjhBMEZCIC8qIGxhcmdlLXZpZGVv
LXdpdGgtYXVkaW8ubXA0ICovOyB9OwogCQk5MzdBNkM4QTI0MzU3QzE3MDBDM0E2QjAgLyogS2ls
bFdlYlByb2Nlc3NXaXRoT3BlbkNvbm5lY3Rpb24tMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzN0E2Qzg4MjQzNTdCRjMwMEMzQTZC
MCAvKiBLaWxsV2ViUHJvY2Vzc1dpdGhPcGVuQ29ubmVjdGlvbi0xLmh0bWwgKi87IH07CkBAIC0x
MzU3LDYgKzEzNTgsNyBAQAogCQkJCTNGQkQxQjRBMUQzRDY2QUIwMEU2RDZGQSAvKiBGdWxsc2Ny
ZWVuTGF5b3V0Q29uc3RyYWludHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDREUx
OTVCNTFDRkUwQjg4MDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQkZDQzQ2MUE5RkY0OUUwMEE3QjY5MSAvKiBGdWxs
c2NyZWVuWm9vbUluaXRpYWxGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTkz
NkVDMzY2MjdCQTNCMEQwMEFGQThBRSAvKiBnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjZGNTJFQUQxODI4ODI3QjAwMjNENDEyIC8qIGdl
b2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJNjM2MzUzQTcxRTk4NjY1RDAwMDlGOEFGIC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0
aW9uUmVzdWx0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjZGNTJFQUYxODI4OEMy
MzAwMjNENDEyIC8qIGdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uV2l0aEhpZ2hBY2N1cmFj
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjUxOCw2ICsyNTIwLDcgQEAKIAkJOTM2
MjVEMjYxQ0Q5NzNBRjAwNkRDMUYxIC8qIGxhcmdlLXZpZGVvLXdpdGhvdXQtYXVkaW8uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby13aXRob3V0LWF1ZGlvLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzY4QTI1QzIyOUVGQjNBMDBBODI5
Q0EgLyogbG9jYWwtc3RvcmFnZS1wcm9jZXNzLXN1c3BlbmRzLTIuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJsb2NhbC1zdG9yYWdlLXByb2Nlc3Mtc3VzcGVuZHMtMi5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2OEEyNUQyMjlFRkIzQTAwQTgyOUNBIC8q
IGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibG9jYWwtc3RvcmFnZS1wcm9jZXNzLXN1c3BlbmRzLTEuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNkVDMzY1MjdCQTNBRjIwMEFGQThBRSAvKiBnZW5l
cmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gImdlbmVyYWwtc3RvcmFnZS1kaXJlY3Rv
cnkuc2FsdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNkY3MjdFMUNEN0Q5RDAw
MDY4QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM2RjcyN0YxQ0Q3RDlEMDAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdp
dGgtYXVkaW8ubXA0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgcGF0aCA9ICJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzN0E2Qzg4MjQzNTdCRjMwMEMzQTZCMCAvKiBLaWxsV2Vi
UHJvY2Vzc1dpdGhPcGVuQ29ubmVjdGlvbi0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAiS2lsbFdlYlByb2Nlc3NXaXRoT3BlbkNvbm5lY3Rpb24tMS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMTcsNiArNDEyMCw3IEBACiAJCQkJQ0Q3OEUxMUIxREI3
RUEzNjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5odG1sICovLAogCQkJCTNGQkQxQjQ5
MUQzOUQxREIwMEU2RDZGQSAvKiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMuaHRtbCAqLywK
IAkJCQlDREUxOTVCMjFDRkUwQURFMDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNl
dC5odG1sICovLAorCQkJCTkzNkVDMzY1MjdCQTNBRjIwMEFGQThBRSAvKiBnZW5lcmFsLXN0b3Jh
Z2UtZGlyZWN0b3J5LnNhbHQgKi8sCiAJCQkJNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFGIC8qIEdl
b2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi8sCiAJCQkJMDdFMUY2QTEx
RkZDNDRGOTAwOTZDN0VDIC8qIGdldERpc3BsYXlNZWRpYS5odG1sICovLAogCQkJCTQ2N0M1NjUx
MjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IDgxNjUzZDVlNGE2NjJkYTgzMGNhOGIy
NjZkOWQyYjU3ZWM5YWFjMjAuLmM5ZDUwYzg2YzkyYjFhMTU4N2QzMGFmOWM0YTk5MDk0ZjI2YTI4
ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NDb25maWcuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLSFRUUENv
b2tpZVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZi5oPgpAQCAtODAyLDMgKzgwMywx
NDEgQEAgVEVTVChXZWJLaXQsIE1lZGlhQ2FjaGUpCiAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0
ZW1BdFBhdGg6cGF0aCBlcnJvcjomZXJyb3JdOwogICAgIEVYUEVDVF9GQUxTRShlcnJvcik7CiB9
CisKK1RFU1QoV2ViS2l0LCBNaWdyYXRlTG9jYWxTdG9yYWdlRGF0YVRvR2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnkpCit7CisgICAgTlNVUkwgKmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvTG9jYWxTdG9yYWdlLyIgc3RyaW5nQnlFeHBhbmRp
bmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqbG9jYWxTdG9yYWdl
RmlsZSA9IFtsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiaHR0cHNfd2Via2l0Lm9yZ18wLmxvY2Fsc3RvcmFnZSJdOworICAgIE5TVVJMICpnZW5lcmFs
U3RvcmFnZURpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dl
YktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvRGVm
YXVsdCIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICBOU1VSTCAqcmVzb3VyY2VTYWx0ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAImdlbmVyYWwtc3RvcmFnZS1kaXJlY3RvcnkiIHdpdGhFeHRlbnNpb246QCJzYWx0IiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIE5TVVJMICpuZXdM
b2NhbFN0b3JhZ2VGaWxlID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIllVbl93Z1I1MVZMVm85bGM1eGlpdkF6WjhUTW1vam9hMEliVzMyM3Fp
YnMvWVVuX3dnUjUxVkxWbzlsYzV4aWl2QXpaOFRNbW9qb2EwSWJXMzIzcWlicy9Mb2NhbFN0b3Jh
Z2UvbG9jYWxzdG9yYWdlLnNxbGl0ZTMiXTsKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdl
ciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVt
b3ZlSXRlbUF0VVJMOmxvY2FsU3RvcmFnZURpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxl
TWFuYWdlciByZW1vdmVJdGVtQXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmls
XTsKKyAgICBbZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VE
aXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBl
cnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0
b1VSTDpbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAic2FsdCJdIGVycm9yOm5pbF07CisKKyAgICBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPHNj
cmlwdD4gXAorICAgICAgICByZXN1bHQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVzdGtleScp
OyBcCisgICAgICAgIGlmICghcmVzdWx0KSBcCisgICAgICAgICAgICByZXN1bHQgPSAnW251bGxd
JzsgXAorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5w
b3N0TWVzc2FnZShyZXN1bHQpOyBcCisgICAgICAgIDwvc2NyaXB0PiI7CisgICAgYXV0byB3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpLl93ZWJTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5
OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLmdlbmVyYWxTdG9yYWdl
RGlyZWN0b3J5ID0gZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgd2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCkuc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzID0gdHJ1ZTsK
KyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisKKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vi
c2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0
KCldOworICAgICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRs
ZXIiXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKCJbbnVsbF0iLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOworICAgICAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibG9jYWxTdG9yYWdlLnNl
dEl0ZW0oJ3Rlc3RrZXknLCAndGVzdHZhbHVlJykiXTsKKworICAgICAgICAvLyBFbnN1cmUgaXRl
bSBpcyBzdG9yZWQgYnkgZ2V0dGluZyBpdCBpbiBhbm90aGVyIFdLV2ViVmlldy4KKyAgICAgICAg
YXV0byBzZWNvbmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAg
ICAgIFtzZWNvbmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJ0ZXN0dmFsdWUiLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpsb2NhbFN0b3JhZ2VG
aWxlLnBhdGhdKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgV2Vic2l0ZURhdGFTdG9y
ZSB0aGF0IHBlcmZvcm1zIG1pZ3JhdGlvbi4KKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKS5zaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSBmYWxzZTsKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdl
SGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHRoaXJkV2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW3RoaXJkV2ViVmlldyBsb2FkSFRN
TFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczov
L3dlYmtpdC5vcmcvIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3R2YWx1ZSIsIGdldE5leHRN
ZXNzYWdlKCkuYm9keSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpsb2NhbFN0b3JhZ2VGaWxlLnBhdGhdKTsKKyAgICBF
WFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpuZXdMb2NhbFN0b3JhZ2VG
aWxlLnBhdGhdKTsKK30KKworVEVTVChXZWJLaXQsIE1pZ3JhdGVJbmRleGVkREJEYXRhVG9HZW5l
cmFsU3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICBOU1VSTCAqaW5kZXhlZERCRGlyZWN0b3J5ID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9JbmRleGVkREIiIHN0cmluZ0J5RXhw
YW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmluZGV4ZWRE
Qk9yaWdpbkRpcmVjdG9yeSA9IFtpbmRleGVkREJEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAidjEvaHR0cHNfd2Via2l0Lm9yZ18wIl07CisgICAgTlNTdHJpbmcgKmluZGV4
ZWREQkRhdGFiYXNlTmFtZSA9IEAiVGVzdERhdGFiYXNlIjsKKyAgICBOU1N0cmluZyAqaGFzaGVk
SW5kZXhlZERCRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0
ZUhhc2hGb3JGaWxlTmFtZShpbmRleGVkREJEYXRhYmFzZU5hbWUpOworICAgIE5TVVJMICppbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFtpbmRleGVkREJPcmlnaW5EaXJlY3RvcnkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZV07CisgICAg
TlNVUkwgKmluZGV4ZWREQkZpbGUgPSBbaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKKyAgICBOU1VSTCAq
Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGli
cmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVE
YXRhL0RlZmF1bHQiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllF
U107CisgICAgTlNVUkwgKnJlc291cmNlU2FsdCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5IiB3aXRoRXh0ZW5zaW9uOkAi
c2FsdCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBOU1VS
TCAqbmV3SW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5ID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIllVbl93Z1I1MVZMVm85bGM1eGlpdkF6WjhU
TW1vam9hMEliVzMyM3FpYnMvWVVuX3dnUjUxVkxWbzlsYzV4aWl2QXpaOFRNbW9qb2EwSWJXMzIz
cWlicy9JbmRleGVkREIvIl07CisgICAgTlNVUkwgKm5ld0luZGV4ZWREQkRpcmVjdG9yeSA9IFtu
ZXdJbmRleGVkREJPcmlnaW5EaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhh
c2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZV07CisgICAgTlNVUkwgKm5ld0luZGV4ZWREQkZpbGUg
PSBbbmV3SW5kZXhlZERCRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIklu
ZGV4ZWREQi5zcWxpdGUzIl07CisKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRl
bUF0VVJMOmluZGV4ZWREQkRpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBy
ZW1vdmVJdGVtQXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKyAgICBb
ZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0b1VSTDpbZ2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAic2FsdCJd
IGVycm9yOm5pbF07CisKKyAgICBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPHNjcmlwdD4gXAor
ICAgICAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbignVGVzdERhdGFiYXNl
Jyk7IFwKKyAgICAgICAgdmFyIHVwZ3JhZGVuZWVkZWRSZWNlaXZlZCA9IGZhbHNlOyBcCisgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsgXAorICAgICAg
ICAgICAgdmFyIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsgXAorICAgICAgICAgICAgdmFyIG9z
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOyBcCisgICAgICAgICAg
ICBvcy5wdXQoJ3ZhbHVlJywgJ2tleScpOyBcCisgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgaXMgY3JlYXRl
ZCcpOyBcCisgICAgICAgICAgICB1cGdyYWRlbmVlZGVkUmVjZWl2ZWQgPSB0cnVlOyBcCisgICAg
ICAgIH07IFwKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeyBc
CisgICAgICAgICAgICBpZiAodXBncmFkZW5lZWRlZFJlY2VpdmVkKSBcCisgICAgICAgICAgICAg
ICAgcmV0dXJuOyBcCisgICAgICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7IFwKKyAg
ICAgICAgICAgIGRiLnRyYW5zYWN0aW9uKCdUZXN0T2JqZWN0U3RvcmUnKS5vYmplY3RTdG9yZSgn
VGVzdE9iamVjdFN0b3JlJykuZ2V0KCdrZXknKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkg
eyBcCisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV2ZW50LnRhcmdldC5yZXN1bHQgPyBl
dmVudC50YXJnZXQucmVzdWx0IDogJ1tudWxsXSc7IFwKKyAgICAgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShyZXN1bHQpOyBc
CisgICAgICAgICAgICB9OyBcCisgICAgICAgIH07IFwKKyAgICAgICAgPC9zY3JpcHQ+IjsKKyAg
ICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgd2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5k
ZXhlZERCRGlyZWN0b3J5OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
LmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAg
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuc2hvdWxkVXNlQ3VzdG9tU3RvcmFn
ZVBhdGhzID0gdHJ1ZTsKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisKKyAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZp
Z3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSkuZ2V0KCldOworICAgICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBu
YW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxT
dHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8i
XV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVkIiwgZ2V0
TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKworICAgICAgICAvLyBFbnN1cmUgaXRlbSBpcyBzdG9yZWQg
YnkgZ2V0dGluZyBpdCBpbiBhbm90aGVyIFdLV2ViVmlldy4KKyAgICAgICAgYXV0byBzZWNvbmRX
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIFtzZWNvbmRX
ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KCJ2YWx1ZSIsIGdldE5leHRNZXNzYWdlKCkuYm9keSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtm
aWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmluZGV4ZWREQkZpbGUucGF0aF0pOworICAgIH0K
KworICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJzaXRlRGF0YVN0b3JlIHRoYXQgcGVyZm9ybXMgbWln
cmF0aW9uLgorICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLnNob3VsZFVz
ZUN1c3RvbVN0b3JhZ2VQYXRocyA9IGZhbHNlOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSkuZ2V0KCldOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6
QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gdGhpcmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKKyAgICBbdGhpcmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAg
IEVYUEVDVF9XS19TVFJFUSgidmFsdWUiLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOworICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6aW5kZXhlZERCRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZp
bGVFeGlzdHNBdFBhdGg6bmV3SW5kZXhlZERCRmlsZS5wYXRoXSk7Cit9CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2dlbmVyYWwtc3RvcmFnZS1kaXJl
Y3Rvcnkuc2FsdCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvZ2VuZXJh
bC1zdG9yYWdlLWRpcmVjdG9yeS5zYWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzZmI4YTczMmUxYzc2ZDQxOWNj
ZDc5YmJmMmEyYTAyNmRlYzUyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2dlbmVyYWwtc3RvcmFnZS1kaXJlY3Rvcnkuc2FsdApAQCAt
MCwwICsxIEBACit70Mz83Dq8HgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452131</attachid>
            <date>2022-02-15 20:35:57 -0800</date>
            <delta_ts>2022-02-15 22:49:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236611-20220215203556.patch</filename>
            <type>text/plain</type>
            <size>56028</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzZDAwOGRjM2U4MTM4ZjM0
NDdiOGIzZTllOGFkOTg4MmY1OGFmMzIuLmQwNjlhOGRiOTc4MTE2NWYxZWE1NzAzYzVmMjZjZDg3
NjUwZjk5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjItMDItMTUgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBJbmRleGVkREIgYW5k
IExvY2FsU3RvcmFnZSBkYXRhIHRvIEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICBBZGQgYSBuZXcgcGFyYW1ldGVyIHNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQ
YXRocyBvbiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiB0byBzcGVjaWZ5IHdoZXRoZXIg
V2ViS2l0IAorICAgICAgICBzaG91bGQgdXNlIGN1c3RvbSBzdG9yYWdlIHBhdGhzLiBJZiB0aGUg
dmFsdWUgaXMgdHJ1ZSwgV2ViS2l0IHdpbGwga2VlcCB1c2luZyB0aGUgY3VzdG9tIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeSAKKyAgICAgICAgYW5kIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5IHBh
dGhzIGFzIGl0IGlzIG5vdy4gSWYgdGhlIHZhbHVlIGlzIGZhbHNlLCBXZWJLaXQgd2lsbCBtaWdy
YXRlIGRhdGEgZnJvbSAKKyAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5IGFuZCBpbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSB0byBuZXcgcGF0aHMgc2V0IGJ5IFdlYktpdCB1bmRlciBnZW5l
cmFsU3RvcmFnZURpcmVjdG9yeS4KKworICAgICAgICBBUEkgdGVzdDogV2ViS2l0Lk1pZ3JhdGVM
b2NhbFN0b3JhZ2VEYXRhVG9HZW5lcmFsU3RvcmFnZURpcmVjdG9yeQorICAgICAgICAgICAgICAg
ICAgV2ViS2l0Lk1pZ3JhdGVJbmRleGVkREJEYXRhVG9HZW5lcmFsU3RvcmFnZURpcmVjdG9yeQor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0Ojpv
cmlnaW5EaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6b3JpZ2luRmlsZVBhdGgpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFn
ZU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9y
YWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpT
dG9yYWdlQnVja2V0OjpTdG9yYWdlQnVja2V0KToKKyAgICAgICAgKFdlYktpdDo6T3JpZ2luU3Rv
cmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmxvY2FsU3RvcmFnZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aWRiU3RvcmFn
ZU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
OjpTdG9yYWdlQnVja2V0Ojptb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElEQlN0b3JhZ2VQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6T3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OmZldGNoRGF0
YVR5cGVzSW5MaXN0RnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFu
YWdlcjo6U3RvcmFnZUJ1Y2tldDo6ZGVsZXRlTG9jYWxTdG9yYWdlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpkZWxldGVJREJTdG9y
YWdlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdl
QnVja2V0OjpyZXNvbHZlZExvY2FsU3RvcmFnZVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpPcmln
aW5TdG9yYWdlTWFuYWdlcjo6b3JpZ2luRmlsZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0
OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6T3JpZ2luU3RvcmFnZU1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6ZGVmYXVsdEJ1Y2tldCk6CisgICAgICAgIChX
ZWJLaXQ6Ok9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldDo6aXNFbXB0eSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdl
TWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzXSk6CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldFNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRoczpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5
IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb246OnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpzZXRTaG91bGRVc2VDdXN0b21T
dG9yYWdlUGF0aHMpOgorCiAyMDIyLTAyLTE1ICBQaGlsaXAgQ2hpbWVudG8gIDxwY2hpbWVudG9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBGaXhlcyBmb3IgYnVpbGQtd2Via2l0IC0tbWluaW1hbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCAzZjY2ZTNlYjM0NDllYjhlZGE3NzFjM2UwOTRiZDFhYWZmYWM0OTJkLi4xMmY4ZThhNWI1OWYw
MGRkN2I3ZWZkM2IyYWQxMzU3ZmEyNTE2OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDAzLDcgKzQwMyw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzCiAgICAgYWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lv
bklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGly
ZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9y
eSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIHNlc3Npb24tPmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihwYXJhbWV0ZXJzLmdlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5SGFuZGxl
LCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMucGVyT3JpZ2lu
U3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEp
OworICAgICAgICBzZXNzaW9uLT5hZGRTdG9yYWdlTWFuYWdlclNlc3Npb24ocGFyYW1ldGVycy5n
ZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9y
eUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9j
YWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlLCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUsIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnBl
ck9yaWdpblN0b3JhZ2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFn
ZVF1b3RhLCBwYXJhbWV0ZXJzLnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyk7CisKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJT
ZXNzaW9uKHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCwgV1RGTW92ZShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkpLCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IDRhNzE5NDFjYWU3MDZkNzMwYmFlMjBiMjgwZTNkOGZmNzVk
OTQ1MzIuLmQyODIwZWFkYjNiODhkNDQ2MmFiZjQ2N2ZhZGI4Zjg2YjY2MDg1NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC02NTks
NyArNjU5LDcgQEAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJl
U2hhcmVkV29ya2VyU2VydmVyKCkKICAgICByZXR1cm4gKm1fc2hhcmVkV29ya2VyU2VydmVyOwog
fQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3Qg
U3RyaW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2Vu
ZXJhbFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3Ry
aW5nJiBpZGJTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdl
UGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZh
dWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpCit2b2lkIE5l
dHdvcmtTZXNzaW9uOjphZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3RyaW5nJiBnZW5l
cmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJhbFN0b3JhZ2VQ
YXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBpZGJTdG9y
YWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBpZGJTdG9yYWdlUGF0aEhhbmRsZSwg
Y29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVv
dGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9t
U3RvcmFnZVBhdGhzKQogewogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQogICAgICAgICByZXR1
cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkU3RvcmFnZU1h
bmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRoLAogICAgIElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklEOwogICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQogICAgICAg
ICBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLT51bmlxdWVJRCgpOwotICAgIG1fc3RvcmFnZU1h
bmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVj
dGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQ
YXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBh
cnR5UXVvdGEpOworICAgIG1fc3RvcmFnZU1hbmFnZXIgPSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZShzZXNzaW9uSUQoKSwgY29ubmVjdGlvbklELCBnZW5lcmFsU3RvcmFnZVBhdGgsIGxv
Y2FsU3RvcmFnZVBhdGgsIGlkYlN0b3JhZ2VQYXRoLCBjYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0
T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIHNob3VsZFVzZUN1c3RvbVN0b3Jh
Z2VQYXRocyk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb246OmVuc3VyZUNhY2hlRW5naW5lKEZ1
bmN0aW9uPHZvaWQoQ2FjaGVTdG9yYWdlOjpFbmdpbmUmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCA3OWQ3Y2U0NDA0
YTEzOGRmOWI4OGFhZWM5N2I2OTEzYWY2MGE0Y2VjLi44NWM3Y2JkNjkwMzRkOWNiYTdmNDQ1ZGE5
ZGU0NzVhMWQ3YjM1MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCkBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgogICAgIFdlYlNoYXJlZFdv
cmtlclNlcnZlciYgZW5zdXJlU2hhcmVkV29ya2VyU2VydmVyKCk7CiAKICAgICBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5n
ZXQoKTsgfQotICAgIHZvaWQgYWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYg
Z2VuZXJhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9y
YWdlUGF0aEhhbmRsZSwgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGxvY2FsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0cmluZyYgaWRi
U3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaWRiU3RvcmFnZVBhdGhIYW5k
bGUsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdp
blF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKKyAgICB2b2lkIGFkZFN0
b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxTdG9yYWdlUGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBnZW5lcmFsU3RvcmFnZVBhdGhIYW5kbGUsIGNvbnN0IFN0
cmluZyYgbG9jYWxTdG9yYWdlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBsb2NhbFN0
b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGlkYlN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNhY2hl
U3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3QgZGVmYXVs
dFRoaXJkUGFydHlRdW90YSwgYm9vbCBzaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMpOwogCiAg
ICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hlRW5naW5lKCkgeyByZXR1cm4gbV9jYWNoZUVu
Z2luZS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlQ2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChD
YWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCAz
Y2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4YzkxOWQ2ZjdjLi44Y2RhNjZhYWNlM2Y5MjZm
MTc5MWVmMmFiNmExNmJlZDNjM2E5ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0z
Niw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gU3VnZ2VzdGVkIGJ5IGh0dHBzOi8v
d3d3LnczLm9yZy9UUi93ZWJzdG9yYWdlLyNkaXNrLXNwYWNlCiBjb25zdGV4cHIgdW5zaWduZWQg
bG9jYWxTdG9yYWdlUXVvdGFJbkJ5dGVzID0gNSAqIE1COwogY29uc3RleHByIGF1dG8gZmlsZVN1
ZmZpeCA9ICIubG9jYWxzdG9yYWdlIl9zOworY29uc3RleHByIGF1dG8gZmlsZU5hbWUgPSAibG9j
YWxzdG9yYWdlLnNxbGl0ZTMiX3M7CiAKIC8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBm
b3IgZXhpc3RpbmcgZmlsZXMuCiAvLyBXZSBzaG91bGQgbm90IGluY2x1ZGUgb3JpZ2luIGluIGZp
bGUgbmFtZS4KQEAgLTc1LDExICs3NiwxOSBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5zT2ZMb2NhbFN0b3JhZ2VEYQogU3Ry
aW5nIExvY2FsU3RvcmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAg
ICBpZiAoZGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZyB7IH07Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIG9yaWdpblRvRmlsZU5hbWUob3JpZ2lu
KSk7CiB9CiAKK1N0cmluZyBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpsb2NhbFN0b3JhZ2VGaWxlUGF0
aChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBpZiAoZGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgZmlsZU5hbWUpOworfQorCiBM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0
aCwgU3RvcmFnZUFyZWFSZWdpc3RyeSYgcmVnaXN0cnkpCiAgICAgOiBtX3BhdGgocGF0aCkKICAg
ICAsIG1fcmVnaXN0cnkocmVnaXN0cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaAppbmRleCBjZGNiNjgx
MmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4Li5mNjJkZGM3MDFkY2RkZjI4OTIzOWU2
YjI1NGM0ZTRjZDg4YjE5YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTQ1LDcgKzQ1LDgg
QEAgY2xhc3MgTG9jYWxTdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IG9yaWdpbnNPZkxvY2FsU3RvcmFnZURhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBz
dGF0aWMgU3RyaW5nIGxvY2FsU3RvcmFnZUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgc3RhdGljIFN0cmluZyBsb2NhbFN0b3Jh
Z2VGaWxlUGF0aChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJik7CisgICAgc3RhdGljIFN0cmluZyBsb2NhbFN0b3JhZ2VGaWxlUGF0aChjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSk7CiAKICAgICBMb2NhbFN0b3JhZ2VNYW5hZ2VyKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU3RvcmFnZUFyZWFSZWdpc3RyeSYpOwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZDJiN2UxNjY4NzkwZjE2ZDZiZjQ4
NDI5ZWMwYzFlYzdmNDM1ZDVhYS4uZTYwOGI4ODVkNThhOGZiMjlhZDQ4ZjUxZmNlMDMxNmQyM2Q5
ZTQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEwOCwxMiArMTA4LDEyIEBA
IHN0YXRpYyB2b2lkIGRlbGV0ZU9yaWdpbkZpbGVJZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKIH0KIAot
UmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3Jh
Z2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcm
IGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWlu
dDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSkKK1JlZjxOZXR3b3JrU3RvcmFnZU1h
bmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQ
YXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBh
cnR5T3JpZ2luUXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKHNlc3Npb25JRCwgY29ubmVjdGlv
biwgcGF0aCwgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGN1
c3RvbUNhY2hlU3RvcmFnZVBhdGgsIGRlZmF1bHRPcmlnaW5RdW90YSwgZGVmYXVsdFRoaXJkUGFy
dHlPcmlnaW5RdW90YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdl
TWFuYWdlcihzZXNzaW9uSUQsIGNvbm5lY3Rpb24sIHBhdGgsIGN1c3RvbUxvY2FsU3RvcmFnZVBh
dGgsIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBkZWZhdWx0
T3JpZ2luUXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEsIHNob3VsZFVzZUN1c3Rv
bVBhdGhzKSk7CiB9CiAKLU5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3Ry
aW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEs
IHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2luUXVvdGEpCitOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9t
SURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWlu
dDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdp
blF1b3RhLCBib29sIHNob3VsZFVzZUN1c3RvbVBhdGhzKQogICAgIDogbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQogICAgICwgbV9xdWV1ZShTdXNwZW5kYWJsZVdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20u
YXBwbGUuV2ViS2l0LlN0b3JhZ2UiKSkKICAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3RhKGRlZmF1
bHRPcmlnaW5RdW90YSkKQEAgLTEyMiwxMCArMTIyLDExIEBAIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpD
b25uCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGF0aCA9IHBhdGgu
aXNvbGF0ZWRDb3B5KCksIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjcm9zc1RocmVhZENvcHko
Y3VzdG9tTG9jYWxTdG9yYWdlUGF0aCksIGN1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3Jvc3NUaHJl
YWRDb3B5KGN1c3RvbUlEQlN0b3JhZ2VQYXRoKSwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCA9IGNy
b3NzVGhyZWFkQ29weShjdXN0b21DYWNoZVN0b3JhZ2VQYXRoKV0oKSBtdXRhYmxlIHsKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBh
dGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgpLCBjdXN0b21JREJTdG9yYWdlUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShjdXN0b21JREJTdG9yYWdlUGF0aCksIGN1c3RvbUNhY2hlU3RvcmFn
ZVBhdGggPSBjcm9zc1RocmVhZENvcHkoY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCksIHNob3VsZFVz
ZUN1c3RvbVBhdGhzXSgpIG11dGFibGUgewogICAgICAgICBtX2ZpbGVTeXN0ZW1TdG9yYWdlSGFu
ZGxlUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEZpbGVTeXN0ZW1TdG9yYWdlSGFuZGxlUmVnaXN0cnk+
KCk7CiAgICAgICAgIG1fc3RvcmFnZUFyZWFSZWdpc3RyeSA9IG1ha2VVbmlxdWU8U3RvcmFnZUFy
ZWFSZWdpc3RyeT4oKTsKICAgICAgICAgbV9pZGJTdG9yYWdlUmVnaXN0cnkgPSBtYWtlVW5pcXVl
PElEQlN0b3JhZ2VSZWdpc3RyeT4oKTsKKyAgICAgICAgbV9zaG91bGRVc2VDdXN0b21QYXRocyA9
IHNob3VsZFVzZUN1c3RvbVBhdGhzOwogICAgICAgICBtX3BhdGggPSBwYXRoOwogICAgICAgICBt
X2N1c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOwogICAgICAg
ICBtX2N1c3RvbUlEQlN0b3JhZ2VQYXRoID0gY3VzdG9tSURCU3RvcmFnZVBhdGg7CkBAIC0yMTEs
NyArMjEyLDcgQEAgc3RhdGljIFN0cmluZyBlbmNvZGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZp
bGVTeXN0ZW06OlNhbHQgc2FsdCkKIHN0YXRpYyBTdHJpbmcgb3JpZ2luRGlyZWN0b3J5UGF0aChj
b25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgRmlsZVN5c3RlbTo6U2FsdCBzYWx0KQogewogICAgIGlmIChyb290UGF0aC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcgeyB9OworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAogICAgIGF1dG8gZW5jb2RlZFRvcE9yaWdpbiA9IGVuY29kZShvcmlnaW4udG9wT3JpZ2lu
LnRvU3RyaW5nKCksIHNhbHQpOwogICAgIGF1dG8gZW5jb2RlZE9wZW5pbmdPcmlnaW4gPSBlbmNv
ZGUob3JpZ2luLmNsaWVudE9yaWdpbi50b1N0cmluZygpLCBzYWx0KTsKQEAgLTIyMSw4ICsyMjIs
OSBAQCBzdGF0aWMgU3RyaW5nIG9yaWdpbkRpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiByb290
UGF0aCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50Twogc3RhdGljIFN0cmluZyBvcmlnaW5GaWxlUGF0
aChjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKIHsKICAgICBpZiAoZGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIFN0cmluZyB7IH07Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJvcmlnaW4iX3MpOworICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6b3JpZ2luRmls
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIE9yaWdpblN0b3JhZ2VNYW5hZ2VyJiBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4pCkBAIC0yNDcsNyArMjQ5LDcgQEAgT3JpZ2luU3RvcmFnZU1hbmFnZXIm
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihjb25zdCBX
ZWIKICAgICAgICAgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24gaW5jcmVhc2VR
dW90YUZ1bmN0aW9uID0gW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBvcmlnaW4sIGNvbm5lY3Rp
b24gPSBtX3BhcmVudENvbm5lY3Rpb25dIChhdXRvIGlkZW50aWZpZXIsIGF1dG8gY3VycmVudFF1
b3RhLCBhdXRvIGN1cnJlbnRVc2FnZSwgYXV0byByZXF1ZXN0ZWRJbmNyZWFzZSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkluY3JlYXNlUXVvdGEoc2Vzc2lvbklELCBvcmlnaW4sIGlk
ZW50aWZpZXIsIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCByZXF1ZXN0ZWRJbmNyZWFzZSks
IDApOwogICAgICAgICB9OwotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxPcmlnaW5TdG9yYWdl
TWFuYWdlcj4ocXVvdGEsIFdURk1vdmUoaW5jcmVhc2VRdW90YUZ1bmN0aW9uKSwgV1RGTW92ZShv
cmlnaW5EaXJlY3RvcnkpLCBXVEZNb3ZlKGxvY2FsU3RvcmFnZVBhdGgpLCBXVEZNb3ZlKGlkYlN0
b3JhZ2VQYXRoKSwgV1RGTW92ZShjYWNoZVN0b3JhZ2VQYXRoKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE9yaWdpblN0b3JhZ2VNYW5hZ2VyPihxdW90YSwgV1RGTW92ZShpbmNyZWFzZVF1
b3RhRnVuY3Rpb24pLCBXVEZNb3ZlKG9yaWdpbkRpcmVjdG9yeSksIFdURk1vdmUobG9jYWxTdG9y
YWdlUGF0aCksIFdURk1vdmUoaWRiU3RvcmFnZVBhdGgpLCBXVEZNb3ZlKGNhY2hlU3RvcmFnZVBh
dGgpLCBtX3Nob3VsZFVzZUN1c3RvbVBhdGhzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAppbmRleCA5YzNkMmQ2NDA2ZmVlOWIyYjRlNmNhMjZm
N2I2NWZlMGM3OGI4M2JkLi5jNzM1YTBlNGU5NTZjZWY2YWM1ODYwOGZjYTdlNmYyMGRjMzQwMTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFN0b3Jh
Z2VBcmVhUmVnaXN0cnk7CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlTWFuYWdlciBmaW5hbCA6IHB1
YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShQQUw6OlNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tSURC
U3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgdWludDY0
X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1
b3RhKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1
aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3Jp
Z2luUXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwogICAgIHN0YXRpYyBib29sIGNh
bkhhbmRsZVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+KTsKIAogICAgIHZvaWQgc3Rh
cnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CkBAIC05
NSw4ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVz
YWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAogcHJpdmF0ZToK
LSAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoKTsKLSAgICBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3Rv
bUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSwgdWludDY0X3Qg
ZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSk7CisgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
KFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQ
YXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBh
cnR5T3JpZ2luUXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwogICAgIH5OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIoKTsKICAgICBPcmlnaW5TdG9yYWdlTWFuYWdlciYgbG9jYWxPcmlnaW5T
dG9yYWdlTWFuYWdlcihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICBib29sIHJl
bW92ZU9yaWdpblN0b3JhZ2VNYW5hZ2VySWZQb3NzaWJsZShjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKTsKQEAgLTE4MSw2ICsxODAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2N1c3Rv
bUNhY2hlU3RvcmFnZVBhdGg7CiAgICAgdWludDY0X3QgbV9kZWZhdWx0T3JpZ2luUXVvdGE7CiAg
ICAgdWludDY0X3QgbV9kZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhOworICAgIGJvb2wgbV9z
aG91bGRVc2VDdXN0b21QYXRoczsKICAgICBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIG1fcGFy
ZW50Q29ubmVjdGlvbjsKICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIEhh
c2hTZXQ8U3RyaW5nPj4gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb247CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Pcmln
aW5TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggYmNjMGYzMzg3NzlmNDkzMTAwNzRhN2M2Y2JkMmZj
YWU3NTM2ZGMwNi4uMTU2N2RlYTEyNzVlMzU0MWY2MGQ5YmIxNTYxODRjMWY1MjUxNDY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3Jh
Z2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
T3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00NywxMSArNDcsMTIgQEAgZW51bSBjbGFzcyBP
cmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldE1vZGUgOiBib29sIHsgQmVzdEVmZm9y
dCwgUGVyc2lzdGUKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdG9yYWdlQnVja2V0
KGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGlkYlN0b3JhZ2VQYXRoKQor
ICAgIFN0b3JhZ2VCdWNrZXQoY29uc3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYg
aWRiU3RvcmFnZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpCiAgICAgICAgIDogbV9y
b290UGF0aChyb290UGF0aCkKICAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAg
ICAgICAgLCBtX2xvY2FsU3RvcmFnZVBhdGgobG9jYWxTdG9yYWdlUGF0aCkKLSAgICAgICAgLCBt
X2lkYlN0b3JhZ2VQYXRoKGlkYlN0b3JhZ2VQYXRoKQorICAgICAgICAsIG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aChsb2NhbFN0b3JhZ2VQYXRoKQorICAgICAgICAsIG1fY3VzdG9tSURCU3RvcmFn
ZVBhdGgoaWRiU3RvcmFnZVBhdGgpCisgICAgICAgICwgbV9zaG91bGRVc2VDdXN0b21QYXRocyhz
aG91bGRVc2VDdXN0b21QYXRocykKICAgICB7CiAgICAgfQogCkBAIC0xMjksNyArMTMwLDcgQEAg
cHVibGljOgogICAgIExvY2FsU3RvcmFnZU1hbmFnZXImIGxvY2FsU3RvcmFnZU1hbmFnZXIoU3Rv
cmFnZUFyZWFSZWdpc3RyeSYgcmVnaXN0cnkpCiAgICAgewogICAgICAgICBpZiAoIW1fbG9jYWxT
dG9yYWdlTWFuYWdlcikKLSAgICAgICAgICAgIG1fbG9jYWxTdG9yYWdlTWFuYWdlciA9IG1ha2VV
bmlxdWU8TG9jYWxTdG9yYWdlTWFuYWdlcj4obV9sb2NhbFN0b3JhZ2VQYXRoLCByZWdpc3RyeSk7
CisgICAgICAgICAgICBtX2xvY2FsU3RvcmFnZU1hbmFnZXIgPSBtYWtlVW5pcXVlPExvY2FsU3Rv
cmFnZU1hbmFnZXI+KHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpLCByZWdpc3RyeSk7CiAKICAg
ICAgICAgcmV0dXJuICptX2xvY2FsU3RvcmFnZU1hbmFnZXI7CiAgICAgfQpAQCAtMTU1LDcgKzE1
Niw3IEBAIHB1YmxpYzoKICAgICBJREJTdG9yYWdlTWFuYWdlciYgaWRiU3RvcmFnZU1hbmFnZXIo
SURCU3RvcmFnZVJlZ2lzdHJ5JiByZWdpc3RyeSwgSURCU3RvcmFnZU1hbmFnZXI6OlF1b3RhQ2hl
Y2tGdW5jdGlvbiYmIHF1b3RhQ2hlY2tGdW5jdGlvbikKICAgICB7CiAgICAgICAgIGlmICghbV9p
ZGJTdG9yYWdlTWFuYWdlcikKLSAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFnZXIgPSBtYWtl
VW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPihtX2lkYlN0b3JhZ2VQYXRoLCByZWdpc3RyeSwgV1RG
TW92ZShxdW90YUNoZWNrRnVuY3Rpb24pKTsKKyAgICAgICAgICAgIG1faWRiU3RvcmFnZU1hbmFn
ZXIgPSBtYWtlVW5pcXVlPElEQlN0b3JhZ2VNYW5hZ2VyPihyZXNvbHZlZElEQlN0b3JhZ2VQYXRo
KCksIHJlZ2lzdHJ5LCBXVEZNb3ZlKHF1b3RhQ2hlY2tGdW5jdGlvbikpOwogCiAgICAgICAgIHJl
dHVybiAqbV9pZGJTdG9yYWdlTWFuYWdlcjsKICAgICB9CkBAIC0xNzUsOCArMTc2LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHx8IChtX2lkYlN0b3JhZ2VNYW5hZ2VyICYmIChtX2lkYlN0b3Jh
Z2VNYW5hZ2VyLT5oYXNEYXRhSW5NZW1vcnkoKSB8fCBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5pc0Fj
dGl2ZSgpKSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICBib29sIGlz
RW1wdHkoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAg
ICAgICAgYXV0byBmaWxlcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCk7
CiAgICAgICAgIGF1dG8gaGFzVmFsaWRGaWxlID0gV1RGOjphbnlPZihmaWxlcywgWyZdKGF1dG8g
ZmlsZSkgewogICAgICAgICAgICAgYm9vbCBpc0ludmFsaWRGaWxlID0gKGZpbGUgPT0gb3JpZ2lu
RmlsZU5hbWUpOwpAQCAtMTg4LDggKzE5MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGhhc1Zh
bGlkRmlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRoKTsKLSAgICAgICAgcmV0dXJu
ICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fbG9jYWxTdG9yYWdlUGF0aCkgJiYgIUZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMobV9pZGJTdG9yYWdlUGF0aCk7CisgICAgICAgIGF1dG8gaWRiU3RvcmFn
ZUZpbGVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShyZXNvbHZlZElEQlN0b3JhZ2VQYXRo
KCkpOworICAgICAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVzb2x2ZWRMb2Nh
bFN0b3JhZ2VQYXRoKCkpICYmIGlkYlN0b3JhZ2VGaWxlcy5pc0VtcHR5KCk7CiAgICAgfQogCiAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZmV0Y2hEYXRhVHlwZXNJbkxpc3QoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXMpCkBAIC0yMjcsMTUgKzIzMCw0MSBAQCBwdWJsaWM6
CiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJl
bnRQYXRoKHBhdGgpKTsKICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobV9yb290UGF0aCwg
cGF0aCk7CiAKLSAgICAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFs
b2NhbFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGN1cnJlbnRMb2NhbFN0
b3JhZ2VQYXRoID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoKCk7CisgICAgICAgIGlmICghY3Vy
cmVudExvY2FsU3RvcmFnZVBhdGguaXNFbXB0eSgpICYmICFsb2NhbFN0b3JhZ2VQYXRoLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVT
eXN0ZW06OnBhcmVudFBhdGgobG9jYWxTdG9yYWdlUGF0aCkpOwotICAgICAgICAgICAgV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2xvY2FsU3RvcmFnZVBhdGgs
IGxvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3Rl
bTo6bW92ZURhdGFiYXNlRmlsZShjdXJyZW50TG9jYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdl
UGF0aCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1faWRiU3RvcmFnZVBhdGguaXNFbXB0
eSgpICYmICFpZGJTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBjdXJyZW50
SURCU3RvcmFnZVBhdGggPSByZXNvbHZlZElEQlN0b3JhZ2VQYXRoKCk7CisgICAgICAgIGlmICgh
Y3VycmVudElEQlN0b3JhZ2VQYXRoLmlzRW1wdHkoKSAmJiAhaWRiU3RvcmFnZVBhdGguaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5
c3RlbTo6cGFyZW50UGF0aChpZGJTdG9yYWdlUGF0aCkpOwotICAgICAgICAgICAgV2ViQ29yZTo6
U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2lkYlN0b3JhZ2VQYXRoLCBpZGJT
dG9yYWdlUGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjptb3Zl
RGF0YWJhc2VGaWxlKGN1cnJlbnRJREJTdG9yYWdlUGF0aCwgaWRiU3RvcmFnZVBhdGgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgU3RyaW5nIHJlc29sdmVkSURCU3RvcmFnZVBhdGgoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICAgICAgaWYgKCFt
X3Jlc29sdmVkSURCU3RvcmFnZVBhdGguaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gbV9y
ZXNvbHZlZElEQlN0b3JhZ2VQYXRoOworCisgICAgICAgIGlmIChtX3Nob3VsZFVzZUN1c3RvbVBh
dGhzKSB7CisgICAgICAgICAgICBBU1NFUlQobV9jdXN0b21JREJTdG9yYWdlUGF0aC5pc0VtcHR5
KCkgPT0gbV9yb290UGF0aC5pc0VtcHR5KCkpOworICAgICAgICAgICAgbV9yZXNvbHZlZElEQlN0
b3JhZ2VQYXRoID0gbV9jdXN0b21JREJTdG9yYWdlUGF0aDsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGF1dG8gaWRiU3RvcmFnZVBhdGggPSB0eXBlU3RvcmFnZVBhdGgoU3RvcmFnZVR5
cGU6OkluZGV4ZWREQik7CisgICAgICAgICAgICBpZiAoIW1fY3VzdG9tSURCU3RvcmFnZVBhdGgu
aXNFbXB0eSgpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGlkYlN0b3JhZ2VQYXRoKSkgewor
ICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKG1fY3VzdG9tSURCU3RvcmFnZVBh
dGgsIGlkYlN0b3JhZ2VQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoaWRiU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBtX3Jlc29sdmVkSURCU3RvcmFnZVBhdGggPSBpZGJTdG9yYWdlUGF0aDsKICAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgQVNTRVJUKCFtX3Jlc29sdmVkSURCU3RvcmFnZVBhdGguaXNOdWxs
KCkpOworICAgICAgICByZXR1cm4gbV9yZXNvbHZlZElEQlN0b3JhZ2VQYXRoOwogICAgIH0KIAog
cHJpdmF0ZToKQEAgLTI2OSwxMiArMjk4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpICYm
ICFyZXN1bHQuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UpKSB7Ci0gICAg
ICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2xvY2FsU3RvcmFnZVBhdGgpKQor
ICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocmVzb2x2ZWRMb2NhbFN0b3Jh
Z2VQYXRoKCkpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpM
b2NhbFN0b3JhZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhcmVzdWx0LmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gZGF0YWJhc2VzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2lkYlN0b3JhZ2VQYXRo
KTsgIWRhdGFiYXNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoYXV0byBkYXRhYmFzZXMg
PSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHJlc29sdmVkSURCU3RvcmFnZVBhdGgoKSk7ICFk
YXRhYmFzZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpOwogICAgICAgICB9CiAKQEAgLTI5MSwxMCArMzIw
LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZURhdGEoV2FsbFRp
bWUgdGltZSkKICAgICB7Ci0gICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9u
VGltZShtX2xvY2FsU3RvcmFnZVBhdGgpID49IHRpbWUpIHsKKyAgICAgICAgYXV0byBjdXJyZW50
TG9jYWxTdG9yYWdlUGF0aCA9IHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpOworICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUoY3VycmVudExvY2FsU3RvcmFnZVBh
dGgpID49IHRpbWUpIHsKICAgICAgICAgICAgIGlmIChtX2xvY2FsU3RvcmFnZU1hbmFnZXIpCiAg
ICAgICAgICAgICAgICAgbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyLT5jbGVhckRhdGFPbkRpc2soKTsK
LSAgICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmls
ZShtX2xvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGN1cnJlbnRMb2NhbFN0b3JhZ2VQYXRoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghbV9sb2NhbFN0b3JhZ2VNYW5hZ2VyKQpAQCAtMzIwLDIwICsz
NTAsNDkgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1faWRiU3RvcmFnZU1hbmFnZXIpCiAgICAg
ICAgICAgICBtX2lkYlN0b3JhZ2VNYW5hZ2VyLT5jbG9zZURhdGFiYXNlc0ZvckRlbGV0aW9uKCk7
CiAKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlQWxsRmlsZXNNb2RpZmllZFNpbmNlKG1faWRi
U3RvcmFnZVBhdGgsIHRpbWUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVBbGxGaWxlc01v
ZGlmaWVkU2luY2UocmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpLCB0aW1lKTsKICAgICB9CiAgICAg
CisgICAgU3RyaW5nIHJlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCgpCisgICAgeworICAgICAgICBp
ZiAoIW1fcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0
dXJuIG1fcmVzb2x2ZWRMb2NhbFN0b3JhZ2VQYXRoOworCisgICAgICAgIGlmIChtX3Nob3VsZFVz
ZUN1c3RvbVBhdGhzKSB7CisgICAgICAgICAgICBBU1NFUlQobV9jdXN0b21Mb2NhbFN0b3JhZ2VQ
YXRoLmlzRW1wdHkoKSA9PSBtX3Jvb3RQYXRoLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jl
c29sdmVkTG9jYWxTdG9yYWdlUGF0aCA9IG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aDsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gbG9jYWxTdG9yYWdlUGF0aCA9IExvY2FsU3Rv
cmFnZU1hbmFnZXI6OmxvY2FsU3RvcmFnZUZpbGVQYXRoKHR5cGVTdG9yYWdlUGF0aChTdG9yYWdl
VHlwZTo6TG9jYWxTdG9yYWdlKSk7CisgICAgICAgICAgICBpZiAoIW1fY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aC5pc0VtcHR5KCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobG9jYWxTdG9yYWdl
UGF0aCkpIHsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
RmlsZVN5c3RlbTo6cGFyZW50UGF0aChsb2NhbFN0b3JhZ2VQYXRoKSk7CisgICAgICAgICAgICAg
ICAgV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6bW92ZURhdGFiYXNlRmlsZShtX2N1c3RvbUxv
Y2FsU3RvcmFnZVBhdGgsIGxvY2FsU3RvcmFnZVBhdGgpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBtX3Jlc29sdmVkTG9jYWxTdG9yYWdlUGF0aCA9IGxvY2FsU3RvcmFnZVBhdGg7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gbV9yZXNvbHZlZExvY2FsU3RvcmFnZVBhdGg7Cisg
ICAgfQorCiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsK
ICAgICBTdG9yYWdlQnVja2V0TW9kZSBtX21vZGUgeyBTdG9yYWdlQnVja2V0TW9kZTo6QmVzdEVm
Zm9ydCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXI+IG1f
ZmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3Jh
Z2VNYW5hZ2VyPiBtX2xvY2FsU3RvcmFnZU1hbmFnZXI7Ci0gICAgU3RyaW5nIG1fbG9jYWxTdG9y
YWdlUGF0aDsKKyAgICBTdHJpbmcgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmlu
ZyBtX3Jlc29sdmVkTG9jYWxTdG9yYWdlUGF0aDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyPiBtX3Nlc3Npb25TdG9yYWdlTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SURCU3RvcmFnZU1hbmFnZXI+IG1faWRiU3RvcmFnZU1hbmFnZXI7Ci0gICAgU3RyaW5n
IG1faWRiU3RvcmFnZVBhdGg7CisgICAgU3RyaW5nIG1fY3VzdG9tSURCU3RvcmFnZVBhdGg7Cisg
ICAgU3RyaW5nIG1fcmVzb2x2ZWRJREJTdG9yYWdlUGF0aDsKKyAgICBib29sIG1fc2hvdWxkVXNl
Q3VzdG9tUGF0aHM7CiB9OwogCitTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om9yaWdpbkZp
bGVJZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4gb3JpZ2luRmlsZU5hbWU7Cit9CisKIHN0YXRp
YyBSZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNv
bnN0IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0
aCwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVu
Y3Rpb24pCiB7CiAgICAgUXVvdGFNYW5hZ2VyOjpHZXRVc2FnZUZ1bmN0aW9uIGdldFVzYWdlRnVu
Y3Rpb24gPSBbaWRiU3RvcmFnZVBhdGgsIGNhY2hlU3RvcmFnZVBhdGhdKCkgewpAQCAtMzQyLDEy
ICs0MDEsMTQgQEAgc3RhdGljIFJlZjxRdW90YU1hbmFnZXI+IGNyZWF0ZVF1b3RhTWFuYWdlcih1
aW50NjRfdCBxdW90YSwgY29uc3QgU3RyaW5nJiBpZGJTdG8KICAgICByZXR1cm4gUXVvdGFNYW5h
Z2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUoZ2V0VXNhZ2VGdW5jdGlvbiksIFdURk1vdmUoaW5j
cmVhc2VRdW90YUZ1bmN0aW9uKSk7CiB9CiAKLU9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpPcmlnaW5T
dG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3Rh
RnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24sIFN0cmluZyYmIHBhdGgsIFN0cmluZyYm
IGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJpbmcmJiBjYWNo
ZVN0b3JhZ2VQYXRoKQorT3JpZ2luU3RvcmFnZU1hbmFnZXI6Ok9yaWdpblN0b3JhZ2VNYW5hZ2Vy
KHVpbnQ2NF90IHF1b3RhLCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGlu
Y3JlYXNlUXVvdGFGdW5jdGlvbiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCwgU3RyaW5nJiYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIFN0cmluZyYmIGNhY2hl
U3RvcmFnZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpCiAgICAgOiBtX3BhdGgoV1RG
TW92ZShwYXRoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlUGF0aChXVEZNb3ZlKGxvY2FsU3RvcmFn
ZVBhdGgpKQotICAgICwgbV9pZGJTdG9yYWdlUGF0aChXVEZNb3ZlKGlkYlN0b3JhZ2VQYXRoKSkK
KyAgICAsIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0aChXVEZNb3ZlKGN1c3RvbUxvY2FsU3RvcmFn
ZVBhdGgpKQorICAgICwgbV9jdXN0b21JREJTdG9yYWdlUGF0aChXVEZNb3ZlKGN1c3RvbUlEQlN0
b3JhZ2VQYXRoKSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUGF0aChXVEZNb3ZlKGNhY2hlU3RvcmFn
ZVBhdGgpKQotICAgICwgbV9xdW90YU1hbmFnZXIoY3JlYXRlUXVvdGFNYW5hZ2VyKHF1b3RhLCBt
X2lkYlN0b3JhZ2VQYXRoLCBtX2NhY2hlU3RvcmFnZVBhdGgsIFdURk1vdmUoaW5jcmVhc2VRdW90
YUZ1bmN0aW9uKSkpCisgICAgLCBtX3F1b3RhKHF1b3RhKQorICAgICwgbV9pbmNyZWFzZVF1b3Rh
RnVuY3Rpb24oV1RGTW92ZShpbmNyZWFzZVF1b3RhRnVuY3Rpb24pKQorICAgICwgbV9zaG91bGRV
c2VDdXN0b21QYXRocyhzaG91bGRVc2VDdXN0b21QYXRocykKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIH0KQEAgLTM2MywxNCArNDI0LDE5IEBAIHZvaWQgT3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25u
ZWN0aW9uCiBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCYgT3JpZ2luU3RvcmFn
ZU1hbmFnZXI6OmRlZmF1bHRCdWNrZXQoKQogewogICAgIGlmICghbV9kZWZhdWx0QnVja2V0KQot
ICAgICAgICBtX2RlZmF1bHRCdWNrZXQgPSBtYWtlVW5pcXVlPFN0b3JhZ2VCdWNrZXQ+KG1fcGF0
aCwgImRlZmF1bHQiX3MsIG1fbG9jYWxTdG9yYWdlUGF0aCwgbV9pZGJTdG9yYWdlUGF0aCk7Cisg
ICAgICAgIG1fZGVmYXVsdEJ1Y2tldCA9IG1ha2VVbmlxdWU8U3RvcmFnZUJ1Y2tldD4obV9wYXRo
LCAiZGVmYXVsdCJfcywgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBtX2N1c3RvbUlEQlN0b3Jh
Z2VQYXRoLCBtX3Nob3VsZFVzZUN1c3RvbVBhdGhzKTsKIAogICAgIHJldHVybiAqbV9kZWZhdWx0
QnVja2V0OwogfQogCiBRdW90YU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpxdW90YU1h
bmFnZXIoKQogewotICAgIHJldHVybiBtX3F1b3RhTWFuYWdlci5nZXQoKTsKKyAgICBpZiAoIW1f
cXVvdGFNYW5hZ2VyKSB7CisgICAgICAgIGF1dG8gaWRiU3RvcmFnZVBhdGggPSBkZWZhdWx0QnVj
a2V0KCkucmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpOworICAgICAgICBtX3F1b3RhTWFuYWdlciA9
IGNyZWF0ZVF1b3RhTWFuYWdlcihtX3F1b3RhLCBpZGJTdG9yYWdlUGF0aCwgbV9jYWNoZVN0b3Jh
Z2VQYXRoLCBzdGQ6OmV4Y2hhbmdlKG1faW5jcmVhc2VRdW90YUZ1bmN0aW9uLCB7IH0pKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gKm1fcXVvdGFNYW5hZ2VyOwogfQogCiBGaWxlU3lzdGVtU3RvcmFn
ZU1hbmFnZXImIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpmaWxlU3lzdGVtU3RvcmFnZU1hbmFnZXIo
RmlsZVN5c3RlbVN0b3JhZ2VIYW5kbGVSZWdpc3RyeSYgcmVnaXN0cnkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFu
YWdlci5oCmluZGV4IGVjNDZjNTRiMzExMWZiMDFiM2NlNjk2OTIwN2MxM2JlNWQ5OTlkOTYuLmRk
ZGIzMjZhODNiNDc4NDJjMjA3ZjU2ZmNjNTgyNGE2NzQ4YmNiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFu
YWdlci5oCkBAIC00Myw3ICs0Myw5IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWlu
dDMyX3Q7CiBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgT3JpZ2luU3RvcmFnZU1hbmFnZXIodWludDY0X3QgcXVv
dGEsIFF1b3RhTWFuYWdlcjo6SW5jcmVhc2VRdW90YUZ1bmN0aW9uJiYsIFN0cmluZyYmIHBhdGgs
IFN0cmluZyYmIGxvY2FsU3RvcmFnZVBhdGgsIFN0cmluZyYmIGlkYlN0b3JhZ2VQYXRoLCBTdHJp
bmcmJiBjYWNoZVN0b3JhZ2VQYXRoKTsKKyAgICBzdGF0aWMgU3RyaW5nIG9yaWdpbkZpbGVJZGVu
dGlmaWVyKCk7CisKKyAgICBPcmlnaW5TdG9yYWdlTWFuYWdlcih1aW50NjRfdCBxdW90YSwgUXVv
dGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiwgU3RyaW5nJiYgcGF0aCwgU3RyaW5n
JiYgY3Vzb3RtTG9jYWxTdG9yYWdlUGF0aCwgU3RyaW5nJiYgY3VzdG9tSURCU3RvcmFnZVBhdGgs
IFN0cmluZyYmIGNhY2hlU3RvcmFnZVBhdGgsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwog
ICAgIH5PcmlnaW5TdG9yYWdlTWFuYWdlcigpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2Vk
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwpAQCAtNzAsMTEgKzcyLDE0IEBAIHByaXZhdGU6
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZUJ1Y2tldD4gbV9kZWZhdWx0QnVja2V0Owog
ICAgIFN0cmluZyBtX3BhdGg7Ci0gICAgYm9vbCBtX3BlcnNpc3RlZCB7IGZhbHNlIH07Ci0gICAg
U3RyaW5nIG1fbG9jYWxTdG9yYWdlUGF0aDsKLSAgICBTdHJpbmcgbV9pZGJTdG9yYWdlUGF0aDsK
KyAgICBTdHJpbmcgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOworICAgIFN0cmluZyBtX2N1c3Rv
bUlEQlN0b3JhZ2VQYXRoOwogICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZVBhdGg7Ci0gICAgUmVm
PFF1b3RhTWFuYWdlcj4gbV9xdW90YU1hbmFnZXI7CisgICAgdWludDY0X3QgbV9xdW90YTsKKyAg
ICBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiBtX2luY3JlYXNlUXVvdGFGdW5j
dGlvbjsKKyAgICBSZWZQdHI8UXVvdGFNYW5hZ2VyPiBtX3F1b3RhTWFuYWdlcjsKKyAgICBib29s
IG1fcGVyc2lzdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkVXNlQ3VzdG9tUGF0aHM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAppbmRleCA3N2FhN2EzZTBjOGEzZmZi
ZTFhZTBkZmNkNDE2NzRhYTc3Y2QyNTI0Li4xMjAzN2ZjOGZiYzY5OWI1OGQwMDlmNDc1NTIzOThk
YTFjNDgzYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuY3BwCkBAIC01Miw2ICs1Miw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBl
bmNvZGVyIDw8IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBlbmNvZGVyIDw8IHBlclRoaXJk
UGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CisKKyAgICBlbmNvZGVyIDw8IHNob3VsZFVzZUN1c3Rv
bVN0b3JhZ2VQYXRoczsKIH0KIAogc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpCkBAIC0xNTUsNiArMTU3LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnM+IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDCiAgICAg
aWYgKCFwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90
YSA9ICpwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOworCisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBzaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHM7CisgICAgZGVjb2RlciA+PiBzaG91
bGRVc2VDdXN0b21TdG9yYWdlUGF0aHM7CisgICAgaWYgKCFzaG91bGRVc2VDdXN0b21TdG9yYWdl
UGF0aHMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5zaG91
bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSAqc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzOwog
ICAgIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggMjA5ODQ2ODE2Mjk5MDQ3MzM4
ODRjZmNiMTI3YWE1NzIxZDJjZWU4OS4uMzdjOTdmMTMwMzA3NzVkY2U1ZTNkMTAwMjAzNWYyMWU3
MzU0MGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oCkBAIC03Myw2ICs3Myw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyB7CiAKICAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgdWlu
dDY0X3QgcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKKworICAgIGJvb2wgc2hvdWxk
VXNlQ3VzdG9tU3RvcmFnZVBhdGhzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCBmMjgwZmNi
Mzc1YzIzZTJkMzVjNzY5MTliNWJlZTM1MTM1NDNmMTA0Li41OTgzYTdlZjU5NmM2MzU1ZjRhMzE4
ZDBkOTdmOGY2ZTliNGNmYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaApAQCAtODYsNiArODYsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBp
b3MoMTEuMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICph
bHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDExLjApLCBpb3MoMTQuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5
KSBOU1VSTCAqc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTEuMCksIGlvcygxNC4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkp
IE5TVVJMICpnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
c2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Rpbmcgb25seS4KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0
aW9uc0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KaW5kZXggZGE2NDcwOTc2
MjQ3MmVkYTk4ZTY4ZmM1YjZiZTZmOWRlM2E1ZDRjMy4uYjU0OWRlN2EyM2RkZDJmYjUwNTdhN2Q0
MjJkNTc0NmZiNjQwNTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5tbQpAQCAtMzUxLDYgKzM1MSwxNiBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTEFyZ3VtZW50KE5T
VVJMICp1cmwpCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKIH0KIAorLSAoQk9PTClzaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMKK3sK
KyAgICByZXR1cm4gX2NvbmZpZ3VyYXRpb24tPnNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocygp
OworfQorCistICh2b2lkKXNldFNob3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRoczooQk9PTCl1c2UK
K3sKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzKHVz
ZSk7Cit9CisKIC0gKEJPT0wpZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQKIHsK
ICAgICByZXR1cm4gX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNF
bmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDhhMmVhZGE5Nzk5Y2Q3MmM0NTM3YjJiOTA4
YmIyNjdkNmE3ZjljMWEuLjllZjE0YTVlOGY2NGQ3MzlmNGNkMzMxNjA4MTc4ZWEwNTExMjZlZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODc5LDYgKzE4NzksNyBAQCBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KGRpcmVjdG9yeSkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmdlbmVyYWxTdG9yYWdl
RGlyZWN0b3J5SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CisgICAgcGFyYW1ldGVy
cy5zaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSBjb25maWd1cmF0aW9uKCkuc2hvdWxkVXNl
Q3VzdG9tU3RvcmFnZVBhdGhzKCk7CiAKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VR
dW90YSA9IHBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQ
YXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCAxYWU2ZDBi
MTFhZDM4NGY2NDE2ZmZkM2JmNTQ4MzcyNWE0ZmYzYjM4Li4yNWY4ZjQyOWJlNWFkZGEzYzk5MzMy
NTA0YzU1YWQ2NjVkMjNhYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uY3BwCkBAIC02Niw2ICs2Niw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGNvcHkt
Pm1fc3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkID0gdGhpcy0+bV9zdGFsZVdoaWxlUmV2YWxp
ZGF0ZUVuYWJsZWQ7CiAgICAgY29weS0+bV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5t
X2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2dlbmVyYWxTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9nZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBjb3B5LT5tX3Nob3Vs
ZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyA9IHRoaXMtPm1fc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBh
dGhzOwogICAgIGNvcHktPm1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gdGhpcy0+bV9wZXJPcmln
aW5TdG9yYWdlUXVvdGE7CiAgICAgY29weS0+bV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSB0aGlz
LT5tX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAppbmRleCAzMGEyOTkzMTAyMjdkMmY3MjRmNDI1NzZi
NjYxMjU0N2I5NjFjZjI4Li44ZDdmOWIyOWE3NTZiMjQ2Y2UxMzE1ZjdmM2QxODBkNDZlOGI0ODIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTEzMiw2ICsxMzIs
OSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNl
dEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2dlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAKKyAgICBib29sIHNob3Vs
ZFVzZUN1c3RvbVN0b3JhZ2VQYXRocygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3VzdG9t
U3RvcmFnZVBhdGhzOyB9CisgICAgdm9pZCBzZXRTaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMo
Ym9vbCB1c2UpIHsgbV9zaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSB1c2U7IH0KKwogICAg
IGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZTsgfQogICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAgICAgCkBAIC0yMDQsNiArMjA3LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJc1BlcnNpc3RlbnQgbV9pc1BlcnNpc3RlbnQgeyBJ
c1BlcnNpc3RlbnQ6Ok5vIH07CiAKKyAgICBib29sIG1fc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBh
dGhzIHsgdHJ1ZSB9OwogICAgIFN0cmluZyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBT
dHJpbmcgbV9nZW5lcmFsU3RvcmFnZURpcmVjdG9yeTsKICAgICB1aW50NjRfdCBtX3Blck9yaWdp
blN0b3JhZ2VRdW90YTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA0YTU5MDk3N2IyM2E5MDMxN2I4MDFhYmY2YmQyODI1NTIyMGMwZmUwLi4xN2Q2
MmRmNTIzYzA0MTVkYzk5YWYzNmI2YjYxYzQ0NDNkODIxZjAyIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDIt
MTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBJ
bmRleGVkREIgYW5kIExvY2FsU3RvcmFnZSBkYXRhIHRvIEdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2MTEK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9nZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQ6IEFkZGVkLgorCiAyMDIy
LTAyLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEhl
YXBUeXBlIGFuIGVudW0gY2xhc3MuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVkOGNkNTZj
ZDI4YTAxMDZjZWFkYmQ2Yzg3N2YxODAwM2NhOTc5ZTQuLjljMzlkMjQ5NzQzMjkyNzg0YWQ5Yzg1
M2QwMjdhNzU5Y2I3YjQ0N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDUsNiArNzQ1
LDcgQEAKIAkJOTM2MjVEMjcxQ0Q5NzQxQzAwNkRDMUYxIC8qIGxhcmdlLXZpZGVvLXdpdGhvdXQt
YXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzYyNUQyNjFDRDk3M0FGMDA2REMxRjEgLyogbGFyZ2UtdmlkZW8td2l0aG91dC1h
dWRpby5odG1sICovOyB9OwogCQk5MzY4QTI1RTIyOUVGQjQ3MDBBODI5Q0EgLyogbG9jYWwtc3Rv
cmFnZS1wcm9jZXNzLXN1c3BlbmRzLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzY4QTI1RDIyOUVGQjNBMDBBODI5Q0EgLyogbG9j
YWwtc3RvcmFnZS1wcm9jZXNzLXN1c3BlbmRzLTEuaHRtbCAqLzsgfTsKIAkJOTM2OEEyNUYyMjlF
RkI0NzAwQTgyOUNBIC8qIGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0yLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2OEEy
NUMyMjlFRkIzQTAwQTgyOUNBIC8qIGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0yLmh0
bWwgKi87IH07CisJCTkzNkVDMzY2MjdCQTNCMEQwMEFGQThBRSAvKiBnZW5lcmFsLXN0b3JhZ2Ut
ZGlyZWN0b3J5LnNhbHQgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM2RUMzNjUyN0JBM0FGMjAwQUZBOEFFIC8qIGdlbmVyYWwtc3RvcmFnZS1k
aXJlY3Rvcnkuc2FsdCAqLzsgfTsKIAkJOTM2RjcyODAxQ0Q3RDlFQzAwNjhBMEZCIC8qIGxhcmdl
LXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzZGNzI3RTFDRDdEOUQwMDA2OEEwRkIgLyogbGFyZ2Utdmlk
ZW8td2l0aC1hdWRpby5odG1sICovOyB9OwogCQk5MzZGNzI4MTFDRDdEOUVDMDA2OEEwRkIgLyog
bGFyZ2UtdmlkZW8td2l0aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2RjcyN0YxQ0Q3RDlEMDAwNjhBMEZCIC8qIGxhcmdl
LXZpZGVvLXdpdGgtYXVkaW8ubXA0ICovOyB9OwogCQk5MzdBNkM4QTI0MzU3QzE3MDBDM0E2QjAg
LyogS2lsbFdlYlByb2Nlc3NXaXRoT3BlbkNvbm5lY3Rpb24tMS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzN0E2Qzg4MjQzNTdCRjMw
MEMzQTZCMCAvKiBLaWxsV2ViUHJvY2Vzc1dpdGhPcGVuQ29ubmVjdGlvbi0xLmh0bWwgKi87IH07
CkBAIC0xMzU3LDYgKzEzNTgsNyBAQAogCQkJCTNGQkQxQjRBMUQzRDY2QUIwMEU2RDZGQSAvKiBG
dWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDREUxOTVCNTFDRkUwQjg4MDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNEQkZDQzQ2MUE5RkY0OUUwMEE3QjY5MSAv
KiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAor
CQkJCTkzNkVDMzY2MjdCQTNCMEQwMEFGQThBRSAvKiBnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5
LnNhbHQgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjZGNTJFQUQxODI4ODI3QjAwMjNENDEy
IC8qIGdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJNjM2MzUzQTcxRTk4NjY1RDAwMDlGOEFGIC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVu
dFBvc2l0aW9uUmVzdWx0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjZGNTJFQUYx
ODI4OEMyMzAwMjNENDEyIC8qIGdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uV2l0aEhpZ2hB
Y2N1cmFjeS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjUxOCw2ICsyNTIwLDcgQEAK
IAkJOTM2MjVEMjYxQ0Q5NzNBRjAwNkRDMUYxIC8qIGxhcmdlLXZpZGVvLXdpdGhvdXQtYXVkaW8u
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby13aXRob3V0LWF1
ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzY4QTI1QzIyOUVGQjNB
MDBBODI5Q0EgLyogbG9jYWwtc3RvcmFnZS1wcm9jZXNzLXN1c3BlbmRzLTIuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb2NhbC1zdG9yYWdlLXByb2Nlc3Mtc3VzcGVuZHMtMi5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2OEEyNUQyMjlFRkIzQTAwQTgy
OUNBIC8qIGxvY2FsLXN0b3JhZ2UtcHJvY2Vzcy1zdXNwZW5kcy0xLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibG9jYWwtc3RvcmFnZS1wcm9jZXNzLXN1c3BlbmRzLTEuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNkVDMzY1MjdCQTNBRjIwMEFGQThBRSAv
KiBnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gImdlbmVyYWwtc3RvcmFnZS1k
aXJlY3Rvcnkuc2FsdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNkY3MjdFMUNE
N0Q5RDAwMDY4QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2RjcyN0YxQ0Q3RDlEMDAwNjhBMEZCIC8qIGxhcmdlLXZp
ZGVvLXdpdGgtYXVkaW8ubXA0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzN0E2Qzg4MjQzNTdCRjMwMEMzQTZCMCAvKiBL
aWxsV2ViUHJvY2Vzc1dpdGhPcGVuQ29ubmVjdGlvbi0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAiS2lsbFdlYlByb2Nlc3NXaXRoT3BlbkNvbm5lY3Rpb24tMS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMTcsNiArNDEyMCw3IEBACiAJCQkJQ0Q3OEUx
MUIxREI3RUEzNjAwMTRBMkRFIC8qIEZ1bGxzY3JlZW5EZWxlZ2F0ZS5odG1sICovLAogCQkJCTNG
QkQxQjQ5MUQzOUQxREIwMEU2RDZGQSAvKiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWludHMuaHRt
bCAqLywKIAkJCQlDREUxOTVCMjFDRkUwQURFMDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRl
bnRJbnNldC5odG1sICovLAorCQkJCTkzNkVDMzY1MjdCQTNBRjIwMEFGQThBRSAvKiBnZW5lcmFs
LXN0b3JhZ2UtZGlyZWN0b3J5LnNhbHQgKi8sCiAJCQkJNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFG
IC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi8sCiAJCQkJMDdF
MUY2QTExRkZDNDRGOTAwOTZDN0VDIC8qIGdldERpc3BsYXlNZWRpYS5odG1sICovLAogCQkJCTQ2
N0M1NjUxMjFCNUVDREYwMDU3NTE2RCAvKiBHZXRTZXNzaW9uQ29va2llLmh0bWwgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCmluZGV4IDgxNjUzZDVlNGE2NjJkYTgz
MGNhOGIyNjZkOWQyYjU3ZWM5YWFjMjAuLmM5ZDUwYzg2YzkyYjFhMTU4N2QzMGFmOWM0YTk5MDk0
ZjI2YTI4ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0z
Miw2ICszMiw3IEBACiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NDb25maWcuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
SFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZi5oPgpAQCAtODAyLDMg
KzgwMywxNDEgQEAgVEVTVChXZWJLaXQsIE1lZGlhQ2FjaGUpCiAgICAgW2ZpbGVNYW5hZ2VyIHJl
bW92ZUl0ZW1BdFBhdGg6cGF0aCBlcnJvcjomZXJyb3JdOwogICAgIEVYUEVDVF9GQUxTRShlcnJv
cik7CiB9CisKK1RFU1QoV2ViS2l0LCBNaWdyYXRlTG9jYWxTdG9yYWdlRGF0YVRvR2VuZXJhbFN0
b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgTlNVUkwgKmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJyYXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0
LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURhdGEvTG9jYWxTdG9yYWdlLyIgc3RyaW5nQnlF
eHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1VSTCAqbG9jYWxT
dG9yYWdlRmlsZSA9IFtsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiaHR0cHNfd2Via2l0Lm9yZ18wLmxvY2Fsc3RvcmFnZSJdOworICAgIE5TVVJMICpn
ZW5lcmFsU3RvcmFnZURpcmVjdG9yeSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJy
YXJ5L1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkvQ3VzdG9tV2Vic2l0ZURh
dGEvRGVmYXVsdCIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICBOU1VSTCAqcmVzb3VyY2VTYWx0ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAImdlbmVyYWwtc3RvcmFnZS1kaXJlY3RvcnkiIHdpdGhFeHRlbnNpb246QCJz
YWx0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIE5TVVJM
ICpuZXdMb2NhbFN0b3JhZ2VGaWxlID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIllVbl93Z1I1MVZMVm85bGM1eGlpdkF6WjhUTW1vam9hMEli
VzMyM3FpYnMvWVVuX3dnUjUxVkxWbzlsYzV4aWl2QXpaOFRNbW9qb2EwSWJXMzIzcWlicy9Mb2Nh
bFN0b3JhZ2UvbG9jYWxzdG9yYWdlLnNxbGl0ZTMiXTsKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxl
TWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZmlsZU1hbmFn
ZXIgcmVtb3ZlSXRlbUF0VVJMOmxvY2FsU3RvcmFnZURpcmVjdG9yeSBlcnJvcjpuaWxdOworICAg
IFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJy
b3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0
b3JhZ2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVz
Om5pbCBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291cmNl
U2FsdCB0b1VSTDpbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAic2FsdCJdIGVycm9yOm5pbF07CisKKyAgICBOU1N0cmluZyAqaHRtbFN0cmluZyA9
IEAiPHNjcmlwdD4gXAorICAgICAgICByZXN1bHQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVz
dGtleScpOyBcCisgICAgICAgIGlmICghcmVzdWx0KSBcCisgICAgICAgICAgICByZXN1bHQgPSAn
W251bGxdJzsgXAorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFu
ZGxlci5wb3N0TWVzc2FnZShyZXN1bHQpOyBcCisgICAgICAgIDwvc2NyaXB0PiI7CisgICAgYXV0
byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpLl93ZWJTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLmdlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5ID0gZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgd2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuc2hvdWxkVXNlQ3VzdG9tU3RvcmFnZVBhdGhzID0g
dHJ1ZTsKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1dlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XSkuZ2V0KCldOworICAgICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKCJbbnVsbF0iLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOwor
ICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibG9jYWxTdG9y
YWdlLnNldEl0ZW0oJ3Rlc3RrZXknLCAndGVzdHZhbHVlJykiXTsKKworICAgICAgICAvLyBFbnN1
cmUgaXRlbSBpcyBzdG9yZWQgYnkgZ2V0dGluZyBpdCBpbiBhbm90aGVyIFdLV2ViVmlldy4KKyAg
ICAgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
CisgICAgICAgIFtzZWNvbmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0dmFsdWUiLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpsb2NhbFN0
b3JhZ2VGaWxlLnBhdGhdKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgV2Vic2l0ZURh
dGFTdG9yZSB0aGF0IHBlcmZvcm1zIG1pZ3JhdGlvbi4KKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5nZXQoKS5zaG91bGRVc2VDdXN0b21TdG9yYWdlUGF0aHMgPSBmYWxzZTsKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRv
cHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHRoaXJk
V2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW3RoaXJkV2ViVmlldyBs
b2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3R2YWx1ZSIsIGdl
dE5leHRNZXNzYWdlKCkuYm9keSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpsb2NhbFN0b3JhZ2VGaWxlLnBhdGhdKTsK
KyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpuZXdMb2NhbFN0
b3JhZ2VGaWxlLnBhdGhdKTsKK30KKworVEVTVChXZWJLaXQsIE1pZ3JhdGVJbmRleGVkREJEYXRh
VG9HZW5lcmFsU3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICBOU1VSTCAqaW5kZXhlZERCRGlyZWN0
b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBs
ZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9JbmRleGVkREIiIHN0cmlu
Z0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNVUkwgKmlu
ZGV4ZWREQk9yaWdpbkRpcmVjdG9yeSA9IFtpbmRleGVkREJEaXJlY3RvcnkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAidjEvaHR0cHNfd2Via2l0Lm9yZ18wIl07CisgICAgTlNTdHJpbmcg
KmluZGV4ZWREQkRhdGFiYXNlTmFtZSA9IEAiVGVzdERhdGFiYXNlIjsKKyAgICBOU1N0cmluZyAq
aGFzaGVkSW5kZXhlZERCRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShpbmRleGVkREJEYXRhYmFzZU5hbWUpOworICAgIE5TVVJM
ICppbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFtpbmRleGVkREJPcmlnaW5EaXJlY3Rvcnkg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Omhhc2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZV07
CisgICAgTlNVUkwgKmluZGV4ZWREQkZpbGUgPSBbaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnkg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKKyAgICBO
U1VSTCAqZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltA
In4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdl
YnNpdGVEYXRhL0RlZmF1bHQiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0
b3J5OllFU107CisgICAgTlNVUkwgKnJlc291cmNlU2FsdCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJnZW5lcmFsLXN0b3JhZ2UtZGlyZWN0b3J5IiB3aXRoRXh0ZW5z
aW9uOkAic2FsdCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAg
ICBOU1VSTCAqbmV3SW5kZXhlZERCT3JpZ2luRGlyZWN0b3J5ID0gW2dlbmVyYWxTdG9yYWdlRGly
ZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIllVbl93Z1I1MVZMVm85bGM1eGlp
dkF6WjhUTW1vam9hMEliVzMyM3FpYnMvWVVuX3dnUjUxVkxWbzlsYzV4aWl2QXpaOFRNbW9qb2Ew
SWJXMzIzcWlicy9JbmRleGVkREIvIl07CisgICAgTlNVUkwgKm5ld0luZGV4ZWREQkRpcmVjdG9y
eSA9IFtuZXdJbmRleGVkREJPcmlnaW5EaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50Omhhc2hlZEluZGV4ZWREQkRhdGFiYXNlTmFtZV07CisgICAgTlNVUkwgKm5ld0luZGV4ZWRE
QkZpbGUgPSBbbmV3SW5kZXhlZERCRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIkluZGV4ZWREQi5zcWxpdGUzIl07CisKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdl
ciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVt
b3ZlSXRlbUF0VVJMOmluZGV4ZWREQkRpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFu
YWdlciByZW1vdmVJdGVtQXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsK
KyAgICBbZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJl
Y3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJv
cjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0b1VS
TDpbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
c2FsdCJdIGVycm9yOm5pbF07CisKKyAgICBOU1N0cmluZyAqaHRtbFN0cmluZyA9IEAiPHNjcmlw
dD4gXAorICAgICAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbignVGVzdERh
dGFiYXNlJyk7IFwKKyAgICAgICAgdmFyIHVwZ3JhZGVuZWVkZWRSZWNlaXZlZCA9IGZhbHNlOyBc
CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsgXAor
ICAgICAgICAgICAgdmFyIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsgXAorICAgICAgICAgICAg
dmFyIG9zID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOyBcCisgICAg
ICAgICAgICBvcy5wdXQoJ3ZhbHVlJywgJ2tleScpOyBcCisgICAgICAgICAgICB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnZGF0YWJhc2UgaXMg
Y3JlYXRlZCcpOyBcCisgICAgICAgICAgICB1cGdyYWRlbmVlZGVkUmVjZWl2ZWQgPSB0cnVlOyBc
CisgICAgICAgIH07IFwKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVu
dCkgeyBcCisgICAgICAgICAgICBpZiAodXBncmFkZW5lZWRlZFJlY2VpdmVkKSBcCisgICAgICAg
ICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
IFwKKyAgICAgICAgICAgIGRiLnRyYW5zYWN0aW9uKCdUZXN0T2JqZWN0U3RvcmUnKS5vYmplY3RT
dG9yZSgnVGVzdE9iamVjdFN0b3JlJykuZ2V0KCdrZXknKS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
dmVudCkgeyBcCisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGV2ZW50LnRhcmdldC5yZXN1
bHQgPyBldmVudC50YXJnZXQucmVzdWx0IDogJ1tudWxsXSc7IFwKKyAgICAgICAgICAgICAgICB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShyZXN1
bHQpOyBcCisgICAgICAgICAgICB9OyBcCisgICAgICAgIH07IFwKKyAgICAgICAgPC9zY3JpcHQ+
IjsKKyAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgd2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
ID0gaW5kZXhlZERCRGlyZWN0b3J5OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmdldCgpLmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnk7
CisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkuc2hvdWxkVXNlQ3VzdG9t
U3RvcmFnZVBhdGhzID0gdHJ1ZTsKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhb
W1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSkuZ2V0KCldOworICAgICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5n
ZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
Omh0bWxTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0
Lm9yZy8iXV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJkYXRhYmFzZSBpcyBjcmVhdGVk
IiwgZ2V0TmV4dE1lc3NhZ2UoKS5ib2R5KTsKKworICAgICAgICAvLyBFbnN1cmUgaXRlbSBpcyBz
dG9yZWQgYnkgZ2V0dGluZyBpdCBpbiBhbm90aGVyIFdLV2ViVmlldy4KKyAgICAgICAgYXV0byBz
ZWNvbmRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgICAgIFtz
ZWNvbmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKCJ2YWx1ZSIsIGdldE5leHRNZXNzYWdlKCkuYm9keSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmluZGV4ZWREQkZpbGUucGF0aF0pOwor
ICAgIH0KKworICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJzaXRlRGF0YVN0b3JlIHRoYXQgcGVyZm9y
bXMgbWlncmF0aW9uLgorICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLnNo
b3VsZFVzZUN1c3RvbVN0b3JhZ2VQYXRocyA9IGZhbHNlOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpXSkuZ2V0KCldOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gdGhpcmRXZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICByZWNlaXZlZFNjcmlw
dE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbdGhpcmRXZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxT
dHJpbmcgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8i
XV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2Up
OworICAgIEVYUEVDVF9XS19TVFJFUSgidmFsdWUiLCBnZXROZXh0TWVzc2FnZSgpLmJvZHkpOwor
ICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6aW5kZXhlZERCRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6bmV3SW5kZXhlZERCRmlsZS5wYXRoXSk7Cit9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2dlbmVyYWwtc3RvcmFn
ZS1kaXJlY3Rvcnkuc2FsdCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Z2VuZXJhbC1zdG9yYWdlLWRpcmVjdG9yeS5zYWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzZmI4YTczMmUxYzc2
ZDQxOWNjZDc5YmJmMmEyYTAyNmRlYzUyMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2dlbmVyYWwtc3RvcmFnZS1kaXJlY3Rvcnkuc2Fs
dApAQCAtMCwwICsxIEBACit70Mz83Dq8HgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>