<?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>237044</bug_id>
          
          <creation_ts>2022-02-22 09:56:41 -0800</creation_ts>
          <short_desc>Regression(r242729): m_origin in IDBDatabaseIdentifier is incorrect</short_desc>
          <delta_ts>2022-02-25 15:47:21 -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>
          
          
          <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>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</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>1844765</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-22 09:56:41 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844923</commentid>
    <comment_count>1</comment_count>
      <attachid>452914</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-22 16:31:08 -0800</bug_when>
    <thetext>Created attachment 452914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845361</commentid>
    <comment_count>2</comment_count>
      <attachid>453036</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-23 15:38:28 -0800</bug_when>
    <thetext>Created attachment 453036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845587</commentid>
    <comment_count>3</comment_count>
      <attachid>453036</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-24 05:32:47 -0800</bug_when>
    <thetext>Comment on attachment 453036
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        update databaseDirectoryRelativeToRoot function to make it find the correct storage path.

It seems we should keep databaseDirectoryRelativeToRoot to provide version/top/opening.

&gt; Source/WebCore/ChangeLog:900
&gt; +2022-02-22  Sihui Liu  &lt;sihui_liu@apple.com&gt;

Double ChangeLog

&gt; Source/WebKit/ChangeLog:418
&gt; +2022-02-22  Sihui Liu  &lt;sihui_liu@apple.com&gt;

Double change log

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp:38
&gt; +    , m_origin { WTFMove(mainFrameOrigin), WTFMove(openingOrigin) }

Thanks for fixing this!

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp:61
&gt;  String IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot(const SecurityOriginData&amp; topLevelOrigin, const SecurityOriginData&amp; openingOrigin, const String&amp; rootDirectory, const String&amp; versionString)

Can we pass a const ClientOrigin&amp; here?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp:70
&gt; +    return FileSystem::pathByAppendingComponent(openingFrameDirectory, topLevelOrigin.databaseIdentifier());

Shouldn&apos;t we keep version/top/iframe structure and do the migration of folders version/iframe/top?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1613
&gt; +        FileSystem::closeFile(handle);

It could be a one liner.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1631
&gt;  void NetworkProcessProxy::createSymLinkForFileUpgrade(const String&amp; indexedDatabaseDirectory)

Maybe we should rename to upgradeIfNeeded?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1637
&gt; +    if (!FileSystem::fileExists(oldVersionDirectory))

It does not seem consistent with: &quot;If IndexedDB does not have version directory, the origin directory structure is correct&quot;.
So we are moving the correct ancient to the incorrect but consistent with v0/v1? Should we do the reverse and move back v0/v1 to correct?

Also, given reverseOriginForDirectoryIfPossible is destructive, we probably only want to execute it once.
I do not see what guarantees that oldVersionDirectory will not exist anymore after calling reverseOriginForDirectoryIfPossible.
Is it overkill to increase the IDB database version?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1642
&gt;          FileSystem::createSymbolicLink(indexedDatabaseDirectory, oldVersionDirectory);

Usually we do only file changes in background thread. I guess this is fine since it will only happen once.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1162
&gt; +    

Unnecessary.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:378
&gt; +    // Database file is moved to [IndexedDBDirectory]/v1/[OpeninigOrigin]/[TopOrigin]/.

s/OpeninigOrigin/OpeningOrigin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845746</commentid>
    <comment_count>4</comment_count>
      <attachid>453036</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-24 14:09:57 -0800</bug_when>
    <thetext>Comment on attachment 453036
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:17
&gt;&gt; +        update databaseDirectoryRelativeToRoot function to make it find the correct storage path.
&gt; 
&gt; It seems we should keep databaseDirectoryRelativeToRoot to provide version/top/opening.

Sure, I will make a change.

&gt;&gt; Source/WebCore/ChangeLog:900
&gt;&gt; +2022-02-22  Sihui Liu  &lt;sihui_liu@apple.com&gt;
&gt; 
&gt; Double ChangeLog

Will remove.

&gt;&gt; Source/WebKit/ChangeLog:418
&gt;&gt; +2022-02-22  Sihui Liu  &lt;sihui_liu@apple.com&gt;
&gt; 
&gt; Double change log

Wil remove.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp:38
&gt;&gt; +    , m_origin { WTFMove(mainFrameOrigin), WTFMove(openingOrigin) }
&gt; 
&gt; Thanks for fixing this!

Np!

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp:61
&gt;&gt;  String IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot(const SecurityOriginData&amp; topLevelOrigin, const SecurityOriginData&amp; openingOrigin, const String&amp; rootDirectory, const String&amp; versionString)
&gt; 
&gt; Can we pass a const ClientOrigin&amp; here?

Sure.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseIdentifier.cpp:70
&gt;&gt; +    return FileSystem::pathByAppendingComponent(openingFrameDirectory, topLevelOrigin.databaseIdentifier());
&gt; 
&gt; Shouldn&apos;t we keep version/top/iframe structure and do the migration of folders version/iframe/top?

Sure, I made a mistake in thinking that v0&apos;s origins are correct.
My new plan is to reverse the wrong origins in v1, and we can keep the structure here.

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1613
&gt;&gt; +        FileSystem::closeFile(handle);
&gt; 
&gt; It could be a one liner.

Sure.

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1631
&gt;&gt;  void NetworkProcessProxy::createSymLinkForFileUpgrade(const String&amp; indexedDatabaseDirectory)
&gt; 
&gt; Maybe we should rename to upgradeIfNeeded?

We don&apos;t actually upgrade here, but just add a new v0 directory; we do the upgrade (adding v1/ and moving files to v1/) in IDBStorageManager::migrateOriginData.

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1637
&gt;&gt; +    if (!FileSystem::fileExists(oldVersionDirectory))
&gt; 
&gt; It does not seem consistent with: &quot;If IndexedDB does not have version directory, the origin directory structure is correct&quot;.
&gt; So we are moving the correct ancient to the incorrect but consistent with v0/v1? Should we do the reverse and move back v0/v1 to correct?
&gt; 
&gt; Also, given reverseOriginForDirectoryIfPossible is destructive, we probably only want to execute it once.
&gt; I do not see what guarantees that oldVersionDirectory will not exist anymore after calling reverseOriginForDirectoryIfPossible.
&gt; Is it overkill to increase the IDB database version?

I made a mistake here by thinking only ancient files have correct origin: actually ancient files and v0/ files are correct; only v1/ files are not. I will make the according changes.
Yes, it seems overkill to increase the version (v0, v1, v2), because we are about to migrate data to general storage directory.

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1642
&gt;&gt;          FileSystem::createSymbolicLink(indexedDatabaseDirectory, oldVersionDirectory);
&gt; 
&gt; Usually we do only file changes in background thread. I guess this is fine since it will only happen once.

I am going to move this to a background thread in network process so the migration can be done in both WebKit and WebKitLegacy.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:1162
&gt;&gt; +    
&gt; 
&gt; Unnecessary.

Will remove.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:378
&gt;&gt; +    // Database file is moved to [IndexedDBDirectory]/v1/[OpeninigOrigin]/[TopOrigin]/.
&gt; 
&gt; s/OpeninigOrigin/OpeningOrigin

Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845827</commentid>
    <comment_count>5</comment_count>
      <attachid>453153</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-24 16:26:18 -0800</bug_when>
    <thetext>Created attachment 453153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846057</commentid>
    <comment_count>6</comment_count>
      <attachid>453225</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-25 09:48:09 -0800</bug_when>
    <thetext>Created attachment 453225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846072</commentid>
    <comment_count>7</comment_count>
      <attachid>453227</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-02-25 10:07:27 -0800</bug_when>
    <thetext>Created attachment 453227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846221</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-25 15:46:56 -0800</bug_when>
    <thetext>Committed r290532 (247812@main): &lt;https://commits.webkit.org/247812@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453227.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846222</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-25 15:47:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/89496178&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452914</attachid>
            <date>2022-02-22 16:31:08 -0800</date>
            <delta_ts>2022-02-23 15:38:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237044-20220222163107.patch</filename>
            <type>text/plain</type>
            <size>26009</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UyZWQzNmRiZWQ1MzVm
MDlhODBiMTM1ZTk3NWNiZWQ1ZWFmNjI4NS4uMTYxMjJiODQyNDBhNWIwOGVmM2RkY2Q1ZjI2NGJk
MDY1NzczYzk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAyLTIyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0Mjcy
OSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHIyNDI3MjksIHdl
IHN3YXBwZWQgdG9wIG9yaWdpbiBhbmQgb3BlbmluZyBvcmlnaW4gaW4gbV9vcmlnaW4gKGl0IGlz
IGEgQ2xpZW50T3JpZ2luKSBvZiBJREJEYXRhYmFzZUlkZW50aWZpZXIuIAorICAgICAgICBUaGlz
IGNhbiBjYXVzZSB0cm91YmxlIHNpbmNlIEluZGV4ZWREQiBvcGVyYXRpb24gd2lsbCBiZSBwcm9j
ZXNzZWQgYnkgd3JvbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXIgCisgICAgICAgIChPcmlnaW5TdG9y
YWdlTWFuYWdlciBpcyBpZGVudGlmaWVkIGJ5IENsaWVudE9yaWdpbikuIFRvIGZpeCB0aGlzIGlz
c3VlLCB3ZSBuZWVkIHRvIHN3YXAgaXQgYmFjay4KKworICAgICAgICBCZWNhdXNlIHdlIHVzZSB0
aGUgaW5jb3JyZWN0IENsaWVudE9yaWdpbiBmb3IgdGhpcmQtcGFydHkgSW5kZXhlZERCIGRhdGFi
YXNlcyAoZmlyc3QtcGFydHkgaXMgbm90IGFmZmVjdGVkIAorICAgICAgICBiZWNhdXNlIGl0cyB0
b3Agb3JpZ2luIGFuZCBvcGVuaW5nIG9yaWdpbiBpcyB0aGUgc2FtZSksIHRoZSBkYXRhYmFzZSBw
YXRocyBhcmUgd3JvbmcgdG9vLiBGb3IgZXhhbXBsZSwgd2UgcGxhbiAKKyAgICAgICAgdG8gc3Rv
cmUgZGF0YSBvZiB7T3JpZ2luIEEsIE9yaWdpbiBCfSBhdCBbSW5kZXhlZERCRGlyZWN0b3J5XS9b
T3JpZ2luIEFdL1tPcmlnaW4gQl0sIGJ1dCBpdCBpcyBhY3R1YWxseSBzdG9yZWQgCisgICAgICAg
IGF0IFtJbmRleGVkREJEaXJlY3RvcnldL1tPcmlnaW4gQl0vW09yaWdpbiBBXS4gVGhpcyBjYW4g
Y2F1c2UgdHJvdWJsZSB3aGVuIHdlIHN0YXJ0IHVzaW5nIGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5
CisgICAgICAgIGZvciBJbmRleGVkREIgZGF0YSwgYmVjYXVzZSBJbmRleGVkREIgZGF0YSBvZiB7
T3JpZ2luIEEsIE9yaWdpbiBCfSB3aWxsIGJlIHN0b3JlZCBhdCAKKyAgICAgICAgW0dlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5XS9bT3JpZ2luIEFdL1tPcmlnaW4gQl0vSW5kZXhlZERCLy4gVG8gc29s
dmUgdGhpcyBpc3N1ZSwgd2UgcGVyZm9ybSBhIG9uZS10aW1lIG1pZ3JhdGlvbgorICAgICAgICBm
b3IgdGhpcmQtcGFydHkgSW5kZXhlZERCIGRhdGEsIHdoZW4gW0luZGV4ZWREQkRpcmVjdG9yeV0g
aXMgdXNlZCBpbiBuZXR3b3JrIHByb2Nlc3MgZm9yIHRoZSBmaXJzdCB0aW1lLgorCisgICAgICAg
IEJlY2FzdXNlIHIyNDI3Mjkgd2FzIHNoaXBwZWQgdGhlIHNhbWUgdGltZSBhcyB3ZSBhZGRlZCB2
ZXJzaW9uIGRpcmVjdG9yeSBpbnNpZGUgSW5kZXhlZERCIGRpcmVjdG9yeSAocjI0MzAxOSksCisg
ICAgICAgIHRoYXQgbWVhbnMgaWYgSW5kZXhlZERCIGRvZXMgbm90IGhhdmUgdmVyc2lvbiBkaXJl
Y3RvcnksIHRoZSBvcmlnaW4gZGlyZWN0b3J5IHN0cnVjdHVyZSBpcyBjb3JyZWN0LiBTbywgd2Ug
Y2FuCisgICAgICAgIGNoZWNrIHRoZSBleGlzdGVuY2Ugb2YgdmVyc2lvbiBkaXJlY3RvcnkgdG8g
ZGVjaWRlIGlmIHdlIG5lZWQgb3JpZ2luIGNvcnJlY3Rpb24gbWlncmF0aW9uLgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpJREJTZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpyZXZlcnNlT3JpZ2luRm9yVmVyc2lvbkRpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmV2ZXJzZU9yaWdpbkZvckRp
cmVjdG9yeUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyLmg6CisKIDIwMjItMDItMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlIGNvbnN0IGNvcnJlY3RuZXNzIGZvciBT
ZWN1cml0eU9yaWdpbiBhY2Nlc3NvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2Q1ZjVhNGNhYzM5ODFiZmIzNjUz
NWJkODU4ZTI1ZTBhOGMyYzU3OS4uZDY5OTJiNTI0YzIzODVkNzBjOGU0MGE5NDE5ZWQ3OWRjNGNm
YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMi0yMiAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIyNDI3MjkpOiBtX29y
aWdpbiBpbiBJREJEYXRhYmFzZUlkZW50aWZpZXIgaXMgaW5jb3JyZWN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptaWdyYXRlT3JpZ2lu
RGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcik6CisKIDIwMjItMDItMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBbGxvdyBhZGF0dHJpYnV0aW9uZCB0byBz
dGFydCBvbiBpT1MgZGV2aWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggNTU0MjFkNDE1ZDNk
ZTk5YWIwN2NjZjc0Njk4ZmU3YTc1M2E2ZTcxMS4uMDYyZjhhNzYxODg5NTY4MWJkOWVmODE1NmIx
OWExZDNlZjM2YjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogSURCRGF0YWJhc2VJZGVudGlmaWVyOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IG9wZW5pbmdPcmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG1haW5GcmFtZU9yaWdpbiwgYm9v
bCBpc1RyYW5zaWVudCkKICAgICA6IG1fZGF0YWJhc2VOYW1lKGRhdGFiYXNlTmFtZSkKLSAgICAs
IG1fb3JpZ2luIHsgV1RGTW92ZShvcGVuaW5nT3JpZ2luKSwgV1RGTW92ZShtYWluRnJhbWVPcmln
aW4pIH0KKyAgICAsIG1fb3JpZ2luIHsgV1RGTW92ZShtYWluRnJhbWVPcmlnaW4pLCBXVEZNb3Zl
KG9wZW5pbmdPcmlnaW4pIH0KICAgICAsIG1faXNUcmFuc2llbnQoaXNUcmFuc2llbnQpCiB7CiAg
ICAgLy8gVGhlIGVtcHR5IHN0cmluZyBpcyBhIHZhbGlkIGRhdGFiYXNlIG5hbWUsIGJ1dCBhIG51
bGwgc3RyaW5nIGlzIG5vdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNGJhZDQ0MmIxYjNhOWE0MTc4NTkwNDJm
ODE2NTc3ZTA3YjEzYmE4YS4uN2YzZDcyODhmMzkxOTgyZmE2ODczMTE2ZjdmOGRlNjU4NDkxNjEw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgSURCU2VydmVyOjpJREJTZXJ2ZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGEK
ICAgICBBU1NFUlQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRo
cmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoID0gZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoOworICAgIHJldmVyc2VPcmlnaW5Gb3JEaXJlY3RvcnlJZk5lY2Vzc2FyeShtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aCk7CiAgICAgdXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKTsKIH0KIApA
QCAtODIyLDUgKzgyMyw3MSBAQCB2b2lkIElEQlNlcnZlcjo6c3RvcERhdGFiYXNlQWN0aXZpdGll
c09uTWFpblRocmVhZCgpCiAgICAgfQogfQogCitzdGF0aWMgdm9pZCByZXZlcnNlT3JpZ2luRm9y
VmVyc2lvbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKK3sKKyAgICBhdXRvIHRl
bXBEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0
b3J5LCAidGVtcCIpOworICAgIGF1dG8gbWlncmF0aW5nRmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJtaWdyYXRpbmciKTsKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMobWlncmF0aW5nRmlsZSkpIHsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKHRlbXBEaXJlY3RvcnkpOworICAgICAgICBmb3IgKGF1dG8m
IGlkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSkpIHsKKyAg
ICAgICAgICAgIGF1dG8gdG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCF0b3BPcmlnaW4pCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gdG9wT3JpZ2luRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwg
aWRlbnRpZmllcik7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHNlY29uZElkZW50aWZpZXIgOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSkpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIG9wZW5pbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIoc2Vjb25kSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgaWYgKCFv
cGVuaW5nT3JpZ2luKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIHNlY29uZElkZW50aWZpZXIpOwor
ICAgICAgICAgICAgICAgIGF1dG8gdGVtcFRvcE9yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRGlyZWN0b3J5LCBzZWNvbmRJZGVudGlmaWVy
KTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXModGVtcFRv
cE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgICAgICAgICAgYXV0byB0ZW1wT3JpZ2luRGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRlbXBUb3BPcmlnaW5E
aXJlY3RvcnksIGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVG
aWxlKG9wZW5pbmdPcmlnaW5EaXJlY3RvcnksIHRlbXBPcmlnaW5EaXJlY3RvcnkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeSh0
b3BPcmlnaW5EaXJlY3RvcnkpOworICAgICAgICB9CisgICAgICAgIGF1dG8gaGFuZGxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUobWlncmF0aW5nRmlsZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpXcml0ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgIH0K
KworICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
dGVtcERpcmVjdG9yeSkpIHsKKyAgICAgICAgYXV0byB0b3BPcmlnaW5EaXJlY290cnkgPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcERpcmVjdG9yeSwgaWRlbnRpZmll
cik7CisgICAgICAgIGF1dG8gdGFyZ2V0VG9wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgaWRlbnRpZmllcik7CisgICAgICAg
IEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyh0YXJnZXRUb3BPcmlnaW5EaXJlY3Rvcnkp
OworICAgICAgICBmb3IgKGF1dG8mIHNlY29uZElkZW50aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjb3RyeSkpIHsKKyAgICAgICAgICAgIGF1dG8gb3Blbmlu
Z09yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0
b3BPcmlnaW5EaXJlY290cnksIHNlY29uZElkZW50aWZpZXIpOworICAgICAgICAgICAgYXV0byB0
YXJnZXRPcGVuaW5nT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHRhcmdldFRvcE9yaWdpbkRpcmVjdG9yeSwgc2Vjb25kSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvcGVuaW5nT3JpZ2luRGlyZWN0b3J5LCB0
YXJnZXRPcGVuaW5nT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBEaXJlY3RvcnkpOworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobWlncmF0aW5nRmlsZSk7Cit9CisKK3ZvaWQgSURCU2VydmVy
OjpyZXZlcnNlT3JpZ2luRm9yRGlyZWN0b3J5SWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnkpCit7CisgICAgaWYgKGRpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gdmVyc2lvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChkaXJlY3RvcnksICJ2MCIpOworICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyh2ZXJzaW9uRGlyZWN0b3J5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjb3Jy
ZWN0ZWRPcmlnaW5GaWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRp
cmVjdG9yeSwgImNvcnJlY3RlZF9vcmlnaW4iKTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhjb3JyZWN0ZWRPcmlnaW5GaWxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV2ZXJz
ZU9yaWdpbkZvclZlcnNpb25EaXJlY3RvcnkodmVyc2lvbkRpcmVjdG9yeSk7CisgICAgYXV0byBu
ZXdWZXJzaW9uRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRpcmVjdG9yeSwgInYxIik7CisgICAgcmV2ZXJzZU9yaWdpbkZvclZlcnNpb25EaXJlY3Rvcnko
bmV3VmVyc2lvbkRpcmVjdG9yeSk7CisKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKGNvcnJlY3RlZE9yaWdpbkZpbGUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCAxM2ZiNzBi
ZTM3OWFhYTljMTFmNTlkMjU0Yjk2YzA3Mjk0ZGEwNjFjLi5hODFhZjE0ZWU5ZDAyZTQwNzkzODM3
ZGRjNTg1M2EzNDJiY2NmM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewogCiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgVW5pcXVlSURCRGF0YWJhc2VN
YW5hZ2VyIHsKIHB1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZXZlcnNl
T3JpZ2luRm9yRGlyZWN0b3J5SWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwog
ICAgIHVzaW5nIFN0b3JhZ2VRdW90YU1hbmFnZXJTcGFjZVJlcXVlc3RlciA9IEZ1bmN0aW9uPFN0
b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90
IHNwYWNlUmVxdWVzdGVkKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgSURCU2VydmVyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgU3RvcmFnZVF1b3Rh
TWFuYWdlclNwYWNlUmVxdWVzdGVyJiYsIExvY2smKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+SURC
U2VydmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3NWMwY2ZiYjEwNDQ0N2M5NWZmNTY4
ZmVjMTE5OTgwNDMwYWNlYjNiLi40MGJhNjZhYzFjMDc5OTMzZDE4MzQwMDdlMzU4NTVmNDgzMTNi
YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURC
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBAIHN0YXRpYyB2b2lk
IG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0IFN0cmluZyYgb2xkT3JpZ2luRGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIG5lCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdP
cmlnaW5EaXJlY3RvcnkpOwogCiAgICAgZm9yIChhdXRvJiBuYW1lIDogZmlsZU5hbWVzKSB7Cisg
ICAgICAgIC8vIFRoaXMgaXMgZGlyZWN0b3J5IGZvciB0aGlyZC1wYXJ0eSBkYXRhLgorICAgICAg
ICBpZiAoYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIobmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBT
dHJpbmcgY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwgbmFtZSkpOwogICAgICAgICBT
dHJpbmcgbmV3TmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmNvbXB1dGVIYXNoRm9y
RmlsZU5hbWUoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlY29k
ZURhdGFiYXNlTmFtZShuYW1lKSk7CiAgICAgICAgIGF1dG8gbmV3Q2hpbGRQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdpbkRpcmVjdG9yeSwgbmV3TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDczOWMxNTIxNDFiYTI5ODlmYWQ1
OTcyZTdjM2I3OWNiOWRjYTIyOWMuLjdlMWNlOTE1YjExMTg0N2I1OTM5M2Y0ZmMyNzVmM2UxZDI3
NDM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0lEQlNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaD4KQEAgLTEzMSwxMCAr
MTMyLDE0IEBAIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSVBDOjpDb25uCiAgICAgICAgIG1fY3VzdG9tTG9jYWxT
dG9yYWdlUGF0aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CiAgICAgICAgIG1fY3VzdG9tSURC
U3RvcmFnZVBhdGggPSBjdXN0b21JREJTdG9yYWdlUGF0aDsKICAgICAgICAgbV9jdXN0b21DYWNo
ZVN0b3JhZ2VQYXRoID0gY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aDsKKwogICAgICAgICBpZiAoIW1f
cGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8gc2FsdFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCAic2FsdCIpOwogICAgICAgICAgICAg
bV9zYWx0ID0gdmFsdWVPckRlZmF1bHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBh
dGgpKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICghbV9jdXN0b21JREJTdG9yYWdlUGF0aC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmV2
ZXJzZU9yaWdpbkZvckRpcmVjdG9yeUlmTmVjZXNzYXJ5KG1fY3VzdG9tSURCU3RvcmFnZVBhdGgp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMTEwNTE2NGVlYTg4YTBmOWQwNTJhZGY4NDExMTM5NmYwNzI2ODZlOS4uNGJm
OTUyZTY3NjA4Y2FiMDc2ZTUxMjczNzEzM2Q1YWE3ZjgxNjRlZSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAy
LTIyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Np
b24ocjI0MjcyOSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJl
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5j
ZS5tbToKKwogMjAyMi0wMi0yMSAgQnJhbmRvbiBTdGV3YXJ0ICA8YnJhbmRvbnN0ZXdhcnRAYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBBcmd1bWVudFBhcnNlciBmb3IgcGFyc2luZyBhcmdzIGlu
IGdlbmVyYXRlLWNvbXBpbGUtY29tbWFuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDAy
MjUxOTIyZjZkNDYzZDQxNDVhYTA4NTgxN2UzM2U5N2MzODFkNS4uMjJiY2E2ODJlMmYxODE0ZGY3
NGI0YTE0ODFkMjI1NmIzYWE3Zjc4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2Myw2
ICs3NjMsNyBAQAogCQk5M0FGNEVDRTE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVDRDE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgKi87IH07CiAJ
CTkzQUY0RUQxMTUwNkYxMzAwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdlcy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUY0RUNGMTUw
NkYxMjMwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdlcy5odG1sICovOyB9OwogCQk5M0JDQkM4NDIz
Q0M2RjQ0MDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JDQkM4
MjIzQ0M2RUY1MDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIuaHRtbCAq
LzsgfTsKKwkJOTNDQ0YxMjkyN0M1ODhGMDAwMDQzN0QyIC8qIGluZGV4ZWRkYi1wZXJzaXN0ZW5j
ZS10aGlyZC1wYXJ0eS5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQ0NGMTI4MjdDNTg4RDgwMDA0MzdEMiAvKiBpbmRleGVkZGIt
cGVyc2lzdGVuY2UtdGhpcmQtcGFydHkuc3FsaXRlMyAqLzsgfTsKIAkJOTNDRkE4NjcxQ0VCOUUz
ODAwMDU2NUE4IC8qIGF1dG9mb2N1c2VkLXRleHQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NGQTg2NjFDRUI5REUxMDAw
NTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sICovOyB9OwogCQk5M0QxMTlGQzIy
QzY4MEY3MDA5QkUzQzcgLyogbG9jYWxzdG9yYWdlLW9wZW4td2luZG93LXByaXZhdGUuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Qx
MTlGQjIyQzU3MTEyMDA5QkUzQzcgLyogbG9jYWxzdG9yYWdlLW9wZW4td2luZG93LXByaXZhdGUu
aHRtbCAqLzsgfTsKIAkJOTNFMkM1NTUxRkQzMjA0MTAwRTFERjZBIC8qIExpbmVFbmRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMkM1NTQx
RkQzMjA0MTAwRTFERjZBIC8qIExpbmVFbmRpbmcuY3BwICovOyB9OwpAQCAtMTQwMSw2ICsxNDAy
LDcgQEAKIAkJCQk3MUU4OEM0NTI0QjUzNEI3MDA2NjUxNjAgLyogaW1nLXdpdGgtYmFzZTY0LXVy
bC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQ5ODk3RDZDMjQxRkU5RTQwMEVDRjE1
MyAvKiBpbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQk0OTcxQjExODI0NTFGMjlBMDA5Njk5NEQgLyogaW5jb3JyZWN0Q3JlYXRl
VGFibGVTY2hlbWEuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJOTNDQ0YxMjkyN0M1ODhG
MDAwMDQzN0QyIC8qIGluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUzIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTkzNTc4NkNEMjBGNkEyOTEwMDAwQ0RGQyAvKiBJbmRl
eGVkREIuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5MzU3ODZDRTIwRjZBMkEx
MDAwMENERkMgLyogSW5kZXhlZERCLnNxbGl0ZTMtc2htIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTkzNTc4NkNDMjBGNkEyNzAwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRlMy13YWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNTU3LDYgKzI1NTksNyBAQAogCQk5M0JDQkM4MDIzQ0M2
RUU4MDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRl
VG9WMi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQ0JDODEyM0NDNkVGNTAw
Q0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGUuc3FsaXRlMyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBJREJPYmpl
Y3RTdG9yZUluZm9VcGdyYWRlLnNxbGl0ZTM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQkNCQzgyMjNDQzZFRjUwMENBMjIyMSAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9W
Mi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvVXBn
cmFkZVRvVjIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNDQ0YxMjgyN0M1
ODhEODAwMDQzN0QyIC8qIGluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsg
cGF0aCA9ICJpbmRleGVkZGItcGVyc2lzdGVuY2UtdGhpcmQtcGFydHkuc3FsaXRlMyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQ0ZBODY2MUNFQjlERTEwMDA1NjVBOCAvKiBhdXRv
Zm9jdXNlZC10ZXh0LWlucHV0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0
b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNDRkE4NjgxQ0VCQ0ZFRDAwMDU2NUE4IC8qIENhbmRpZGF0ZVRlc3RzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2FuZGlkYXRlVGVzdHMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDExOUZCMjJDNTcxMTIwMDlCRTNDNyAvKiBsb2NhbHN0
b3JhZ2Utb3Blbi13aW5kb3ctcHJpdmF0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImxvY2Fsc3RvcmFnZS1vcGVuLXdpbmRvdy1wcml2YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDE1NCw2ICs0MTU3LDcgQEAKIAkJCQkzMTI4QTgxNDIzNzY0MEZE
MDBEOTBENDAgLyogaW1hZ2UuaHRtbCAqLywKIAkJCQk0OUQ3RkJBNzI0MUZERERBMDBBQjY3RkEg
LyogaW4tYXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwgKi8sCiAJCQkJNDk3MUIx
MTcyNDUxRjI3ODAwOTY5OTREIC8qIGluY29ycmVjdENyZWF0ZVRhYmxlU2NoZW1hLmRiICovLAor
CQkJCTkzQ0NGMTI4MjdDNTg4RDgwMDA0MzdEMiAvKiBpbmRleGVkZGItcGVyc2lzdGVuY2UtdGhp
cmQtcGFydHkuc3FsaXRlMyAqLywKIAkJCQk5MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5k
ZXhlZERCLnNxbGl0ZTMgKi8sCiAJCQkJOTM0RkE1QzYyMEY2OUZFRDAwNDBEQzFCIC8qIEluZGV4
ZWREQi5zcWxpdGUzLXNobSAqLywKIAkJCQk5MzRGQTVDNTIwRjY5RkVEMDA0MERDMUIgLyogSW5k
ZXhlZERCLnNxbGl0ZTMtd2FsICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggNGYw
YThlYzk0NDU0OGNhNmM3ODcwMTVjNmI2ZDk1MDg1ODgzODhiMy4uNGVkMjY2ZjIyOTYxMWY0MWZj
MmViYjE2NmQyNjg5NGJjZGU2ZDdjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0y
OSwxMiArMjksMTMgQEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
ZXN0LmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgotI2ltcG9ydCA8V2ViS2l0
L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTMyMiw2ICszMjMsNzcgQEAgVEVTVChJbmRleGVkREIs
IEluZGV4ZWREQlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkKICAgICBsb2FkVGVzdFBhZ2VJbldlYlZp
ZXcodGhpcmRXZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBz
dWNjZXNzIik7CiB9CiAKK3N0YXRpYyB2b2lkIHJ1blBhZ2VMb2FkVGVzdEZvclRoaXJkUGFydHlN
aWdyYXRpb24oKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHRO
UyhbW0luZGV4ZWREQk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIg
PSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2No
ZW1lSGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlk
PFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05h
bWU6bmlsXSk7CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQo
KV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpp
ZnJhbWVCeXRlc1BlcnNpc3RlbmNlIGxlbmd0aDpzdHJsZW4oaWZyYW1lQnl0ZXNQZXJzaXN0ZW5j
ZSldXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAiaWZyYW1lIl07CisgICAgLy8gQWxsb3dpbmcgdGhpcmQtcGFydHkgZnJhbWUgdG8gc3RvcmUg
ZGF0YSBvbiBkaXNrLgorICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoX19icmlkZ2UgV0tQcmVmZXJl
bmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgV0tQcmVmZXJlbmNlc1Nl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeShwcmVmZXJlbmNlcywga1dLQWxsb3dBbGxTdG9yYWdlKTsK
KworICAgIC8vIEVuc3VyZSBkYXRhYmFzZSBjYW4gYmUgcmVhZCBmcm9tIEluZGV4ZWREQiBBUEku
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJk
YXRhYmFzZSBleGlzdHMgLSBnZXQgaXRlbSBzdWNjZXNzOiBUZXN0VmFsdWUiKTsKK30KKworVEVT
VChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlNaWdyYXRpb25Gb3JDb3JyZWN0aW5nT3Jp
Z2luVjApCit7CisgICAgTlNVUkwgKnJlc291cmNlRGF0YWJhc2VGaWxlID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1w
YXJ0eSIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CisgICAgTlNVUkwgKmlkYkRpcmVjdG9yeSA9IFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV07Cisg
ICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRGlyZWN0b3J5ID0gW2lkYkRpcmVjdG9yeSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MC9pZnJhbWVfXzAvaHR0cF93ZWJraXQub3Jn
XzAvSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNzIl07CisgICAgTlNVUkwgKndlYmtp
dElmcmFtZURhdGFiYXNlRmlsZSA9IFt3ZWJraXRJZnJhbWVEYXRhYmFzZURpcmVjdG9yeSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6IEAiSW5kZXhlZERCLnNxbGl0ZTMiXTsKKyAgICBOU1N0
cmluZyAqaGFzaGVkRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29t
cHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNzIik7
CisgICAgTlNTdHJpbmcgKm5ld1dlYmtpdElmcmFtZURhdGFiYXNlRmlsZVN0cmluZyA9IFtOU1N0
cmluZyBwYXRoV2l0aENvbXBvbmVudHM6QFtpZGJEaXJlY3RvcnkucGF0aCwgQCJ2MS9odHRwX3dl
YmtpdC5vcmdfMC9pZnJhbWVfXzAiLCBoYXNoZWREYXRhYmFzZU5hbWUsIEAiSW5kZXhlZERCLnNx
bGl0ZTMiXV07CisgICAgTlNVUkwgKm5ld1dlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFtOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6bmV3V2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlU3RyaW5nXTsKKyAg
ICBOU1VSTCAqaWRiQ29ycmVjdGVkT3JpZ2luRmlsZSA9IFtpZGJEaXJlY3RvcnkgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiY29ycmVjdGVkX29yaWdpbiJdOworCisgICAgYXV0byBmaWxl
TWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZmlsZU1hbmFn
ZXIgcmVtb3ZlSXRlbUF0VVJMOmlkYkRpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFu
YWdlciBjcmVhdGVEaXJlY3RvcnlBdFVSTDp3ZWJraXRJZnJhbWVEYXRhYmFzZURpcmVjdG9yeSB3
aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07
CisgICAgW2ZpbGVNYW5hZ2VyIGNvcHlJdGVtQXRVUkw6cmVzb3VyY2VEYXRhYmFzZUZpbGUgdG9V
Ukw6d2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlIGVycm9yOm5pbF07CisKKyAgICAvLyBFbnN1cmUg
ZGF0YWJhc2UgZmlsZSBpcyBtb3ZlZC4KKyAgICBydW5QYWdlTG9hZFRlc3RGb3JUaGlyZFBhcnR5
TWlncmF0aW9uKCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNB
dFBhdGg6d2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShb
ZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpuZXdXZWJraXRJZnJhbWVEYXRhYmFzZUZpbGUu
cGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmlk
YkNvcnJlY3RlZE9yaWdpbkZpbGUucGF0aF0pOworfQorCitURVNUKEluZGV4ZWREQiwgSW5kZXhl
ZERCVGhpcmRQYXJ0eU1pZ3JhdGlvbkZvckNvcnJlY3RpbmdPcmlnaW5WMSkKK3sKKyAgICBOU1VS
TCAqcmVzb3VyY2VEYXRhYmFzZUZpbGUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAiaW5kZXhlZGRiLXBlcnNpc3RlbmNlLXRoaXJkLXBhcnR5IiB3aXRoRXh0ZW5zaW9u
OkAic3FsaXRlMyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAg
ICBOU1VSTCAqaWRiRGlyZWN0b3J5ID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFT
dG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsKKyAgICBOU1N0cmluZyAqaGFzaGVk
RGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JG
aWxlTmFtZSgiSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNzIik7CisgICAgTlNTdHJp
bmcgKndlYmtpdElmcmFtZURhdGFiYXNlRmlsZVN0cmluZyA9IFtOU1N0cmluZyBwYXRoV2l0aENv
bXBvbmVudHM6QFtpZGJEaXJlY3RvcnkucGF0aCwgQCJ2MS9pZnJhbWVfXzAvaHR0cF93ZWJraXQu
b3JnXzAiLCBoYXNoZWREYXRhYmFzZU5hbWUsIEAiSW5kZXhlZERCLnNxbGl0ZTMiXV07CisgICAg
TlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
d2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlU3RyaW5nXTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1l
RGF0YWJhc2VEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt3ZWJraXRJZnJhbWVE
YXRhYmFzZUZpbGVTdHJpbmcgc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XV07Cisg
ICAgTlNTdHJpbmcgKm5ld1dlYmtpdElmcmFtZURhdGFiYXNlRmlsZVN0cmluZyA9IFtOU1N0cmlu
ZyBwYXRoV2l0aENvbXBvbmVudHM6QFtpZGJEaXJlY3RvcnkucGF0aCwgQCJ2MS9odHRwX3dlYmtp
dC5vcmdfMC9pZnJhbWVfXzAiLCBoYXNoZWREYXRhYmFzZU5hbWUsIEAiSW5kZXhlZERCLnNxbGl0
ZTMiXV07CisgICAgTlNVUkwgKm5ld1dlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6bmV3V2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlU3RyaW5nXTsKKyAgICBO
U1VSTCAqaWRiQ29ycmVjdGVkT3JpZ2luRmlsZSA9IFtpZGJEaXJlY3RvcnkgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiY29ycmVjdGVkX29yaWdpbiJdOworCisgICAgYXV0byBmaWxlTWFu
YWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZmlsZU1hbmFnZXIg
cmVtb3ZlSXRlbUF0VVJMOmlkYkRpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdl
ciBjcmVhdGVEaXJlY3RvcnlBdFVSTDp3ZWJraXRJZnJhbWVEYXRhYmFzZURpcmVjdG9yeSB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Cisg
ICAgW2ZpbGVNYW5hZ2VyIGNvcHlJdGVtQXRVUkw6cmVzb3VyY2VEYXRhYmFzZUZpbGUgdG9VUkw6
d2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlIGVycm9yOm5pbF07CisKKyAgICBydW5QYWdlTG9hZFRl
c3RGb3JUaGlyZFBhcnR5TWlncmF0aW9uKCk7CisKKyAgICAvLyBFbnN1cmUgZGF0YWJhc2UgZmls
ZSBpcyBtb3ZlZC4KKyAgICBFWFBFQ1RfRkFMU0UoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBh
dGg6d2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbZmls
ZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpuZXdXZWJraXRJZnJhbWVEYXRhYmFzZUZpbGUucGF0
aF0pOworICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmlkYkNv
cnJlY3RlZE9yaWdpbkZpbGUucGF0aF0pOworfQorCiBzdGF0aWMgY29uc3QgY2hhciogd29ya2Vy
Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIHRyeSB7CiAgICAgdmFyIHJlcXVlc3QgPSBpbmRleGVk
REIub3BlbignSW5kZXhlZERCVGhpcmRQYXJ0eVdvcmtlckhhc0FjY2VzcycpOwpAQCAtMzY4LDcg
KzQ0MCw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5V29ya2VySGFzQWNj
ZXNzKQogICAgICAgICAgICAgcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6cmVxdWVzdFVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgICAgIGRhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6d29ya2VyRnJhbWVCeXRlcyBsZW5ndGg6c3RybGVuKHdv
cmtlckZyYW1lQnl0ZXMpXTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiaWZyYW1lOi8vL3dvcmtlci5qcyIsIHJlcXVlc3RVUkwuYWJzb2x1dGVTdHJpbmcp
OworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWU6Ly93b3JrZXIuanMiLCByZXF1
ZXN0VVJMLmFic29sdXRlU3RyaW5nKTsKICAgICAgICAgICAgIHJlc3BvbnNlID0gYWRvcHROUyhb
W05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnJlcXVlc3RVUkwgTUlNRVR5cGU6QCJ0
ZXh0L2phdmFzY3JpcHQiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6
bmlsXSk7CiAgICAgICAgICAgICBkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndvcmtlckJ5
dGVzIGxlbmd0aDpzdHJsZW4od29ya2VyQnl0ZXMpXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbmRleGVkZGItcGVyc2lzdGVu
Y2UtdGhpcmQtcGFydHkuc3FsaXRlMyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvaW5kZXhlZGRiLXBlcnNpc3RlbmNlLXRoaXJkLXBhcnR5LnNxbGl0ZTMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDI5YzBiZTM0OGY3ZjQyODMzNjQyM2FiYjhmOWQ4YzIyN2I1YTU5OQpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgNzM3MjgKemNtZUkoUGpBfn45S2RscVBMcmx0PUNtNkdzZlNyaSlmJj00R25n
aHw2fF95ZFN4YntIT34tY1gre1YpfihxeE8+Cnp1P2l1UCFUfH0xeSMpQHVnTlh5OzROTSU2NUxZ
Q1E5TUN2JjgzIUlhWldnQ2FsTDx7Pz5ETmpYYD8zQV9gRik8fQp6QGwqZkY+ZVhEdUhubSZ6IytH
NGdaJWM3MDVSZzk5RylhO0k7JWBGeT9NK2NKNldtKTYtKlUlJXVpMWR+PTB9JWYKeihaOGhlUCpo
VWlJUX1eSGIhX3QzIXwyfipLU3pJemVpaXdCP0JWRmUkaFEkQUpROWtBZShJR0M9P0VaejAwSipp
CnpwbXtNS1BNa1ItP19SS3RqakRPWStfX31kJSFYbXQ4PHVaamU2ZzZGRkotbVR7NmEzUGBCckp1
Xl5INWByb0FlNQp6R1dDcTY9UyRnMypgayYmbChoVT5FfmdkcCtGfktVbCt6YlcrUzB0OSk3Sjko
KXdRZkl5X2o5ZSVgYXdXdzlWfkMKeiE+cmxqMj5tbGt6Qj9YREVUNTYzTzA4QEB1PGxqR3Uob2Im
K2pWeiYtQi0lPnZ+T2BAX1o+QnlJQ1Y8P3ZLNmBSCno8ZT1BWCkhUT8xVSZRVFhaTXN0S1UkUG1r
V145PlNEU0tUUV5tM1RkbylkMEhgYEZ4QkczP3ZnTGF3bElTakg3PQp6dHlhMFdaNE9lPnQ/akJe
JD0yK35BbVkyUDl9NmNeRGZ4Pn0tM0MrV3NDanxjd0hXZ2VjQ0dZNXRgem08YFFpPWoKek83PSRZ
dW51WkJQSjA+JXlaNnE2bm1QP2p1V2p9eFAwayQ7QzliQT1IT25yQ14+YlliPlJqeDNjMjlUaGUh
T3toCnolJm5yYGFrcS19JXRGUXhiQjFOUT9jMlc/XjtKPlZ3JVc5Pz5DPWMwYSYzMyFgJGtvPyFO
WXEmYXhRdlV4THJrQgp6UGpAOThZaERQdTllSD1vNFJAaGgtJm0/dE97K2FLPkk8PSp0VzlyLVAx
bE9LS0lKPG96KmVpZkJAVURDLV8zaHYKemtXNUVIaVJgSWYmN0B0Pl4+Z2pudkduTCp5UUpIQE04
eFBaPldtPUdTM317JT5DPHg0WUM5RnAmM2RFa05fbiY0CnplT0JISS0kfWskfEQ9Qn1uOSZDRk8q
U0pWO2wlcT5hYE9aQ3dDJGQweWAjM2l5bVBOT0wzX3l8dWF0VHxsZkFDPgp6KnVmY0lJIz5CMyZA
O1oxdVhtaEd2Szk7ey1WI041clAzTT9vKmk+dkF4MyVAIXJnVEw7YWdkWDFCKl5JcXEkdXAKengl
LXxIUEUxWXRNajxhcUh5M1h7PSZQMl9IUjNHbG1VTXQmKkI5fDE8RnM0U1JffENXPFp7bU5GRk4w
JHIpViMoCno9aVJDUFkjNzxBaXZBNU9jezNwRkNnbzwjQnsrYWhAen1pb0goSmY1YjMzUCF5eWJu
KEwpMjJUeGhqVmZsYXVvOQp6WEt0VklIdWImJnpEaFlib0JtUCEyam9Oa3YxcXRHeVE3amoySDBk
d29ERjM0UzRuKUI1SV9JezFRMCp+MFIjfDAKejAwOUlMSztZI09OWGE5U15SdHE0R2Mzd25sMSN+
eFowVTtsLWpUKmNOP2hDcHtKZG1aX0JIMip0ZGs8RWVATm9QCnpnYTg1dkFiPGJAMnExc30wdGdf
MDAwSishei16KENgTiU8YzFmMXZwOy0hQmsxUTAqfjBSI3wwMDA5SUxLbVkqKgp6NUV4PHM9bE1V
XnwzaDVDZ29YZUQycTFzfTB0Z18wMDBJYWdmUGZJLWBrIVdpMDBJYWdmQipzckFiPGJAMnExdksK
ekBDKSQlfE0xcl81aDgjOTB0Z18wMDBJYWdmQipzckFpKHVNWjIkb1Q1SV9JezFRMCp+MFIjfDAw
RDw4YjtRanlNCnp1VlclYTAwOUlMS21ZKio1SV9JezFRMC1nPnducSswdGdfMDAwSWFnZkIqc3JB
YjxiQCEhT3t4e351SnBrPD5yYwp6QUpwJX0zPTt3ZkFiPGJAMnExc30wdGdfMDAwSWNTVjFiaUM8
KmQ0RkpTYzQzRipvZzF5V1RNTU8hfGJQcXx9VUkKejh5a2pZVU5hazNyQ3YrVjI5JkE3VVNpKFpH
V0E7N2R8O0x7MyNIcVlNdFF8KCpnSCFOayQlfio8fktKQCVRXyo4CnpZP2UqaUQydUgydlQ+Z08y
aH5UQ2BrVlMjZVdYNWwhMnl5ejB0Z18wMDBJYWdmQipzckFiPGJAMm47NTBRYUxNawp6LXk7Wn5Q
KlU+Vi0ybV59VVdxR0g/S0l+T0wxMDJqTVk/VlBJTTRyT14/T050bT1IaCEwUiN8MDAwOUlMS21Z
KioKejVKMkduQiVzUzlRdEpMXyQrWVpfSHc4QkNSeDZmMEpOdF9xREFfeEEmQTJvZ2prayZ8JVU8
ITd0fXJIPz1sYDwkCnprMGRAITJxMXN9MHRnXzAwMElhZ2ZCKnNyQVRXZGlpVn0mbXVLJUEleSFr
KGI2LS1EN0FiPGJAMnExc30wdGdfMAp6MDBLdS16PEt8Xz4ha3Rie2VRYE9PVzxndDVIJGhfQWI8
YkAycTFzfTB0Z18wMDBQND0oRTkhVlElUVh+e0lMPXQKejB0Z18wMDBJYWdmQipzckFiPGJATV5I
ZUttQj1XK3wzODg/UHNqKSRmQipzckFiPGJAMnExc30wIUs9fmBUaFVECkQjS3gxfAoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453036</attachid>
            <date>2022-02-23 15:38:28 -0800</date>
            <delta_ts>2022-02-24 16:26:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237044-20220223153827.patch</filename>
            <type>text/plain</type>
            <size>35377</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzViYzI2N2M5ODE3ZGQz
ZjM4MmY4MmM5ZmZmMzA4MTUxZTMzNjhkOS4uYThlM2VjNTI5ZWE0NjIyODhlMGU1NDk4NDMyMTQ4
OTZmYmZmNjI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0Mjcy
OSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHIyNDI3MjksIHdl
IGFjY2lkZW50YWxseSBzd2FwcGVkIHRvcCBvcmlnaW4gYW5kIG9wZW5pbmcgb3JpZ2luIGluIG1f
b3JpZ2luIChhIENsaWVudE9yaWdpbiBvYmplY3QpIG9mIAorICAgICAgICBJREJEYXRhYmFzZUlk
ZW50aWZpZXIuIFRoaXMgY2FuIGNhdXNlIHRyb3VibGUgc2luY2UgSW5kZXhlZERCIG9wZXJhdGlv
biB3aWxsIGJlIHByb2Nlc3NlZCBieSB3cm9uZyAKKyAgICAgICAgT3JpZ2luU3RvcmFnZU1hbmFn
ZXIgKE9yaWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGlkZW50aWZpZWQgYnkgQ2xpZW50T3JpZ2luKS4g
VGhhdCBtZWFucyBPcmlnaW5TdG9yYWdlTWFuYWdlciBvZgorICAgICAgICBDbGllbnRPcmlnaW4g
eyBBLCBCIH0gd2lsbCBiZSB1c2VkIHRvIG1hbmFnZSBJbmRleGVkREIgZGF0YSBmcm9tIENsaWVu
dE9yaWdpbiB7IEIsIEEgfSwgd2hpY2ggaXMgdW5leHBlY3RlZC4KKyAgICAgICAgV2l0aCBjdXJy
ZW50IGltcGxlbWVudGF0aW9uLCB3ZSB3b3VsZCBjcmVhdGUgd3Jvbmcgb3JpZ2luIGZpbGUgd2hl
biBydW5uaW5nIHRoZSBuZXdseSBhZGRlZCB0ZXN0LgorCisgICAgICAgIFRvIGZpeCB0aGUgaXNz
dWUsIGxldCdzIHN3YXAgdGhlIG9yaWdpbnMgYmFjayBpbiBJREJEYXRhYmFzZUlkZW50aWZpZXIu
IEFsc28sIHdlJ3ZlIGJlZW4gdXNpbmcgCisgICAgICAgIFtJbmRleGVkREJEaXJlY3RvcnldL1t2
ZXJzaW9uXS9bT3BlbmluZ09yaWdpbl0vW1RvcE9yaWdpbl0vIGRpcmVjdG9yeSAoaW5zdGVhZCBv
ZiB0aGUgZXhwZWN0ZWQgCisgICAgICAgIFtJbmRleGVkREJEaXJlY3RvcnldL1t2ZXJzaW9uXS9b
VG9wT3JpZ2luXS9bT3BlbmluZ09yaWdpbl0vIGRpcmVjdG9yeSkgZm9yIEluZGV4ZWREQiBzdG9y
YWdlLCBzbyB3ZSBuZWVkIHRvIAorICAgICAgICB1cGRhdGUgZGF0YWJhc2VEaXJlY3RvcnlSZWxh
dGl2ZVRvUm9vdCBmdW5jdGlvbiB0byBtYWtlIGl0IGZpbmQgdGhlIGNvcnJlY3Qgc3RvcmFnZSBw
YXRoLgorCisgICAgICAgIEZpcnN0LXBhcnR5IHN0b3JhZ2UgaXMgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBlcnJvciBiZWNhdXNlIGl0cyB0b3Agb3JpZ2luIGFuZCBvcGVuaW5nIG9yaWdpbiBpcyB0aGUg
c2FtZS4KKworICAgICAgICBOZXcgQVBJIHRlc3Q6IEluZGV4ZWREQi5JbmRleGVkREJUaGlyZFBh
cnR5U3RvcmFnZUxheW91dAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmll
cjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
SWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCk6CisKIDIwMjItMDIt
MjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3dwdC9w
dXNoLWFwaS9vbnB1c2gtZGlzYWJsZWQuaHRtbCBmYWlscwpAQCAtODcxLDYgKzg5NywzNyBAQAog
ICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0
b3JhZ2VFdmVudHNUb0ZyYW1lcyk6IERlbGV0ZWQuCiAgICAgICAgICogc3RvcmFnZS9TdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmg6CiAKKzIwMjItMDItMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbihyMjQyNzI5KTogbV9vcmlnaW4gaW4gSURC
RGF0YWJhc2VJZGVudGlmaWVyIGlzIGluY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gcjI0MjcyOSwgd2Ugc3dhcHBlZCB0b3Agb3JpZ2lu
IGFuZCBvcGVuaW5nIG9yaWdpbiBpbiBtX29yaWdpbiAoaXQgaXMgYSBDbGllbnRPcmlnaW4pIG9m
IElEQkRhdGFiYXNlSWRlbnRpZmllci4gCisgICAgICAgIFRoaXMgY2FuIGNhdXNlIHRyb3VibGUg
c2luY2UgSW5kZXhlZERCIG9wZXJhdGlvbiB3aWxsIGJlIHByb2Nlc3NlZCBieSB3cm9uZyBPcmln
aW5TdG9yYWdlTWFuYWdlciAKKyAgICAgICAgKE9yaWdpblN0b3JhZ2VNYW5hZ2VyIGlzIGlkZW50
aWZpZWQgYnkgQ2xpZW50T3JpZ2luKS4gVG8gZml4IHRoaXMgaXNzdWUsIHdlIG5lZWQgdG8gc3dh
cCBpdCBiYWNrLgorCisgICAgICAgIEJlY2F1c2Ugd2UgdXNlIHRoZSBpbmNvcnJlY3QgQ2xpZW50
T3JpZ2luIGZvciB0aGlyZC1wYXJ0eSBJbmRleGVkREIgZGF0YWJhc2VzIChmaXJzdC1wYXJ0eSBp
cyBub3QgYWZmZWN0ZWQgCisgICAgICAgIGJlY2F1c2UgaXRzIHRvcCBvcmlnaW4gYW5kIG9wZW5p
bmcgb3JpZ2luIGlzIHRoZSBzYW1lKSwgdGhlIGRhdGFiYXNlIHBhdGhzIGFyZSB3cm9uZyB0b28u
IEZvciBleGFtcGxlLCB3ZSBwbGFuIAorICAgICAgICB0byBzdG9yZSBkYXRhIG9mIHtPcmlnaW4g
QSwgT3JpZ2luIEJ9IGF0IFtJbmRleGVkREJEaXJlY3RvcnldL1tPcmlnaW4gQV0vW09yaWdpbiBC
XSwgYnV0IGl0IGlzIGFjdHVhbGx5IHN0b3JlZCAKKyAgICAgICAgYXQgW0luZGV4ZWREQkRpcmVj
dG9yeV0vW09yaWdpbiBCXS9bT3JpZ2luIEFdLiBUaGlzIGNhbiBjYXVzZSB0cm91YmxlIHdoZW4g
d2Ugc3RhcnQgdXNpbmcgZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkKKyAgICAgICAgZm9yIEluZGV4
ZWREQiBkYXRhLCBiZWNhdXNlIEluZGV4ZWREQiBkYXRhIG9mIHtPcmlnaW4gQSwgT3JpZ2luIEJ9
IHdpbGwgYmUgc3RvcmVkIGF0IAorICAgICAgICBbR2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnldL1tP
cmlnaW4gQV0vW09yaWdpbiBCXS9JbmRleGVkREIvLiBUbyBzb2x2ZSB0aGlzIGlzc3VlLCB3ZSBw
ZXJmb3JtIGEgb25lLXRpbWUgbWlncmF0aW9uCisgICAgICAgIGZvciB0aGlyZC1wYXJ0eSBJbmRl
eGVkREIgZGF0YSwgd2hlbiBbSW5kZXhlZERCRGlyZWN0b3J5XSBpcyB1c2VkIGluIG5ldHdvcmsg
cHJvY2VzcyBmb3IgdGhlIGZpcnN0IHRpbWUuCisKKyAgICAgICAgQmVjYXN1c2UgcjI0MjcyOSB3
YXMgc2hpcHBlZCB0aGUgc2FtZSB0aW1lIGFzIHdlIGFkZGVkIHZlcnNpb24gZGlyZWN0b3J5IGlu
c2lkZSBJbmRleGVkREIgZGlyZWN0b3J5IChyMjQzMDE5KSwKKyAgICAgICAgdGhhdCBtZWFucyBp
ZiBJbmRleGVkREIgZG9lcyBub3QgaGF2ZSB2ZXJzaW9uIGRpcmVjdG9yeSwgdGhlIG9yaWdpbiBk
aXJlY3Rvcnkgc3RydWN0dXJlIGlzIGNvcnJlY3QuIFNvLCB3ZSBjYW4KKyAgICAgICAgY2hlY2sg
dGhlIGV4aXN0ZW5jZSBvZiB2ZXJzaW9uIGRpcmVjdG9yeSB0byBkZWNpZGUgaWYgd2UgbmVlZCBv
cmlnaW4gY29ycmVjdGlvbiBtaWdyYXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VJZGVudGlmaWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OklEQlNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OnJldmVyc2VPcmlnaW5Gb3JWZXJzaW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpyZXZlcnNlT3JpZ2luRm9yRGlyZWN0b3J5SWZOZWNlc3Nhcnkp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKwogMjAy
Mi0wMi0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEltcHJvdmUgY29uc3QgY29ycmVjdG5lc3MgZm9yIFNlY3VyaXR5T3JpZ2luIGFjY2Vz
c29ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3MzIwZDBmNWMzYjMyZDIwOTM1NDgwYzNiNjg2ZWZlMDVjYWQ0ZGMw
Li4zNDBkZjQyOTY1YjE2NWRlNzM4YjE3OGMzNTEwOTcwZjZkOThhMDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIyLTAyLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0MjcyOSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNl
SWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisKIDIwMjIt
MDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3dw
dC9wdXNoLWFwaS9vbnB1c2gtZGlzYWJsZWQuaHRtbCBmYWlscwpAQCAtNDA0LDYgKzQxNSwxOCBA
QAogICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtU3VzcGVuZFByb2Nl
c3MpOgogICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtUmVzdW1lUHJv
Y2Vzcyk6CiAKKzIwMjItMDItMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVncmVzc2lvbihyMjQyNzI5KTogbV9vcmlnaW4gaW4gSURCRGF0YWJhc2VJZGVu
dGlmaWVyIGlzIGluY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bWlncmF0ZU9yaWdpbkRhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorCiAy
MDIyLTAyLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQWxsb3cgYWRhdHRyaWJ1dGlvbmQgdG8gc3RhcnQgb24gaU9TIGRldmljZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUlkZW50aWZpZXIuY3BwCmluZGV4IDU1NDIxZDQxNWQzZGU5OWFiMDdjY2Y3NDY5OGZlN2E3NTNh
NmU3MTEuLjAxMWY4YjMxMDU3ZDA5OGU5ZmU1Yzk4OGVjNjk3NGM0MWQ3ZjYyZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElE
QkRhdGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0
eU9yaWdpbkRhdGEmJiBtYWluRnJhbWVPcmlnaW4sIGJvb2wgaXNUcmFuc2llbnQpCiAgICAgOiBt
X2RhdGFiYXNlTmFtZShkYXRhYmFzZU5hbWUpCi0gICAgLCBtX29yaWdpbiB7IFdURk1vdmUob3Bl
bmluZ09yaWdpbiksIFdURk1vdmUobWFpbkZyYW1lT3JpZ2luKSB9CisgICAgLCBtX29yaWdpbiB7
IFdURk1vdmUobWFpbkZyYW1lT3JpZ2luKSwgV1RGTW92ZShvcGVuaW5nT3JpZ2luKSB9CiAgICAg
LCBtX2lzVHJhbnNpZW50KGlzVHJhbnNpZW50KQogewogICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcg
aXMgYSB2YWxpZCBkYXRhYmFzZSBuYW1lLCBidXQgYSBudWxsIHN0cmluZyBpcyBub3QuCkBAIC02
MSwxMyArNjEsMTMgQEAgU3RyaW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJl
Y3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3QKIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYg
dmVyc2lvblN0cmluZykKIHsKICAgICBTdHJpbmcgdmVyc2lvbkRpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCB2ZXJzaW9uU3RyaW5n
KTsKLSAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHZlcnNpb25EaXJlY3RvcnksIHRvcExldmVsT3JpZ2luLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICBTdHJpbmcgb3BlbmluZ0ZyYW1lRGlyZWN0b3J5ID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHZlcnNpb25EaXJlY3RvcnksIG9wZW5pbmdP
cmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogCiAgICAgLy8gSWYgdGhlIG9wZW5pbmcgb3Jp
Z2luIGFuZCBtYWluIGZyYW1lIG9yaWdpbnMgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBwYXJ0
aXRpb25pbmcuCiAgICAgaWYgKG9wZW5pbmdPcmlnaW4gPT0gdG9wTGV2ZWxPcmlnaW4pCi0gICAg
ICAgIHJldHVybiBtYWluRnJhbWVEaXJlY3Rvcnk7CisgICAgICAgIHJldHVybiBvcGVuaW5nRnJh
bWVEaXJlY3Rvcnk7CiAKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09yaWdpbi5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChv
cGVuaW5nRnJhbWVEaXJlY3RvcnksIHRvcExldmVsT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDc1YzBj
ZmJiMTA0NDQ3Yzk1ZmY1NjhmZWMxMTk5ODA0MzBhY2ViM2IuLjQwYmE2NmFjMWMwNzk5MzNkMTgz
NDAwN2UzNTg1NWY0ODMxM2JjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDQsNiArNDQs
MTAgQEAgc3RhdGljIHZvaWQgbWlncmF0ZU9yaWdpbkRhdGEoY29uc3QgU3RyaW5nJiBvbGRPcmln
aW5EaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgbmUKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG5ld09yaWdpbkRpcmVjdG9yeSk7CiAKICAgICBmb3IgKGF1dG8mIG5hbWUg
OiBmaWxlTmFtZXMpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBkaXJlY3RvcnkgZm9yIHRoaXJkLXBh
cnR5IGRhdGEuCisgICAgICAgIGlmIChhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihuYW1lKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCiAgICAgICAgIFN0cmluZyBjaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpyZWFsUGF0aChG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob2xkT3JpZ2luRGlyZWN0b3J5LCBu
YW1lKSk7CiAgICAgICAgIFN0cmluZyBuZXdOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3Rl
bTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKG5hbWUpKTsKICAgICAgICAgYXV0byBuZXdD
aGlsZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobmV3T3JpZ2lu
RGlyZWN0b3J5LCBuZXdOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNzM5
YzE1MjE0MWJhMjk4OWZhZDU5NzJlN2MzYjc5Y2I5ZGNhMjI5Yy4uMzY2NTE4NDQ2N2RiOWY2NmVk
YzdkMDMzYjE2NmY3ZWRlZTQzYzc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvSURCU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmI2YTA4YmFjNjA2MGM0MDE0NGQxZmNhMGI0Y2ZkM2Rh
ZWU1M2FlNy4uYjhlMDYzY2ZhMTc0MzViZWFjMTdjZjlhODBkNDdiODIwMTQ4OTM4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCkBAIC0xNTc5LDEyICsxNTc5LDY0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5
CiAgICAgcmVwbHkoaGFuZGxlZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHJldmVyc2VPcmlnaW5Gb3JE
aXJlY3RvcnlJZlBvc3NpYmxlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQoreworICAgIGlmIChk
aXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRlbXBEaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAi
dGVtcCIpOworICAgIGF1dG8gbWlncmF0aW5nRmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJtaWdyYXRpbmciKTsKKyAgICBpZiAoIUZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMobWlncmF0aW5nRmlsZSkpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKHRlbXBEaXJlY3RvcnkpOworICAgICAgICBmb3IgKGF1dG8mIGlkZW50
aWZpZXIgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSkpIHsKKyAgICAgICAg
ICAgIGF1dG8gdG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCF0b3BPcmlnaW4pCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gdG9wT3JpZ2luRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgaWRlbnRp
Zmllcik7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHNlY29uZElkZW50aWZpZXIgOiBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIG9wZW5pbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoc2Vjb25kSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIHVwZGF0ZSBkaXJlY3RvcnkgZm9yIHRoaXJkLXBhcnR5IHN0b3JhZ2UuCisgICAgICAg
ICAgICAgICAgaWYgKCFvcGVuaW5nT3JpZ2luKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgICAgIGF1dG8gb3BlbmluZ09yaWdpbkRpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY3RvcnksIHNlY29u
ZElkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIGF1dG8gdGVtcFRvcE9yaWdpbkRpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRGlyZWN0b3J5LCBz
ZWNvbmRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXModGVtcFRvcE9yaWdpbkRpcmVjdG9yeSk7CisgICAgICAgICAgICAgICAgYXV0byB0
ZW1wT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHRlbXBUb3BPcmlnaW5EaXJlY3RvcnksIGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIEZp
bGVTeXN0ZW06Om1vdmVGaWxlKG9wZW5pbmdPcmlnaW5EaXJlY3RvcnksIHRlbXBPcmlnaW5EaXJl
Y3RvcnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeSh0b3BPcmlnaW5EaXJlY3RvcnkpOworICAgICAgICB9CisgICAgICAgIGF1
dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobWlncmF0aW5nRmlsZSwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOworICAgIH0KKworICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkodGVtcERpcmVjdG9yeSkpIHsKKyAgICAgICAgYXV0byB0b3BPcmlnaW5E
aXJlY290cnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcERpcmVj
dG9yeSwgaWRlbnRpZmllcik7CisgICAgICAgIGF1dG8gdGFyZ2V0VG9wT3JpZ2luRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgaWRlbnRp
Zmllcik7CisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyh0YXJnZXRUb3BP
cmlnaW5EaXJlY3RvcnkpOworICAgICAgICBmb3IgKGF1dG8mIHNlY29uZElkZW50aWZpZXIgOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHRvcE9yaWdpbkRpcmVjb3RyeSkpIHsKKyAgICAgICAg
ICAgIGF1dG8gb3BlbmluZ09yaWdpbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCh0b3BPcmlnaW5EaXJlY290cnksIHNlY29uZElkZW50aWZpZXIpOworICAg
ICAgICAgICAgYXV0byB0YXJnZXRPcGVuaW5nT3JpZ2luRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHRhcmdldFRvcE9yaWdpbkRpcmVjdG9yeSwgc2Vjb25k
SWRlbnRpZmllcik7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjptb3ZlRmlsZShvcGVuaW5nT3Jp
Z2luRGlyZWN0b3J5LCB0YXJnZXRPcGVuaW5nT3JpZ2luRGlyZWN0b3J5KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHRlbXBEaXJl
Y3RvcnkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWlncmF0aW5nRmlsZSk7Cit9CisK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKGNv
bnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KQogewogICAgIGlmIChpbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJp
bmcgb2xkVmVyc2lvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksICJ2MCIpOworICAgIGlmICghRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhvbGRWZXJzaW9uRGlyZWN0b3J5KSkKKyAgICAgICAgcmV2ZXJzZU9yaWdp
bkZvckRpcmVjdG9yeUlmUG9zc2libGUoaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKwogICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9sZFZlcnNpb25EaXJlY3RvcnkpOwog
ICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvbGRWZXJzaW9uRGlyZWN0b3J5KSkKICAg
ICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKGluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSwgb2xkVmVyc2lvbkRpcmVjdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBmZDExMTc1OTk0NzhjMWM5NmFlMGMxOGM5NGY0OWYxMTQ0OGQ2MzAw
Li5iNzRiZjU1NWUzYWVlMjY5MDY2ODU3NTM2OGNlMzc1Zjk3ZDVhNjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExNTksNyArMTE1OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjbG9zZSgpCiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJl
dHVybjsKLQorICAgIAogICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY2xv
c2U6Iik7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3M2NiZGJkMWMzYzIyODI1NDlkYWU3ZDI3YjVm
OGJjMzkzNzg5NGRiLi4zYjk4ZGRjM2RlZjU0OGE4ZWIyMGIwZmM4MmY1ZTllZDBkOWYzZDc5IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjItMDItMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVncmVzc2lvbihyMjQyNzI5KTogbV9vcmlnaW4gaW4gSURCRGF0YWJhc2VJZGVu
dGlmaWVyIGlzIGluY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
ZGV4ZWREQlBlcnNpc3RlbmNlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvaW5kZXhlZGRiLXBlcnNpc3RlbmNlLXRoaXJkLXBhcnR5LnNxbGl0ZTM6IEFkZGVk
LgorCiAyMDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoKSBhbmQgdXNlIHRoZSBtb2Rlcm4gSGFz
aGVyIGluc3RlYWQKQEAgLTE0Myw2ICsxNTQsMTYgQEAKICAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL3dwZS9tYWluLmNwcDoKICAgICAgICAgKG1haW4pOgogCisyMDIyLTAyLTIyICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0MjcyOSk6
IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKwogMjAy
Mi0wMi0yMSAgQnJhbmRvbiBTdGV3YXJ0ICA8YnJhbmRvbnN0ZXdhcnRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVzZSBBcmd1bWVudFBhcnNlciBmb3IgcGFyc2luZyBhcmdzIGluIGdlbmVyYXRlLWNv
bXBpbGUtY29tbWFuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDAyMjUxOTIyZjZkNDYz
ZDQxNDVhYTA4NTgxN2UzM2U5N2MzODFkNS4uMjJiY2E2ODJlMmYxODE0ZGY3NGI0YTE0ODFkMjI1
NmIzYWE3Zjc4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2Myw2ICs3NjMsNyBAQAog
CQk5M0FGNEVDRTE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0FGNEVDRDE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgKi87IH07CiAJCTkzQUY0RUQxMTUw
NkYxMzAwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUY0RUNGMTUwNkYxMjMwMDdGRDU3
RSAvKiBsb3RzLW9mLWltYWdlcy5odG1sICovOyB9OwogCQk5M0JDQkM4NDIzQ0M2RjQ0MDBDQTIy
MjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JDQkM4MjIzQ0M2RUY1MDBD
QTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIuaHRtbCAqLzsgfTsKKwkJOTND
Q0YxMjkyN0M1ODhGMDAwMDQzN0QyIC8qIGluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0
eS5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQ0NGMTI4MjdDNTg4RDgwMDA0MzdEMiAvKiBpbmRleGVkZGItcGVyc2lzdGVuY2Ut
dGhpcmQtcGFydHkuc3FsaXRlMyAqLzsgfTsKIAkJOTNDRkE4NjcxQ0VCOUUzODAwMDU2NUE4IC8q
IGF1dG9mb2N1c2VkLXRleHQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyogYXV0
b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sICovOyB9OwogCQk5M0QxMTlGQzIyQzY4MEY3MDA5QkUz
QzcgLyogbG9jYWxzdG9yYWdlLW9wZW4td2luZG93LXByaXZhdGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0QxMTlGQjIyQzU3MTEy
MDA5QkUzQzcgLyogbG9jYWxzdG9yYWdlLW9wZW4td2luZG93LXByaXZhdGUuaHRtbCAqLzsgfTsK
IAkJOTNFMkM1NTUxRkQzMjA0MTAwRTFERjZBIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMkM1NTQxRkQzMjA0MTAwRTFE
RjZBIC8qIExpbmVFbmRpbmcuY3BwICovOyB9OwpAQCAtMTQwMSw2ICsxNDAyLDcgQEAKIAkJCQk3
MUU4OEM0NTI0QjUzNEI3MDA2NjUxNjAgLyogaW1nLXdpdGgtYmFzZTY0LXVybC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTQ5ODk3RDZDMjQxRkU5RTQwMEVDRjE1MyAvKiBpbi1hcHAt
YnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk0OTcxQjExODI0NTFGMjlBMDA5Njk5NEQgLyogaW5jb3JyZWN0Q3JlYXRlVGFibGVTY2hlbWEu
ZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJOTNDQ0YxMjkyN0M1ODhGMDAwMDQzN0QyIC8q
IGluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUzIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTkzNTc4NkNEMjBGNkEyOTEwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRl
MyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5MzU3ODZDRTIwRjZBMkExMDAwMENERkMgLyog
SW5kZXhlZERCLnNxbGl0ZTMtc2htIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTkzNTc4NkND
MjBGNkEyNzAwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC0yNTU3LDYgKzI1NTksNyBAQAogCQk5M0JDQkM4MDIzQ0M2RUU4MDBDQTIyMjEg
LyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQ0JDODEyM0NDNkVGNTAwQ0EyMjIxIC8qIElE
Qk9iamVjdFN0b3JlSW5mb1VwZ3JhZGUuc3FsaXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBJREJPYmplY3RTdG9yZUluZm9V
cGdyYWRlLnNxbGl0ZTM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkNCQzgyMjND
QzZFRjUwMENBMjIyMSAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIuaHRt
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNDQ0YxMjgyN0M1ODhEODAwMDQzN0Qy
IC8qIGluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJpbmRl
eGVkZGItcGVyc2lzdGVuY2UtdGhpcmQtcGFydHkuc3FsaXRlMyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQ0ZBODY2MUNFQjlERTEwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0
LWlucHV0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0b2ZvY3VzZWQtdGV4
dC1pbnB1dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDRkE4NjgxQ0VC
Q0ZFRDAwMDU2NUE4IC8qIENhbmRpZGF0ZVRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQ2FuZGlkYXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRDExOUZCMjJDNTcxMTIwMDlCRTNDNyAvKiBsb2NhbHN0b3JhZ2Utb3Blbi13
aW5kb3ctcHJpdmF0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvY2Fsc3Rv
cmFnZS1vcGVuLXdpbmRvdy1wcml2YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDE1NCw2ICs0MTU3LDcgQEAKIAkJCQkzMTI4QTgxNDIzNzY0MEZEMDBEOTBENDAgLyog
aW1hZ2UuaHRtbCAqLywKIAkJCQk0OUQ3RkJBNzI0MUZERERBMDBBQjY3RkEgLyogaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwgKi8sCiAJCQkJNDk3MUIxMTcyNDUxRjI3ODAw
OTY5OTREIC8qIGluY29ycmVjdENyZWF0ZVRhYmxlU2NoZW1hLmRiICovLAorCQkJCTkzQ0NGMTI4
MjdDNTg4RDgwMDA0MzdEMiAvKiBpbmRleGVkZGItcGVyc2lzdGVuY2UtdGhpcmQtcGFydHkuc3Fs
aXRlMyAqLywKIAkJCQk5MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0
ZTMgKi8sCiAJCQkJOTM0RkE1QzYyMEY2OUZFRDAwNDBEQzFCIC8qIEluZGV4ZWREQi5zcWxpdGUz
LXNobSAqLywKIAkJCQk5MzRGQTVDNTIwRjY5RkVEMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0
ZTMtd2FsICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXggNGYwYThlYzk0NDU0OGNh
NmM3ODcwMTVjNmI2ZDk1MDg1ODgzODhiMy4uZGY5Y2VjNjhjYmFjZGE3Mzc0N2M2MzExYzM2YTE1
ZTFhMTE5NGJjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC0yOSwxMiArMjksMTQg
QEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1w
b3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgotI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWYuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19X
S1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC00Nyw3ICs0
OSw3IEBACiAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRy
b2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdL
U2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKIHsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSB0
cnVlOwotICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKKyAgICBzY3JpcHRNZXNzYWdl
cy5hcHBlbmQobWVzc2FnZSk7CiB9CiAKIEBlbmQKQEAgLTY1LDExICs2NywxMSBAQCBURVNUKElu
ZGV4ZWREQiwgSW5kZXhlZERCUGVyc2lzdGVuY2UpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcxID0gKE5TU3RyaW5nICop
W2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5n
MSA9IChOU1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChO
U1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKKyAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHN0cmluZzIgPSAoTlNTdHJpbmcgKilbZ2V0TmV4dE1lc3NhZ2UoKSBib2R5XTsKIAogICAg
IC8vIERpdGNoIHRoaXMgd2ViIHZpZXcgKGRpdGNoaW5nIGl0cyB3ZWIgcHJvY2VzcykKICAgICB3
ZWJWaWV3ID0gbmlsOwpAQCAtODUsNyArODcsNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERC
UGVyc2lzdGVuY2UpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBzdHJpbmczID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdl
IGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMyA9IChOU1N0cmluZyAqKVtn
ZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiVXBncmFkZU5l
ZWRlZCIsIHN0cmluZzEuZ2V0KCkpOwogICAgIEVYUEVDVF9XS19TVFJFUShAIlN1Y2Nlc3MiLCBz
dHJpbmcyLmdldCgpKTsKQEAgLTEwOCwxMSArMTEwLDExIEBAIFRFU1QoSW5kZXhlZERCLCBJbmRl
eGVkREJQZXJzaXN0ZW5jZVByaXZhdGUpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcxID0gKE5TU3RyaW5nICopW2xhc3RT
Y3JpcHRNZXNzYWdlIGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMSA9IChO
U1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IGZhbHNlOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0cmlu
ZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0
cmluZzIgPSAoTlNTdHJpbmcgKilbZ2V0TmV4dE1lc3NhZ2UoKSBib2R5XTsKIAogICAgIGF1dG8g
d2ViVmlld1BpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogICAgIC8vIERp
dGNoIHRoaXMgd2ViIHZpZXcgKGRpdGNoaW5nIGl0cyB3ZWIgcHJvY2VzcykKQEAgLTEyNiw3ICsx
MjgsNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCUGVyc2lzdGVuY2VQcml2YXRlKQogCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAg
IHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4g
c3RyaW5nMyA9IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHN0cmluZzMgPSAoTlNTdHJpbmcgKilbZ2V0TmV4dE1lc3NhZ2UoKSBi
b2R5XTsKIAogICAgIGF1dG8gd2ViVmlld1BpZDIgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50
aWZpZXJdOwogICAgIEVYUEVDVF9ORSh3ZWJWaWV3UGlkMSwgd2ViVmlld1BpZDIpOwpAQCAtMjQw
LDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIGxvYWRUZXN0UGFnZUluV2ViVmlldyhXS1dlYlZpZXcg
KndlYlZpZXcsIE5TU3RyaW5nICpleHBlY3RlZFJlc3VsdCkKICAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzptYWluRnJhbWVTdHJpbmdQZXJzaXN0ZW5jZSBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOwotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFJlc3VsdCwgKE5TU3RyaW5nICop
W2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRS
ZXN1bHQsIChOU1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldKTsKIH0KIAogVEVTVChJ
bmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlGcmFtZUhhc0FjY2VzcykKQEAgLTMwMiw3ICsz
MDQsNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQog
ICAgIFtzZWNvbmRXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpZnJhbWU6Ly8iXV1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlw
dE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIEAiZGF0YWJhc2UgaXMgY3Jl
YXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiLCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2Ug
Ym9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0
IGl0ZW0gc3VjY2VzcyIsIChOU1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldKTsKIAog
ICAgIHJlYWR5VG9Db250aW51ZSA9IGZhbHNlOwogICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndlYnNpdGVEYXRhVHlwZXMu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4g
KnJlY29yZHMpIHsKQEAgLTMyMiw2ICszMjQsODYgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWRE
QlRoaXJkUGFydHlEYXRhUmVtb3ZhbCkKICAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcodGhpcmRX
ZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIik7
CiB9CiAKK1RFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5U3RvcmFnZUxheW91dCkK
K3sKKyAgICBOU1VSTCAqcmVzb3VyY2VTYWx0ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAImdlbmVyYWwtc3RvcmFnZS1kaXJlY3RvcnkiIHdpdGhFeHRlbnNpb246QCJz
YWx0IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIE5TVVJM
ICpyZXNvdXJjZURhdGFiYXNlRmlsZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJpbmRleGVkZGItcGVyc2lzdGVuY2UtdGhpcmQtcGFydHkiIHdpdGhFeHRlbnNpb246
QCJzcWxpdGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAg
IE5TVVJMICppZGJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFy
eS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRh
L0luZGV4ZWREQiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lRGF0YWJhc2VEaXJlY3RvcnkgPSBbaWRiRGlyZWN0
b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwL2lmcmFtZV9fMC9odHRwX3dlYmtp
dC5vcmdfMC9JbmRleGVkREJUaGlyZFBhcnR5RnJhbWVIYXNBY2Nlc3MiXTsKKyAgICBOU1VSTCAq
d2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlID0gW3dlYmtpdElmcmFtZURhdGFiYXNlRGlyZWN0b3J5
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkluZGV4ZWREQi5zcWxpdGUzIl07CisgICAg
TlNTdHJpbmcgKmhhc2hlZERhdGFiYXNlTmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06
OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoIkluZGV4ZWREQlRoaXJkUGFydHlGcmFtZUhhc0FjY2Vz
cyIpOworICAgIE5TU3RyaW5nICpuZXdXZWJraXRJZnJhbWVEYXRhYmFzZUZpbGVTdHJpbmcgPSBb
TlNTdHJpbmcgcGF0aFdpdGhDb21wb25lbnRzOkBbaWRiRGlyZWN0b3J5LnBhdGgsIEAidjEvaWZy
YW1lX18wL2h0dHBfd2Via2l0Lm9yZ18wIiwgaGFzaGVkRGF0YWJhc2VOYW1lLCBAIkluZGV4ZWRE
Qi5zcWxpdGUzIl1dOworICAgIE5TVVJMICpuZXdXZWJraXRJZnJhbWVEYXRhYmFzZUZpbGUgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1dlYmtpdElmcmFtZURhdGFiYXNlRmlsZVN0cmluZ107
CisgICAgTlNVUkwgKmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9D
dXN0b21XZWJzaXRlRGF0YS9EZWZhdWx0IiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBp
c0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICp3ZWJraXRPcmlnaW5GaWxlID0gW2dlbmVyYWxT
dG9yYWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkVBTzY2czhKdkNX
Tm40RDNZUXV0NXBYZmlHRl9VWE5aR3ZNR042YUtJTGcvRUFPNjZzOEp2Q1dObjREM1lRdXQ1cFhm
aUdGX1VYTlpHdk1HTjZhS0lMZy9vcmlnaW4iXTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lT3Jp
Z2luRmlsZSA9IFtnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJFQU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL3Z1ZHZi
TWxLWGoxbTZSaWJuVnZjOFBkQWRjWFpzTkU2T05fQWw3eXFPc2cvb3JpZ2luIl07CisgICAgTlNV
UkwgKmlmcmFtZVdlYktpdE9yaWdpbkZpbGUgPSBbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidnVkdmJNbEtYajFtNlJpYm5WdmM4UGRBZGNYWnNO
RTZPTl9BbDd5cU9zZy9FQU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxn
L29yaWdpbiJdOworCisgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpp
ZGJEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5
QXRVUkw6d2Via2l0SWZyYW1lRGF0YWJhc2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVj
dG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBj
b3B5SXRlbUF0VVJMOnJlc291cmNlRGF0YWJhc2VGaWxlIHRvVVJMOndlYmtpdElmcmFtZURhdGFi
YXNlRmlsZSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6Z2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgY3JlYXRl
RGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURp
cmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdl
ciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0b1VSTDpbZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rv
cnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAic2FsdCJdIGVycm9yOm5pbF07CisKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkgPSBpZGJEaXJlY3Rvcnk7CisgICAgd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCkuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgPSBnZW5lcmFsU3RvcmFnZURpcmVj
dG9yeTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmFkb3B0TlMoW1tX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKV07CisgICAgYXV0byBoYW5kbGVyID0g
YWRvcHROUyhbW0luZGV4ZWREQk1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKyAgICBhdXRvIHNjaGVtZUhh
bmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbc2NoZW1lSGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3
ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBhdXRvIHJlc3BvbnNlID0g
YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5V
UkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSk7CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25z
ZS5nZXQoKV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhC
eXRlczppZnJhbWVCeXRlc1BlcnNpc3RlbmNlIGxlbmd0aDpzdHJsZW4oaWZyYW1lQnl0ZXNQZXJz
aXN0ZW5jZSldXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiaWZyYW1lIl07CisgICAgLy8gQWxsb3dpbmcgdGhpcmQtcGFydHkgZnJhbWUgdG8g
c3RvcmUgZGF0YSBvbiBkaXNrLgorICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoX19icmlkZ2UgV0tQ
cmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgV0tQcmVmZXJl
bmNlc1NldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShwcmVmZXJlbmNlcywga1dLQWxsb3dBbGxTdG9y
YWdlKTsKKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICBs
b2FkVGVzdFBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBleGlzdHMgLSBn
ZXQgaXRlbSBzdWNjZXNzOiBUZXN0VmFsdWUiKTsKKyAgICB9CisKKyAgICBbW2NvbmZpZ3VyYXRp
b24gd2Vic2l0ZURhdGFTdG9yZV0gX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzXTsKKyAgICAvLyBX
YWl0IHNvbWUgdGltZSBzbyBwcm9jZXNzIGlzIGtpbGxlZCBhbmQgZGF0YWJhc2VzIGFyZSBjbG9z
ZWQuCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41KTsKKworICAgIC8vIERhdGFi
YXNlIGZpbGUgaXMgbW92ZWQgdG8gW0luZGV4ZWREQkRpcmVjdG9yeV0vdjEvW09wZW5pbmlnT3Jp
Z2luXS9bVG9wT3JpZ2luXS8uCisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlz
dHNBdFBhdGg6bmV3V2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlLnBhdGhdKTsKKyAgICAvLyBPcmln
aW4gZmlsZSBpcyBjcmVhdGVkIHVuZGVyIFtHZW5lcmFsU3RvcmFnZURpcmVjdG9yeV0vW1RvcE9y
aWdpbl0vW09wZW5pbmdPcmlnaW5dLy4KKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmls
ZUV4aXN0c0F0UGF0aDp3ZWJraXRPcmlnaW5GaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShb
ZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp3ZWJraXRJZnJhbWVPcmlnaW5GaWxlLnBhdGhd
KTsKKyAgICBFWFBFQ1RfRkFMU0UoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6aWZyYW1l
V2ViS2l0T3JpZ2luRmlsZS5wYXRoXSk7CisKKyAgICAvLyBUZXN0IGFnYWluIGZvciBmaWxlcyBv
ZiBhbiBlYXJsaWVyIHZlcnNpb24sIHdoZXJlIGRhdGFiYXNlcyBhcmUgc3RvcmVkIGF0IFtJbmRl
eGVkREJEaXJlY3RvcnldL1tUb3BPcmlnaW5dL1tPcGVuaW5nT3JpZ2luXS8uCisgICAgTlNVUkwg
KmFuY2llbnRXZWJraXRJZnJhbWVEYXRhYmFzZURpcmVjdG9yeSA9IFtpZGJEaXJlY3RvcnkgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiaHR0cF93ZWJraXQub3JnXzAvaWZyYW1lX18wL0lu
ZGV4ZWREQlRoaXJkUGFydHlGcmFtZUhhc0FjY2Vzcy8iXTsKKyAgICBOU1VSTCAqYW5jaWVudFdl
YmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFthbmNpZW50V2Via2l0SWZyYW1lRGF0YWJhc2VEaXJl
Y3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5kZXhlZERCLnNxbGl0ZTMiXTsK
KyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOm5ld1dlYmtpdElmcmFtZURhdGFiYXNl
RmlsZSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6d2Via2l0
T3JpZ2luRmlsZSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6
d2Via2l0SWZyYW1lT3JpZ2luRmlsZSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjb3B5
SXRlbUF0VVJMOnJlc291cmNlRGF0YWJhc2VGaWxlIHRvVVJMOndlYmtpdElmcmFtZURhdGFiYXNl
RmlsZSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6aWRiRGly
ZWN0b3J5IGVycm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OmFuY2llbnRXZWJraXRJZnJhbWVEYXRhYmFzZURpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2Vy
IGNvcHlJdGVtQXRVUkw6cmVzb3VyY2VEYXRhYmFzZUZpbGUgdG9VUkw6YW5jaWVudFdlYmtpdElm
cmFtZURhdGFiYXNlRmlsZSBlcnJvcjpuaWxdOworCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgICAgIGxvYWRUZXN0UGFnZUluV2ViVmlldyh3ZWJWaWV3LmdldCgp
LCBAImRhdGFiYXNlIGV4aXN0cyAtIGdldCBpdGVtIHN1Y2Nlc3M6IFRlc3RWYWx1ZSIpOworICAg
IH0KKworICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOm5ld1dl
YmtpdElmcmFtZURhdGFiYXNlRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0T3JpZ2luRmlsZS5wYXRoXSk7CisgICAgRVhQRUNU
X1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0SWZyYW1lT3JpZ2luRmls
ZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRo
OmlmcmFtZVdlYktpdE9yaWdpbkZpbGUucGF0aF0pOworfQorCiBzdGF0aWMgY29uc3QgY2hhciog
d29ya2VyQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIHRyeSB7CiAgICAgdmFyIHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbignSW5kZXhlZERCVGhpcmRQYXJ0eVdvcmtlckhhc0FjY2VzcycpOwpAQCAt
MzY4LDcgKzQ1MCw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5V29ya2Vy
SGFzQWNjZXNzKQogICAgICAgICAgICAgcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdFVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKICAgICAgICAgICAg
IGRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6d29ya2VyRnJhbWVCeXRlcyBsZW5ndGg6c3Ry
bGVuKHdvcmtlckZyYW1lQnl0ZXMpXTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUSgiaWZyYW1lOi8vL3dvcmtlci5qcyIsIHJlcXVlc3RVUkwuYWJzb2x1dGVT
dHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWU6Ly93b3JrZXIuanMi
LCByZXF1ZXN0VVJMLmFic29sdXRlU3RyaW5nKTsKICAgICAgICAgICAgIHJlc3BvbnNlID0gYWRv
cHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnJlcXVlc3RVUkwgTUlNRVR5
cGU6QCJ0ZXh0L2phdmFzY3JpcHQiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSk7CiAgICAgICAgICAgICBkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOndv
cmtlckJ5dGVzIGxlbmd0aDpzdHJsZW4od29ya2VyQnl0ZXMpXTsKICAgICAgICAgfQpAQCAtNDU2
LDE4ICs1MzgsMTggQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQkdldERhdGFiYXNlcykKICAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpnZXREYXRhYmFzZXNTdHJpbmcgYmFzZVVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9hcHBsZS5jb20iXV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZSA9IGZhbHNlOwotICAgIEVYUEVDVF9XS19TVFJFUShAImRhdGFiYXNlczogW3tcIm5h
bWVcIjpcIkluZGV4ZWREQkdldERhdGFiYXNlc1wiLFwidmVyc2lvblwiOjF9XSIsIFtsYXN0U2Ny
aXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZGF0YWJhc2VzOiBbe1wi
bmFtZVwiOlwiSW5kZXhlZERCR2V0RGF0YWJhc2VzXCIsXCJ2ZXJzaW9uXCI6MX1dIiwgW2dldE5l
eHRNZXNzYWdlKCkgYm9keV0pOwogCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
bG9hZEZyYW1lKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IGZhbHNlOwotICAgIEVYUEVDVF9XS19TVFJFUShAImNoaWxkIGZyYW1lIGRhdGFiYXNl
czogW10iLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShA
ImNoaWxkIGZyYW1lIGRhdGFiYXNlczogW10iLCBbZ2V0TmV4dE1lc3NhZ2UoKSBib2R5XSk7CiAK
ICAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgIFtzZWNvbmRXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3ZWJraXQ6Ly8iXV1d
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsK
ICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJtYWluIGZyYW1lIGRhdGFiYXNlczogW10iLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUShAIm1haW4gZnJhbWUgZGF0YWJhc2VzOiBbXSIsIFtnZXROZXh0
TWVzc2FnZSgpIGJvZHldKTsKIAogICAgIC8vIEdldHRpbmcgZGF0YWJhc2VzIHNob3VsZCBub3Qg
Y3JlYXRlIGZpbGVzIG9uIGRpc2suCiAgICAgTlNVUkwgKmlkYkRpcmVjdG9yeVVSTCA9IFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L2luZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUzIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbmRleGVkZGItcGVyc2lzdGVuY2UtdGhpcmQtcGFy
dHkuc3FsaXRlMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjljMGJlMzQ4ZjdmNDI4MzM2NDIzYWJiOGY5ZDhjMjI3
YjVhNTk5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MzcyOAp6Y21lSShQakF+fjlLZGxxUExy
bHQ9Q202R3NmU3JpKWYmPTRHbmdofDZ8X3lkU3hie0hPfi1jWCt7Vil+KHF4Tz4KenU/aXVQIVR8
fTF5IylAdWdOWHk7NE5NJTY1TFlDUTlNQ3YmODMhSWFaV2dDYWxMPHs/PkROalhgPzNBX2BGKTx9
CnpAbCpmRj5lWER1SG5tJnojK0c0Z1olYzcwNVJnOTlHKWE7STslYEZ5P00rY0o2V20pNi0qVSUl
dWkxZH49MH0lZgp6KFo4aGVQKmhVaUlRfV5IYiFfdDMhfDJ+KktTekl6ZWlpd0I/QlZGZSRoUSRB
SlE5a0FlKElHQz0/RVp6MDBKKmkKenBte01LUE1rUi0/X1JLdGpqRE9ZK19ffWQlIVhtdDg8dVpq
ZTZnNkZGSi1tVHs2YTNQYEJySnVeXkg1YHJvQWU1CnpHV0NxNj1TJGczKmBrJiZsKGhVPkV+Z2Rw
K0Z+S1VsK3piVytTMHQ5KTdKOSgpd1FmSXlfajllJWBhd1d3OVZ+Qwp6IT5ybGoyPm1sa3pCP1hE
RVQ1NjNPMDhAQHU8bGpHdShvYiYralZ6Ji1CLSU+dn5PYEBfWj5CeUlDVjw/dks2YFIKejxlPUFY
KSFRPzFVJlFUWFpNc3RLVSRQbWtXXjk+U0RTS1RRXm0zVGRvKWQwSGBgRnhCRzM/dmdMYXdsSVNq
SDc9Cnp0eWEwV1o0T2U+dD9qQl4kPTIrfkFtWTJQOX02Y15EZng+fS0zQytXc0NqfGN3SFdnZWND
R1k1dGB6bTxgUWk9agp6Tzc9JFl1bnVaQlBKMD4leVo2cTZubVA/anVXan14UDBrJDtDOWJBPUhP
bnJDXj5iWWI+Ump4M2MyOVRoZSFPe2gKeiUmbnJgYWtxLX0ldEZReGJCMU5RP2MyVz9eO0o+Vncl
Vzk/PkM9YzBhJjMzIWAka28/IU5ZcSZheFF2VXhMcmtCCnpQakA5OFloRFB1OWVIPW80UkBoaC0m
bT90T3srYUs+STw9KnRXOXItUDFsT0tLSUo8b3oqZWlmQkBVREMtXzNodgp6a1c1RUhpUmBJZiY3
QHQ+Xj5nam52R25MKnlRSkhATTh4UFo+V209R1MzfXslPkM8eDRZQzlGcCYzZEVrTl9uJjQKemVP
QkhJLSR9ayR8RD1CfW45JkNGTypTSlY7bCVxPmFgT1pDd0MkZDB5YCMzaXltUE5PTDNfeXx1YXRU
fGxmQUM+CnoqdWZjSUkjPkIzJkA7WjF1WG1oR3ZLOTt7LVYjTjVyUDNNP28qaT52QXgzJUAhcmdU
TDthZ2RYMUIqXklxcSR1cAp6eCUtfEhQRTFZdE1qPGFxSHkzWHs9JlAyX0hSM0dsbVVNdCYqQjl8
MTxGczRTUl98Q1c8WnttTkZGTjAkcilWIygKej1pUkNQWSM3PEFpdkE1T2N7M3BGQ2dvPCNCeyth
aEB6fWlvSChKZjViMzNQIXl5Ym4oTCkyMlR4aGpWZmxhdW85CnpYS3RWSUh1YiYmekRoWWJvQm1Q
ITJqb05rdjFxdEd5UTdqajJIMGR3b0RGMzRTNG4pQjVJX0l7MVEwKn4wUiN8MAp6MDA5SUxLO1kj
T05YYTlTXlJ0cTRHYzN3bmwxI354WjBVO2wtalQqY04/aENwe0pkbVpfQkgyKnRkazxFZUBOb1AK
emdhODV2QWI8YkAycTFzfTB0Z18wMDBKKyF6LXooQ2BOJTxjMWYxdnA7LSFCazFRMCp+MFIjfDAw
MDlJTEttWSoqCno1RXg8cz1sTVVefDNoNUNnb1hlRDJxMXN9MHRnXzAwMElhZ2ZQZkktYGshV2kw
MElhZ2ZCKnNyQWI8YkAycTF2Swp6QEMpJCV8TTFyXzVoOCM5MHRnXzAwMElhZ2ZCKnNyQWkodU1a
MiRvVDVJX0l7MVEwKn4wUiN8MDBEPDhiO1FqeU0KenVWVyVhMDA5SUxLbVkqKjVJX0l7MVEwLWc+
d25xKzB0Z18wMDBJYWdmQipzckFiPGJAISFPe3h7fnVKcGs8PnJjCnpBSnAlfTM9O3dmQWI8YkAy
cTFzfTB0Z18wMDBJY1NWMWJpQzwqZDRGSlNjNDNGKm9nMXlXVE1NTyF8YlBxfH1VSQp6OHlrallV
TmFrM3JDditWMjkmQTdVU2koWkdXQTs3ZHw7THszI0hxWU10UXwoKmdIIU5rJCV+Kjx+S0pAJVFf
KjgKelk/ZSppRDJ1SDJ2VD5nTzJoflRDYGtWUyNlV1g1bCEyeXl6MHRnXzAwMElhZ2ZCKnNyQWI8
YkAybjs1MFFhTE1rCnoteTtaflAqVT5WLTJtXn1VV3FHSD9LSX5PTDEwMmpNWT9WUElNNHJPXj9P
TnRtPUhoITBSI3wwMDA5SUxLbVkqKgp6NUoyR25CJXNTOVF0SkxfJCtZWl9IdzhCQ1J4NmYwSk50
X3FEQV94QSZBMm9namtrJnwlVTwhN3R9ckg/PWxgPCQKemswZEAhMnExc30wdGdfMDAwSWFnZkIq
c3JBVFdkaWlWfSZtdUslQSV5IWsoYjYtLUQ3QWI8YkAycTFzfTB0Z18wCnowMEt1LXo8S3xfPiFr
dGJ7ZVFgT09XPGd0NUgkaF9BYjxiQDJxMXN9MHRnXzAwMFA0PShFOSFWUSVRWH57SUw9dAp6MHRn
XzAwMElhZ2ZCKnNyQWI8YkBNXkhlS21CPVcrfDM4OD9Qc2opJGZCKnNyQWI8YkAycTFzfTAhSz1+
YFRoVUQKRCNLeDF8CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453153</attachid>
            <date>2022-02-24 16:26:18 -0800</date>
            <delta_ts>2022-02-25 09:48:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237044-20220224162617.patch</filename>
            <type>text/plain</type>
            <size>33166</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI5N2RjNWVhY2U5Zjg3
ZDQ5N2Q1ZDQ2Mzg1M2RmYWUxZTZkNjA0Ni4uYTQ1YzBiNTllYzc2ZjVmNDhlMjYxNzY3MTU3YzA0
ZTJhZDJhMmY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAyLTI0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0Mjcy
OSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHIyNDI3MjksIHdl
IHN3YXBwZWQgdG9wIG9yaWdpbiBhbmQgb3BlbmluZyBvcmlnaW4gaW4gbV9vcmlnaW4gKGl0IGlz
IGEgQ2xpZW50T3JpZ2luKSBvZiBJREJEYXRhYmFzZUlkZW50aWZpZXIuIAorICAgICAgICBUaGlz
IGNhbiBjYXVzZSB0cm91YmxlIHNpbmNlIEluZGV4ZWREQiBvcGVyYXRpb24gd2lsbCBiZSBwcm9j
ZXNzZWQgYnkgd3JvbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXIgCisgICAgICAgIChPcmlnaW5TdG9y
YWdlTWFuYWdlciBpcyBpZGVudGlmaWVkIGJ5IENsaWVudE9yaWdpbikuIFRvIGZpeCB0aGlzIGlz
c3VlLCB3ZSBuZWVkIHRvIHN3YXAgaXQgYmFjay4KKworICAgICAgICBCZWNhdXNlIHdlIHVzZSB0
aGUgaW5jb3JyZWN0IENsaWVudE9yaWdpbiBmb3IgdGhpcmQtcGFydHkgSW5kZXhlZERCIGRhdGFi
YXNlcyAoZmlyc3QtcGFydHkgaXMgbm90IGFmZmVjdGVkIAorICAgICAgICBiZWNhdXNlIGl0cyB0
b3Agb3JpZ2luIGFuZCBvcGVuaW5nIG9yaWdpbiBhcmUgdGhlIHNhbWUpLCB0aGUgZGF0YWJhc2Ug
cGF0aHMgd2UgdXNlIGFyZSB1bmV4cGVjdGVkIHRvby4gRm9yIAorICAgICAgICBleGFtcGxlLCB3
ZSBwbGFuIHRvIHN0b3JlIGRhdGEgb2YgeyBUb3BPcmlnaW4sIENsaWVudE9yaWdpbiB9IGF0IFtJ
bmRleGVkREJEaXJlY3RvcnldL1tUb3BPcmlnaW5dL1tDbGllbnRPcmlnaW5dLCAKKyAgICAgICAg
YnV0IGl0IGlzIGFjdHVhbGx5IHN0b3JlZCBhdCBbSW5kZXhlZERCRGlyZWN0b3J5XS9bQ2xpZW50
T3JpZ2luXS9bVG9wT3JpZ2luXS4KKworICAgICAgICBCZWNhc3VzZSByMjQyNzI5IHdhcyBzaGlw
cGVkIGFyb3VuZCB0aGUgdGltZSBhcyB3ZSBhZGRlZCB2ZXJzaW9uIGRpcmVjdG9yeSBpbnNpZGUg
SW5kZXhlZERCIGRpcmVjdG9yeSAocjI0MzAxOSksIAorICAgICAgICB0aGUgaW5jb3JyZWN0IGRp
cmVjdG9yeSBzdHJ1Y3V0cmUgc2hvdWxkIG9ubHkgaGFwcGVuIHRvIFtJbmRleGVkREJEaXJlY3Rv
cnldL3YxLyBkaXJlY3RvcnksIG5vdCAKKyAgICAgICAgW0luZGV4ZWREQkRpcmVjdG9yeV0vdjAv
IGRpcmVjdG9yeS4gVG8gYXZvaWQgbW9yZSBtaWdyYXRpb24sIHdlIGp1c3QgdGVhY2ggSURCRGF0
YWJhc2VJZGVudGlmaWVyIHRvIGZpbmQgY29ycmVjdCAKKyAgICAgICAgcGF0aHMgZm9yIGRpZmZl
cmVudCB2ZXJzaW9ucyBhZnRlciByZXZlcnNpbmcgb3JpZ2lucyBpbiB0aGlzIHBhdGNoLgorCisg
ICAgICAgIE5ldyB0ZXN0OiBJbmRleGVkREIuSW5kZXhlZERCVGhpcmRQYXJ0eVN0b3JhZ2VMYXlv
dXQKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNl
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRpc2tVc2Fn
ZSk6CisKIDIwMjItMDItMjQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0lGQ10gTm9uLW9ydGhvZ29uYWwgaW5saW5lIGJsb2NrIGJveGVzIGtlZXAgdGhl
aXIgYmFzZWxpbmUgb24gaWRlb2dyYXBoaWMgbGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWNjMzliZGQ5Yzg2
ODEwNmQwNTEzMjIyOGUyZGY0NGU0YjY4MTljZC4uMDQxZDlhMWRiNTFmZGQxYmQyNDNhOGJmYmVk
NmZiNWVmMmJkMzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yNCAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIyNDI3
MjkpOiBtX29yaWdpbiBpbiBJREJEYXRhYmFzZUlkZW50aWZpZXIgaXMgaW5jb3JyZWN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptaWdy
YXRlT3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VNYW5hZ2VyOjppZGJT
dG9yYWdlT3JpZ2luRGlyZWN0b3J5KToKKwogMjAyMi0wMi0yNCAgRGV2aW4gUm91c3NvICA8ZHJv
dXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY0NhdGFseXN0XSBSRUdSRVNTSU9OKHIyOTAw
OTEpOiBzb21ldGltZXMgY2FuIGNyYXNoIGlmIGBXS1dlYlZpZXdgIGlzIGRlYWxsb2NhdGVkIGJl
Zm9yZSB0aGUgbmV4dCB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIu
Y3BwCmluZGV4IDU1NDIxZDQxNWQzZGU5OWFiMDdjY2Y3NDY5OGZlN2E3NTNhNmU3MTEuLjgwNjEz
YmRkYWZiYjk3NDFmMjY3NWQzMzFmMGI4YmE1ZTk4MWVmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNw
cApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEm
JiBtYWluRnJhbWVPcmlnaW4sIGJvb2wgaXNUcmFuc2llbnQpCiAgICAgOiBtX2RhdGFiYXNlTmFt
ZShkYXRhYmFzZU5hbWUpCi0gICAgLCBtX29yaWdpbiB7IFdURk1vdmUob3BlbmluZ09yaWdpbiks
IFdURk1vdmUobWFpbkZyYW1lT3JpZ2luKSB9CisgICAgLCBtX29yaWdpbiB7IFdURk1vdmUobWFp
bkZyYW1lT3JpZ2luKSwgV1RGTW92ZShvcGVuaW5nT3JpZ2luKSB9CiAgICAgLCBtX2lzVHJhbnNp
ZW50KGlzVHJhbnNpZW50KQogewogICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcgaXMgYSB2YWxpZCBk
YXRhYmFzZSBuYW1lLCBidXQgYSBudWxsIHN0cmluZyBpcyBub3QuCkBAIC01NSwxOSArNTUsMjMg
QEAgSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKIAogU3RyaW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJl
Y3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgdmVyc2lvblN0cmluZykgY29uc3QKIHsKLSAgICByZXR1cm4gZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChtX29yaWdpbi50b3BPcmlnaW4sIG1fb3JpZ2luLmNsaWVudE9yaWdp
biwgcm9vdERpcmVjdG9yeSwgdmVyc2lvblN0cmluZyk7CisgICAgcmV0dXJuIGRhdGFiYXNlRGly
ZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9vcmlnaW4sIHJvb3REaXJlY3RvcnksIHZlcnNpb25TdHJp
bmcpOwogfQogCi1TdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiBy
b290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCitTdHJpbmcgSURCRGF0
YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IENs
aWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgdmVyc2lvblN0cmluZykKIHsKLSAgICBTdHJpbmcgdmVyc2lvbkRpcmVjdG9yeSA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCB2ZXJzaW9u
U3RyaW5nKTsKLSAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHZlcnNpb25EaXJlY3RvcnksIHRvcExldmVsT3JpZ2luLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAocm9vdERpcmVjdG9yeS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgLy8gSWYgdGhlIG9wZW5pbmcgb3Jp
Z2luIGFuZCBtYWluIGZyYW1lIG9yaWdpbnMgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBwYXJ0
aXRpb25pbmcuCi0gICAgaWYgKG9wZW5pbmdPcmlnaW4gPT0gdG9wTGV2ZWxPcmlnaW4pCi0gICAg
ICAgIHJldHVybiBtYWluRnJhbWVEaXJlY3Rvcnk7CisgICAgYXV0byB2ZXJzaW9uRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksIHZl
cnNpb25TdHJpbmcpOworICAgIGlmIChvcmlnaW4udG9wT3JpZ2luID09IG9yaWdpbi5jbGllbnRP
cmlnaW4pCisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQodmVyc2lvbkRpcmVjdG9yeSwgb3JpZ2luLnRvcE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiAKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1h
aW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgaWYgKHZlcnNpb25TdHJpbmcgPT0gInYwIikKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModmVyc2lvbkRpcmVjdG9yeSwgeyBvcmlnaW4udG9w
T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLCBvcmlnaW4uY2xpZW50T3JpZ2luLmRhdGFiYXNl
SWRlbnRpZmllcigpIH0pOworCisgICAgQVNTRVJUKHZlcnNpb25TdHJpbmcgPT0gInYxIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHModmVyc2lvbkRp
cmVjdG9yeSwgeyBvcmlnaW4uY2xpZW50T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLCBvcmln
aW4udG9wT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpIH0pOwogfQogCiAjaWYgIUxPR19ESVNB
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBlYWVmMjU0NTY5MzM5NTYxNGUxYzIxODdmZjRjYWI2
NGFlMTNlNTdmLi5mODNmMTk1YTU2ZGVmZDJiM2YwZWNkOGU5ZDY3MTRkMjk0MGQwYTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUlkZW50aWZpZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyYW5z
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUcmFuc2llbnQ7IH0KIAogICAgIFN0cmluZyBkYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nPSJ2MSIpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uU3RyaW5nKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElEQkRhdGFi
YXNlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNGJhZDQ0MmIx
YjNhOWE0MTc4NTkwNDJmODE2NTc3ZTA3YjEzYmE4YS4uNzdkZjY2N2Q0MDk5ZDZmYjdkODVhMDU1
YzIwMDRlNjdiMmFiNWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTUzMCwxMCArNTMwLDEwIEBAIHZvaWQg
SURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoSURCQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29uCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFdURk1vdmUoKm5h
bWVBbmRWZXJzaW9uKSk7CiAgICAgfQogCi0gICAgU3RyaW5nIG9sZERpcmVjdG9yeSA9IElEQkRh
dGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4u
dG9wT3JpZ2luLCBvcmlnaW4uY2xpZW50T3JpZ2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwg
InYwIik7CisgICAgYXV0byBvbGREaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgInYwIik7CiAgICAgZ2V0RGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21PcmlnaW5EaXJl
Y3Rvcnkob2xkRGlyZWN0b3J5LCB2aXNpdGVkRGF0YWJhc2VQYXRocywgcmVzdWx0KTsKIAotICAg
IFN0cmluZyBkaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwg
bV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2MSIpOworICAgIGF1dG8gZGlyZWN0b3J5ID0gSURC
RGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdp
biwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICJ2MSIpOwogICAgIGdldERhdGFiYXNlTmFtZUFu
ZFZlcnNpb25Gcm9tT3JpZ2luRGlyZWN0b3J5KGRpcmVjdG9yeSwgdmlzaXRlZERhdGFiYXNlUGF0
aHMsIHJlc3VsdCk7CiAKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0
KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKQEAgLTc1OCw4ICs3NTgsOCBAQCB1aW50NjRf
dCBJREJTZXJ2ZXI6OmRpc2tVc2FnZShjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0
IENsaWVudE9yaWdpbiYgbwogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
YXV0byBvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpk
YXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5j
bGllbnRPcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MCJfc3RyKTsKLSAgICBhdXRvIG5ld1ZlcnNp
b25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwg
cm9vdERpcmVjdG9yeSwgInYxIl9zdHIpOworICAgIGF1dG8gb2xkVmVyc2lvbk9yaWdpbkRpcmVj
dG9yeSA9IElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRv
Um9vdChvcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MCJfc3RyKTsKKyAgICBhdXRvIG5ld1ZlcnNp
b25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLCByb290RGlyZWN0b3J5LCAidjEiX3N0cik7CiAgICAg
cmV0dXJuIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VzU2l6ZUZvckRpcmVjdG9yeShv
bGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5KSArIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJh
c2VzU2l6ZUZvckRpcmVjdG9yeShuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlTWFuYWdlci5jcHAKaW5kZXggNzVjMGNmYmIxMDQ0NDdjOTVmZjU2OGZlYzExOTk4MDQzMGFj
ZWIzYi4uYmE2ZTQ1ZjFiZDNiYzNhZmNhODBkM2Y4M2Y3ZjVkM2NmNjNkODUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFn
ZU1hbmFnZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJTdG9yYWdlUmVn
aXN0cnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lEQlJlcXVlc3REYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JREJTZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg+CkBAIC00NCwxMCArNDUsMjAgQEAgc3Rh
dGljIHZvaWQgbWlncmF0ZU9yaWdpbkRhdGEoY29uc3QgU3RyaW5nJiBvbGRPcmlnaW5EaXJlY3Rv
cnksIGNvbnN0IFN0cmluZyYgbmUKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKG5ld09yaWdpbkRpcmVjdG9yeSk7CiAKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBmaWxlTmFt
ZXMpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhbiBvcmlnaW4gZGlyZWN0b3J5IGZvciB0aGlyZC1w
YXJ0eSBkYXRhLgorICAgICAgICBpZiAoYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIobmFtZSkpCisgICAgICAgICAgICBjb250
aW51ZTsKKwogICAgICAgICBTdHJpbmcgY2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgo
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdpbkRpcmVjdG9yeSwg
bmFtZSkpOwogICAgICAgICBTdHJpbmcgbmV3TmFtZSA9IFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0
ZW06OmNvbXB1dGVIYXNoRm9yRmlsZU5hbWUoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmRlY29kZURhdGFiYXNlTmFtZShuYW1lKSk7CiAgICAgICAgIGF1dG8gbmV3
Q2hpbGRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG5ld09yaWdp
bkRpcmVjdG9yeSwgbmV3TmFtZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKGNoaWxk
UGF0aCwgbmV3Q2hpbGRQYXRoKTsKKworICAgICAgICAvLyBEbyBub3Qgb3ZlcndyaXRlIGV4aXN0
aW5nIGRhdGFiYXNlIGZpbGVzIHdpdGggdGhlIHNhbWUgbmFtZS4KKyAgICAgICAgLy8gVGhpcyBt
YXkgaGFwcGVuIGJlY2F1c2Ugd2UgcmV2ZXJzZSBvcmlnaW5zIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNDQuCisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG5ld0NoaWxkUGF0aCkpCisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVO
b25FbXB0eURpcmVjdG9yeShjaGlsZFBhdGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBG
aWxlU3lzdGVtOjptb3ZlRmlsZShjaGlsZFBhdGgsIG5ld0NoaWxkUGF0aCk7CiAgICAgfQogCiAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob2xkT3JpZ2luRGlyZWN0b3J5KTsK
QEAgLTU4LDggKzY5LDggQEAgU3RyaW5nIElEQlN0b3JhZ2VNYW5hZ2VyOjppZGJTdG9yYWdlT3Jp
Z2luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSwKICAgICBpZiAocm9vdERp
cmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAg
U3RyaW5nIG9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6
ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2luLCBvcmlnaW4u
Y2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjEiKTsKLSAgICBTdHJpbmcgb2xkT3JpZ2lu
RGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4s
IHJvb3REaXJlY3RvcnksICJ2MCIpOworICAgIGF1dG8gb3JpZ2luRGlyZWN0b3J5ID0gV2ViQ29y
ZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290
KG9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYxIik7CisgICAgYXV0byBvbGRPcmlnaW5EaXJlY3Rv
cnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVs
YXRpdmVUb1Jvb3Qob3JpZ2luLCByb290RGlyZWN0b3J5LCAidjAiKTsKICAgICBtaWdyYXRlT3Jp
Z2luRGF0YShvbGRPcmlnaW5EaXJlY3RvcnksIG9yaWdpbkRpcmVjdG9yeSk7CiAKICAgICByZXR1
cm4gb3JpZ2luRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDY5ZjZjNTNkOGJjOGIwYmE5M2RjYzM0OGExN2I0YmEwNmFlZmRjNTYu
LjA3NzNjMGJjNzlmODJkMjgxM2U3ZTk0ZjgxMTJmM2ZlM2IxYTcyODAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAy
Mi0wMi0yNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBSZWdy
ZXNzaW9uKHIyNDI3MjkpOiBtX29yaWdpbiBpbiBJREJEYXRhYmFzZUlkZW50aWZpZXIgaXMgaW5j
b3JyZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzcwNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lz
dGVuY2UubW06CisgICAgICAgICgtW0luZGV4ZWREQk1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50
Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvaW5kZXhlZGRiLXBlcnNp
c3RlbmNlLXRoaXJkLXBhcnR5LnNxbGl0ZTM6IEFkZGVkLgorCiAyMDIyLTAyLTI0ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjQ2F0YWx5c3RdIFJFR1JF
U1NJT04ocjI5MDA5MSk6IHNvbWV0aW1lcyBjYW4gY3Jhc2ggaWYgYFdLV2ViVmlld2AgaXMgZGVh
bGxvY2F0ZWQgYmVmb3JlIHRoZSBuZXh0IHZpc2libGUgY29udGVudCByZWN0IHVwZGF0ZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjNDk3M2NmMDA2MTJkMGVkZDljMjZhMmUxMTdmYzlmZjZj
ZDFiNGQ0Li4zZjNlZTk0Nzg0NjM0MmJiM2Y1NWY1ZDAzZmZlNTc2YTA0Y2JiNjA3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNzYzLDYgKzc2Myw3IEBACiAJCTkzQUY0RUNFMTUwNkYwNjQw
MDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUY0
RUNEMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJ
bWFnZXNfQnVuZGxlLmNwcCAqLzsgfTsKIAkJOTNBRjRFRDExNTA2RjEzMDAwN0ZENTdFIC8qIGxv
dHMtb2YtaW1hZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNBRjRFQ0YxNTA2RjEyMzAwN0ZENTdFIC8qIGxvdHMtb2YtaW1hZ2Vz
Lmh0bWwgKi87IH07CiAJCTkzQkNCQzg0MjNDQzZGNDQwMENBMjIyMSAvKiBJREJPYmplY3RTdG9y
ZUluZm9VcGdyYWRlVG9WMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkNCQzgyMjNDQzZFRjUwMENBMjIyMSAvKiBJREJPYmplY3RT
dG9yZUluZm9VcGdyYWRlVG9WMi5odG1sICovOyB9OworCQk5M0NDRjEyOTI3QzU4OEYwMDAwNDM3
RDIgLyogaW5kZXhlZGRiLXBlcnNpc3RlbmNlLXRoaXJkLXBhcnR5LnNxbGl0ZTMgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDQ0YxMjgyN0M1
ODhEODAwMDQzN0QyIC8qIGluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUz
ICovOyB9OwogCQk5M0NGQTg2NzFDRUI5RTM4MDAwNTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4dC1p
bnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQ0ZBODY2MUNFQjlERTEwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0LWlucHV0
Lmh0bWwgKi87IH07CiAJCTkzRDExOUZDMjJDNjgwRjcwMDlCRTNDNyAvKiBsb2NhbHN0b3JhZ2Ut
b3Blbi13aW5kb3ctcHJpdmF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDExOUZCMjJDNTcxMTIwMDlCRTNDNyAvKiBsb2NhbHN0
b3JhZ2Utb3Blbi13aW5kb3ctcHJpdmF0ZS5odG1sICovOyB9OwogCQk5M0UyQzU1NTFGRDMyMDQx
MDBFMURGNkEgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0UyQzU1NDFGRDMyMDQxMDBFMURGNkEgLyogTGluZUVuZGluZy5j
cHAgKi87IH07CkBAIC0xNDAxLDYgKzE0MDIsNyBAQAogCQkJCTcxRTg4QzQ1MjRCNTM0QjcwMDY2
NTE2MCAvKiBpbWctd2l0aC1iYXNlNjQtdXJsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJNDk4OTdENkMyNDFGRTlFNDAwRUNGMTUzIC8qIGluLWFwcC1icm93c2VyLXByaXZhY3ktbG9j
YWwtZmlsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQ5NzFCMTE4MjQ1MUYyOUEw
MDk2OTk0RCAvKiBpbmNvcnJlY3RDcmVhdGVUYWJsZVNjaGVtYS5kYiBpbiBDb3B5IFJlc291cmNl
cyAqLywKKwkJCQk5M0NDRjEyOTI3QzU4OEYwMDAwNDM3RDIgLyogaW5kZXhlZGRiLXBlcnNpc3Rl
bmNlLXRoaXJkLXBhcnR5LnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOTM1Nzg2
Q0QyMEY2QTI5MTAwMDBDREZDIC8qIEluZGV4ZWREQi5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTkzNTc4NkNFMjBGNkEyQTEwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRlMy1z
aG0gaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOTM1Nzg2Q0MyMEY2QTI3MDAwMDBDREZDIC8q
IEluZGV4ZWREQi5zcWxpdGUzLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTI1NTcsNiAr
MjU1OSw3IEBACiAJCTkzQkNCQzgwMjNDQzZFRTgwMENBMjIyMSAvKiBJREJPYmplY3RTdG9yZUlu
Zm9VcGdyYWRlVG9WMi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0JDQkM4MTIzQ0M2RUY1MDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBn
cmFkZS5zcWxpdGUzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgcGF0aCA9IElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGUuc3FsaXRlMzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQ0JDODIyM0NDNkVGNTAwQ0EyMjIxIC8qIElE
Qk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5M0NDRjEyODI3QzU4OEQ4MDAwNDM3RDIgLyogaW5kZXhlZGRiLXBlcnNp
c3RlbmNlLXRoaXJkLXBhcnR5LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gImluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10
aGlyZC1wYXJ0eS5zcWxpdGUzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDRkE4
NjYxQ0VCOURFMTAwMDU2NUE4IC8qIGF1dG9mb2N1c2VkLXRleHQtaW5wdXQuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvZm9jdXNlZC10ZXh0LWlucHV0Lmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NGQTg2ODFDRUJDRkVEMDAwNTY1QTggLyogQ2Fu
ZGlkYXRlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
YW5kaWRhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEMTE5RkIy
MkM1NzExMjAwOUJFM0M3IC8qIGxvY2Fsc3RvcmFnZS1vcGVuLXdpbmRvdy1wcml2YXRlLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG9jYWxzdG9yYWdlLW9wZW4td2luZG93LXBy
aXZhdGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTU2LDYgKzQxNTks
NyBAQAogCQkJCTMxMjhBODE0MjM3NjQwRkQwMEQ5MEQ0MCAvKiBpbWFnZS5odG1sICovLAogCQkJ
CTQ5RDdGQkE3MjQxRkREREEwMEFCNjdGQSAvKiBpbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxvY2Fs
LWZpbGUuaHRtbCAqLywKIAkJCQk0OTcxQjExNzI0NTFGMjc4MDA5Njk5NEQgLyogaW5jb3JyZWN0
Q3JlYXRlVGFibGVTY2hlbWEuZGIgKi8sCisJCQkJOTNDQ0YxMjgyN0M1ODhEODAwMDQzN0QyIC8q
IGluZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUzICovLAogCQkJCTkzNEZB
NUM3MjBGNjlGRUUwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMyAqLywKIAkJCQk5MzRGQTVD
NjIwRjY5RkVEMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0ZTMtc2htICovLAogCQkJCTkzNEZB
NUM1MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMy13YWwgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNp
c3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJQZXJzaXN0ZW5jZS5tbQppbmRleCA0ZjBhOGVjOTQ0NTQ4Y2E2Yzc4NzAxNWM2YjZkOTUwODU4
ODM4OGIzLi5jZGZiNzJjMDRmZjllNjViMTI3NWY1MmI4YWIzMTcxY2QwYTYyZmJmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNp
c3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTI5LDEyICsyOSwxNCBAQAogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVI
YW5kbGVyLmgiCi0jaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQ
cmVmZXJlbmNlc1JlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDcgKzQ5LDcgQEAKIC0gKHZvaWQpdXNl
ckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50
Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVz
c2FnZQogewogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7Ci0gICAgbGFzdFNjcmlw
dE1lc3NhZ2UgPSBtZXNzYWdlOworICAgIHNjcmlwdE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsK
IH0KIAogQGVuZApAQCAtNjUsMTEgKzY3LDExIEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJQ
ZXJzaXN0ZW5jZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHN0cmluZzEgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2Ug
Ym9keV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcxID0gKE5TU3RyaW5nICopW2dl
dE5leHRNZXNzYWdlKCkgYm9keV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5nICopW2xhc3RTY3Jp
cHRNZXNzYWdlIGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0
cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgLy8gRGl0Y2ggdGhpcyB3ZWIg
dmlldyAoZGl0Y2hpbmcgaXRzIHdlYiBwcm9jZXNzKQogICAgIHdlYlZpZXcgPSBuaWw7CkBAIC04
NSw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJQZXJzaXN0ZW5jZSkKIAogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0
cmluZzMgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CisgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBzdHJpbmczID0gKE5TU3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9k
eV07CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJVcGdyYWRlTmVlZGVkIiwgc3RyaW5nMS5nZXQo
KSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiU3VjY2VzcyIsIHN0cmluZzIuZ2V0KCkpOwpAQCAt
MTA4LDExICsxMTAsMTEgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlBlcnNpc3RlbmNlUHJp
dmF0ZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IHN0cmluZzEgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcxID0gKE5TU3RyaW5nICopW2dldE5leHRN
ZXNzYWdlKCkgYm9keV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVk
U2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNz
YWdlIGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAq
KVtnZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgYXV0byB3ZWJWaWV3UGlkMSA9IFt3ZWJW
aWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAgICAgLy8gRGl0Y2ggdGhpcyB3ZWIgdmlldyAo
ZGl0Y2hpbmcgaXRzIHdlYiBwcm9jZXNzKQpAQCAtMTI2LDcgKzEyOCw3IEBAIFRFU1QoSW5kZXhl
ZERCLCBJbmRleGVkREJQZXJzaXN0ZW5jZVByaXZhdGUpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmczID0gKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3Ry
aW5nMyA9IChOU1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgYXV0byB3
ZWJWaWV3UGlkMiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAgICAgRVhQRUNU
X05FKHdlYlZpZXdQaWQxLCB3ZWJWaWV3UGlkMik7CkBAIC0yNDAsNyArMjQyLDcgQEAgc3RhdGlj
IHZvaWQgbG9hZFRlc3RQYWdlSW5XZWJWaWV3KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcg
KmV4cGVjdGVkUmVzdWx0KQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0
cmluZ1BlcnNpc3RlbmNlIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Vi
a2l0Lm9yZyJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgRVhQRUNU
X1dLX1NUUkVRKGV4cGVjdGVkUmVzdWx0LCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2Ug
Ym9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFJlc3VsdCwgKE5TU3RyaW5nICop
W2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogfQogCiBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERC
VGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNzKQpAQCAtMzAyLDcgKzMwNCw3IEBAIFRFU1QoSW5kZXhl
ZERCLCBJbmRleGVkREJUaGlyZFBhcnR5RGF0YVJlbW92YWwpCiAgICAgW3NlY29uZFdlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImlmcmFtZTovLyJdXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwot
ICAgIEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3Vj
Y2VzcyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIiwgKE5T
U3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogCiAgICAgcmVhZHlUb0NvbnRpbnVl
ID0gZmFsc2U7CiAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgewpAQCAtMzIy
LDYgKzMyNCw5MyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1v
dmFsKQogICAgIGxvYWRUZXN0UGFnZUluV2ViVmlldyh0aGlyZFdlYlZpZXcuZ2V0KCksIEAiZGF0
YWJhc2UgaXMgY3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiKTsKIH0KIAorVEVTVChJbmRleGVk
REIsIEluZGV4ZWREQlRoaXJkUGFydHlTdG9yYWdlTGF5b3V0KQoreworICAgIE5TVVJMICpyZXNv
dXJjZVNhbHQgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiZ2VuZXJh
bC1zdG9yYWdlLWRpcmVjdG9yeSIgd2l0aEV4dGVuc2lvbjpAInNhbHQiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgTlNVUkwgKnJlc291cmNlRGF0YWJhc2VG
aWxlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImluZGV4ZWRkYi1w
ZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eSIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgTlNVUkwgKmdlbmVyYWxTdG9y
YWdlRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0
L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9EZWZhdWx0
IiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5T
VVJMICp3ZWJraXRPcmlnaW5GaWxlID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkVBTzY2czhKdkNXTm40RDNZUXV0NXBYZmlHRl9VWE5aR3ZN
R042YUtJTGcvRUFPNjZzOEp2Q1dObjREM1lRdXQ1cFhmaUdGX1VYTlpHdk1HTjZhS0lMZy9vcmln
aW4iXTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lT3JpZ2luRmlsZSA9IFtnZW5lcmFsU3RvcmFn
ZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFQU82NnM4SnZDV05uNEQz
WVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL3Z1ZHZiTWxLWGoxbTZSaWJuVnZjOFBkQWRjWFpz
TkU2T05fQWw3eXFPc2cvb3JpZ2luIl07CisgICAgTlNVUkwgKmlmcmFtZVdlYktpdE9yaWdpbkZp
bGUgPSBbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAidnVkdmJNbEtYajFtNlJpYm5WdmM4UGRBZGNYWnNORTZPTl9BbDd5cU9zZy9FQU82NnM4SnZD
V05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL29yaWdpbiJdOworICAgIE5TVVJMICpp
ZGJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQv
Y29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0luZGV4ZWRE
QiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBO
U1N0cmluZyAqaGFzaGVkRGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6
Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNz
Iik7CisgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl07CisgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpnZW5lcmFsU3Rv
cmFnZURpcmVjdG9yeSBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjcmVhdGVEaXJlY3Rv
cnlBdFVSTDpnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3Jp
ZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2VyIGNvcHlJ
dGVtQXRVUkw6cmVzb3VyY2VTYWx0IHRvVVJMOltnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJzYWx0Il0gZXJyb3I6bmlsXTsKKworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSA9IGlkYkRpcmVjdG9yeTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5n
ZXQoKS5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSA9IGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5Owor
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtbSW5kZXhlZERCTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5k
bGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9
IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtzY2hl
bWVIYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8
V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFt
ZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgp
XTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlm
cmFtZUJ5dGVzUGVyc2lzdGVuY2UgbGVuZ3RoOnN0cmxlbihpZnJhbWVCeXRlc1BlcnNpc3RlbmNl
KV1dOworICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgIH1dOworICAgIFtjb25maWd1cmF0
aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6
QCJpZnJhbWUiXTsKKyAgICAvLyBBbGxvd2luZyB0aGlyZC1wYXJ0eSBmcmFtZSB0byBzdG9yZSBk
YXRhIG9uIGRpc2suCisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChfX2JyaWRnZSBXS1ByZWZlcmVu
Y2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KHByZWZlcmVuY2VzLCBrV0tBbGxvd0FsbFN0b3JhZ2UpOwor
CisgICAgLy8gVGVzdCB3aGVuIGRhdGFiYXNlIGZpbGVzIHN0YXJ0IGF0IFtJbmRleGVkREJEaXJl
Y3RvcnldL3YxL1tPcGVuaW5pbmdPcmlnaW5dL1tUb3BPcmlnaW5dLy4KKyAgICBOU1VSTCAqd2Vi
a2l0SWZyYW1lRGF0YWJhc2VEaXJlY3RvcnlWMSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05T
U3RyaW5nIHBhdGhXaXRoQ29tcG9uZW50czpAW2lkYkRpcmVjdG9yeS5wYXRoLCBAInYxL2lmcmFt
ZV9fMC9odHRwX3dlYmtpdC5vcmdfMCIsIGhhc2hlZERhdGFiYXNlTmFtZV1dXTsKKyAgICBOU1VS
TCAqd2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlVjEgPSBbd2Via2l0SWZyYW1lRGF0YWJhc2VEaXJl
Y3RvcnlWMSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJd
OworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6aWRiRGlyZWN0b3J5IGVycm9yOm5p
bF07CisgICAgW2ZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOndlYmtpdElmcmFtZURh
dGFiYXNlRGlyZWN0b3J5VjEgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291
cmNlRGF0YWJhc2VGaWxlIHRvVVJMOndlYmtpdElmcmFtZURhdGFiYXNlRmlsZVYxIGVycm9yOm5p
bF07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgICAgIGxvYWRU
ZXN0UGFnZUluV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBAImRhdGFiYXNlIGV4aXN0cyAtIGdldCBp
dGVtIHN1Y2Nlc3M6IFRlc3RWYWx1ZSIpOworICAgIH0KKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vi
c2l0ZURhdGFTdG9yZV0gX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzXTsKKyAgICAvLyBXYWl0IHNv
bWUgdGltZSBzbyBwcm9jZXNzIGlzIGFjdHVhbGx5IGtpbGxlZCBhbmQgZGF0YWJhc2VzIGFyZSBj
bG9zZWQuCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41KTsKKyAgICAvLyBFbnN1
cmUgb3JpZ2lucyBhcmUgc3dpdGNoZWQuCisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZp
bGVFeGlzdHNBdFBhdGg6d2Via2l0T3JpZ2luRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUo
W2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0SWZyYW1lT3JpZ2luRmlsZS5wYXRo
XSk7CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmlmcmFt
ZVdlYktpdE9yaWdpbkZpbGUucGF0aF0pOworCisgICAgLy8gVGVzdCB3aGVuIGRhdGFiYXNlIGZp
bGVzIHN0YXJ0IGF0IFtJbmRleGVkREJEaXJlY3RvcnldL3YwL1tUb3BPcmlnaW5dL1tPcGVuaW5n
T3JpZ2luXS8uCisgICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNlRGlyZWN0b3J5VjAgPSBb
aWRiRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYwL2h0dHBfd2Via2l0
Lm9yZ18wL2lmcmFtZV9fMC9JbmRleGVkREJUaGlyZFBhcnR5RnJhbWVIYXNBY2Nlc3MiXTsKKyAg
ICBOU1VSTCAqd2Via2l0SWZyYW1lRGF0YWJhc2VGaWxlVjAgPSBbd2Via2l0SWZyYW1lRGF0YWJh
c2VEaXJlY3RvcnlWMCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3Fs
aXRlMyJdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6aWRiRGlyZWN0b3J5IGVy
cm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOndlYmtpdElm
cmFtZURhdGFiYXNlRGlyZWN0b3J5VjAgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBh
dHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJM
OnJlc291cmNlRGF0YWJhc2VGaWxlIHRvVVJMOndlYmtpdElmcmFtZURhdGFiYXNlRmlsZVYwIGVy
cm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDp3ZWJraXRJZnJhbWVP
cmlnaW5GaWxlIGVycm9yOm5pbF07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgICAgIGxvYWRUZXN0UGFnZUluV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBAImRhdGFi
YXNlIGV4aXN0cyAtIGdldCBpdGVtIHN1Y2Nlc3M6IFRlc3RWYWx1ZSIpOworICAgIH0KKyAgICBb
W2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNz
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjUpOworICAgIEVYUEVDVF9UUlVF
KFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOndlYmtpdElmcmFtZURhdGFiYXNlRmlsZVYx
LnBhdGhdKTsKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp3
ZWJraXRJZnJhbWVPcmlnaW5GaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6aWZyYW1lV2ViS2l0T3JpZ2luRmlsZS5wYXRoXSk7CisKKyAg
ICAvLyBUZXN0IHdoZW4gZGF0YWJhc2UgZmlsZXMgc3RhcnQgYXQgW0luZGV4ZWREQkRpcmVjdG9y
eV0vW1RvcE9yaWdpbl0vW09wZW5pbmdPcmlnaW5dLy4KKyAgICBOU1VSTCAqYW5jaWVudFdlYmtp
dElmcmFtZURhdGFiYXNlRGlyZWN0b3J5ID0gW2lkYkRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCIvaHR0cF93ZWJraXQub3JnXzAvaWZyYW1lX18wL0luZGV4ZWREQlRoaXJk
UGFydHlGcmFtZUhhc0FjY2VzcyJdOworICAgIE5TVVJMICphbmNpZW50V2Via2l0SWZyYW1lRGF0
YWJhc2VGaWxlID0gW2FuY2llbnRXZWJraXRJZnJhbWVEYXRhYmFzZURpcmVjdG9yeSBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIuc3FsaXRlMyJdOworICAgIFtmaWxlTWFu
YWdlciByZW1vdmVJdGVtQXRVUkw6aWRiRGlyZWN0b3J5IGVycm9yOm5pbF07CisgICAgW2ZpbGVN
YW5hZ2VyIGNyZWF0ZURpcmVjdG9yeUF0VVJMOmFuY2llbnRXZWJraXRJZnJhbWVEYXRhYmFzZURp
cmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2VyIGNvcHlJdGVtQXRVUkw6cmVzb3VyY2VEYXRhYmFz
ZUZpbGUgdG9VUkw6YW5jaWVudFdlYmtpdElmcmFtZURhdGFiYXNlRmlsZSBlcnJvcjpuaWxdOwor
ICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6d2Via2l0SWZyYW1lT3JpZ2luRmlsZSBl
cnJvcjpuaWxdOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAg
ICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBleGlzdHMg
LSBnZXQgaXRlbSBzdWNjZXNzOiBUZXN0VmFsdWUiKTsKKyAgICB9CisgICAgW1tjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41KTsKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFn
ZXIgZmlsZUV4aXN0c0F0UGF0aDp3ZWJraXRJZnJhbWVEYXRhYmFzZUZpbGVWMS5wYXRoXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0SWZyYW1l
T3JpZ2luRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhp
c3RzQXRQYXRoOmlmcmFtZVdlYktpdE9yaWdpbkZpbGUucGF0aF0pOworfQorCiBzdGF0aWMgY29u
c3QgY2hhciogd29ya2VyQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIHRyeSB7CiAgICAgdmFyIHJl
cXVlc3QgPSBpbmRleGVkREIub3BlbignSW5kZXhlZERCVGhpcmRQYXJ0eVdvcmtlckhhc0FjY2Vz
cycpOwpAQCAtNDU2LDE4ICs1NDUsMTggQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQkdldERh
dGFiYXNlcykKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpnZXREYXRhYmFzZXNTdHJpbmcg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9hcHBsZS5jb20iXV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIEVYUEVDVF9XS19TVFJFUShAImRhdGFi
YXNlczogW3tcIm5hbWVcIjpcIkluZGV4ZWREQkdldERhdGFiYXNlc1wiLFwidmVyc2lvblwiOjF9
XSIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZGF0
YWJhc2VzOiBbe1wibmFtZVwiOlwiSW5kZXhlZERCR2V0RGF0YWJhc2VzXCIsXCJ2ZXJzaW9uXCI6
MX1dIiwgW2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OkAibG9hZEZyYW1lKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIEVYUEVDVF9XS19TVFJFUShAImNoaWxkIGZy
YW1lIGRhdGFiYXNlczogW10iLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVD
VF9XS19TVFJFUShAImNoaWxkIGZyYW1lIGRhdGFiYXNlczogW10iLCBbZ2V0TmV4dE1lc3NhZ2Uo
KSBib2R5XSk7CiAKICAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFtzZWNvbmRXZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ3
ZWJraXQ6Ly8iXV1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJtYWluIGZyYW1lIGRhdGFiYXNlczogW10iLCBbbGFzdFNjcmlwdE1lc3Nh
Z2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIm1haW4gZnJhbWUgZGF0YWJhc2VzOiBb
XSIsIFtnZXROZXh0TWVzc2FnZSgpIGJvZHldKTsKIAogICAgIC8vIEdldHRpbmcgZGF0YWJhc2Vz
IHNob3VsZCBub3QgY3JlYXRlIGZpbGVzIG9uIGRpc2suCiAgICAgTlNVUkwgKmlkYkRpcmVjdG9y
eVVSTCA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL2luZGV4ZWRkYi1wZXJzaXN0ZW5jZS10aGlyZC1wYXJ0eS5zcWxpdGUzIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9pbmRleGVkZGItcGVyc2lzdGVu
Y2UtdGhpcmQtcGFydHkuc3FsaXRlMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjljMGJlMzQ4ZjdmNDI4MzM2NDIz
YWJiOGY5ZDhjMjI3YjVhNTk5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3MzcyOAp6Y21lSShQ
akF+fjlLZGxxUExybHQ9Q202R3NmU3JpKWYmPTRHbmdofDZ8X3lkU3hie0hPfi1jWCt7Vil+KHF4
Tz4KenU/aXVQIVR8fTF5IylAdWdOWHk7NE5NJTY1TFlDUTlNQ3YmODMhSWFaV2dDYWxMPHs/PkRO
alhgPzNBX2BGKTx9CnpAbCpmRj5lWER1SG5tJnojK0c0Z1olYzcwNVJnOTlHKWE7STslYEZ5P00r
Y0o2V20pNi0qVSUldWkxZH49MH0lZgp6KFo4aGVQKmhVaUlRfV5IYiFfdDMhfDJ+KktTekl6ZWlp
d0I/QlZGZSRoUSRBSlE5a0FlKElHQz0/RVp6MDBKKmkKenBte01LUE1rUi0/X1JLdGpqRE9ZK19f
fWQlIVhtdDg8dVpqZTZnNkZGSi1tVHs2YTNQYEJySnVeXkg1YHJvQWU1CnpHV0NxNj1TJGczKmBr
JiZsKGhVPkV+Z2RwK0Z+S1VsK3piVytTMHQ5KTdKOSgpd1FmSXlfajllJWBhd1d3OVZ+Qwp6IT5y
bGoyPm1sa3pCP1hERVQ1NjNPMDhAQHU8bGpHdShvYiYralZ6Ji1CLSU+dn5PYEBfWj5CeUlDVjw/
dks2YFIKejxlPUFYKSFRPzFVJlFUWFpNc3RLVSRQbWtXXjk+U0RTS1RRXm0zVGRvKWQwSGBgRnhC
RzM/dmdMYXdsSVNqSDc9Cnp0eWEwV1o0T2U+dD9qQl4kPTIrfkFtWTJQOX02Y15EZng+fS0zQytX
c0NqfGN3SFdnZWNDR1k1dGB6bTxgUWk9agp6Tzc9JFl1bnVaQlBKMD4leVo2cTZubVA/anVXan14
UDBrJDtDOWJBPUhPbnJDXj5iWWI+Ump4M2MyOVRoZSFPe2gKeiUmbnJgYWtxLX0ldEZReGJCMU5R
P2MyVz9eO0o+VnclVzk/PkM9YzBhJjMzIWAka28/IU5ZcSZheFF2VXhMcmtCCnpQakA5OFloRFB1
OWVIPW80UkBoaC0mbT90T3srYUs+STw9KnRXOXItUDFsT0tLSUo8b3oqZWlmQkBVREMtXzNodgp6
a1c1RUhpUmBJZiY3QHQ+Xj5nam52R25MKnlRSkhATTh4UFo+V209R1MzfXslPkM8eDRZQzlGcCYz
ZEVrTl9uJjQKemVPQkhJLSR9ayR8RD1CfW45JkNGTypTSlY7bCVxPmFgT1pDd0MkZDB5YCMzaXlt
UE5PTDNfeXx1YXRUfGxmQUM+CnoqdWZjSUkjPkIzJkA7WjF1WG1oR3ZLOTt7LVYjTjVyUDNNP28q
aT52QXgzJUAhcmdUTDthZ2RYMUIqXklxcSR1cAp6eCUtfEhQRTFZdE1qPGFxSHkzWHs9JlAyX0hS
M0dsbVVNdCYqQjl8MTxGczRTUl98Q1c8WnttTkZGTjAkcilWIygKej1pUkNQWSM3PEFpdkE1T2N7
M3BGQ2dvPCNCeythaEB6fWlvSChKZjViMzNQIXl5Ym4oTCkyMlR4aGpWZmxhdW85CnpYS3RWSUh1
YiYmekRoWWJvQm1QITJqb05rdjFxdEd5UTdqajJIMGR3b0RGMzRTNG4pQjVJX0l7MVEwKn4wUiN8
MAp6MDA5SUxLO1kjT05YYTlTXlJ0cTRHYzN3bmwxI354WjBVO2wtalQqY04/aENwe0pkbVpfQkgy
KnRkazxFZUBOb1AKemdhODV2QWI8YkAycTFzfTB0Z18wMDBKKyF6LXooQ2BOJTxjMWYxdnA7LSFC
azFRMCp+MFIjfDAwMDlJTEttWSoqCno1RXg8cz1sTVVefDNoNUNnb1hlRDJxMXN9MHRnXzAwMElh
Z2ZQZkktYGshV2kwMElhZ2ZCKnNyQWI8YkAycTF2Swp6QEMpJCV8TTFyXzVoOCM5MHRnXzAwMElh
Z2ZCKnNyQWkodU1aMiRvVDVJX0l7MVEwKn4wUiN8MDBEPDhiO1FqeU0KenVWVyVhMDA5SUxLbVkq
KjVJX0l7MVEwLWc+d25xKzB0Z18wMDBJYWdmQipzckFiPGJAISFPe3h7fnVKcGs8PnJjCnpBSnAl
fTM9O3dmQWI8YkAycTFzfTB0Z18wMDBJY1NWMWJpQzwqZDRGSlNjNDNGKm9nMXlXVE1NTyF8YlBx
fH1VSQp6OHlrallVTmFrM3JDditWMjkmQTdVU2koWkdXQTs3ZHw7THszI0hxWU10UXwoKmdIIU5r
JCV+Kjx+S0pAJVFfKjgKelk/ZSppRDJ1SDJ2VD5nTzJoflRDYGtWUyNlV1g1bCEyeXl6MHRnXzAw
MElhZ2ZCKnNyQWI8YkAybjs1MFFhTE1rCnoteTtaflAqVT5WLTJtXn1VV3FHSD9LSX5PTDEwMmpN
WT9WUElNNHJPXj9PTnRtPUhoITBSI3wwMDA5SUxLbVkqKgp6NUoyR25CJXNTOVF0SkxfJCtZWl9I
dzhCQ1J4NmYwSk50X3FEQV94QSZBMm9namtrJnwlVTwhN3R9ckg/PWxgPCQKemswZEAhMnExc30w
dGdfMDAwSWFnZkIqc3JBVFdkaWlWfSZtdUslQSV5IWsoYjYtLUQ3QWI8YkAycTFzfTB0Z18wCnow
MEt1LXo8S3xfPiFrdGJ7ZVFgT09XPGd0NUgkaF9BYjxiQDJxMXN9MHRnXzAwMFA0PShFOSFWUSVR
WH57SUw9dAp6MHRnXzAwMElhZ2ZCKnNyQWI8YkBNXkhlS21CPVcrfDM4OD9Qc2opJGZCKnNyQWI8
YkAycTFzfTAhSz1+YFRoVUQKRCNLeDF8CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453225</attachid>
            <date>2022-02-25 09:48:09 -0800</date>
            <delta_ts>2022-02-25 10:07:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237044-20220225094808.patch</filename>
            <type>text/plain</type>
            <size>21408</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBiNzQwZjczYzRhMzQw
YjNkZjEzOGZkM2NjM2IzZWY1NTZiNDMzYi4uNzBmYTAzMmY2MTc1MmQ3YjcyYzVjZjA5ODA4ZmI3
MGIzODcyOTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTI1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0Mjcy
OSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHIyNDI3MjksIHdl
IHN3YXBwZWQgdG9wIG9yaWdpbiBhbmQgb3BlbmluZyBvcmlnaW4gaW4gbV9vcmlnaW4gKGl0IGlz
IGEgQ2xpZW50T3JpZ2luKSBvZiBJREJEYXRhYmFzZUlkZW50aWZpZXIuIAorICAgICAgICBUaGlz
IGNhbiBjYXVzZSB0cm91YmxlIHNpbmNlIEluZGV4ZWREQiBvcGVyYXRpb24gd2lsbCBiZSBwcm9j
ZXNzZWQgYnkgd3JvbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXIgCisgICAgICAgIChPcmlnaW5TdG9y
YWdlTWFuYWdlciBpcyBpZGVudGlmaWVkIGJ5IENsaWVudE9yaWdpbikuIFRvIGZpeCB0aGlzIGlz
c3VlLCB3ZSBuZWVkIHRvIHN3YXAgaXQgYmFjay4KKworICAgICAgICBOZXcgdGVzdDogSW5kZXhl
ZERCLkluZGV4ZWREQlRoaXJkUGFydHlTdG9yYWdlTGF5b3V0CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZl
VG9Sb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6
ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UpOgorCiAyMDIyLTAyLTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tc2ltcGxlIENPUlMg
cHJlZmxpZ2h0IGZhaWxzIGR1ZSB0byBjYWNoZS1jb250cm9sIGhlYWRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4
ZDU3YTVmMmMzYjVlZmMyOWRiNjlkZDJmN2QwZTY5MTA5NjFjMTZjLi5kNjBjMDQwNDhjMWYxZDZk
YThjY2I4ZmNiNThhYzkxODkyZmVmZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIy
LTAyLTI1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jl
c3Npb24ocjI0MjcyOSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNv
cnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NzA0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1h
bmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHNv
ZnQgbGlua2luZyBkZWNsYXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IDU1NDIxZDQx
NWQzZGU5OWFiMDdjY2Y3NDY5OGZlN2E3NTNhNmU3MTEuLjUzNTUwZmE3ZDlhMTU5ZmUxZjlmN2U3
NzZlM2RkZTZmYTUyN2Q0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJh
c2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBtYWluRnJhbWVPcmlnaW4s
IGJvb2wgaXNUcmFuc2llbnQpCiAgICAgOiBtX2RhdGFiYXNlTmFtZShkYXRhYmFzZU5hbWUpCi0g
ICAgLCBtX29yaWdpbiB7IFdURk1vdmUob3BlbmluZ09yaWdpbiksIFdURk1vdmUobWFpbkZyYW1l
T3JpZ2luKSB9CisgICAgLCBtX29yaWdpbiB7IFdURk1vdmUobWFpbkZyYW1lT3JpZ2luKSwgV1RG
TW92ZShvcGVuaW5nT3JpZ2luKSB9CiAgICAgLCBtX2lzVHJhbnNpZW50KGlzVHJhbnNpZW50KQog
ewogICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcgaXMgYSB2YWxpZCBkYXRhYmFzZSBuYW1lLCBidXQg
YSBudWxsIHN0cmluZyBpcyBub3QuCkBAIC01NSwxOSArNTUsMTkgQEAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3Ry
aW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
ZykgY29uc3QKIHsKLSAgICByZXR1cm4gZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCht
X29yaWdpbi50b3BPcmlnaW4sIG1fb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwg
dmVyc2lvblN0cmluZyk7CisgICAgcmV0dXJuIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jv
b3QobV9vcmlnaW4sIHJvb3REaXJlY3RvcnksIHZlcnNpb25TdHJpbmcpOwogfQogCi1TdHJpbmcg
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCitTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpk
YXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
ZykKIHsKICAgICBTdHJpbmcgdmVyc2lvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCB2ZXJzaW9uU3RyaW5nKTsKLSAgICBTdHJp
bmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHZlcnNpb25EaXJlY3RvcnksIHRvcExldmVsT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHZlcnNpb25EaXJlY3RvcnksIG9yaWdpbi50b3BPcmlnaW4uZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogCiAgICAgLy8gSWYgdGhlIG9wZW5pbmcgb3JpZ2luIGFuZCBtYWlu
IGZyYW1lIG9yaWdpbnMgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBwYXJ0aXRpb25pbmcuCi0g
ICAgaWYgKG9wZW5pbmdPcmlnaW4gPT0gdG9wTGV2ZWxPcmlnaW4pCisgICAgaWYgKG9yaWdpbi50
b3BPcmlnaW4gPT0gb3JpZ2luLmNsaWVudE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFt
ZURpcmVjdG9yeTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBvcGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1h
aW5GcmFtZURpcmVjdG9yeSwgb3JpZ2luLmNsaWVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IGVhZWYyNTQ1
NjkzMzk1NjE0ZTFjMjE4N2ZmNGNhYjY0YWUxM2U1N2YuLmY4M2YxOTVhNTZkZWZkMmIzZjBlY2Q4
ZTlkNjcxNGQyOTQwZDBhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzVHJhbnNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYW5zaWVu
dDsgfQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmc9InYxIikg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiBy
b290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25z
dCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvblN0cmluZyk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcAppbmRleCA0YmFkNDQyYjFiM2E5YTQxNzg1OTA0MmY4MTY1NzdlMDdiMTNiYThhLi43
N2RmNjY3ZDQwOTlkNmZiN2Q4NWEwNTVjMjAwNGU2N2IyYWI1YjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAt
NTMwLDEwICs1MzAsMTAgQEAgdm9pZCBJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRW
ZXJzaW9ucyhJREJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb24KICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgb2xkRGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKKyAgICBhdXRvIG9sZERpcmVjdG9yeSA9IElE
QkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmln
aW4sIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKICAgICBnZXREYXRhYmFzZU5hbWVB
bmRWZXJzaW9uRnJvbU9yaWdpbkRpcmVjdG9yeShvbGREaXJlY3RvcnksIHZpc2l0ZWREYXRhYmFz
ZVBhdGhzLCByZXN1bHQpOwogCi0gICAgU3RyaW5nIGRpcmVjdG9yeSA9IElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2lu
LCBvcmlnaW4uY2xpZW50T3JpZ2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7Cisg
ICAgYXV0byBkaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7
CiAgICAgZ2V0RGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21PcmlnaW5EaXJlY3RvcnkoZGlyZWN0
b3J5LCB2aXNpdGVkRGF0YWJhc2VQYXRocywgcmVzdWx0KTsKIAogICAgIGF1dG8gY29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbk1hcC5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwpAQCAt
NzU4LDggKzc1OCw4IEBAIHVpbnQ2NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmlu
ZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJiBvCiB7CiAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJ
REJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3Jp
Z2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYwIl9z
dHIpOwotICAgIGF1dG8gbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2lu
LCBvcmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjEiX3N0cik7CisgICAgYXV0
byBvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYwIl9z
dHIpOworICAgIGF1dG8gbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4sIHJvb3REaXJl
Y3RvcnksICJ2MSJfc3RyKTsKICAgICByZXR1cm4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRh
YmFzZXNTaXplRm9yRGlyZWN0b3J5KG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkpICsgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG5ld1ZlcnNpb25Pcmln
aW5EaXJlY3RvcnkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3NWMwY2ZiYjEwNDQ0
N2M5NWZmNTY4ZmVjMTE5OTgwNDMwYWNlYjNiLi5iYTZlNDVmMWJkM2JjM2FmY2E4MGQzZjgzZjdm
NWQzY2Y2M2Q4NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVx
dWVzdERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVG
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4K
QEAgLTQ0LDEwICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBtaWdyYXRlT3JpZ2luRGF0YShjb25zdCBT
dHJpbmcmIG9sZE9yaWdpbkRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBuZQogICAgICAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3T3JpZ2luRGlyZWN0b3J5KTsKIAogICAgIGZv
ciAoYXV0byYgbmFtZSA6IGZpbGVOYW1lcykgeworICAgICAgICAvLyBUaGlzIGlzIGFuIG9yaWdp
biBkaXJlY3RvcnkgZm9yIHRoaXJkLXBhcnR5IGRhdGEuCisgICAgICAgIGlmIChhdXRvIG9yaWdp
biA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihu
YW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIFN0cmluZyBjaGlsZFBhdGgg
PSBGaWxlU3lzdGVtOjpyZWFsUGF0aChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQob2xkT3JpZ2luRGlyZWN0b3J5LCBuYW1lKSk7CiAgICAgICAgIFN0cmluZyBuZXdOYW1lID0g
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZShXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVjb2RlRGF0YWJhc2VOYW1lKG5h
bWUpKTsKICAgICAgICAgYXV0byBuZXdDaGlsZFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobmV3T3JpZ2luRGlyZWN0b3J5LCBuZXdOYW1lKTsKLSAgICAgICAgRmls
ZVN5c3RlbTo6bW92ZUZpbGUoY2hpbGRQYXRoLCBuZXdDaGlsZFBhdGgpOworCisgICAgICAgIC8v
IERvIG5vdCBvdmVyd3JpdGUgZXhpc3RpbmcgZGF0YWJhc2UgZmlsZXMgd2l0aCB0aGUgc2FtZSBu
YW1lLgorICAgICAgICAvLyBUaGlzIG1heSBoYXBwZW4gYmVjYXVzZSB3ZSByZXZlcnNlIG9yaWdp
bnMgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NC4KKyAg
ICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV3Q2hpbGRQYXRoKSkKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KGNoaWxkUGF0aCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1vdmVGaWxlKGNoaWxkUGF0aCwgbmV3
Q2hpbGRQYXRoKTsKICAgICB9CiAKICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShvbGRPcmlnaW5EaXJlY3RvcnkpOwpAQCAtNTgsOCArNjksOCBAQCBTdHJpbmcgSURCU3RvcmFn
ZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiByb290RGly
ZWN0b3J5LAogICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKLSAgICBTdHJpbmcgb3JpZ2luRGlyZWN0b3J5ID0gV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9y
aWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MSIp
OwotICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdp
biwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYwIik7CisgICAgYXV0byBv
cmlnaW5EaXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNl
RGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLCByb290RGlyZWN0b3J5LCAidjEiKTsKKyAg
ICBhdXRvIG9sZE9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmll
cjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4sIHJvb3REaXJlY3Rvcnks
ICJ2MCIpOwogICAgIG1pZ3JhdGVPcmlnaW5EYXRhKG9sZE9yaWdpbkRpcmVjdG9yeSwgb3JpZ2lu
RGlyZWN0b3J5KTsKIAogICAgIHJldHVybiBvcmlnaW5EaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTAxNGQ4NzIyYjU0ODdhMDYw
Y2YzZTRkMjJlN2RmOTVhYzg1NDc3Zi4uMGEwYTgzZDk2ZGMwZjFiN2VhZDg2MDcwMjY1ZGQzNDFm
ZjJmNzEwOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0MjcyOSk6IG1fb3JpZ2luIGluIElEQkRh
dGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKC1bSW5kZXhlZERCTWVzc2FnZUhhbmRs
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorICAg
ICAgICAoVEVTVCk6CisKIDIwMjItMDItMjQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtQeXRob24gM10gSW52b2tlIHZhbGlkYXRlLWNvbW1pdHRlci1s
aXN0cyB3aXRoIFB5dGhvbiAzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCA0ZjBhOGVj
OTQ0NTQ4Y2E2Yzc4NzAxNWM2YjZkOTUwODU4ODM4OGIzLi44ZGQwZGM4ZTBhMDY1NzI5ODRkM2Rh
ZjA2MzBlYmRiMjczMWI2ZmU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KQEAgLTI5LDEy
ICsyOSwxNCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3Qu
aCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCi0jaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZi5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTQ3LDcgKzQ5LDcgQEAKIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250
ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVz
c2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQogewogICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IHRydWU7Ci0gICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdlOworICAgIHNjcmlw
dE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKIH0KIAogQGVuZApAQCAtNjUsMTEgKzY3LDExIEBA
IFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJQZXJzaXN0ZW5jZSkKIAogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlw
dE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzEgPSAoTlNT
dHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBzdHJpbmcxID0gKE5TU3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9keV07CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJp
bmcyID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOworICAgIFJldGFpblB0
cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHld
OwogCiAgICAgLy8gRGl0Y2ggdGhpcyB3ZWIgdmlldyAoZGl0Y2hpbmcgaXRzIHdlYiBwcm9jZXNz
KQogICAgIHdlYlZpZXcgPSBuaWw7CkBAIC04NSw3ICs4Nyw3IEBAIFRFU1QoSW5kZXhlZERCLCBJ
bmRleGVkREJQZXJzaXN0ZW5jZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzMgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmczID0gKE5TU3Ry
aW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9keV07CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJV
cGdyYWRlTmVlZGVkIiwgc3RyaW5nMS5nZXQoKSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKEAiU3Vj
Y2VzcyIsIHN0cmluZzIuZ2V0KCkpOwpAQCAtMTA4LDExICsxMTAsMTEgQEAgVEVTVChJbmRleGVk
REIsIEluZGV4ZWREQlBlcnNpc3RlbmNlUHJpdmF0ZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzEgPSAoTlNTdHJpbmcg
KilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJp
bmcxID0gKE5TU3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9keV07CiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0g
KE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOworICAgIFJldGFpblB0cjxOU1N0
cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAg
ICAgYXV0byB3ZWJWaWV3UGlkMSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAg
ICAgLy8gRGl0Y2ggdGhpcyB3ZWIgdmlldyAoZGl0Y2hpbmcgaXRzIHdlYiBwcm9jZXNzKQpAQCAt
MTI2LDcgKzEyOCw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJQZXJzaXN0ZW5jZVByaXZh
dGUpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBzdHJpbmczID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMyA9IChOU1N0cmluZyAqKVtnZXROZXh0TWVz
c2FnZSgpIGJvZHldOwogCiAgICAgYXV0byB3ZWJWaWV3UGlkMiA9IFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl07CiAgICAgRVhQRUNUX05FKHdlYlZpZXdQaWQxLCB3ZWJWaWV3UGlkMik7
CkBAIC0yNDAsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgbG9hZFRlc3RQYWdlSW5XZWJWaWV3KFdL
V2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKmV4cGVjdGVkUmVzdWx0KQogICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZ1BlcnNpc3RlbmNlIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlID0gZmFsc2U7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkUmVzdWx0LCAoTlNT
dHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9XS19TVFJFUShl
eHBlY3RlZFJlc3VsdCwgKE5TU3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogfQog
CiBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNzKQpAQCAt
MzAyLDcgKzMwNCw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJUaGlyZFBhcnR5RGF0YVJl
bW92YWwpCiAgICAgW3NlY29uZFdlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImlmcmFtZTovLyJdXV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIEVYUEVDVF9XS19TVFJFUSggQCJkYXRhYmFz
ZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIsIChOU1N0cmluZyAqKVtsYXN0U2NyaXB0
TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCBAImRhdGFiYXNlIGlzIGNyZWF0
ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIiwgKE5TU3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9k
eV0pOwogCiAgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7CiAgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6d2Vic2l0ZURh
dGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJl
Y29yZCAqPiAqcmVjb3JkcykgewpAQCAtMzIyLDYgKzMyNCw1MCBAQCBURVNUKEluZGV4ZWREQiwg
SW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAgIGxvYWRUZXN0UGFnZUluV2ViVmll
dyh0aGlyZFdlYlZpZXcuZ2V0KCksIEAiZGF0YWJhc2UgaXMgY3JlYXRlZCAtIHB1dCBpdGVtIHN1
Y2Nlc3MiKTsKIH0KIAorVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlRoaXJkUGFydHlTdG9yYWdl
TGF5b3V0KQoreworICAgIE5TVVJMICpyZXNvdXJjZVNhbHQgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiZ2VuZXJhbC1zdG9yYWdlLWRpcmVjdG9yeSIgd2l0aEV4dGVu
c2lvbjpAInNhbHQiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Cisg
ICAgTlNVUkwgKmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSS9DdXN0
b21XZWJzaXRlRGF0YS9EZWZhdWx0IiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0Rp
cmVjdG9yeTpZRVNdOworICAgIE5TVVJMICp3ZWJraXRPcmlnaW5GaWxlID0gW2dlbmVyYWxTdG9y
YWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkVBTzY2czhKdkNXTm40
RDNZUXV0NXBYZmlHRl9VWE5aR3ZNR042YUtJTGcvRUFPNjZzOEp2Q1dObjREM1lRdXQ1cFhmaUdG
X1VYTlpHdk1HTjZhS0lMZy9vcmlnaW4iXTsKKyAgICBOU1VSTCAqd2Via2l0SWZyYW1lT3JpZ2lu
RmlsZSA9IFtnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJFQU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL3Z1ZHZiTWxL
WGoxbTZSaWJuVnZjOFBkQWRjWFpzTkU2T05fQWw3eXFPc2cvb3JpZ2luIl07CisgICAgTlNVUkwg
KmlmcmFtZVdlYktpdE9yaWdpbkZpbGUgPSBbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidnVkdmJNbEtYajFtNlJpYm5WdmM4UGRBZGNYWnNORTZP
Tl9BbDd5cU9zZy9FQU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhOWkd2TUdONmFLSUxnL29y
aWdpbiJdOworICAgIE5TVVJMICppZGJEaXJlY3RvcnkgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJL0N1c3Rv
bVdlYnNpdGVEYXRhL0luZGV4ZWREQiIgc3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNE
aXJlY3Rvcnk6WUVTXTsKKyAgICBOU1N0cmluZyAqaGFzaGVkRGF0YWJhc2VOYW1lID0gV2ViQ29y
ZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JGaWxlTmFtZSgiSW5kZXhlZERCVGhp
cmRQYXJ0eUZyYW1lSGFzQWNjZXNzIik7CisgICAgTlNVUkwgKndlYmtpdElmcmFtZURhdGFiYXNl
RmlsZSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHBhdGhXaXRoQ29tcG9uZW50
czpAW2lkYkRpcmVjdG9yeS5wYXRoLCBAInYxL2h0dHBfd2Via2l0Lm9yZ18wL2lmcmFtZV9fMC8i
LCBoYXNoZWREYXRhYmFzZU5hbWUsIEAiSW5kZXhlZERCLnNxbGl0ZTMiXV1dOworICAgIE5TRmls
ZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOwor
ICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkg
ZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRVUkw6Z2VuZXJh
bFN0b3JhZ2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdlciBjb3B5SXRlbUF0VVJMOnJlc291
cmNlU2FsdCB0b1VSTDpbZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAic2FsdCJdIGVycm9yOm5pbF07CisgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0
ZW1BdFVSTDppZGJEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
YXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlkYkRp
cmVjdG9yeTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS5nZW5lcmFs
U3RvcmFnZURpcmVjdG9yeSA9IGdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFtjb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERC
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5h
bWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tU
ZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtzY2hlbWVIYW5kbGVyIHNl
dFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVU
YXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNw
b25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQv
aHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlmcmFtZUJ5dGVzUGVy
c2lzdGVuY2UgbGVuZ3RoOnN0cmxlbihpZnJhbWVCeXRlc1BlcnNpc3RlbmNlKV1dOworICAgICAg
ICBbdGFzayBkaWRGaW5pc2hdOworICAgIH1dOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpZnJhbWUiXTsK
KyAgICAvLyBBbGxvd2luZyB0aGlyZC1wYXJ0eSBmcmFtZSB0byBzdG9yZSBkYXRhIG9uIGRpc2su
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KHByZWZlcmVuY2VzLCBrV0tBbGxvd0FsbFN0b3JhZ2UpOworCisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcod2ViVmlldy5nZXQoKSwgQCJkYXRhYmFzZSBpcyBj
cmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIpOworCisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0T3JpZ2luRmlsZS5wYXRoXSk7CisgICAgRVhQRUNU
X1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0SWZyYW1lT3JpZ2luRmls
ZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRo
OmlmcmFtZVdlYktpdE9yaWdpbkZpbGUucGF0aF0pOworICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFu
YWdlciBmaWxlRXhpc3RzQXRQYXRoOndlYmtpdElmcmFtZURhdGFiYXNlRmlsZS5wYXRoXSk7Cit9
CisKIHN0YXRpYyBjb25zdCBjaGFyKiB3b3JrZXJCeXRlcyA9IFIiVEVTVFJFU09VUkNFKAogdHJ5
IHsKICAgICB2YXIgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKCdJbmRleGVkREJUaGlyZFBhcnR5
V29ya2VySGFzQWNjZXNzJyk7CkBAIC00NTYsMTggKzUwMiwxOCBAQCBURVNUKEluZGV4ZWREQiwg
SW5kZXhlZERCR2V0RGF0YWJhc2VzKQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmdldERh
dGFiYXNlc1N0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2FwcGxl
LmNvbSJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVz
c2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKEAiZGF0YWJhc2VzOiBbe1wibmFtZVwiOlwiSW5kZXhlZERCR2V0RGF0YWJhc2VzXCIs
XCJ2ZXJzaW9uXCI6MX1dIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJkYXRhYmFzZXM6IFt7XCJuYW1lXCI6XCJJbmRleGVkREJHZXREYXRhYmFzZXNc
IixcInZlcnNpb25cIjoxfV0iLCBbZ2V0TmV4dE1lc3NhZ2UoKSBib2R5XSk7CiAKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJsb2FkRnJhbWUoKSIgY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKEAiY2hpbGQgZnJhbWUgZGF0YWJhc2VzOiBbXSIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiY2hpbGQgZnJhbWUgZGF0YWJhc2VzOiBbXSIsIFtn
ZXROZXh0TWVzc2FnZSgpIGJvZHldKTsKIAogICAgIGF1dG8gc2Vjb25kV2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3NlY29uZFdl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAIndlYmtpdDovLyJdXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZh
bHNlOwotICAgIEVYUEVDVF9XS19TVFJFUShAIm1haW4gZnJhbWUgZGF0YWJhc2VzOiBbXSIsIFts
YXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAibWFpbiBmcmFt
ZSBkYXRhYmFzZXM6IFtdIiwgW2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogCiAgICAgLy8gR2V0
dGluZyBkYXRhYmFzZXMgc2hvdWxkIG5vdCBjcmVhdGUgZmlsZXMgb24gZGlzay4KICAgICBOU1VS
TCAqaWRiRGlyZWN0b3J5VVJMID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453227</attachid>
            <date>2022-02-25 10:07:27 -0800</date>
            <delta_ts>2022-02-25 15:46:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237044-20220225100726.patch</filename>
            <type>text/plain</type>
            <size>20916</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBiNzQwZjczYzRhMzQw
YjNkZjEzOGZkM2NjM2IzZWY1NTZiNDMzYi4uNzBmYTAzMmY2MTc1MmQ3YjcyYzVjZjA5ODA4ZmI3
MGIzODcyOTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTI1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0Mjcy
OSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHIyNDI3MjksIHdl
IHN3YXBwZWQgdG9wIG9yaWdpbiBhbmQgb3BlbmluZyBvcmlnaW4gaW4gbV9vcmlnaW4gKGl0IGlz
IGEgQ2xpZW50T3JpZ2luKSBvZiBJREJEYXRhYmFzZUlkZW50aWZpZXIuIAorICAgICAgICBUaGlz
IGNhbiBjYXVzZSB0cm91YmxlIHNpbmNlIEluZGV4ZWREQiBvcGVyYXRpb24gd2lsbCBiZSBwcm9j
ZXNzZWQgYnkgd3JvbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXIgCisgICAgICAgIChPcmlnaW5TdG9y
YWdlTWFuYWdlciBpcyBpZGVudGlmaWVkIGJ5IENsaWVudE9yaWdpbikuIFRvIGZpeCB0aGlzIGlz
c3VlLCB3ZSBuZWVkIHRvIHN3YXAgaXQgYmFjay4KKworICAgICAgICBOZXcgdGVzdDogSW5kZXhl
ZERCLkluZGV4ZWREQlRoaXJkUGFydHlTdG9yYWdlTGF5b3V0CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpJREJEYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZl
VG9Sb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6
ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkaXNrVXNhZ2UpOgorCiAyMDIyLTAyLTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tc2ltcGxlIENPUlMg
cHJlZmxpZ2h0IGZhaWxzIGR1ZSB0byBjYWNoZS1jb250cm9sIGhlYWRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4
ZDU3YTVmMmMzYjVlZmMyOWRiNjlkZDJmN2QwZTY5MTA5NjFjMTZjLi5kNjBjMDQwNDhjMWYxZDZk
YThjY2I4ZmNiNThhYzkxODkyZmVmZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIy
LTAyLTI1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jl
c3Npb24ocjI0MjcyOSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNv
cnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NzA0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Om1pZ3JhdGVPcmlnaW5EYXRhKToKKyAgICAgICAgKFdlYktpdDo6SURCU3RvcmFnZU1h
bmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3RvcnkpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIHNv
ZnQgbGlua2luZyBkZWNsYXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IDU1NDIxZDQx
NWQzZGU5OWFiMDdjY2Y3NDY5OGZlN2E3NTNhNmU3MTEuLjUzNTUwZmE3ZDlhMTU5ZmUxZjlmN2U3
NzZlM2RkZTZmYTUyN2Q0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJh
c2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBTZWN1cml0eU9yaWdpbkRh
dGEmJiBvcGVuaW5nT3JpZ2luLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBtYWluRnJhbWVPcmlnaW4s
IGJvb2wgaXNUcmFuc2llbnQpCiAgICAgOiBtX2RhdGFiYXNlTmFtZShkYXRhYmFzZU5hbWUpCi0g
ICAgLCBtX29yaWdpbiB7IFdURk1vdmUob3BlbmluZ09yaWdpbiksIFdURk1vdmUobWFpbkZyYW1l
T3JpZ2luKSB9CisgICAgLCBtX29yaWdpbiB7IFdURk1vdmUobWFpbkZyYW1lT3JpZ2luKSwgV1RG
TW92ZShvcGVuaW5nT3JpZ2luKSB9CiAgICAgLCBtX2lzVHJhbnNpZW50KGlzVHJhbnNpZW50KQog
ewogICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcgaXMgYSB2YWxpZCBkYXRhYmFzZSBuYW1lLCBidXQg
YSBudWxsIHN0cmluZyBpcyBub3QuCkBAIC01NSwxOSArNTUsMTkgQEAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3Ry
aW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
ZykgY29uc3QKIHsKLSAgICByZXR1cm4gZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdCht
X29yaWdpbi50b3BPcmlnaW4sIG1fb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwg
dmVyc2lvblN0cmluZyk7CisgICAgcmV0dXJuIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jv
b3QobV9vcmlnaW4sIHJvb3REaXJlY3RvcnksIHZlcnNpb25TdHJpbmcpOwogfQogCi1TdHJpbmcg
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25z
dCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpCitTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlmaWVyOjpk
YXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmlu
ZykKIHsKICAgICBTdHJpbmcgdmVyc2lvbkRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCB2ZXJzaW9uU3RyaW5nKTsKLSAgICBTdHJp
bmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHZlcnNpb25EaXJlY3RvcnksIHRvcExldmVsT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHZlcnNpb25EaXJlY3RvcnksIG9yaWdpbi50b3BPcmlnaW4uZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogCiAgICAgLy8gSWYgdGhlIG9wZW5pbmcgb3JpZ2luIGFuZCBtYWlu
IGZyYW1lIG9yaWdpbnMgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBwYXJ0aXRpb25pbmcuCi0g
ICAgaWYgKG9wZW5pbmdPcmlnaW4gPT0gdG9wTGV2ZWxPcmlnaW4pCisgICAgaWYgKG9yaWdpbi50
b3BPcmlnaW4gPT0gb3JpZ2luLmNsaWVudE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFt
ZURpcmVjdG9yeTsKIAotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBvcGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1h
aW5GcmFtZURpcmVjdG9yeSwgb3JpZ2luLmNsaWVudE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IGVhZWYyNTQ1
NjkzMzk1NjE0ZTFjMjE4N2ZmNGNhYjY0YWUxM2U1N2YuLmY4M2YxOTVhNTZkZWZkMmIzZjBlY2Q4
ZTlkNjcxNGQyOTQwZDBhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzVHJhbnNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYW5zaWVu
dDsgfQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3Qg
U3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmc9InYxIikg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4s
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiBy
b290RGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25z
dCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvblN0cmluZyk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8SURCRGF0YWJhc2VJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcAppbmRleCA0YmFkNDQyYjFiM2E5YTQxNzg1OTA0MmY4MTY1NzdlMDdiMTNiYThhLi43
N2RmNjY3ZDQwOTlkNmZiN2Q4NWEwNTVjMjAwNGU2N2IyYWI1YjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAt
NTMwLDEwICs1MzAsMTAgQEAgdm9pZCBJREJTZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRW
ZXJzaW9ucyhJREJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb24KICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoV1RGTW92ZSgqbmFtZUFuZFZlcnNpb24pKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgb2xkRGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9y
eVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4sIG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKKyAgICBhdXRvIG9sZERpcmVjdG9yeSA9IElE
QkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmln
aW4sIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKICAgICBnZXREYXRhYmFzZU5hbWVB
bmRWZXJzaW9uRnJvbU9yaWdpbkRpcmVjdG9yeShvbGREaXJlY3RvcnksIHZpc2l0ZWREYXRhYmFz
ZVBhdGhzLCByZXN1bHQpOwogCi0gICAgU3RyaW5nIGRpcmVjdG9yeSA9IElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2lu
LCBvcmlnaW4uY2xpZW50T3JpZ2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7Cisg
ICAgYXV0byBkaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgInYxIik7
CiAgICAgZ2V0RGF0YWJhc2VOYW1lQW5kVmVyc2lvbkZyb21PcmlnaW5EaXJlY3RvcnkoZGlyZWN0
b3J5LCB2aXNpdGVkRGF0YWJhc2VQYXRocywgcmVzdWx0KTsKIAogICAgIGF1dG8gY29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbk1hcC5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOwpAQCAt
NzU4LDggKzc1OCw4IEBAIHVpbnQ2NF90IElEQlNlcnZlcjo6ZGlza1VzYWdlKGNvbnN0IFN0cmlu
ZyYgcm9vdERpcmVjdG9yeSwgY29uc3QgQ2xpZW50T3JpZ2luJiBvCiB7CiAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJ
REJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3Jp
Z2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYwIl9z
dHIpOwotICAgIGF1dG8gbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4udG9wT3JpZ2lu
LCBvcmlnaW4uY2xpZW50T3JpZ2luLCByb290RGlyZWN0b3J5LCAidjEiX3N0cik7CisgICAgYXV0
byBvbGRWZXJzaW9uT3JpZ2luRGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbiwgcm9vdERpcmVjdG9yeSwgInYwIl9z
dHIpOworICAgIGF1dG8gbmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChvcmlnaW4sIHJvb3REaXJl
Y3RvcnksICJ2MSJfc3RyKTsKICAgICByZXR1cm4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRh
YmFzZXNTaXplRm9yRGlyZWN0b3J5KG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkpICsgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRGlyZWN0b3J5KG5ld1ZlcnNpb25Pcmln
aW5EaXJlY3RvcnkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3NWMwY2ZiYjEwNDQ0
N2M5NWZmNTY4ZmVjMTE5OTgwNDMwYWNlYjNiLi43NmI4N2NlNzRiMzBiOTk4OThhZGY1YmRjYTQ1
MmQxNTkzMTQ4NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvSURCU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIklEQlN0b3JhZ2VSZWdpc3RyeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURCUmVx
dWVzdERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVG
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVJREJCYWNraW5nU3RvcmUuaD4K
QEAgLTQ0LDYgKzQ1LDEwIEBAIHN0YXRpYyB2b2lkIG1pZ3JhdGVPcmlnaW5EYXRhKGNvbnN0IFN0
cmluZyYgb2xkT3JpZ2luRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIG5lCiAgICAgICAgIEZpbGVT
eXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdPcmlnaW5EaXJlY3RvcnkpOwogCiAgICAgZm9y
IChhdXRvJiBuYW1lIDogZmlsZU5hbWVzKSB7CisgICAgICAgIC8vIFRoaXMgaXMgYW4gb3JpZ2lu
IGRpcmVjdG9yeSBmb3IgdGhpcmQtcGFydHkgZGF0YS4KKyAgICAgICAgaWYgKGF1dG8gb3JpZ2lu
ID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG5h
bWUpKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgU3RyaW5nIGNoaWxkUGF0aCA9
IEZpbGVTeXN0ZW06OnJlYWxQYXRoKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChvbGRPcmlnaW5EaXJlY3RvcnksIG5hbWUpKTsKICAgICAgICAgU3RyaW5nIG5ld05hbWUgPSBX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpjb21wdXRlSGFzaEZvckZpbGVOYW1lKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWNvZGVEYXRhYmFzZU5hbWUobmFt
ZSkpOwogICAgICAgICBhdXRvIG5ld0NoaWxkUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChuZXdPcmlnaW5EaXJlY3RvcnksIG5ld05hbWUpOwpAQCAtNTgsOCArNjMs
OCBAQCBTdHJpbmcgSURCU3RvcmFnZU1hbmFnZXI6OmlkYlN0b3JhZ2VPcmlnaW5EaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LAogICAgIGlmIChyb290RGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBTdHJpbmcgb3JpZ2lu
RGlyZWN0b3J5ID0gV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVj
dG9yeVJlbGF0aXZlVG9Sb290KG9yaWdpbi50b3BPcmlnaW4sIG9yaWdpbi5jbGllbnRPcmlnaW4s
IHJvb3REaXJlY3RvcnksICJ2MSIpOwotICAgIFN0cmluZyBvbGRPcmlnaW5EaXJlY3RvcnkgPSBX
ZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9yaWdpbiwgcm9vdERpcmVjdG9y
eSwgInYwIik7CisgICAgYXV0byBvcmlnaW5EaXJlY3RvcnkgPSBXZWJDb3JlOjpJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLCByb290
RGlyZWN0b3J5LCAidjEiKTsKKyAgICBhdXRvIG9sZE9yaWdpbkRpcmVjdG9yeSA9IFdlYkNvcmU6
OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChv
cmlnaW4sIHJvb3REaXJlY3RvcnksICJ2MCIpOwogICAgIG1pZ3JhdGVPcmlnaW5EYXRhKG9sZE9y
aWdpbkRpcmVjdG9yeSwgb3JpZ2luRGlyZWN0b3J5KTsKIAogICAgIHJldHVybiBvcmlnaW5EaXJl
Y3Rvcnk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNTAxNGQ4NzIyYjU0ODdhMDYwY2YzZTRkMjJlN2RmOTVhYzg1NDc3Zi4uMGEwYTgzZDk2ZGMw
ZjFiN2VhZDg2MDcwMjY1ZGQzNDFmZjJmNzEwOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZ3Jlc3Npb24ocjI0Mjcy
OSk6IG1fb3JpZ2luIGluIElEQkRhdGFiYXNlSWRlbnRpZmllciBpcyBpbmNvcnJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzA0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbToKKyAgICAgICAgKC1b
SW5kZXhlZERCTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVT
Y3JpcHRNZXNzYWdlOl0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjItMDItMjQgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtQeXRob24gM10gSW52b2tl
IHZhbGlkYXRlLWNvbW1pdHRlci1saXN0cyB3aXRoIFB5dGhvbiAzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0
ZW5jZS5tbQppbmRleCA0ZjBhOGVjOTQ0NTQ4Y2E2Yzc4NzAxNWM2YjZkOTUwODU4ODM4OGIzLi44
ZGQwZGM4ZTBhMDY1NzI5ODRkM2RhZjA2MzBlYmRiMjczMWI2ZmU3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlBlcnNpc3RlbmNlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVy
c2lzdGVuY2UubW0KQEAgLTI5LDEyICsyOSwxNCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgi
Ci0jaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1JlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ3LDcgKzQ5LDcgQEAKIC0gKHZvaWQpdXNlckNvbnRlbnRD
b250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxl
ciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQogewog
ICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7Ci0gICAgbGFzdFNjcmlwdE1lc3NhZ2Ug
PSBtZXNzYWdlOworICAgIHNjcmlwdE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKIH0KIAogQGVu
ZApAQCAtNjUsMTEgKzY3LDExIEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJQZXJzaXN0ZW5j
ZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
KTsKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IHN0cmluZzEgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07Cisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcxID0gKE5TU3RyaW5nICopW2dldE5leHRNZXNz
YWdlKCkgYm9keV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdl
IGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAqKVtn
ZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgLy8gRGl0Y2ggdGhpcyB3ZWIgdmlldyAoZGl0
Y2hpbmcgaXRzIHdlYiBwcm9jZXNzKQogICAgIHdlYlZpZXcgPSBuaWw7CkBAIC04NSw3ICs4Nyw3
IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRleGVkREJQZXJzaXN0ZW5jZSkKIAogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICByZWNlaXZlZFNj
cmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzMgPSAo
TlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBzdHJpbmczID0gKE5TU3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkgYm9keV07CiAKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJVcGdyYWRlTmVlZGVkIiwgc3RyaW5nMS5nZXQoKSk7CiAgICAg
RVhQRUNUX1dLX1NUUkVRKEAiU3VjY2VzcyIsIHN0cmluZzIuZ2V0KCkpOwpAQCAtMTA4LDExICsx
MTAsMTEgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlBlcnNpc3RlbmNlUHJpdmF0ZSkKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAg
ICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IHN0cmluZzEgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcxID0gKE5TU3RyaW5nICopW2dldE5leHRNZXNzYWdlKCkg
Ym9keV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVz
c2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBzdHJpbmcyID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHld
OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAqKVtnZXROZXh0
TWVzc2FnZSgpIGJvZHldOwogCiAgICAgYXV0byB3ZWJWaWV3UGlkMSA9IFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl07CiAgICAgLy8gRGl0Y2ggdGhpcyB3ZWIgdmlldyAoZGl0Y2hpbmcg
aXRzIHdlYiBwcm9jZXNzKQpAQCAtMTI2LDcgKzEyOCw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRl
eGVkREJQZXJzaXN0ZW5jZVByaXZhdGUpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmczID0gKE5TU3RyaW5nICopW2xhc3RT
Y3JpcHRNZXNzYWdlIGJvZHldOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMyA9IChO
U1N0cmluZyAqKVtnZXROZXh0TWVzc2FnZSgpIGJvZHldOwogCiAgICAgYXV0byB3ZWJWaWV3UGlk
MiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAgICAgRVhQRUNUX05FKHdlYlZp
ZXdQaWQxLCB3ZWJWaWV3UGlkMik7CkBAIC0yNDAsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgbG9h
ZFRlc3RQYWdlSW5XZWJWaWV3KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKmV4cGVjdGVk
UmVzdWx0KQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5GcmFtZVN0cmluZ1BlcnNp
c3RlbmNlIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJd
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7
CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KGV4cGVjdGVkUmVzdWx0LCAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFJlc3VsdCwgKE5TU3RyaW5nICopW2dldE5leHRN
ZXNzYWdlKCkgYm9keV0pOwogfQogCiBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0
eUZyYW1lSGFzQWNjZXNzKQpAQCAtMzAyLDcgKzMwNCw3IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRl
eGVkREJUaGlyZFBhcnR5RGF0YVJlbW92YWwpCiAgICAgW3NlY29uZFdlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImlm
cmFtZTovLyJdXV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlw
dE1lc3NhZ2UpOwogICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIEVYUEVD
VF9XS19TVFJFUSggQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIsIChO
U1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCBAImRhdGFiYXNlIGlzIGNyZWF0ZWQgLSBwdXQgaXRlbSBzdWNjZXNzIiwgKE5TU3RyaW5nICop
W2dldE5leHRNZXNzYWdlKCkgYm9keV0pOwogCiAgICAgcmVhZHlUb0NvbnRpbnVlID0gZmFsc2U7
CiAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVj
b3Jkc09mVHlwZXM6d2Vic2l0ZURhdGFUeXBlcy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgewpAQCAtMzIyLDYgKzMyNCw1
MCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCVGhpcmRQYXJ0eURhdGFSZW1vdmFsKQogICAg
IGxvYWRUZXN0UGFnZUluV2ViVmlldyh0aGlyZFdlYlZpZXcuZ2V0KCksIEAiZGF0YWJhc2UgaXMg
Y3JlYXRlZCAtIHB1dCBpdGVtIHN1Y2Nlc3MiKTsKIH0KIAorVEVTVChJbmRleGVkREIsIEluZGV4
ZWREQlRoaXJkUGFydHlTdG9yYWdlTGF5b3V0KQoreworICAgIE5TVVJMICpyZXNvdXJjZVNhbHQg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiZ2VuZXJhbC1zdG9yYWdl
LWRpcmVjdG9yeSIgd2l0aEV4dGVuc2lvbjpAInNhbHQiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CisgICAgTlNVUkwgKmdlbmVyYWxTdG9yYWdlRGlyZWN0b3J5ID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L2NvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSS9DdXN0b21XZWJzaXRlRGF0YS9EZWZhdWx0IiBzdHJpbmdCeUV4cGFu
ZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIE5TVVJMICp3ZWJraXRPcmln
aW5GaWxlID0gW2dlbmVyYWxTdG9yYWdlRGlyZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIkVBTzY2czhKdkNXTm40RDNZUXV0NXBYZmlHRl9VWE5aR3ZNR042YUtJTGcvRUFPNjZz
OEp2Q1dObjREM1lRdXQ1cFhmaUdGX1VYTlpHdk1HTjZhS0lMZy9vcmlnaW4iXTsKKyAgICBOU1VS
TCAqd2Via2l0SWZyYW1lT3JpZ2luRmlsZSA9IFtnZW5lcmFsU3RvcmFnZURpcmVjdG9yeSBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFQU82NnM4SnZDV05uNEQzWVF1dDVwWGZpR0ZfVVhO
Wkd2TUdONmFLSUxnL3Z1ZHZiTWxLWGoxbTZSaWJuVnZjOFBkQWRjWFpzTkU2T05fQWw3eXFPc2cv
b3JpZ2luIl07CisgICAgTlNVUkwgKmlmcmFtZVdlYktpdE9yaWdpbkZpbGUgPSBbZ2VuZXJhbFN0
b3JhZ2VEaXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidnVkdmJNbEtYajFt
NlJpYm5WdmM4UGRBZGNYWnNORTZPTl9BbDd5cU9zZy9FQU82NnM4SnZDV05uNEQzWVF1dDVwWGZp
R0ZfVVhOWkd2TUdONmFLSUxnL29yaWdpbiJdOworICAgIE5TVVJMICppZGJEaXJlY3RvcnkgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvY29tLmFwcGxlLldlYktp
dC5UZXN0V2ViS2l0QVBJL0N1c3RvbVdlYnNpdGVEYXRhL0luZGV4ZWREQiIgc3RyaW5nQnlFeHBh
bmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBOU1N0cmluZyAqaGFzaGVk
RGF0YWJhc2VOYW1lID0gV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6Y29tcHV0ZUhhc2hGb3JG
aWxlTmFtZSgiSW5kZXhlZERCVGhpcmRQYXJ0eUZyYW1lSGFzQWNjZXNzIik7CisgICAgTlNVUkwg
KndlYmtpdElmcmFtZURhdGFiYXNlRmlsZSA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3Ry
aW5nIHBhdGhXaXRoQ29tcG9uZW50czpAW2lkYkRpcmVjdG9yeS5wYXRoLCBAInYxL2h0dHBfd2Vi
a2l0Lm9yZ18wL2lmcmFtZV9fMC8iLCBoYXNoZWREYXRhYmFzZU5hbWUsIEAiSW5kZXhlZERCLnNx
bGl0ZTMiXV1dOworICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdOworICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRVUkw6Z2Vu
ZXJhbFN0b3JhZ2VEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKyAgICBbZmlsZU1hbmFnZXIgY3JlYXRl
RGlyZWN0b3J5QXRVUkw6Z2VuZXJhbFN0b3JhZ2VEaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURp
cmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOworICAgIFtmaWxlTWFuYWdl
ciBjb3B5SXRlbUF0VVJMOnJlc291cmNlU2FsdCB0b1VSTDpbZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rv
cnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAic2FsdCJdIGVycm9yOm5pbF07CisgICAg
W2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDppZGJEaXJlY3RvcnkgZXJyb3I6bmlsXTsKKwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLl9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSA9IGlkYkRpcmVjdG9yeTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKS5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSA9IGdlbmVyYWxTdG9yYWdlRGly
ZWN0b3J5OworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6YWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBhZG9wdE5TKFtbSW5kZXhlZERCTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIGF1dG8gc2NoZW1l
SGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIFtzY2hlbWVIYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZp
ZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3Bv
bnNlLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmlmcmFtZUJ5dGVzUGVyc2lzdGVuY2UgbGVuZ3RoOnN0cmxlbihpZnJhbWVCeXRlc1Bl
cnNpc3RlbmNlKV1dOworICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgIH1dOworICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JV
UkxTY2hlbWU6QCJpZnJhbWUiXTsKKyAgICAvLyBBbGxvd2luZyB0aGlyZC1wYXJ0eSBmcmFtZSB0
byBzdG9yZSBkYXRhIG9uIGRpc2suCisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChfX2JyaWRnZSBX
S1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBXS1ByZWZl
cmVuY2VzU2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHByZWZlcmVuY2VzLCBrV0tBbGxvd0FsbFN0
b3JhZ2UpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VJbldlYlZpZXcod2ViVmlldy5n
ZXQoKSwgQCJkYXRhYmFzZSBpcyBjcmVhdGVkIC0gcHV0IGl0ZW0gc3VjY2VzcyIpOworCisgICAg
RVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6d2Via2l0T3JpZ2luRmls
ZS5wYXRoXSk7CisgICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6
d2Via2l0SWZyYW1lT3JpZ2luRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtmaWxlTWFu
YWdlciBmaWxlRXhpc3RzQXRQYXRoOmlmcmFtZVdlYktpdE9yaWdpbkZpbGUucGF0aF0pOworICAg
IEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOndlYmtpdElmcmFtZURh
dGFiYXNlRmlsZS5wYXRoXSk7Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyKiB3b3JrZXJCeXRlcyA9
IFIiVEVTVFJFU09VUkNFKAogdHJ5IHsKICAgICB2YXIgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KCdJbmRleGVkREJUaGlyZFBhcnR5V29ya2VySGFzQWNjZXNzJyk7CkBAIC00NTYsMTggKzUwMiwx
OCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCR2V0RGF0YWJhc2VzKQogICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOmdldERhdGFiYXNlc1N0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL2FwcGxlLmNvbSJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKEAiZGF0YWJhc2VzOiBbe1wibmFtZVwiOlwiSW5k
ZXhlZERCR2V0RGF0YWJhc2VzXCIsXCJ2ZXJzaW9uXCI6MX1dIiwgW2xhc3RTY3JpcHRNZXNzYWdl
IGJvZHldKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJkYXRhYmFzZXM6IFt7XCJuYW1lXCI6XCJJ
bmRleGVkREJHZXREYXRhYmFzZXNcIixcInZlcnNpb25cIjoxfV0iLCBbZ2V0TmV4dE1lc3NhZ2Uo
KSBib2R5XSk7CiAKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJsb2FkRnJhbWUo
KSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFs
c2U7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKEAiY2hpbGQgZnJhbWUgZGF0YWJhc2VzOiBbXSIsIFts
YXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiY2hpbGQgZnJh
bWUgZGF0YWJhc2VzOiBbXSIsIFtnZXROZXh0TWVzc2FnZSgpIGJvZHldKTsKIAogICAgIGF1dG8g
c2Vjb25kV2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAgICAgW3NlY29uZFdlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAIndlYmtpdDovLyJdXV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIEVYUEVDVF9XS19TVFJFUShAIm1haW4gZnJh
bWUgZGF0YWJhc2VzOiBbXSIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAibWFpbiBmcmFtZSBkYXRhYmFzZXM6IFtdIiwgW2dldE5leHRNZXNzYWdlKCkg
Ym9keV0pOwogCiAgICAgLy8gR2V0dGluZyBkYXRhYmFzZXMgc2hvdWxkIG5vdCBjcmVhdGUgZmls
ZXMgb24gZGlzay4KICAgICBOU1VSTCAqaWRiRGlyZWN0b3J5VVJMID0gW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>