<?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>181240</bug_id>
          
          <creation_ts>2018-01-03 06:12:24 -0800</creation_ts>
          <short_desc>Implement Cache API partitioning based on ClientOrigin</short_desc>
          <delta_ts>2018-01-05 17:56:29 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jlewis3</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1385426</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-03 06:12:24 -0800</bug_when>
    <thetext>Currently, we are only using the client origin but we should also use the top origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385432</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-03 07:01:25 -0800</bug_when>
    <thetext>rdar://problem/36164145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385436</commentid>
    <comment_count>2</comment_count>
      <attachid>330381</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-03 07:04:28 -0800</bug_when>
    <thetext>Created attachment 330381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385487</commentid>
    <comment_count>3</comment_count>
      <attachid>330396</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-03 10:00:57 -0800</bug_when>
    <thetext>Created attachment 330396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385489</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-03 10:03:34 -0800</bug_when>
    <thetext>Attachment 330396 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385496</commentid>
    <comment_count>5</comment_count>
      <attachid>330398</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-03 10:18:23 -0800</bug_when>
    <thetext>Created attachment 330398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385502</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-03 10:21:02 -0800</bug_when>
    <thetext>Attachment 330398 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:187:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:223:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385549</commentid>
    <comment_count>7</comment_count>
      <attachid>330398</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-03 12:44:36 -0800</bug_when>
    <thetext>Comment on attachment 330398
Patch

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

&gt; Source/WebCore/page/ClientOrigin.h:75
&gt; +    std::optional&lt;SecurityOriginData&gt; topOrigin, clientOrigin;

We usually have each declaration on its own line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385742</commentid>
    <comment_count>8</comment_count>
      <attachid>330451</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-04 00:29:02 -0800</bug_when>
    <thetext>Created attachment 330451
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385743</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-04 00:32:06 -0800</bug_when>
    <thetext>Attachment 330451 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:187:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:223:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385747</commentid>
    <comment_count>10</comment_count>
      <attachid>330451</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-04 00:49:16 -0800</bug_when>
    <thetext>Comment on attachment 330451
Patch for landing

Clearing flags on attachment: 330451

Committed r226401: &lt;https://trac.webkit.org/changeset/226401&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385748</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-04 00:49:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386171</commentid>
    <comment_count>12</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-01-05 10:29:39 -0800</bug_when>
    <thetext>This caused the test http/tests/cache-storage/cache-clearing-origin.https.html to time out consistently on all WK2 platforms. 

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fcache-storage%2Fcache-clearing-origin.https.html

https://build.webkit.org/results/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r226448%20(2057)/results.html

Diff:

--- /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/http/tests/cache-storage/cache-clearing-origin.https-expected.txt
+++ /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/http/tests/cache-storage/cache-clearing-origin.https-actual.txt
@@ -1,5 +1,6 @@
+CONSOLE MESSAGE: line 2451: Unhandled Promise Rejection: Error: assert_equals: client origin of cache 1 expected &quot;https://localhost:8443&quot; but got &quot;https://127.0.0.1:8443&quot;
+#PID UNRESPONSIVE - com.apple.WebKit.WebContent.Development (pid 52826)
+FAIL: Timed out waiting for notifyDone to be called
 
-
-PASS Create a cache storage from localhost and clear it 
-PASS Clearing disk cache of a given origin 
-
+#EOF
+#EOF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386174</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-05 10:37:39 -0800</bug_when>
    <thetext>Will look at it over the weekend. Could you add an expectation in the meantime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386177</commentid>
    <comment_count>14</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-01-05 10:47:46 -0800</bug_when>
    <thetext>This is causing the trees to be very red. Rather than setting an expectation, I would rather roll back the change until it can be landed without issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386179</commentid>
    <comment_count>15</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-01-05 11:01:54 -0800</bug_when>
    <thetext>Reverted r226401 for reason:

This caused timeouts on multiple platforms.

Committed r226453: &lt;https://trac.webkit.org/changeset/226453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386311</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-05 15:25:39 -0800</bug_when>
    <thetext>(In reply to Matt Lewis from comment #15)
&gt; Reverted r226401 for reason:
&gt; 
&gt; This caused timeouts on multiple platforms.
&gt; 
&gt; Committed r226453: &lt;https://trac.webkit.org/changeset/226453&gt;

Reason was the modified test was not always deterministic, leading to the timeout.
Sorting the cache representation in the test fixes the timeout.
I will reland with the updated test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386319</commentid>
    <comment_count>17</comment_count>
      <attachid>330596</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-05 15:28:58 -0800</bug_when>
    <thetext>Created attachment 330596
Updated test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386321</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-01-05 15:30:39 -0800</bug_when>
    <thetext>Attachment 330596 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:187:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:223:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386425</commentid>
    <comment_count>19</comment_count>
      <attachid>330596</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-05 17:56:27 -0800</bug_when>
    <thetext>Comment on attachment 330596
Updated test

Clearing flags on attachment: 330596

Committed r226481: &lt;https://trac.webkit.org/changeset/226481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386426</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-05 17:56:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330381</attachid>
            <date>2018-01-03 07:04:28 -0800</date>
            <delta_ts>2018-01-03 10:00:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181240-20180103160425.patch</filename>
            <type>text/plain</type>
            <size>61886</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIyMjYyNmQ0YWE5YmQw
ZTgzZWM5NzBjNzA0YTRhNGRiMzY5MTc5MS4uMGU3MjQyNzA3YWNiOWUyZTE0N2IzYWYyZWU2OTMw
Y2IwMzM2MzFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ2FjaGUg
QVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4K
KworICAgICAgICBQcmV2aW91c2x5LCBjYWNoZSBzdG9yYWdlIHdhcyBwYXJ0aXRpb25lZCBhY2Nv
cmRpbmcgdGhlIG9yaWdpbiBvZiB0aGUgY2xpZW50LCByZXByZXNlbnRlZCBhcyBhIFN0cmluZy4K
KyAgICAgICAgV2Ugbm93IHBhcnRpdGlvbiBhY2NvcmRpbmcgYm90aCBjbGllbnQgYW5kIHRvcCBv
cmlnaW5zLCByZXByZXNlbnRlZCBhcyBhIENsaWVudE9yaWdpbgorCisgICAgICAgIE1pbm9yIHJl
ZmFjdG9yaW5nIHRvIHVzZSBtb3JlIG1ha2VQZW5kaW5nQWN0aXZpdHkuCisgICAgICAgIEFkZGVk
IHN1cHBvcnQgZm9yIElQQyBzZXJpYWxpemF0aW9uIG9mIENsaWVudE9yaWdpbi4KKyAgICAgICAg
QWRkZWQgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZyB3aGljaCBpcyB1c2VkIGJ5IFdlYktp
dDIgQ2FjaGUgU3RvcmFnZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFn
ZTo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6cmV0
cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICog
cGFnZS9DbGllbnRPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmRlYnVnU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5
UmVwcmVzZW50YXRpb24pOgorCiAyMDE4LTAxLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cu
b3JnLyNtYWluLWZldGNoIGRlZmF1bHQgcmVmZXJyZXIgcG9saWN5IHNldHRpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggYzY2NDA0MjM3MzNiZDMwYmJkZjI1OTA4MjY5MTVmZTliZjg4ZDg3OS4uZjNmZjZjZjYyNzBj
MjRmYTZkNmNhZjY5NjMzMzM5YmYwOGRlMWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAor
MjAxOC0wMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IENhY2hlIEFQSSBwYXJ0aXRpb25pbmcgYmFzZWQgb24gQ2xpZW50T3JpZ2luCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEyNDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBvcGVuIGFuZCBy
ZXRyaWV2ZUNhY2hlcyBub3cgdGFrZSBhIENsaWVudE9yaWdpbiBpbnN0ZWFkIG9mIGEgU3RyaW5n
LgorICAgICAgICBVcGRhdGVkIGNhY2hlIGZpbGVzeXN0ZW0gcGF0aCBjb21wdXRhdGlvbiB0byB0
YWtlIGJvdGggY2xpZW50IG9yaWdpbiBhbmQgdG9wIG9yaWdpbi4KKworICAgICAgICBXaGVuIGNs
ZWFyaW5nIGFuIG9yaWdpbiwgY2FjaGVzIHdob3NlIGNsaWVudCBvcmlnaW4gb3IgdG9wIG9yaWdp
biBtYXRjaGVzIHRoZSBvcmlnaW4gYXJlIGNsZWFyZWQuCisgICAgICAgIENhY2hlcyBhcmUgYWRk
ZWQgdG8gdGhlIHdlYiBzaXRlIGRhdGEgb2YgdGhlaXIgY2xpZW50IG9yaWdpbiB3aXRoIHRoZWly
IGNvcnJlc3BvbmRpbmcgY2FjaGUgc2l6ZS4KKyAgICAgICAgQ2FjaGVzIGFyZSBhZGRlZCB0byB0
aGUgd2ViIHNpdGUgZGF0YSBvZiB0aGVpciB0b3Agb3JpZ2luIHdpdGggYSBzaXplIGVxdWFsIHRv
IDAuCisKKyAgICAgICAgVXBkYXRlZCBtZW1vcnkgcmVwcmVzZW50YXRpb24gZHVtcGluZyB1c2Vk
IGZvciB0ZXN0IHRvIGluY2x1ZGUgYm90aCB0b3AgYW5kIGNsaWVudCBvcmlnaW5zLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlbW92ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpDYWNoZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpDYWNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6c3RvcmVPcmlnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVhZE9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpvcGVuKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZXM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
Q2FjaGVzOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorCiAyMDE3LTEyLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIFJlbW92ZSBjdXJyZW50IG1hY09TIHN1cHBvcnQgZm9yIGRyYWdnaW5nIGZpbGUt
YmFja2VkIGF0dGFjaG1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAyMDUyMmYwYWQ5N2FiMjg2YzU4
OTQ1NTQ2N2JkYzY3NGFjYmYxZDM3Li5mZTBkZmE2YmMxODRiMWZlYjY5YTNhZWM1N2RhNTY3MzEz
YTFkN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTsKIAotdm9pZCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVl
c3RJZGVudGlmaWVyOwogICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNDksNyArNDksNyBA
QCB2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbAogICAgIGRvUmVtb3ZlKHJlcXVlc3RJZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
dHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVy
LCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90
IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAg
ICBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwg
V1RGTW92ZShjYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA2Y2E3YmZiOTE0ZTA1OWRkZWFhNDQz
MzU2YzYwMjllMWMwZDBhZWNkLi40ZGFhMzQ0OGYyMmFjZDFjNDgyMDE3MzAyZDNjNjdiOWI5NGQ4
ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0cnVjdCBDbGllbnRPcmlnaW47CiBjbGFzcyBGZXRjaFJlc3BvbnNlOwogCiBjbGFzcyBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IHsKQEAgLTM5LDkgKzQwLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkpOyB9CiAgICAgdmlydHVhbCB+Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlk
ZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgQ2xpZW50T3JpZ2luJiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmKTsKICAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIERP
TUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJldHJp
ZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmlldmVD
YWNoZXMoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgcmV0cmlldmVSZWNv
cmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgRE9NQ2FjaGVFbmdpbmU6
OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9w
dGlvbnMmJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZlcmVuY2UodWlu
dDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IH0KIAogICAgIC8vIFVzZWQgb25seSBmb3Ig
dGVzdGluZyBwdXJwb3Nlcy4KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgRE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6
Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50
YXRpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwgRE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxs
YmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1w
bGVtZW50ZWQpOyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZ2luZVJlcHJlc2VudGF0aW9uKFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhTdHJp
bmcgeyB9KTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC02Nyw5ICs2OCw5IEBAIHByb3RlY3RlZDoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJik7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2Fj
aGVOYW1lICovKSB7IG9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVj
dGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9y
aWdpbiYsIGNvbnN0IFN0cmluZyYgLyogY2FjaGVOYW1lICovKSB7IG9wZW5Db21wbGV0ZWQocmVx
dWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90
SW1wbGVtZW50ZWQpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHJlbW92ZUNv
bXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6
OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVD
YWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2lu
ICovLCB1aW50NjRfdCAvKiB1cGRhdGVDb3VudGVyICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1ZXN0
SWRlbnRpZmllciwgeyB9KTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCAv
KiB1cGRhdGVDb3VudGVyICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9
KTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFVSTCYg
LyogdXJsICovKSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVx
dWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90
SW1wbGVtZW50ZWQpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZVN0b3JhZ2UuY3BwCmluZGV4IDg1OTk1ODk0NGYzYmIyZGE4MjBjYzkxNTZlYWE4YTE4MTgy
YWUyODkuLjUyZTJlZTEyMTE4MGMzM2EwZTUxNWMzZjMwNWI1ZGIzNzViYWU3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJET01DYWNoZVN0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIkNh
Y2hlUXVlcnlPcHRpb25zLmgiCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAi
SlNET01DYWNoZS5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTQyLDExICs0MywxMyBAQCBET01DYWNoZVN0b3Jh
Z2U6OkRPTUNhY2hlU3RvcmFnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8
Q2FjaGVTdG9yYQogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCi1TdHJpbmcgRE9NQ2FjaGVT
dG9yYWdlOjpvcmlnaW4oKSBjb25zdAorc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IERPTUNh
Y2hlU3RvcmFnZTo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5
IG5lZWQgdG8gY2hlY2sgZm9yIG9yaWdpbiBiZWluZyBudWxsPwogICAgIGF1dG8qIG9yaWdpbiA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIG9yaWdpbiA/IG9yaWdpbi0+dG9T
dHJpbmcoKSA6IFN0cmluZygpOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9Owog
fQogCiBzdGF0aWMgdm9pZCBkb1NlcXVlbnRpYWxNYXRjaChzaXplX3QgaW5kZXgsIFZlY3RvcjxS
ZWY8RE9NQ2FjaGU+PiYmIGNhY2hlcywgRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBET01DYWNoZTo6TWF0Y2hDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMTM1LDEyICsxMzgsMTEgQEAgUmVmPERPTUNhY2hlPiBET01DYWNo
ZVN0b3JhZ2U6OmZpbmRDYWNoZU9yQ3JlYXRlKENhY2hlSW5mbyYmIGluZm8pCiAKIHZvaWQgRE9N
Q2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRp
b25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZyBvcmlnaW4gPSB0
aGlzLT5vcmlnaW4oKTsKLSAgICBpZiAob3JpZ2luLmlzTnVsbCgpKQorICAgIGF1dG8gb3JpZ2lu
ID0gdGhpcy0+b3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnJldHJpZXZl
Q2FjaGVzKG9yaWdpbiwgbV91cGRhdGVDb3VudGVyLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIG1f
Y29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMoKm9yaWdpbiwgbV91cGRhdGVDb3VudGVyLCBbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcyldKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6
ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwpAQCAtMTU4LDcgKzE2MCw2IEBAIHZv
aWQgRE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24+CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOwogICAgICAgICB9Ci0gICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5
KHRoaXMpOwogICAgIH0pOwogfQogCkBAIC0xODUsMTEgKzE4Niw3IEBAIHZvaWQgRE9NQ2FjaGVT
dG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETElu
dGVyZmFjZTxECiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJp
bmcgb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7Ci0gICAgICAgIEFTU0VSVCghb3JpZ2luLmlzTnVs
bCgpKTsKLQotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIG1fY29u
bmVjdGlvbi0+b3BlbihvcmlnaW4sIG5hbWUsIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCpvcmlnaW4oKSwgbmFtZSwgW3RoaXMsIG5h
bWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCp0aGlzKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkp
KTsKQEAgLTIwMiw3ICsxOTksNiBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RAogICAgICAgICAg
ICAgICAgICAgICBtX2NhY2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRo
aXMpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTIyMSwxMSArMjE3LDcgQEAgdm9pZCBE
T01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuPiYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFN0cmluZyBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKLSAgICAgICAgQVNTRVJUKCFvcmln
aW4uaXNOdWxsKCkpOwotCi0gICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCks
IFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5y
ZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcyldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0
KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CkBAIC0y
MzUsNyArMjI3LDYgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcm
IG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYKICAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKHRydWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgICAgICB9KTsK
ICAgICAgICAgbV9jYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCmluZGV4IDkzYTgyZmJiNzNk
NTQzMDFlZmJiNTc0NWRiMGE2YjMwYzY5OTJlYTcuLmQ1NmU1MDQ2OTY1OTY4MDdmY2Y3MjYyYjQ2
OTA2ZTBkNTU3ZmM5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZVN0b3JhZ2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXRy
aWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYp
PiYmKTsKICAgICBSZWY8RE9NQ2FjaGU+IGZpbmRDYWNoZU9yQ3JlYXRlKERPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm8mJik7Ci0gICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8Q2xpZW50T3JpZ2luPiBvcmlnaW4oKSBjb25zdDsKIAogICAgIFZlY3RvcjxSZWY8RE9N
Q2FjaGU+PiBtX2NhY2hlczsKICAgICB1aW50NjRfdCBtX3VwZGF0ZUNvdW50ZXIgeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBmOWU1NDcxNTJkZWMzY2NiM2ZkMjhlYzk1YjU3
Mzk3ODY5NjU4Y2FmLi5jNTQzN2I2NjU4NWI3NTZhYmQ4MTkzYTc5ZjQ4NjdmNDExY2Y2NzA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjp+V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRDb25uZWN0aW9uID0gV1RGTW92ZShtX21h
aW5UaHJlYWRDb25uZWN0aW9uKV0oKSBtdXRhYmxlIHsgfSk7CiB9CiAKLXZvaWQgV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCit2b2lkIFdvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQog
ewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50
aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwg
cmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKSwgY2FjaGVO
YW1lID0gY2FjaGVOYW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbWFp
blRocmVhZENvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFt3b3JrZXJUaHJlYWQg
PSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXSAoY29uc3QgQ2FjaGVJ
ZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2
b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdAogICAgIH0pOwogfQogCi12b2lkIFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBk
YXRlQ291bnRlcikKIHsKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtl
UmVmKG1fc2NvcGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVh
ZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0ZWRD
b3B5KCksIHVwZGF0ZUNvdW50ZXJdICgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29u
bmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBbd29ya2VyVGhy
ZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0gKENhY2hlSW5m
b3NPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXgg
Mjc2YTU3YWRiMjBiMjJiNTYzZWQ3ODU3NTdlOTRjOGI5NGViMGQyNi4uN2FhMDVhZGJjYmQwYjNh
NDU3ODM1MjljNGZkY2Q5NjZkY2Y2OThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQy
LDkgKzQyLDkgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKFdvcmtlckdsb2JhbFNjb3BlJik7CiAKICAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLgotICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOwor
ICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkb1JlbW92
ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsK
KyAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwogCiAgICAg
dm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmgKaW5kZXggMjBlMjgzODFhMzgwMWU5Y2I5YWI1YzZlNDFmMDVhNzBhMjZmOTBl
ZS4uODdjYmJkMWYwZTNiNTNlOTFmMjI5YmU0ZTNkZjFhNjRlY2I5ZDQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NsaWVudE9yaWdpbi5oCkBAIC0zNiw2ICszNiwxMSBAQCBzdHJ1Y3QgQ2xpZW50T3JpZ2lu
IHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENsaWVudE9yaWdpbiYpIGNvbnN0OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gZGVjb2RlKERlY29kZXImKTsKKworICAg
IENsaWVudE9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKwogICAgIFNlY3VyaXR5T3JpZ2lu
RGF0YSB0b3BPcmlnaW47CiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIGNsaWVudE9yaWdpbjsKIH07
CkBAIC01NCw2ICs1OSwzMCBAQCBpbmxpbmUgYm9vbCBDbGllbnRPcmlnaW46Om9wZXJhdG9yPT0o
Y29uc3QgQ2xpZW50T3JpZ2luJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdG9wT3JpZ2luID09
IG90aGVyLnRvcE9yaWdpbiAmJiBjbGllbnRPcmlnaW4gPT0gb3RoZXIuY2xpZW50T3JpZ2luOwog
fQogCitpbmxpbmUgQ2xpZW50T3JpZ2luIENsaWVudE9yaWdpbjo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4geyB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNsaWVudE9yaWdp
bi5pc29sYXRlZENvcHkoKSB9OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUg
dm9pZCBDbGllbnRPcmlnaW46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgdG9wT3JpZ2luOworICAgIGVuY29kZXIgPDwgY2xpZW50T3JpZ2luOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxDbGllbnRPcmln
aW4+IENsaWVudE9yaWdpbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpv
cHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbiwgY2xpZW50T3JpZ2luOworICAg
IGRlY29kZXIgPj4gdG9wT3JpZ2luOworICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOworICAgIGlmICgh
Y2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IENsaWVudE9yaWdpbiB7IFdURk1vdmUoKnRvcE9yaWdpbiksIFdURk1vdmUoKmNsaWVudE9yaWdp
bikgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBhZGExZjQxZDIz
MDVhN2VhNGEwOGE2ZDIwZjY2ODA0YjZjNjdlMzlmLi5lOTBhYjgyMWY3OGZkNTU2ZmY1Njg3ZDMw
ZTlmMmY3NjBiMzk2NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCkBAIC00OCwxMiArNDgsMTAgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogICAgIHJl
dHVybiBzZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKLSNpZiAhTE9HX0RJU0FCTEVECi1TdHJpbmcg
U2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmluZygpIGNvbnN0CitTdHJpbmcgU2VjdXJpdHlP
cmlnaW5EYXRhOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJv
dG9jb2wsICI6Ly8iLCBob3N0LCAiOiIsIFN0cmluZzo6bnVtYmVyKHBvcnQudmFsdWVfb3IoMCkp
KTsKIH0KLSNlbmRpZgogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUoRnJhbWUqIGZyYW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmgKaW5kZXggMGVmZmE2NDRmOTkyNGM4ODgzZmMxYWNkNDE5YmNjNWNlY2M4MWY5NS4u
NWY1NWY5NDJiODFmY2ZlMDBiZmQ0M2JjMTA5OTZmM2NkYzI0NzE1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC03Nyw4ICs3NywxMCBAQCBzdHJ1Y3QgU2Vj
dXJpdHlPcmlnaW5EYXRhIHsKICAgICAgICAgcmV0dXJuIHByb3RvY29sLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7CiAgICAgfQogICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0OworCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBkZWJ1Z1N0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBkZWJ1Z1N0cmluZygpIGNvbnN0
IHsgcmV0dXJuIHRvU3RyaW5nKCk7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDFmYjYxY2UzZjg2ZWU3NjQ5YzRlOGFlZTU0YjVjMmJhYzVjYzgy
ZTIuLjY2NWRhMTliNzFiN2NhNjEyZjUzMjRmMDUyNmJkZGRhNzljODVhNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRU
cmVlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJET01SZWN0Lmgi
CkBAIC00MjQ4LDcgKzQyNDksNyBAQCB2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VN
ZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBp
ZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCksIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24tPmNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oQ2xpZW50T3JpZ2luIHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oZG9jdW1lbnQtPnRvcE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpIH0sIFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGF1dG8gJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKaW5kZXggNGRlZDY0YTdlMzk3MzA3MTA4Njk5YjgyNmRmZDdmZjEyZGViMzUxNi4uNjI3
ODZiN2FmMTg3YzViNTI2NmQ0OTIwYTRjNWJmM2ZkZWI5NGQ2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUyMywxMCArNTIzLDgg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKSB7Ci0gICAgICAgICAgICBhdXRvIG9y
aWdpbiA9IG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKLSAgICAgICAg
ICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJDYWNoZXNGb3JP
cmlnaW4ob3JpZ2luLCBjbGVhclRhc2tzSGFuZGxlcik7Ci0gICAgICAgIH0KKyAgICAgICAgZm9y
IChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCisgICAgICAgICAgICBDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmNsZWFyQ2FjaGVzRm9yT3JpZ2luKG9yaWdpbkRh
dGEsIGNsZWFyVGFza3NIYW5kbGVyKTsKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDg0YzRmZmVlYjMxOTVhNjc2OTJmNjRm
NDJiMDA1YmQ3NjQzOThhZjMuLjBiZDU2MDkzMTY4NTU2ZDYyOGI0ZGJkYTAwNDkwYjUxOWZlMDFk
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTUyLDEzICs1MiwxMyBAQCBzdGF0aWMgSGFzaE1h
cDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPEVuZ2luZT4+JiBnbG9iYWxFbmdpbmVNYXAoKQogICAg
IHJldHVybiBtYXA7CiB9CiAKLVN0cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNvbnN0IFN0
cmluZyYgb3JpZ2luKQorU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBLZXkga2V5KG9yaWdpbiwgeyB9LCB7IH0sIHsgfSwg
c2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSk7CisgICAg
S2V5IGtleShvcmlnaW4udG9wT3JpZ2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmlnaW4u
dG9TdHJpbmcoKSwgeyB9LCB7IH0sIHNhbHQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkuaGFzaEFzU3Ry
aW5nKCkpOwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMTAwLDcgKzEwMCw3IEBAIEVuZ2lu
ZTo6RW5naW5lKFN0cmluZyYmIHJvb3RQYXRoKQogICAgICAgICBtX2lvUXVldWUgPSBXb3JrUXVl
dWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYWNoZVN0b3JhZ2VFbmdpbmUuc2VyaWFsQmFj
a2dyb3VuZCIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6QmFja2dy
b3VuZCk7CiB9CiAKLXZvaWQgRW5naW5lOjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgRW5naW5lOjpvcGVuKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbY2FjaGVOYW1lLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZXNPckVycm9yJiYgY2FjaGVzT3JFcnJvcikgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghY2FjaGVzT3JFcnJvci5oYXNfdmFsdWUoKSkgewpAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgRW5naW5lOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrCiAgICAgZm9yIChhdXRvJiBjYWNo
ZXMgOiBtX2NhY2hlcy52YWx1ZXMoKSkgewogICAgICAgICBhdXRvKiBjYWNoZVRvUmVtb3ZlID0g
Y2FjaGVzLT5maW5kKGNhY2hlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChjYWNoZVRvUmVtb3Zl
KSB7Ci0gICAgICAgICAgICBjYWNoZXNUb01vZGlmeSA9IGNhY2hlcy5wdHIoKTsKKyAgICAgICAg
ICAgIGNhY2hlc1RvTW9kaWZ5ID0gY2FjaGVzLmdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZSh1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJh
Y2sKICAgICBjYWNoZXNUb01vZGlmeS0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5n
JiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBDYWNoZUluZm9zQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbdXBkYXRl
Q291bnRlciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIGNh
Y2hlc09yRXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzX3Zh
bHVlKCkpIHsKQEAgLTIwMywxNSArMjAzLDE2IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKEZ1
bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCiAgICAgfSk7
CiB9CiAKLXZvaWQgRW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmln
aW4sIENhY2hlc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zy
b21EaXNrKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDYWNoZXNDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJs
ZSB7CiAgICAgICAgIGF1dG8mIGNhY2hlcyA9IG1fY2FjaGVzLmVuc3VyZShvcmlnaW4sIFsmb3Jp
Z2luLCB0aGlzXSB7Ci0gICAgICAgICAgICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIFN0
cmluZyB7IG9yaWdpbiB9LCBjYWNoZXNSb290UGF0aChvcmlnaW4pLCBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEoKSk7CisgICAgICAgICAgICBh
dXRvIHBhdGggPSBjYWNoZXNSb290UGF0aChvcmlnaW4pOworICAgICAgICAgICAgcmV0dXJuIENh
Y2hlczo6Y3JlYXRlKCp0aGlzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBvcmlnaW4gfSwgV1RG
TW92ZShwYXRoKSwgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhKCkpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgaWYg
KGNhY2hlcy0+aXNJbml0aWFsaXplZCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPENhY2hlcz4geyBjYWNoZXMuZ2V0KCkgfSk7CisgICAgICAgICAgICBj
YWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlcz4geyAqY2FjaGVzIH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIyNiw3ICsyMjcsNyBAQCB2b2lkIEVu
Z2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZXNDYWxs
YmFjayYmIGNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsg
Y2FjaGVzLmdldCgpIH0pOworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxDYWNoZXM+IHsgKmNhY2hlcyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0z
MjIsMTIgKzMyMyw2IEBAIHZvaWQgRW5naW5lOjpyZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZW1vdmVDYWNoZXMoY29uc3QgU3Ry
aW5nJiBvcmlnaW4pCi17Ci0gICAgQVNTRVJUKG1fY2FjaGVzLmNvbnRhaW5zKG9yaWdpbikpOwot
ICAgIG1fY2FjaGVzLnJlbW92ZShvcmlnaW4pOwotfQotCiBjbGFzcyBSZWFkT3JpZ2luc1Rhc2tD
b3VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZE9yaWdpbnNUYXNrQ291bnRlcj4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVhZE9yaWdpbnNUYXNrQ291bnRlcj4gY3JlYXRlKFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY2Fs
bGJhY2spCkBAIC0zNTksNyArMzU0LDcgQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29s
IHNob3VsZENvbXB1dGVTaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKIHsKICAg
ICBpZiAoIXNob3VsZFBlcnNpc3QoKSkgewogICAgICAgICBhdXRvIGVudHJpZXMgPSBXVEY6Om1h
cChtX2NhY2hlcywgW10gKGF1dG8mIHBhaXIpIHsKLSAgICAgICAgICAgIHJldHVybiBXZWJzaXRl
RGF0YTo6RW50cnkgeyBwYWlyLnZhbHVlLT5vcmlnaW4oKSwgV2Vic2l0ZURhdGFUeXBlOjpET01D
YWNoZSwgMCB9OworICAgICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhOjpFbnRyeSB7IHBhaXIu
dmFsdWUtPm9yaWdpbigpLmNsaWVudE9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwg
MCB9OwogICAgICAgICB9KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlbnRy
aWVzKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM2OSwyMiArMzY0LDIyIEBAIHZvaWQgRW5naW5l
OjpmZXRjaEVudHJpZXMoYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlCiAgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CiAgICAgICAgIGlmICghV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xk
ZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91
bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11dGFibGUg
eworICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRo
LCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21w
dXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChhdXRvJiYgb3Jp
Z2luKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAg
ICAgICAgICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgICAgIGlmICghc2hvdWxkQ29tcHV0ZVNpemUpIHsKLSAgICAgICAgICAgICAgICB0YXNrQ291
bnRlci0+YWRkT3JpZ2luKFdURk1vdmUob3JpZ2luLnZhbHVlKCkpLCAwKTsKKyAgICAgICAgICAg
ICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdURk1vdmUob3JpZ2luLT50b3BPcmlnaW4pLCAw
KTsKKyAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdURk1vdmUob3JpZ2lu
LT5jbGllbnRPcmlnaW4pLCAwKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGF1dG8gY2FjaGVPcmlnaW4gPSBvcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCk7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFkQ2FjaGVz
RnJvbURpc2soY2FjaGVPcmlnaW4sIFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbi52YWx1ZSgpKSwg
dGFza0NvdW50ZXIgPSBXVEZNb3ZlKHRhc2tDb3VudGVyKV0gKENhY2hlc09yRXJyb3ImJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVhZENhY2hlc0Zyb21E
aXNrKG9yaWdpbi52YWx1ZSgpLCBbb3JpZ2luID0gb3JpZ2luLnZhbHVlKCksIHRhc2tDb3VudGVy
ID0gV1RGTW92ZSh0YXNrQ291bnRlcildIChDYWNoZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4o
V1RGTW92ZShvcmlnaW4pLCByZXN1bHQudmFsdWUoKS5nZXQoKS5zdG9yYWdlU2l6ZSgpKTsKLQor
ICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92ZShvcmlnaW4udG9w
T3JpZ2luKSwgMCk7CisgICAgICAgICAgICAgICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZN
b3ZlKG9yaWdpbi5jbGllbnRPcmlnaW4pLCByZXN1bHQudmFsdWUoKS5nZXQoKS5zdG9yYWdlU2l6
ZSgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CkBAIC00MDYsMjIgKzQw
MSwzMiBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0
YXNrSGFuZGxlcikKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWxsYmFja0FnZ3JlZ2F0b3ImIHRhc2tIYW5kbGVy
KQordm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBDYWxsYmFja0FnZ3JlZ2F0b3ImIHRhc2tIYW5kbGVyKQog
ewotICAgIGlmIChhdXRvIGNhY2hlcyA9IG1fY2FjaGVzLmdldChvcmlnaW4pKSB7Ci0gICAgICAg
IGNhY2hlcy0+Y2xlYXIoW3Rhc2tIYW5kbGVyID0gbWFrZVJlZih0YXNrSGFuZGxlcildIHsgfSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogbV9jYWNoZXMpIHsK
KyAgICAgICAgaWYgKGtleVZhbHVlLmtleS50b3BPcmlnaW4gPT0gb3JpZ2luIHx8IGtleVZhbHVl
LmtleS5jbGllbnRPcmlnaW4gPT0gb3JpZ2luKQorICAgICAgICAgICAga2V5VmFsdWUudmFsdWUt
PmNsZWFyKFt0YXNrSGFuZGxlciA9IG1ha2VSZWYodGFza0hhbmRsZXIpXSB7IH0pOwogICAgIH0K
IAogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lv
UXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGNhY2hlc1Jvb3RQYXRoKG9yaWdpbiksIHRhc2tI
YW5kbGVyID0gbWFrZVJlZih0YXNrSGFuZGxlcildIHsKLSAgICAgICAgZGVsZXRlRGlyZWN0b3J5
UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgZm9sZGVyUGF0
aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkg
eworICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xk
ZXJQYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpO
bykpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdp
bkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luLCB0YXNrSGFuZGxlciA9IG1ha2VSZWYodGFza0hh
bmRsZXIpXSAoYXV0byYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAo
IWZvbGRlck9yaWdpbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAo
Zm9sZGVyT3JpZ2luLT50b3BPcmlnaW4gIT0gb3JpZ2luICYmIGZvbGRlck9yaWdpbi0+Y2xpZW50
T3JpZ2luICE9IG9yaWdpbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBt
X2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGNhY2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmln
aW4pLCB0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpXSB7CisgICAgICAgICAgICAg
ICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0KIH0KIAotdm9pZCBFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpD
b21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpjbGVhck1lbW9yeVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
cmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KENhY2hlc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpIHsKQEAgLTQ2OSw5ICs0NzQsMTEgQEAgU3RyaW5nIEVuZ2luZTo6cmVwcmVzZW50YXRpb24o
KQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwiKTsKICAgICAgICAgaXNGaXJzdCA9IGZh
bHNlOwogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcbnsgXCJvcmlnaW5cIiA6IFwiIik7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGtleVZhbHVlLmtleSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJcIiwgXCJjYWNoZXNcIiA6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXG57IFwi
b3JpZ2luXCIgOiB7IFwidG9wT3JpZ2luXCIgOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZChrZXlWYWx1ZS5rZXkudG9wT3JpZ2luLnRvU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgiXCIsIFwiY2xpZW50T3JpZ2luXCI6IFwiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGtleVZhbHVlLmtleS5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJcIiB9LCBcImNhY2hlc1wiIDogIik7CiAgICAgICAgIGtleVZhbHVlLnZhbHVlLT5h
cHBlbmRSZXByZXNlbnRhdGlvbihidWlsZGVyKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIn0i
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4YWVhOGYxOGNlYWQ3YmVmN2IzMzJiMjExNWZk
NzY4Y2FhOWU1YWM2Li4wNzVlZWU1ZmNkMzk5OThhM2U0MTk0YmYxMTNiYjM2NDMyOGM2OTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtNjMsOSArNjQsOSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAK
LSAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVO
YW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7
CisgICAgdm9pZCBvcGVuKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmlu
ZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2Fs
bGJhY2smJik7CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7Ci0gICAgdm9p
ZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291
bnRlciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2
NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2Fs
bGJhY2smJik7CiAKICAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0Nh
bGxiYWNrJiYpOwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTgyLDE5ICs4Mywx
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0JiBzYWx0KCkgY29uc3Qg
eyByZXR1cm4gbV9zYWx0LnZhbHVlKCk7IH0KICAgICB1aW50NjRfdCBuZXh0Q2FjaGVJZGVudGlm
aWVyKCkgeyByZXR1cm4gKyttX25leHRDYWNoZUlkZW50aWZpZXI7IH0KIAotICAgIHZvaWQgcmVt
b3ZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKLQotICAgIHZvaWQgY2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50
YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24oKTsK
IAogICAgIHZvaWQgY2xlYXJBbGxDYWNoZXMoV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3ImKTsKLSAg
ICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBXVEY6OkNh
bGxiYWNrQWdncmVnYXRvciYpOworICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3ImKTsK
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5naW5lJiBkZWZhdWx0RW5naW5lKCk7CiAgICAgZXhw
bGljaXQgRW5naW5lKFN0cmluZyYmIHJvb3RQYXRoKTsKIAotICAgIFN0cmluZyBjYWNoZXNSb290
UGF0aChjb25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgU3RyaW5nIGNhY2hlc1Jvb3RQYXRoKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiAgICAgdm9pZCBmZXRjaEVudHJpZXMoYm9v
bCAvKiBzaG91bGRDb21wdXRlU2l6ZSAqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJik7CiAKQEAgLTEwMiw3ICsxMDEsNyBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQ2FjaGVzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Q2FjaGVzPiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPjsKICAgICB1
c2luZyBDYWNoZXNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDYWNoZXNPckVycm9yJiYp
PjsKLSAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2Fj
aGVzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ2FjaGVzQ2FsbGJhY2smJik7CiAKICAgICB1c2luZyBDYWNoZU9y
RXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlPiwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkVycm9yPjsKICAgICB1c2luZyBDYWNoZUNhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYmKT47CkBAIC0xMTAsNyArMTA5LDcgQEAgcHJpdmF0
ZToKIAogICAgIENhY2hlKiBjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAg
SGFzaE1hcDxTdHJpbmcsIFJlZjxDYWNoZXM+PiBtX2NhY2hlczsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPENhY2hlcz4+IG1fY2FjaGVzOwogICAgIHVpbnQ2NF90
IG1fbmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAg
ICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKaW5kZXggNDY4OTg0NWVhNWVjMjY5ODFiNDNjNTc1OTJhNjU3MDJmMTY2MjMzYy4uMTI3MTFh
NTczNGFmZmZlYjViYWQwMjFjZjg2MjJmMzE0MDkyYmY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNP
cmlnaW5GaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBh
dGgsIEFTQ0lJTGl0ZXJhbCgib3JpZ2luIikpOwogfQogCi12b2lkIENhY2hlczo6cmV0cmlldmVP
cmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBx
dWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2FjaGVz
OjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBX
b3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHF1ZXVlLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBmb2xkZXJQYXRoID0gZm9sZGVyUGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNhY2hlc0xp
c3RGaWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKQEAgLTcyLDkgKzcyLDkgQEAgdm9pZCBDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdv
cmtRdWV1ZSYgcXUKICAgICB9KTsKIH0KIAotQ2FjaGVzOjpDYWNoZXMoRW5naW5lJiBlbmdpbmUs
IFN0cmluZyYmIG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3RhKQorQ2Fj
aGVzOjpDYWNoZXMoRW5naW5lJiBlbmdpbmUsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3RhKQogICAgIDogbV9lbmdpbmUoJmVu
Z2luZSkKLSAgICAsIG1fb3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9y
aWdpbikpKQorICAgICwgbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQogICAgICwgbV9yb290UGF0
aChXVEZNb3ZlKHJvb3RQYXRoKSkKICAgICAsIG1fcXVvdGEocXVvdGEpCiB7CkBAIC04MywyNyAr
ODMsMzYgQEAgQ2FjaGVzOjpDYWNoZXMoRW5naW5lJiBlbmdpbmUsIFN0cmluZyYmIG9yaWdpbiwg
U3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3QKIHZvaWQgQ2FjaGVzOjpzdG9yZU9yaWdp
bihDb21wbGV0aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXVEY6OlBl
cnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7Ci0gICAgZW5jb2RlciA8PCBtX29yaWdpbi5wcm90
b2NvbDsKLSAgICBlbmNvZGVyIDw8IG1fb3JpZ2luLmhvc3Q7Ci0gICAgZW5jb2RlciA8PCBtX29y
aWdpbi5wb3J0OworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4udG9wT3JpZ2luLnByb3RvY29sOwor
ICAgIGVuY29kZXIgPDwgbV9vcmlnaW4udG9wT3JpZ2luLmhvc3Q7CisgICAgZW5jb2RlciA8PCBt
X29yaWdpbi50b3BPcmlnaW4ucG9ydDsKKyAgICBlbmNvZGVyIDw8IG1fb3JpZ2luLmNsaWVudE9y
aWdpbi5wcm90b2NvbDsKKyAgICBlbmNvZGVyIDw8IG1fb3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0
OworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50T3JpZ2luLnBvcnQ7CiAgICAgbV9lbmdp
bmUtPndyaXRlRmlsZShjYWNoZXNPcmlnaW5GaWxlbmFtZShtX3Jvb3RQYXRoKSwgRGF0YSB7IGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpIH0sIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvcikpOwogICAgIH0pOwogfQogCi1zdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNv
bnN0IERhdGEmIGRhdGEpCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2Fj
aGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBiZSBhYmxlIHRvIHVzZSBtb2Rlcm4gZGVjb2RlcnMgZm9yIHBlcnNpc3RlbnQgZGF0YS4K
LSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luOworICAgIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIGNsaWVudE9yaWdpbjsKICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIAotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLnByb3RvY29sKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRvcE9yaWdpbi5wcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4uaG9zdCkpCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh0b3BPcmlnaW4uaG9zdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4ucG9ydCkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0b3BPcmlnaW4ucG9ydCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIFdURk1vdmUob3JpZ2luKTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNsaWVudE9y
aWdpbi5wcm90b2NvbCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjbGllbnRPcmlnaW4uaG9zdCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGllbnRPcmlnaW4ucG9ydCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNsaWVudE9yaWdp
biB7IFdURk1vdmUodG9wT3JpZ2luKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pIH07CiB9CiAKIHZv
aWQgQ2FjaGVzOjppbml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCmluZGV4IGVjMDhl
MjNlYzUxY2EwMDM3M2E5ZDEwNTE3YjM4MWQ4Mzc4ZDMyNWEuLmFhODIzZjIxNmIwMjQwMTUwYjli
NjQ1NTJhMmZlNjcwN2ExNjRiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaApAQCAtMjcs
NyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM4LDkg
KzM4LDkgQEAgY2xhc3MgRW5naW5lOwogCiBjbGFzcyBDYWNoZXMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxDYWNoZXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENhY2hlcz4gY3JlYXRlKEVuZ2lu
ZSYgZW5naW5lLCBTdHJpbmcmJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBx
dW90YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZXMgeyBlbmdpbmUsIFdURk1vdmUob3Jp
Z2luKSwgV1RGTW92ZShyb290UGF0aCksIHF1b3RhIH0pOyB9CisgICAgc3RhdGljIFJlZjxDYWNo
ZXM+IGNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ2FjaGVzIHsgZW5naW5lLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUocm9vdFBhdGgpLCBx
dW90YSB9KTsgfQogCi0gICAgc3RhdGljIHZvaWQgcmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4m
Jik7CisgICAgc3RhdGljIHZvaWQgcmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmKT4mJik7CiAKICAgICB2b2lk
IGluaXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYm
KTsKICAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZVJlY29yZChjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYpOwogCiAg
ICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0JiBzYWx0KCkgY29uc3Q7Ci0gICAgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdp
bjsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW47IH0KIAogICAgIGJvb2wgc2hvdWxkUGVyc2lzdCgpIGNvbnN0IHsgcmV0
dXJuICFtX3Jvb3RQYXRoLmlzTnVsbCgpOyB9CiAKQEAgLTc2LDE0ICs3NiwxNCBAQCBwdWJsaWM6
CiAgICAgdWludDY0X3Qgc3RvcmFnZVNpemUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDYWNo
ZXMoRW5naW5lJiwgU3RyaW5nJiYgb3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3Qg
cXVvdGEpOworICAgIENhY2hlcyhFbmdpbmUmLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgU3Ry
aW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3RhKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVNp
emUoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB2
b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9y
PENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmKT4mJik7CiAgICAgdm9p
ZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNh
bGxiYWNrJiYpOwogCiAgICAgdm9pZCBzdG9yZU9yaWdpbihXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gcmVhZE9yaWdpbihjb25zdCBOZXR3b3JrQ2FjaGU6OkRh
dGEmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IHJl
YWRPcmlnaW4oY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJik7CiAKICAgICBDYWNoZSogZmluZChj
b25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogICAgIEVuZ2luZSogbV9lbmdpbmUgeyBudWxs
cHRyIH07CiAgICAgdWludDY0X3QgbV91cGRhdGVDb3VudGVyIHsgMCB9OwotICAgIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBtX29yaWdpbjsKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
bV9vcmlnaW47CiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgdWludDY0X3QgbV9xdW90YSB7
IDAgfTsKICAgICB1aW50NjRfdCBtX3NpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmNwcAppbmRleCBiMDAwNjg5MDViMmRiYmY5ZTBkMzgwYzEzNGI0YzFhMDY0NDY4
ZjFmLi41ODljNWU5OWZjMjcxMjAxYTFmNjA2ODkxNGNhMzZlOWFmNTg0YmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6fkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oKQogICAg
IH0KIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBjYWNoZU5hbWUpCiB7CiAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkub3Bl
bihvcmlnaW4sIGNhY2hlTmFtZSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNoZUlk
ZW50aWZpZXJPckVycm9yJiByZXN1bHQpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6T3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRl
bnRpZmllciwgcmVzdWx0KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKQEAgLTY3LDcgKzY3LDcg
QEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZW1vdmUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXEKICAgICB9KTsKIH0KIAotdm9pZCBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVw
ZGF0ZUNvdW50ZXIpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikK
IHsKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIHVw
ZGF0ZUNvdW50ZXIsIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpKSwgc2Vzc2lvbklELCBvcmlnaW4sIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9zT3JF
cnJvciYmIHJlc3VsdCkgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpVcGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZXJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF8KICAgICByZWZlcmVuY2VzLnJlbW92ZShyZWZlcmVuY2VSZXN1bHQp
OwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4pCiB7CiAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihvcmlnaW4sIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0gKHN0ZDo6b3B0aW9u
YWw8RXJyb3I+JiYgZXJyb3IpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbkNvbXBs
ZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCA5YWZmZjY4OTUzYjM5YmE1OTdh
ZDU1MTA1NDZlZWM5ZTM0OTc4ZWJmLi5lNTdjNWUzOTBlMDYzZDlmYjFkNWQwZDkyNWZhMmUzMWU3
YWZkMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtNTAsOSArNTAs
OSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAgIHZvaWQgb3Bl
bihQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgb3BlblJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpOworICAgIHZvaWQgb3BlbihQ
QUw6OlNlc3Npb25JRCwgdWludDY0X3Qgb3BlblJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSk7CiAgICAgdm9pZCBy
ZW1vdmUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlbW92ZVJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY2FjaGVzKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsKKyAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsKIAogICAgIHZvaWQgcmV0cmlldmVS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJik7CiAgICAgdm9pZCBkZWxldGVNYXRj
aGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKTsKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRlcmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
OworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwog
ICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyKTsKIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KaW5kZXggZDZlM2NlNTQyNmE1NjkyYjdkMDZhZGU0ZDhhMWI5OTUzZTRkM2QyZC4u
ZTMxMDdlMjAxNDZkNTkwMDNiMjA2YjFkZWRmNmY4NjNjYjhjNTVlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjQsMTEgKzI0LDEx
IEBAIG1lc3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24gewogICAgIFJlZmVy
ZW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7
CiAgICAgRGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIpOwogCi0gICAgT3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luLCBTdHJpbmcgY2FjaGVOYW1lKTsK
KyAgICBPcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBTdHJpbmcgY2FjaGVO
YW1lKTsKICAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKLSAgICBDYWNoZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5n
IG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CisgICAgQ2FjaGVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsKIAotICAgIENs
ZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbik7CisgICAgQ2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbik7CiAgICAgRW5naW5l
UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllcik7CiAKICAgICBSZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBXZWJDb3JlOjpVUkwgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBmMzE4OGZk
YzY3NTY2OTNmZDE1OGViYzc2ZGJiN2M0YmRmMmM0NDQ4Li4zZjI3MTIzMmQ2M2U0YTRmNzc0NWVm
MjhjNjRlYWU1NTM4YzRiN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01Niw3ICs1
Niw3IEBAIElQQzo6Q29ubmVjdGlvbiYgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29ubmVj
dGlvbigpCiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkKK3ZvaWQgV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCiB7
CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246Ok9wZW4obV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIGNhY2hl
TmFtZSksIDApOwogfQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYQog
ICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpSZW1vdmUobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZp
ZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZl
Q2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
dWludDY0X3QgdXBkYXRlQ291bnRlcikKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpCiB7CiAgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkNhY2hlcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291
bnRlciksIDApOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwK
ICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4s
IENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9lbmdpbmVSZXByZXNlbnRhdGlvbk5leHRJZGVu
dGlmaWVyOwogICAgIG1fY2xlYXJSZXByZXNlbnRhdGlvbkNhbGxiYWNrcy5zZXQocmVxdWVzdElk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDBi
MjRlMmFhZjE5MzU3Y2ZjZDNlYjg1OGQ4MTVkN2ZmOGFjMmViZDMuLjQ4MGVkZGQ5YjRlNTE1YzRi
NGFhZTZkNGM2ZDk0MjU4ZmNiZTI1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNTIsOSAr
NTIsOSBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpOwogCiAg
ICAgLy8gV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbgotICAgIHZvaWQgZG9PcGVuKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBjYWNoZU5hbWUpIGZpbmFsOworICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNh
Y2hlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGRvUmV0cmll
dmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVDYWNo
ZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwogCiAgICAgdm9pZCBkb1JldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVP
cGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmJikgZmluYWw7CkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlcmVm
ZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAKLSAgICB2b2lkIGNsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBjbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBl
bmdpbmVSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
IGZpbmFsOwogCiAgICAgdm9pZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJv
ciYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDgxNmFkM2E0ZTA1MmJjNTYwMzkyZjY5Y2UxNTE5MjNiNjgxZTZmNTYuLmEx
YTk2NTU0ZjdiOGE3ZjA4YmIwOTcxNmQ5YzU2MTYxMmQ1NzY2MGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxOC0wMS0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IENhY2hlIEFQSSBwYXJ0aXRpb25pbmcgYmFzZWQgb24gQ2xpZW50T3Jp
Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEy
NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWVm
aW5nIHVwIHRlc3QgdG8gZW5zdXJlIHRoYXQgY2xpZW50IGFuZCB0b3Agb3JpZ2lucyBhcmUgdGFr
ZW4gaW50byBjb25zaWRlcmF0aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9y
YWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5n
LW9yaWdpbi5odHRwcy5odG1sOgorCiAyMDE3LTEyLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2UgV1BUIHRlc3RzIHVwIHRvIGI4ZTZmZjYKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVh
cmluZy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKaW5k
ZXggMjc4NTUxMTM1NDk4MGQ3NzkzNTAwOTJhNDIzOWNjMzYwOTY4ZGRkZi4uMzM1ODdhYzY5YmE5
N2I4MDgzNmY1ZmVhMmM4YWRkM2M5YzczMDAyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNs
ZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiAKLVBBU1Mg
Q2xlYW5pbmcgZXhpc3RpbmcgY2FjaGVzIAorCitQQVNTIENyZWF0ZSBhIGNhY2hlIHN0b3JhZ2Ug
ZnJvbSBsb2NhbGhvc3QgYW5kIGNsZWFyIGl0IAogUEFTUyBDbGVhcmluZyBkaXNrIGNhY2hlIG9m
IGEgZ2l2ZW4gb3JpZ2luIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0
bWwKaW5kZXggMTI5NjY3MDQwYmNjN2FhODFhNjVkMjUyYzMxODhmMTk5NGEwM2MxZi4uODcxMjky
MjkxMWE1MmZmOTY3ZmYxMWJiMGYxZjNiMWI3YTVlYmY2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVh
cmluZy1vcmlnaW4uaHR0cHMuaHRtbApAQCAtOCwxMyArOCwyNyBAQAogPGJvZHk+CiAgICAgPHNj
cmlwdD4KIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKLSAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5
cygpLnRoZW4oa2V5cyA9PiB7Ci0gICAgICAgIHZhciBwZW5kaW5nID0gW107Ci0gICAgICAgIGZv
ciAoa2V5IG9mIGtleXMpCi0gICAgICAgICAgICBwZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVs
ZXRlKGtleXNbMF0pKTsKLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmcpOwotICAg
IH0pOwotfSwgIkNsZWFuaW5nIGV4aXN0aW5nIGNhY2hlcyIpOworICAgIGlmICghd2luZG93Lmlu
dGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdCgiVGVzdCByZXF1aXJlcyBpbnRlcm5hbHMgYW5kIHRlc3QgcnVubmVyIik7CisKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB2YXIgY291
bnRlciA9IDA7CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVz
dC5zdGVwX2Z1bmMoYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICB2YXIgcmVwcmVzZW50
YXRpb24gPSBKU09OLnBhcnNlKGF3YWl0IGludGVybmFscy5jYWNoZVN0b3JhZ2VFbmdpbmVSZXBy
ZXNlbnRhdGlvbigpKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25b
MF0ub3JpZ2luLnRvcE9yaWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMiLCAidG9wIG9yaWdp
biBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9u
WzBdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRwczovL2xvY2FsaG9zdDo4NDQzIiwgImNsaWVu
dCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhy
ZXByZXNlbnRhdGlvblswXS5jYWNoZXMucGVyc2lzdGVudCwgWyJjYWNoZTEiXSk7CisKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuY2xlYXJET01DYWNoZSgnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0Mycp
OworICAgICAgICAgICAgdmFyIHJlcHJlc2VudGF0aW9uID0gSlNPTi5wYXJzZShhd2FpdCBpbnRl
cm5hbHMuY2FjaGVTdG9yYWdlRW5naW5lUmVwcmVzZW50YXRpb24oKSk7CisgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi50b3BPcmlnaW4sICJodHRwczov
LzEyNy4wLjAuMTo4NDQzIiwgInRvcCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5vcmlnaW4uY2xpZW50T3JpZ2luLCAiaHR0
cHM6Ly9sb2NhbGhvc3Q6ODQ0MyIsICJjbGllbnQgb3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0uY2FjaGVzLnBlcnNp
c3RlbnQsIFtdKTsKKworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KSk7CisgICAg
fSkKK30sICJDcmVhdGUgYSBjYWNoZSBzdG9yYWdlIGZyb20gbG9jYWxob3N0IGFuZCBjbGVhciBp
dCIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgdGVzdCA9PiB7CiAgICAgdmFyIGNhY2hlID0gYXdh
aXQgc2VsZi5jYWNoZXMub3BlbigidGVzdC1jYWNoZS1yZWNvcmRzLXBlcnNpc3RlbmN5Iik7CkBA
IC00NCw1ICs1OCw2IEBAIHByb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKICAgICBhc3NlcnRf
ZXF1YWxzKGtleXMubGVuZ3RoLCAwLCAicmVjb3JkcyBzaG91bGQgYmUgZW1wdHkiKTsKIH0sICdD
bGVhcmluZyBkaXNrIGNhY2hlIG9mIGEgZ2l2ZW4gb3JpZ2luJyk7CiAgICAgPC9zY3JpcHQ+Cisg
ICAgPGlmcmFtZSBzcmM9Imh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvY2FjaGUtc3RvcmFnZS9yZXNv
dXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1lLmh0bWwjbmFtZT1jYWNoZTEiPjwvaWZyYW1l
PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDM2NzA3ZGQxYWI5NGE2NzZiNThiNGVkMDhhZTVkNTNkOGZmNjA3ZmYuLjM3ODdk
YjNlZWM2ZjYxOWQ0ZDIxYzQ3MzBiMGEyZTlkYzA4ZjUxNGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3Jp
Z2lucy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw3IEBACiAgIAogCiBQQVNTIENyZWF0
ZSBhIGNhY2hlIHN0b3JhZ2UgYW5kIGxvb2sgYXQgdGhlIHJlcHJlc2VudGF0aW9uIAotUEFTUyBD
YWNoZXMgZnJvbSBkaWZmZXJlbnQgb3JpZ2lucyBzaG91bGQgbm90IG1peCAKK1BBU1MgVmVyaWZ5
aW5nIHRoYXQgdHdvIGNhY2hlcyBhcmUgY3JlYXRlZCBvbiB0d28gZGlmZmVyZW50IGNsaWVudCBv
cmlnaW5zIAorUEFTUyBWZXJpZnlpbmcgdGhhdCBjYWNoZXMgYXJlIGNsdXN0ZXJlZCBwZXIgY2xp
ZW50IG9yaWdpbi4gCitQQVNTIFZlcmlmeWluZyB0aGF0IGNsZWFyaW5nIGNhY2hlcyBmb3IgYW4g
b3JpZ2luIHdpbGwgY2xlYXIgYm90aCB0b3Agb3JpZ2luIGFuZCBjbGllbnQgb3JpZ2luIGNhY2hl
cy4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1vcmlnaW5zLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0
b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy5odG1sCmluZGV4IGYyOWI5YjE3ODFmMGEzNTc3YTE0
YWFjMTAyY2EzZjA3MGJkMTIyNTAuLjc3MzFmMWM0YTFmMzAxMDg4ZDhlYWZjMzQzODY2YTc5NWY4
M2ZjZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1vcmlnaW5zLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNo
ZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMuaHRtbApAQCAtOCwyOCArOCw1NCBAQAogPGJv
ZHk+CiAgICAgPHNjcmlwdD4KIAotICAgIGZ1bmN0aW9uIGNoZWNrQ2FjaGVzKG5hbWUpIHsKLSAg
ICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hl
cy5rZXlzKCkudGhlbihrZXlzID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShrZXlz
LmluZGV4T2YoImNhY2hlMSIpICE9PSAtMSwgIlNob3VsZCBoYXZlIGNhY2hlMSIpOwotICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGtleXMuaW5kZXhPZigiY2FjaGUyIikgPT09IC0xLCAiU2hv
dWxkIG5vdCBoYXZlIGNhY2hlMSIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIG5hbWUp
OworICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrQ2FjaGVzQWZ0ZXJDbGVhcmluZ01lbW9yeVJlcHJl
c2VudGF0aW9uKG5hbWUpIHsKKyAgICAgICAgYXdhaXQgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9y
YWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgdmFyIGtleXMgPSBhd2FpdCBzZWxm
LmNhY2hlcy5rZXlzKCk7CisgICAgICAgIHRlc3QoKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0
X3RydWUoa2V5cy5pbmRleE9mKCJjYWNoZTEiKSAhPT0gLTEsICJTaG91bGQgaGF2ZSBjYWNoZTEi
KTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGtleXMuaW5kZXhPZigiY2FjaGUyIikgPT09IC0x
LCAiU2hvdWxkIG5vdCBoYXZlIGNhY2hlMiIpOworICAgICAgICB9LCAiVmVyaWZ5aW5nIHRoYXQg
Y2FjaGVzIGFyZSBjbHVzdGVyZWQgcGVyIGNsaWVudCBvcmlnaW4uIik7CisgICAgfQorCisgICAg
YXN5bmMgZnVuY3Rpb24gY2hlY2tDYWNoZXNBZnRlckNsZWFyaW5nT3JpZ2lucygpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5jbGVhckRPTUNhY2hlKCdodHRwczovLzEyNy4wLjAuMTo4NDQzJyk7Cisg
ICAgICAgIHZhciByZXByZXNlbnRhdGlvbiA9IEpTT04ucGFyc2UoYXdhaXQgaW50ZXJuYWxzLmNh
Y2hlU3RvcmFnZUVuZ2luZVJlcHJlc2VudGF0aW9uKCkpOworICAgICAgICB0ZXN0KCgpID0+IHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0ub3JpZ2luLnRvcE9y
aWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMiLCAidG9wIG9yaWdpbiBvZiBjYWNoZSAxIik7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzFdLm9yaWdpbi50b3BP
cmlnaW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwgInRvcCBvcmlnaW4gb2YgY2FjaGUgMiIp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5vcmlnaW4uY2xp
ZW50T3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJjbGllbnQgb3JpZ2luIG9mIGNh
Y2hlIDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMV0ub3Jp
Z2luLmNsaWVudE9yaWdpbiwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMiLCAiY2xpZW50IG9yaWdp
biBvZiBjYWNoZSAyIik7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlcHJlc2Vu
dGF0aW9uWzBdLmNhY2hlcy5wZXJzaXN0ZW50LCBbXSk7CisgICAgICAgICAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzFdLmNhY2hlcy5wZXJzaXN0ZW50LCBbXSk7CisgICAg
ICAgIH0sICJWZXJpZnlpbmcgdGhhdCBjbGVhcmluZyBjYWNoZXMgZm9yIGFuIG9yaWdpbiB3aWxs
IGNsZWFyIGJvdGggdG9wIG9yaWdpbiBhbmQgY2xpZW50IG9yaWdpbiBjYWNoZXMuIik7CisgICAg
fQorCisgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tDYWNoZVJlcHJlc2VudGF0aW9uKCkgeworICAg
ICAgICB2YXIgcmVwcmVzZW50YXRpb24gPSBKU09OLnBhcnNlKGF3YWl0IGludGVybmFscy5jYWNo
ZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbigpKTsKKyAgICAgICAgdGVzdCgoKSA9PiB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi50b3BPcmln
aW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwgInRvcCBvcmlnaW4gb2YgY2FjaGUgMSIpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblsxXS5vcmlnaW4udG9wT3Jp
Z2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJ0b3Agb3JpZ2luIG9mIGNhY2hlIDIiKTsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0ub3JpZ2luLmNsaWVu
dE9yaWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMiLCAiY2xpZW50IG9yaWdpbiBvZiBjYWNo
ZSAxIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzFdLm9yaWdp
bi5jbGllbnRPcmlnaW4sICJodHRwczovL2xvY2FsaG9zdDo4NDQzIiwgImNsaWVudCBvcmlnaW4g
b2YgY2FjaGUgMiIpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRh
dGlvblswXS5jYWNoZXMucGVyc2lzdGVudCwgWyJjYWNoZTEiXSk7CisgICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzFdLmNhY2hlcy5wZXJzaXN0ZW50LCBbImNh
Y2hlMiJdKTsKKyAgICAgICAgfSwgIlZlcmlmeWluZyB0aGF0IHR3byBjYWNoZXMgYXJlIGNyZWF0
ZWQgb24gdHdvIGRpZmZlcmVudCBjbGllbnQgb3JpZ2lucyIpOwogICAgIH0KIAogICAgIHByb21p
c2VfdGVzdCh0ZXN0ID0+IHsKLSAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyIpOwor
ICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwgIXdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyBh
bmQgdGVzdCBydW5uZXIiKTsKIAogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4gewogICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVz
dC5zdGVwX2Z1bmMoYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKCsrY291
bnRlciA8PSAxKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
aW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKS50aGVuKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tDYWNoZXMoIkNhY2hlcyBmcm9tIGRpZmZl
cmVudCBvcmlnaW5zIHNob3VsZCBub3QgbWl4Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJlc29s
dmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGF3YWl0IGNoZWNr
Q2FjaGVSZXByZXNlbnRhdGlvbigpOworICAgICAgICAgICAgICAgIGF3YWl0IGNoZWNrQ2FjaGVz
QWZ0ZXJDbGVhcmluZ01lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICAgICAgYXdh
aXQgY2hlY2tDYWNoZXNBZnRlckNsZWFyaW5nT3JpZ2lucygpOworICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgfSkKICAgICB9LCAiQ3JlYXRlIGEg
Y2FjaGUgc3RvcmFnZSBhbmQgbG9vayBhdCB0aGUgcmVwcmVzZW50YXRpb24iKTsKQEAgLTQwLDQg
KzY2LDMgQEAKICAgICA8L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330396</attachid>
            <date>2018-01-03 10:00:57 -0800</date>
            <delta_ts>2018-01-03 10:18:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181240-20180103190054.patch</filename>
            <type>text/plain</type>
            <size>63196</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhmMGJhMjk2YjczMzc5
YWE4MWNjYjg1NjNiM2ZmN2VkOWQwOGMxMS4uZGMyOWRjODUwZDNhMTc4MmE1MGU4ZGJlODg3ZGY5
OTVkMGMxZWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ2FjaGUg
QVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4K
KworICAgICAgICBQcmV2aW91c2x5LCBjYWNoZSBzdG9yYWdlIHdhcyBwYXJ0aXRpb25lZCBhY2Nv
cmRpbmcgdGhlIG9yaWdpbiBvZiB0aGUgY2xpZW50LCByZXByZXNlbnRlZCBhcyBhIFN0cmluZy4K
KyAgICAgICAgV2Ugbm93IHBhcnRpdGlvbiBhY2NvcmRpbmcgYm90aCBjbGllbnQgYW5kIHRvcCBv
cmlnaW5zLCByZXByZXNlbnRlZCBhcyBhIENsaWVudE9yaWdpbgorCisgICAgICAgIE1pbm9yIHJl
ZmFjdG9yaW5nIHRvIHVzZSBtb3JlIG1ha2VQZW5kaW5nQWN0aXZpdHkuCisgICAgICAgIEFkZGVk
IHN1cHBvcnQgZm9yIElQQyBzZXJpYWxpemF0aW9uIG9mIENsaWVudE9yaWdpbi4KKyAgICAgICAg
QWRkZWQgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZyB3aGljaCBpcyB1c2VkIGJ5IFdlYktp
dDIgQ2FjaGUgU3RvcmFnZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFn
ZTo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6cmV0
cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICog
cGFnZS9DbGllbnRPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmRlYnVnU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5
UmVwcmVzZW50YXRpb24pOgorCiAyMDE4LTAxLTAzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBUaGUgYnVzIHN5bmNocm9ub3Vz
IGhhbmRsZXIgc2hvdWxkIGJlIGluIHRoZSBiYXNlIHBsYXllciBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5
YTZkMDQ0MjlhOGI0ZjA1YTdkNTdhZDAzODU2Zjg1MDk3NzNlMTlkLi4yM2VlZGY0Y2E1OWQ2OTFm
OGQ0ODNkZTY2YWMxN2Y4MDA2ZGEzYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4
LTAxLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgQ2FjaGUgQVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG9wZW4gYW5kIHJldHJp
ZXZlQ2FjaGVzIG5vdyB0YWtlIGEgQ2xpZW50T3JpZ2luIGluc3RlYWQgb2YgYSBTdHJpbmcuCisg
ICAgICAgIFVwZGF0ZWQgY2FjaGUgZmlsZXN5c3RlbSBwYXRoIGNvbXB1dGF0aW9uIHRvIHRha2Ug
Ym90aCBjbGllbnQgb3JpZ2luIGFuZCB0b3Agb3JpZ2luLgorCisgICAgICAgIFdoZW4gY2xlYXJp
bmcgYW4gb3JpZ2luLCBjYWNoZXMgd2hvc2UgY2xpZW50IG9yaWdpbiBvciB0b3Agb3JpZ2luIG1h
dGNoZXMgdGhlIG9yaWdpbiBhcmUgY2xlYXJlZC4KKyAgICAgICAgQ2FjaGVzIGFyZSBhZGRlZCB0
byB0aGUgd2ViIHNpdGUgZGF0YSBvZiB0aGVpciBjbGllbnQgb3JpZ2luIHdpdGggdGhlaXIgY29y
cmVzcG9uZGluZyBjYWNoZSBzaXplLgorICAgICAgICBDYWNoZXMgYXJlIGFkZGVkIHRvIHRoZSB3
ZWIgc2l0ZSBkYXRhIG9mIHRoZWlyIHRvcCBvcmlnaW4gd2l0aCBhIHNpemUgZXF1YWwgdG8gMC4K
KworICAgICAgICBVcGRhdGVkIG1lbW9yeSByZXByZXNlbnRhdGlvbiBkdW1waW5nIHVzZWQgZm9y
IHRlc3QgdG8gaW5jbHVkZSBib3RoIHRvcCBhbmQgY2xpZW50IG9yaWdpbnMuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjYWNoZXNSb290UGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVtb3ZlQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmZldGNoRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OkNhY2hlcyk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpzdG9yZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZWFkT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZXM6Om9wZW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpjYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpkb09wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisKIDIwMTgtMDEtMDMgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFJlYWxseSBmaXggcGx1Z2luIHByb2Nlc3MgYWZ0ZXIgcjIyNjMyNy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDIwNTIyZjBhZDk3YWIyODZjNTg5NDU1NDY3YmRjNjc0YWNiZjFkMzcuLmZlMGRmYTZiYzE4
NGIxZmViNjlhM2FlYzU3ZGE1NjczMTNhMWQ3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMzMsNyAr
MzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOwogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJ
ZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9vcGVuQW5kUmVtb3Zl
Q2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVt
b3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsCiAgICAgZG9S
ZW1vdmUocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4s
IHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFz
dFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMu
YWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4
IDZjYTdiZmI5MTRlMDU5ZGRlYWE0NDMzNTZjNjAyOWUxYzBkMGFlY2QuLjRkYWEzNDQ4ZjIyYWNk
MWM0ODIwMTczMDJkM2M2N2I5Yjk0ZDhkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIEZl
dGNoUmVzcG9uc2U7CiAKIGNsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gewpAQCAtMzksOSArNDAs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSk7IH0K
ICAgICB2aXJ0dWFsIH5DYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCi0gICAg
dm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwg
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQgb3Bl
bihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgRE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVtb3ZlKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxi
YWNrJiYpOwotICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCB1cGRhdGVDb3VudGVyLCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwog
CiAgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgYmF0
Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgfQog
CiAgICAgLy8gVXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgotICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2so
RE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBDbGllbnRPcmlnaW4mLCBET01DYWNo
ZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRE9NQ2Fj
aGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5n
aW5lUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNh
bGxiYWNrKSB7IGNhbGxiYWNrKFN0cmluZyB7IH0pOyB9CiAKIHByb3RlY3RlZDoKQEAgLTY3LDkg
KzY4LDkgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UmVjb3Jkc0Nv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZElkZW50aWZpZXJzT3JFcnJvciYmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9P
cGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAq
LywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIHsgb3BlbkNvbXBsZXRlZChyZXF1ZXN0
SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBs
ZW1lbnRlZCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUg
Ki8pIHsgb3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9N
Q2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlk
ZW50aWZpZXIgKi8pIHsgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5l
eHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50ZXIgKi8p
IHsgdXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9CisgICAgdmlydHVhbCB2
b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENs
aWVudE9yaWdpbiYsIHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50ZXIgKi8pIHsgdXBkYXRlQ2FjaGVz
KHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2
ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRl
bnRpZmllciAqLywgY29uc3QgVVJMJiAvKiB1cmwgKi8pIHsgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0
SWRlbnRpZmllciwgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZp
ZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYpIHsgZGVs
ZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9N
Q2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODU5OTU4OTQ0ZjNi
YjJkYTgyMGNjOTE1NmVhYThhMTgxODJhZTI4OS4uYzEyMjA4M2Q1NGEwYWE0YmI4Yjg2ZTljY2M0
MWRjNWFkNDgyN2I3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVTdG9yYWdlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRPTUNhY2hlU3Rv
cmFnZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVRdWVyeU9wdGlvbnMuaCIKKyNpbmNsdWRlICJDbGll
bnRPcmlnaW4uaCIKICNpbmNsdWRlICJKU0RPTUNhY2hlLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJl
c3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDIsMTEg
KzQzLDEzIEBAIERPTUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVTdG9yYWdlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3JhCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7
CiB9CiAKLVN0cmluZyBET01DYWNoZVN0b3JhZ2U6Om9yaWdpbigpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAogewotICAg
IC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBmb3Igb3JpZ2luIGJlaW5nIG51
bGw/CiAgICAgYXV0byogb3JpZ2luID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID8gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKLSAgICByZXR1
cm4gb3JpZ2luID8gb3JpZ2luLT50b1N0cmluZygpIDogU3RyaW5nKCk7CisgICAgaWYgKCFvcmln
aW4pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gQ2xpZW50T3Jp
Z2luIHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT50b3BPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKCpvcmlnaW4pIH07CiB9CiAKIHN0YXRpYyB2b2lkIGRvU2VxdWVudGlhbE1hdGNo
KHNpemVfdCBpbmRleCwgVmVjdG9yPFJlZjxET01DYWNoZT4+JiYgY2FjaGVzLCBET01DYWNoZTo6
UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTUNhY2hl
OjpNYXRjaENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMzUsMTIgKzEzOCwxMSBA
QCBSZWY8RE9NQ2FjaGU+IERPTUNhY2hlU3RvcmFnZTo6ZmluZENhY2hlT3JDcmVhdGUoQ2FjaGVJ
bmZvJiYgaW5mbykKIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKFdURjo6
RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7
Ci0gICAgU3RyaW5nIG9yaWdpbiA9IHRoaXMtPm9yaWdpbigpOwotICAgIGlmIChvcmlnaW4uaXNO
dWxsKCkpCisgICAgYXV0byBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKKyAgICBpZiAoIW9yaWdp
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAg
IG1fY29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2luLCBtX3VwZGF0ZUNvdW50ZXIsIFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZUluZm9zT3JFcnJvciYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgbV9jb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcygqb3JpZ2lu
LCBtX3VwZGF0ZUNvdW50ZXIsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBw
ZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oQ2FjaGVJbmZvc09y
RXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7CiAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGNh
bGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7
CkBAIC0xNTgsNyArMTYwLDYgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVz
KFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KLSAgICAg
ICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgfSk7CiB9CiAKQEAgLTE4NSwxMSAr
MTg2LDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEQKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFN0cmluZyBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKLSAgICAg
ICAgQVNTRVJUKCFvcmlnaW4uaXNOdWxsKCkpOwotCi0gICAgICAgIHNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgbmFtZSwgW3RoaXMs
IG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNoZUlkZW50aWZpZXJP
ckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKm9y
aWdpbigpLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShjb25zdCBDYWNoZUlk
ZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2lz
U3RvcHBlZCkgewogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAg
ICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4
Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwpAQCAtMjAyLDcgKzE5OSw2IEBAIHZvaWQgRE9NQ2Fj
aGVTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEludGVyZmFjZTxECiAgICAgICAgICAgICAgICAgICAgIG1fY2FjaGVzLmFwcGVuZChXVEZNb3Zl
KGNhY2hlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAg
dW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAt
MjE0LDMxICsyMTAsMzAgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJp
bmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYKICAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQorICAgICAgICBkb1JlbW92YWwobmFtZSwgV1RGTW92ZShwcm9taXNl
KSk7CisgICAgfSk7Cit9CiAKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRN
YXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0p
OwotICAgICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBTdHJpbmcgb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7Ci0gICAgICAgIEFTU0VSVCghb3Jp
Z2luLmlzTnVsbCgpKTsKK3ZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpkb1JlbW92YWwoY29uc3QgU3Ry
aW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQorewor
ICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0p
IHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KTsKKyAgICBpZiAocG9zaXRpb24gPT0g
bm90Rm91bmQpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAg
IG1fY29ubmVjdGlvbi0+cmVtb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXS0+aWRlbnRpZmllcigpLCBb
dGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGNvbnN0IENhY2hlSWRlbnRp
Zmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIW1faXNTdG9w
cGVkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0
aW9uKHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIG5hbWUpOwotICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUodHJ1
ZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlKG1fY2FjaGVz
W3Bvc2l0aW9uXS0+aWRlbnRpZmllcigpLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShj
b25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBp
ZiAoIW1faXNTdG9wcGVkKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkK
KyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4
Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKKyAgICAgICAgICAgICAg
ICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBuYW1lKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUodHJ1ZSk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIG1fY2FjaGVzLnJlbW92ZShwb3NpdGlvbik7CisgICAgICAgIH0KICAgICB9
KTsKKyAgICBtX2NhY2hlcy5yZW1vdmUocG9zaXRpb24pOwogfQogCiB2b2lkIERPTUNhY2hlU3Rv
cmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCA5M2E4MmZiYjczZDU0MzAxZWZiYjU3
NDVkYjBhNmIzMGM2OTkyZWE3Li5jMTM5YjUxMDg0YjgxMjc3NWM2OWZiYzAzZWYzMjhhOWI2NTdj
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3Rv
cmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdl
LmgKQEAgLTUyLDkgKzUyLDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50
U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBkb1JlbW92YWwoY29uc3QgU3Ry
aW5nJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwogICAgIHZvaWQgcmV0cmll
dmVDYWNoZXMoV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4m
Jik7CiAgICAgUmVmPERPTUNhY2hlPiBmaW5kQ2FjaGVPckNyZWF0ZShET01DYWNoZUVuZ2luZTo6
Q2FjaGVJbmZvJiYpOwotICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPENsaWVudE9yaWdpbj4gb3JpZ2luKCkgY29uc3Q7CiAKICAgICBWZWN0b3I8UmVmPERPTUNh
Y2hlPj4gbV9jYWNoZXM7CiAgICAgdWludDY0X3QgbV91cGRhdGVDb3VudGVyIHsgMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjllNTQ3MTUyZGVjM2NjYjNmZDI4ZWM5NWI1NzM5
Nzg2OTY1OGNhZi4uYzU0MzdiNjY1ODViNzU2YWJkODE5M2E3OWY0ODY3ZjQxMWNmNjcwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6fldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkQ29ubmVjdGlvbiA9IFdURk1vdmUobV9tYWlu
VGhyZWFkQ29ubmVjdGlvbildKCkgbXV0YWJsZSB7IH0pOwogfQogCi12b2lkIFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQordm9pZCBXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkKIHsK
ICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2NvcGUudGhy
ZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJl
cXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNhY2hlTmFt
ZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1haW5U
aHJlYWRDb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgY2FjaGVOYW1lLCBbd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0gKGNvbnN0IENhY2hlSWRl
bnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QKICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikKK3ZvaWQgV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0
ZUNvdW50ZXIpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gbWFrZVJl
ZihtX3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRD
b25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0gb3JpZ2luLmlzb2xhdGVkQ29w
eSgpLCB1cGRhdGVDb3VudGVyXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbWFpblRocmVhZENvbm5l
Y3Rpb24tPnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwgdXBkYXRlQ291bnRlciwgW3dvcmtlclRocmVh
ZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdIChDYWNoZUluZm9z
T3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDI3
NmE1N2FkYjIwYjIyYjU2M2VkNzg1NzU3ZTk0YzhiOTRlYjBkMjYuLjdhYTA1YWRiY2JkMGIzYTQ1
NzgzNTI5YzRmZGNkOTY2ZGNmNjk4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC00Miw5
ICs0Miw5IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbihXb3JrZXJHbG9iYWxTY29wZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6Q2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi4KLSAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKSBmaW5hbDsKKyAg
ICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZG9SZW1vdmUo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikgZmluYWw7Cisg
ICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKIAogICAgIHZv
aWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVu
dE9yaWdpbi5oCmluZGV4IDIwZTI4MzgxYTM4MDFlOWNiOWFiNWM2ZTQxZjA1YTcwYTI2ZjkwZWUu
Ljg3Y2JiZDFmMGUzYjUzZTkxZjIyOWJlNGUzZGYxYTY0ZWNiOWQ0N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DbGllbnRPcmlnaW4uaApAQCAtMzYsNiArMzYsMTEgQEAgc3RydWN0IENsaWVudE9yaWdpbiB7
CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
bGllbnRPcmlnaW4mKSBjb25zdDsKIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICBD
bGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKICAgICBTZWN1cml0eU9yaWdpbkRh
dGEgdG9wT3JpZ2luOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBjbGllbnRPcmlnaW47CiB9OwpA
QCAtNTQsNiArNTksMzAgQEAgaW5saW5lIGJvb2wgQ2xpZW50T3JpZ2luOjpvcGVyYXRvcj09KGNv
bnN0IENsaWVudE9yaWdpbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRvcE9yaWdpbiA9PSBv
dGhlci50b3BPcmlnaW4gJiYgY2xpZW50T3JpZ2luID09IG90aGVyLmNsaWVudE9yaWdpbjsKIH0K
IAoraW5saW5lIENsaWVudE9yaWdpbiBDbGllbnRPcmlnaW46Omlzb2xhdGVkQ29weSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjbGllbnRPcmlnaW4u
aXNvbGF0ZWRDb3B5KCkgfTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZv
aWQgQ2xpZW50T3JpZ2luOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IHRvcE9yaWdpbjsKKyAgICBlbmNvZGVyIDw8IGNsaWVudE9yaWdpbjsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2lu
PiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0
aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW4sIGNsaWVudE9yaWdpbjsKKyAgICBk
ZWNvZGVyID4+IHRvcE9yaWdpbjsKKyAgICBpZiAoIXRvcE9yaWdpbikKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKKyAgICBpZiAoIWNs
aWVudE9yaWdpbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBD
bGllbnRPcmlnaW4geyBXVEZNb3ZlKCp0b3BPcmlnaW4pLCBXVEZNb3ZlKCpjbGllbnRPcmlnaW4p
IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggYWRhMWY0MWQyMzA1
YTdlYTRhMDhhNmQyMGY2NjgwNGI2YzY3ZTM5Zi4uZTkwYWI4MjFmNzhmZDU1NmZmNTY4N2QzMGU5
ZjJmNzYwYjM5NjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcApAQCAtNDgsMTIgKzQ4LDEwIEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYKICAgICByZXR1
cm4gc2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCi0jaWYgIUxPR19ESVNBQkxFRAotU3RyaW5nIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcoKSBjb25zdAorU3RyaW5nIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3Rv
Y29sLCAiOi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlX29yKDApKSk7
CiB9Ci0jZW5kaWYKIAogU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCmluZGV4IDBlZmZhNjQ0Zjk5MjRjODg4M2ZjMWFjZDQxOWJjYzVjZWNjODFmOTUuLjVm
NTVmOTQyYjgxZmNmZTAwYmZkNDNiYzEwOTk2ZjNjZGMyNDcxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtNzcsOCArNzcsMTAgQEAgc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSB7CiAgICAgICAgIHJldHVybiBwcm90b2NvbC5pc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpOwogICAgIH0KICAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKKwogI2lmICFMT0dfRElTQUJMRUQKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZGVidWdTdHJpbmcoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVidWdTdHJpbmcoKSBjb25zdCB7
IHJldHVybiB0b1N0cmluZygpOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCAxZmI2MWNlM2Y4NmVlNzY0OWM0ZThhZWU1NGI1YzJiYWM1Y2M4MmUy
Li42NjVkYTE5YjcxYjdjYTYxMmY1MzI0ZjA1MjZiZGRkYTc5Yzg1YTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNo
cm9tZS5oIgorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbXBvc2VkVHJl
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRE9NUmVjdC5oIgpA
QCAtNDI0OCw3ICs0MjQ5LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVt
b3J5UmVwcmVzZW50YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYKICAgICAgICAgaWYg
KCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LT50b3BPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSB9LCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDBiMzI2NDFjYmE4YzM2OWI4ODc3MTdiMjczNDg0ZjdmY2ViZmEyMTEuLmI3Y2Qw
OTY5NWJjNWUzZWI4Njk5NWE1MWM4YTE3NzExMTEyN2E1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MjMsMTAgKzUyMyw4IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgfSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewotICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykgewotICAgICAgICAgICAgYXV0byBvcmln
aW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7Ci0gICAgICAgICAg
ICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmNsZWFyQ2FjaGVzRm9yT3Jp
Z2luKG9yaWdpbiwgY2xlYXJUYXNrc0hhbmRsZXIpOwotICAgICAgICB9CisgICAgICAgIGZvciAo
YXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQorICAgICAgICAgICAgQ2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhckNhY2hlc0Zvck9yaWdpbihvcmlnaW5EYXRh
LCBjbGVhclRhc2tzSGFuZGxlcik7CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA4NGM0ZmZlZWIzMTk1YTY3NjkyZjY0ZjQy
YjAwNWJkNzY0Mzk4YWYzLi5mZWM1MGU0YTM0NGNkYWIxY2IwZDc0MzVmNTQ2ZWE4OTlkMWZmNjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAgc3RhdGljIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxFbmdpbmU+PiYgZ2xvYmFsRW5naW5lTWFwKCkKICAgICBy
ZXR1cm4gbWFwOwogfQogCi1TdHJpbmcgRW5naW5lOjpjYWNoZXNSb290UGF0aChjb25zdCBTdHJp
bmcmIG9yaWdpbikKK1N0cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgS2V5IGtleShvcmlnaW4sIHsgfSwgeyB9LCB7IH0sIHNh
bHQoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpOworICAgIEtl
eSBrZXkob3JpZ2luLnRvcE9yaWdpbi50b1N0cmluZygpLCBvcmlnaW4uY2xpZW50T3JpZ2luLnRv
U3RyaW5nKCksIHsgfSwgeyB9LCBzYWx0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5Lmhhc2hBc1N0cmlu
ZygpKTsKIH0KIAogRW5naW5lOjp+RW5naW5lKCkKQEAgLTEwMCw3ICsxMDAsNyBAQCBFbmdpbmU6
OkVuZ2luZShTdHJpbmcmJiByb290UGF0aCkKICAgICAgICAgbV9pb1F1ZXVlID0gV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlhbEJhY2tn
cm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91
bmQpOwogfQogCi12b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIEVuZ2luZTo6b3Blbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhY2hlTmFtZSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIGNhY2hlc09yRXJyb3IpIG11dGFi
bGUgewogICAgICAgICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzX3ZhbHVlKCkpIHsKQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjawogICAgIGZvciAoYXV0byYgY2FjaGVz
IDogbV9jYWNoZXMudmFsdWVzKCkpIHsKICAgICAgICAgYXV0byogY2FjaGVUb1JlbW92ZSA9IGNh
Y2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoY2FjaGVUb1JlbW92ZSkg
ewotICAgICAgICAgICAgY2FjaGVzVG9Nb2RpZnkgPSBjYWNoZXMucHRyKCk7CisgICAgICAgICAg
ICBjYWNoZXNUb01vZGlmeSA9IGNhY2hlcy5nZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgRW5naW5lOjpyZW1vdmUodWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNr
CiAgICAgY2FjaGVzVG9Nb2RpZnktPnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIAotdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYg
b3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW3VwZGF0ZUNv
dW50ZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlc09yRXJyb3ImJiBjYWNo
ZXNPckVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFjYWNoZXNPckVycm9yLmhhc192YWx1
ZSgpKSB7CkBAIC0yMDMsMTUgKzIwMywxNiBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShGdW5j
dGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNhbGxiYWNrKQogICAgIH0pOwog
fQogCi12b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9t
RGlzayhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICBpbml0aWFsaXplKFt0aGlzLCBvcmlnaW4sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUg
ewogICAgICAgICBhdXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbJm9yaWdp
biwgdGhpc10gewotICAgICAgICAgICAgcmV0dXJuIENhY2hlczo6Y3JlYXRlKCp0aGlzLCBTdHJp
bmcgeyBvcmlnaW4gfSwgY2FjaGVzUm9vdFBhdGgob3JpZ2luKSwgTmV0d29ya1Byb2Nlc3M6OnNp
bmdsZXRvbigpLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkpOworICAgICAgICAgICAgYXV0
byBwYXRoID0gY2FjaGVzUm9vdFBhdGgob3JpZ2luKTsKKyAgICAgICAgICAgIHJldHVybiBDYWNo
ZXM6OmNyZWF0ZSgqdGhpcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luIH0sIFdURk1v
dmUocGF0aCksIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQZXJPcmln
aW5RdW90YSgpKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIGlmIChj
YWNoZXMtPmlzSW5pdGlhbGl6ZWQoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgY2FjaGVzLmdldCgpIH0pOworICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgKmNhY2hlcyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjYsNyArMjI3LDcgQEAgdm9pZCBFbmdp
bmU6OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7IGNh
Y2hlcy5nZXQoKSB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8Q2FjaGVzPiB7ICpjYWNoZXMgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMzIy
LDEyICszMjMsNiBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmVtb3ZlQ2FjaGVzKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKQotewotICAgIEFTU0VSVChtX2NhY2hlcy5jb250YWlucyhvcmlnaW4pKTsKLSAg
ICBtX2NhY2hlcy5yZW1vdmUob3JpZ2luKTsKLX0KLQogY2xhc3MgUmVhZE9yaWdpbnNUYXNrQ291
bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRPcmlnaW5zVGFza0NvdW50ZXI+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFJlYWRPcmlnaW5zVGFza0NvdW50ZXI+IGNyZWF0ZShXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNhbGxi
YWNrKQpAQCAtMzU5LDcgKzM1NCw3IEBAIHZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoYm9vbCBz
aG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlCiB7CiAgICAg
aWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKICAgICAgICAgYXV0byBlbnRyaWVzID0gV1RGOjptYXAo
bV9jYWNoZXMsIFtdIChhdXRvJiBwYWlyKSB7Ci0gICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGE6OkVudHJ5IHsgcGFpci52YWx1ZS0+b3JpZ2luKCksIFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2Fj
aGUsIDAgfTsKKyAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YTo6RW50cnkgeyBwYWlyLnZh
bHVlLT5vcmlnaW4oKS5jbGllbnRPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIDAg
fTsKICAgICAgICAgfSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cmll
cykpOwogICAgICAgICByZXR1cm47CkBAIC0zNjksMjIgKzM2NCwyMiBAQCB2b2lkIEVuZ2luZTo6
ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZQogICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewogICAgICAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVy
UGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxk
Q29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigpXSAoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgb3JpZ2luKSBtdXRhYmxlIHsK
KyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwg
Km1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxkQ29tcHV0
ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigpXSAoYXV0byYmIG9yaWdp
bikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
ICAgICAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICBpZiAoIXNob3VsZENvbXB1dGVTaXplKSB7Ci0gICAgICAgICAgICAgICAgdGFza0NvdW50
ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi52YWx1ZSgpKSwgMCk7CisgICAgICAgICAgICAg
ICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi0+dG9wT3JpZ2luKSwgMCk7
CisgICAgICAgICAgICAgICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi0+
Y2xpZW50T3JpZ2luKSwgMCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBhdXRvIGNhY2hlT3JpZ2luID0gb3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVhZENhY2hlc0Zy
b21EaXNrKGNhY2hlT3JpZ2luLCBbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4udmFsdWUoKSksIHRh
c2tDb3VudGVyID0gV1RGTW92ZSh0YXNrQ291bnRlcildIChDYWNoZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnJlYWRDYWNoZXNGcm9tRGlz
ayhvcmlnaW4udmFsdWUoKSwgW29yaWdpbiA9IG9yaWdpbi52YWx1ZSgpLCB0YXNrQ291bnRlciA9
IFdURk1vdmUodGFza0NvdW50ZXIpXSAoQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdU
Rk1vdmUob3JpZ2luKSwgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuc3RvcmFnZVNpemUoKSk7Ci0KKyAg
ICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdURk1vdmUob3JpZ2luLnRvcE9y
aWdpbiksIDApOworICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92
ZShvcmlnaW4uY2xpZW50T3JpZ2luKSwgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuc3RvcmFnZVNpemUo
KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtNDA2LDIyICs0MDEs
MzQgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKENhbGxiYWNrQWdncmVnYXRvciYgdGFz
a0hhbmRsZXIpCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0YXNrSGFuZGxlcikK
K3ZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0YXNrSGFuZGxlcikKIHsK
LSAgICBpZiAoYXV0byBjYWNoZXMgPSBtX2NhY2hlcy5nZXQob3JpZ2luKSkgewotICAgICAgICBj
YWNoZXMtPmNsZWFyKFt0YXNrSGFuZGxlciA9IG1ha2VSZWYodGFza0hhbmRsZXIpXSB7IH0pOwot
ICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IG1fY2FjaGVzKSB7Cisg
ICAgICAgIGlmIChrZXlWYWx1ZS5rZXkudG9wT3JpZ2luID09IG9yaWdpbiB8fCBrZXlWYWx1ZS5r
ZXkuY2xpZW50T3JpZ2luID09IG9yaWdpbikKKyAgICAgICAgICAgIGtleVZhbHVlLnZhbHVlLT5j
bGVhcihbdGFza0hhbmRsZXIgPSBtYWtlUmVmKHRhc2tIYW5kbGVyKV0geyB9KTsKICAgICB9CiAK
ICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pb1F1
ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBjYWNoZXNSb290UGF0aChvcmlnaW4pLCB0YXNrSGFu
ZGxlciA9IG1ha2VSZWYodGFza0hhbmRsZXIpXSB7Ci0gICAgICAgIGRlbGV0ZURpcmVjdG9yeVJl
Y3Vyc2l2ZWx5KGZpbGVuYW1lKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGgg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsK
KyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVy
UGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8p
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5G
cm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbiwgdGFza0hhbmRsZXIgPSBtYWtlUmVmKHRhc2tIYW5k
bGVyKV0gKGF1dG8mJiBmb2xkZXJPcmlnaW4pIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFm
b2xkZXJPcmlnaW4pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKGZv
bGRlck9yaWdpbi0+dG9wT3JpZ2luICE9IG9yaWdpbiAmJiBmb2xkZXJPcmlnaW4tPmNsaWVudE9y
aWdpbiAhPSBvcmlnaW4pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBT
dHJpbmcgcGF0aCA9IGNhY2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmlnaW4pOworICAgICAgICAgICAg
bV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IFdURk1vdmUocGF0aCksIHRhc2tIYW5kbGVyID0g
V1RGTW92ZSh0YXNrSGFuZGxlcildIHsKKyAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlS
ZWN1cnNpdmVseShwYXRoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAKLXZvaWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmln
aW4sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZXNPckVycm9yJiYgcmVzdWx0
KSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CkBAIC00NjksOSArNDc2LDEx
IEBAIFN0cmluZyBFbmdpbmU6OnJlcHJlc2VudGF0aW9uKCkKICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCIsIik7CiAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKIAotICAgICAgICBidWlsZGVy
LmFwcGVuZCgiXG57IFwib3JpZ2luXCIgOiBcIiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChr
ZXlWYWx1ZS5rZXkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXCIsIFwiY2FjaGVzXCIgOiAi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxueyBcIm9yaWdpblwiIDogeyBcInRvcE9yaWdp
blwiIDogXCIiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoa2V5VmFsdWUua2V5LnRvcE9yaWdp
bi50b1N0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlwiLCBcImNsaWVudE9yaWdp
blwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChrZXlWYWx1ZS5rZXkuY2xpZW50T3Jp
Z2luLnRvU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXCIgfSwgXCJjYWNoZXNc
IiA6ICIpOwogICAgICAgICBrZXlWYWx1ZS52YWx1ZS0+YXBwZW5kUmVwcmVzZW50YXRpb24oYnVp
bGRlcik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ9Iik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgK
aW5kZXggOGFlYThmMThjZWFkN2JlZjdiMzMyYjIxMTVmZDc2OGNhYTllNWFjNi4uMDc1ZWVlNWZj
ZDM5OTk4YTNlNDE5NGJmMTEzYmIzNjQzMjhjNjkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0NhY2hlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KQEAgLTYzLDkgKzY0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRQZXJzaXN0
KCkgY29uc3QgeyByZXR1cm4gISFtX2lvUXVldWU7fQogCi0gICAgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQgb3Blbihjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVt
b3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCiAgICAgdm9pZCBy
ZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwmJiwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2b2lkIHB1
dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJik7CkBAIC04MiwxOSArODMsMTcgQEAgcHVibGljOgogICAgIGNvbnN0
IE5ldHdvcmtDYWNoZTo6U2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdC52YWx1ZSgp
OyB9CiAgICAgdWludDY0X3QgbmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJuICsrbV9uZXh0
Q2FjaGVJZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIHJlbW92ZUNhY2hlcyhjb25zdCBTdHJpbmcm
IG9yaWdpbik7Ci0KLSAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2sm
Jik7CiAgICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CiAKICAgICB2b2lkIGNsZWFyQWxsQ2Fj
aGVzKFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yJik7Ci0gICAgdm9pZCBjbGVhckNhY2hlc0Zvck9y
aWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3ImKTsKKyAg
ICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yJik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IEVuZ2luZSYgZGVmYXVsdEVuZ2luZSgpOwogICAgIGV4cGxpY2l0IEVuZ2luZShTdHJpbmcmJiBy
b290UGF0aCk7CiAKLSAgICBTdHJpbmcgY2FjaGVzUm9vdFBhdGgoY29uc3QgU3RyaW5nJiBvcmln
aW4pOworICAgIFN0cmluZyBjYWNoZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mKTsKIAogICAgIHZvaWQgZmV0Y2hFbnRyaWVzKGJvb2wgLyogc2hvdWxkQ29tcHV0ZVNpemUg
Ki8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5
Pik+JiYpOwogCkBAIC0xMDIsNyArMTAxLDcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIENhY2hl
c09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlcz4sIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj47CiAgICAgdXNpbmcgQ2FjaGVzQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT47Ci0gICAgdm9pZCByZWFkQ2FjaGVz
RnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNrJiYpOworICAgIHZv
aWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENhY2hl
c0NhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgQ2FjaGVPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZT4sIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj47
CiAgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDYWNoZU9yRXJy
b3ImJik+OwpAQCAtMTEwLDcgKzEwOSw3IEBAIHByaXZhdGU6CiAKICAgICBDYWNoZSogY2FjaGUo
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8Q2Fj
aGVzPj4gbV9jYWNoZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIFJlZlB0
cjxDYWNoZXM+PiBtX2NhY2hlczsKICAgICB1aW50NjRfdCBtX25leHRDYWNoZUlkZW50aWZpZXIg
eyAwIH07CiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9p
b1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IGEyZjE5NzAyNTgxZjc0
YjMxYTMzNjkwNTE2NTYxYWJkY2JjNWU0ZjEuLjM1MzUzMWZhZjExNWYzNWYxZWVlMmRlYjIyYmMx
MGFhMDdmNjVmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzT3JpZ2luRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBjYWNoZXNSb290UGF0aCkKICAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoIm9yaWdp
biIpKTsKIH0KIAotdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXVldWUsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5kaXNwYXRjaChbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZm9sZGVyUGF0aCA9IGZv
bGRlclBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhjYWNoZXNMaXN0RmlsZW5hbWUoZm9sZGVyUGF0aCkp
KSB7CkBAIC03Miw5ICs3Miw5IEBAIHZvaWQgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmIHF1CiAgICAgfSk7CiB9
CiAKLUNhY2hlczo6Q2FjaGVzKEVuZ2luZSYgZW5naW5lLCBTdHJpbmcmJiBvcmlnaW4sIFN0cmlu
ZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBxdW90YSkKK0NhY2hlczo6Q2FjaGVzKEVuZ2luZSYgZW5n
aW5lLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoLCB1
aW50NjRfdCBxdW90YSkKICAgICA6IG1fZW5naW5lKCZlbmdpbmUpCi0gICAgLCBtX29yaWdpbihX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pKSkKKyAgICAsIG1fb3JpZ2lu
KFdURk1vdmUob3JpZ2luKSkKICAgICAsIG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkpCiAg
ICAgLCBtX3F1b3RhKHF1b3RhKQogewpAQCAtODMsMjcgKzgzLDM2IEBAIENhY2hlczo6Q2FjaGVz
KEVuZ2luZSYgZW5naW5lLCBTdHJpbmcmJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoLCB1aW50
NjRfdCBxdW90CiB2b2lkIENhY2hlczo6c3RvcmVPcmlnaW4oQ29tcGxldGlvbkNhbGxiYWNrJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNv
ZGVyOwotICAgIGVuY29kZXIgPDwgbV9vcmlnaW4ucHJvdG9jb2w7Ci0gICAgZW5jb2RlciA8PCBt
X29yaWdpbi5ob3N0OwotICAgIGVuY29kZXIgPDwgbV9vcmlnaW4ucG9ydDsKKyAgICBlbmNvZGVy
IDw8IG1fb3JpZ2luLnRvcE9yaWdpbi5wcm90b2NvbDsKKyAgICBlbmNvZGVyIDw8IG1fb3JpZ2lu
LnRvcE9yaWdpbi5ob3N0OworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4udG9wT3JpZ2luLnBvcnQ7
CisgICAgZW5jb2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4ucHJvdG9jb2w7CisgICAgZW5j
b2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4uaG9zdDsKKyAgICBlbmNvZGVyIDw8IG1fb3Jp
Z2luLmNsaWVudE9yaWdpbi5wb3J0OwogICAgIG1fZW5naW5lLT53cml0ZUZpbGUoY2FjaGVzT3Jp
Z2luRmlsZW5hbWUobV9yb290UGF0aCksIERhdGEgeyBlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVy
LmJ1ZmZlclNpemUoKSB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25hbDxF
cnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoZXJyb3IpKTsKICAgICB9KTsKIH0KIAotc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IENhY2hlczo6cmVhZE9yaWdpbihjb25zdCBEYXRhJiBkYXRhKQorc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IENhY2hlczo6cmVhZE9yaWdpbihjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgbW9k
ZXJuIGRlY29kZXJzIGZvciBwZXJzaXN0ZW50IGRhdGEuCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIG9yaWdpbjsKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3Jp
Z2luLCBjbGllbnRPcmlnaW47CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVy
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9y
aWdpbi5wcm90b2NvbCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0b3BPcmlnaW4ucHJvdG9j
b2wpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUob3JpZ2luLmhvc3QpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUodG9wT3JpZ2luLmhvc3Qp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
b3JpZ2luLnBvcnQpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUodG9wT3JpZ2luLnBvcnQpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBXVEZNb3ZlKG9yaWdpbik7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGllbnRPcmlnaW4ucHJvdG9jb2wpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2xpZW50T3Jp
Z2luLmhvc3QpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY2xpZW50T3JpZ2luLnBvcnQpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHJldHVybiBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9yaWdpbiks
IFdURk1vdmUoY2xpZW50T3JpZ2luKSB9OwogfQogCiB2b2lkIENhY2hlczo6aW5pdGlhbGl6ZShX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaAppbmRleCBlYzA4ZTIzZWM1MWNhMDAzNzNhOWQxMDUxN2Iz
ODFkODM3OGQzMjVhLi5hYTgyM2YyMTZiMDI0MDE1MGI5YjY0NTUyYTJmZTY3MDdhMTY0YjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFn
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIEVuZ2luZTsK
IAogY2xhc3MgQ2FjaGVzIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVzPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxDYWNoZXM+IGNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgU3RyaW5nJiYgb3Jp
Z2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ2FjaGVzIHsgZW5naW5lLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUocm9vdFBhdGgp
LCBxdW90YSB9KTsgfQorICAgIHN0YXRpYyBSZWY8Q2FjaGVzPiBjcmVhdGUoRW5naW5lJiBlbmdp
bmUsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVp
bnQ2NF90IHF1b3RhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlcyB7IGVuZ2luZSwgV1RG
TW92ZShvcmlnaW4pLCBXVEZNb3ZlKHJvb3RQYXRoKSwgcXVvdGEgfSk7IH0KIAotICAgIHN0YXRp
YyB2b2lkIHJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBh
dGgsIFdvcmtRdWV1ZSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOworICAgIHN0YXRpYyB2b2lkIHJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtR
dWV1ZSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNsaWVudE9yaWdpbj4mJik+JiYpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNh
bGxiYWNrJiYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVSZWNv
cmQoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mKTsKIAogICAgIGNvbnN0IE5ldHdvcmtDYWNoZTo6
U2FsdCYgc2FsdCgpIGNvbnN0OwotICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAKICAg
ICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhbV9yb290UGF0aC5pc051bGwo
KTsgfQogCkBAIC03NiwxNCArNzYsMTQgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHN0b3JhZ2VT
aXplKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVzKEVuZ2luZSYsIFN0cmluZyYmIG9y
aWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3RhKTsKKyAgICBDYWNoZXMoRW5n
aW5lJiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIHJvb3RQYXRoLCB1aW50NjRf
dCBxdW90YSk7CiAKICAgICB2b2lkIGluaXRpYWxpemVTaXplKFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZWFkQ2FjaGVzRnJvbURpc2so
V1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpFcnJvcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGVDYWNoZXNUb0Rpc2soV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKIAogICAgIHZvaWQg
c3RvcmVPcmlnaW4oV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYm
KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IHJlYWRPcmlnaW4oY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiByZWFkT3JpZ2luKGNvbnN0IE5ldHdvcmtD
YWNoZTo6RGF0YSYpOwogCiAgICAgQ2FjaGUqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIApA
QCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFs
c2UgfTsKICAgICBFbmdpbmUqIG1fZW5naW5lIHsgbnVsbHB0ciB9OwogICAgIHVpbnQ2NF90IG1f
dXBkYXRlQ291bnRlciB7IDAgfTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgbV9v
cmlnaW47CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG1fb3JpZ2luOwogICAgIFN0cmluZyBt
X3Jvb3RQYXRoOwogICAgIHVpbnQ2NF90IG1fcXVvdGEgeyAwIH07CiAgICAgdWludDY0X3QgbV9z
aXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5kZXggYjAw
MDY4OTA1YjJkYmJmOWUwZDM4MGMxMzRiNGMxYTA2NDQ2OGYxZi4uNTg5YzVlOTlmYzI3MTIwMWEx
ZjYwNjg5MTRjYTM2ZTlhZjU4NGJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b24uY3BwCkBAIC01Myw3ICs1Myw3IEBAIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246On5D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKCkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBjYWNoZU5hbWUpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQog
ewogICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFtj
b25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklE
LCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0
KSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246Ok9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Np
b25JRC5zZXNzaW9uSUQoKSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cmVxCiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2Fj
aGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpCiB7CiAgICAgRW5naW5lOjpmcm9tKHNl
c3Npb25JRCkucmV0cmlldmVDYWNoZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBbY29ubmVjdGlv
biA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgb3JpZ2lu
LCByZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
VXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6ZGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfCiAgICAg
cmVmZXJlbmNlcy5yZW1vdmUocmVmZXJlbmNlUmVzdWx0KTsKIH0KIAotdm9pZCBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJl
cHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIEVu
Z2luZTo6ZnJvbShzZXNzaW9uSUQpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luLCBb
Y29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25J
RCwgcmVxdWVzdElkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7CiAg
ICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OkNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb25Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IGVycm9yKSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmgKaW5kZXggOWFmZmY2ODk1M2IzOWJhNTk3YWQ1NTEwNTQ2ZWVjOWUzNDk3OGViZi4u
ZTU3YzVlMzkwZTA2M2Q5ZmIxZDVkMGQ5MjVmYTJlMzFlN2FmZDIyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uLmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJik7CiAKLSAgICB2b2lkIG9wZW4oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IG9wZW5SZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgY2FjaGVOYW1lKTsKKyAgICB2b2lkIG9wZW4oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IG9wZW5SZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29u
c3QgU3RyaW5nJiBjYWNoZU5hbWUpOwogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklELCB1
aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNo
ZXNJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRl
cik7CisgICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJldHJpZXZlQ2Fj
aGVzSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBk
YXRlQ291bnRlcik7CiAKICAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2Vi
Q29yZTo6VVJMJiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMm
Jik7CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZlcmVuY2UoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZXJlZmVyZW5j
ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIHZvaWQg
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKyAgICB2b2lkIGNsZWFyTWVtb3J5
UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIGVuZ2luZVJlcHJlc2Vu
dGF0aW9uKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAg
ICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQ2ZTNjZTU0
MjZhNTY5MmI3ZDA2YWRlNGQ4YTFiOTk1M2U0ZDNkMmQuLmUzMTA3ZTIwMTQ2ZDU5MDAzYjIwNmIx
ZGVkZjZmODYzY2I4YzU1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI0LDExICsyNCwxMSBAQCBtZXNzYWdlcyAtPiBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uIHsKICAgICBSZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIERlcmVmZXJlbmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIE9w
ZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
U3RyaW5nIG9yaWdpbiwgU3RyaW5nIGNhY2hlTmFtZSk7CisgICAgT3BlbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbiwgU3RyaW5nIGNhY2hlTmFtZSk7CiAgICAgUmVtb3ZlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7Ci0gICAgQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0cmluZyBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0
ZUNvdW50ZXIpOworICAgIENhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwg
dWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKLSAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0
cmluZyBvcmlnaW4pOworICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiBvcmlnaW4pOwogICAgIEVuZ2luZVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgUmV0
cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMIHVybCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjMxODhmZGM2NzU2NjkzZmQxNThlYmM3NmRiYjdj
NGJkZjJjNDQ0OC4uM2YyNzEyMzJkNjNlNGE0Zjc3NDVlZjI4YzY0ZWFlNTUzOGM0YjdiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTYsNyArNTYsNyBAQCBJUEM6OkNvbm5lY3Rpb24m
IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbm5lY3Rpb24oKQogICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBjYWNoZU5hbWUpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpPcGVuKG1fc2Vzc2lvbklE
LCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCBjYWNoZU5hbWUpLCAwKTsKIH0KQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2EKICAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmVtb3ZlKG1fc2Vzc2lvbklE
LCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIp
Cit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJl
cXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKIH0KQEAgLTEyNiw3
ICsxMjYsNyBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1
bHQpKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlv
bkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIg
PSArK21fZW5naW5lUmVwcmVzZW50YXRpb25OZXh0SWRlbnRpZmllcjsKICAgICBtX2NsZWFyUmVw
cmVzZW50YXRpb25DYWxsYmFja3Muc2V0KHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCAwYjI0ZTJhYWYxOTM1N2NmY2QzZWI4NThk
ODE1ZDdmZjhhYzJlYmQzLi40ODBlZGRkOWI0ZTUxNWM0YjRhYWU2ZDRjNmQ5NDI1OGZjYmUyNTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTUyLDkgKzUyLDkgQEAgcHJpdmF0ZToKICAgICBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24KLSAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKSBmaW5hbDsK
KyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOwogICAgIHZv
aWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRl
cikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyKSBmaW5hbDsKIAogICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJM
JikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYpIGZpbmFsOwpAQCAt
NjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIpIGZpbmFsOwogCi0gICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxl
dGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRpb24oV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgb3Bl
bkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNDRkNWIwMWQx
YzZkNDBhZTE4ZGFlYTI3NjI5YmMzNGE2Y2NhNTIwLi45ODMwYzlmMTM3Mjc4MmJhYjY0NjNkNDg2
Y2RmMDliM2QyMmJhZDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDEtMDMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDYWNoZSBB
UEkgcGFydGl0aW9uaW5nIGJhc2VkIG9uIENsaWVudE9yaWdpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMjQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVlZmluZyB1cCB0ZXN0IHRvIGVuc3VyZSB0
aGF0IGNsaWVudCBhbmQgdG9wIG9yaWdpbnMgYXJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
b3JpZ2lucy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbDoKKwog
MjAxOC0wMS0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gQ3Jhc2ggZGVzdHJveWluZyBXZWJDb3JlOjpGaWxlTW9uaXRvcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFy
aW5nLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRl
eCAyNzg1NTExMzU0OTgwZDc3OTM1MDA5MmE0MjM5Y2MzNjA5NjhkZGRmLi4zMzU4N2FjNjliYTk3
YjgwODM2ZjVmZWEyYzhhZGQzYzljNzMwMDJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xl
YXJpbmctb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIAotUEFTUyBD
bGVhbmluZyBleGlzdGluZyBjYWNoZXMgCisKK1BBU1MgQ3JlYXRlIGEgY2FjaGUgc3RvcmFnZSBm
cm9tIGxvY2FsaG9zdCBhbmQgY2xlYXIgaXQgCiBQQVNTIENsZWFyaW5nIGRpc2sgY2FjaGUgb2Yg
YSBnaXZlbiBvcmlnaW4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2Fj
aGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRt
bAppbmRleCAxMjk2NjcwNDBiY2M3YWE4MWE2NWQyNTJjMzE4OGYxOTk0YTAzYzFmLi44NzEyOTIy
OTExYTUyZmY5NjdmZjExYmIwZjFmM2IxYjdhNWViZjZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFy
aW5nLW9yaWdpbi5odHRwcy5odG1sCkBAIC04LDEzICs4LDI3IEBACiA8Ym9keT4KICAgICA8c2Ny
aXB0PgogcHJvbWlzZV90ZXN0KHRlc3QgPT4gewotICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlz
KCkudGhlbihrZXlzID0+IHsKLSAgICAgICAgdmFyIHBlbmRpbmcgPSBbXTsKLSAgICAgICAgZm9y
IChrZXkgb2Yga2V5cykKLSAgICAgICAgICAgIHBlbmRpbmcucHVzaChzZWxmLmNhY2hlcy5kZWxl
dGUoa2V5c1swXSkpOwotICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocGVuZGluZyk7Ci0gICAg
fSk7Ci19LCAiQ2xlYW5pbmcgZXhpc3RpbmcgY2FjaGVzIik7CisgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzIHx8ICF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyBhbmQgdGVzdCBydW5uZXIiKTsKKworICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHZhciBjb3Vu
dGVyID0gMDsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0
LnN0ZXBfZnVuYyhhc3luYyAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIHZhciByZXByZXNlbnRh
dGlvbiA9IEpTT04ucGFyc2UoYXdhaXQgaW50ZXJuYWxzLmNhY2hlU3RvcmFnZUVuZ2luZVJlcHJl
c2VudGF0aW9uKCkpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblsw
XS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJ0b3Agb3JpZ2lu
IG9mIGNhY2hlIDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25b
MF0ub3JpZ2luLmNsaWVudE9yaWdpbiwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMiLCAiY2xpZW50
IG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJl
cHJlc2VudGF0aW9uWzBdLmNhY2hlcy5wZXJzaXN0ZW50LCBbImNhY2hlMSJdKTsKKworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5jbGVhckRPTUNhY2hlKCdodHRwczovL2xvY2FsaG9zdDo4NDQzJyk7
CisgICAgICAgICAgICB2YXIgcmVwcmVzZW50YXRpb24gPSBKU09OLnBhcnNlKGF3YWl0IGludGVy
bmFscy5jYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbigpKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0ub3JpZ2luLnRvcE9yaWdpbiwgImh0dHBzOi8v
MTI3LjAuMC4xOjg0NDMiLCAidG9wIG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRw
czovL2xvY2FsaG9zdDo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5jYWNoZXMucGVyc2lz
dGVudCwgW10pOworCisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0pKTsKKyAgICB9
KQorfSwgIkNyZWF0ZSBhIGNhY2hlIHN0b3JhZ2UgZnJvbSBsb2NhbGhvc3QgYW5kIGNsZWFyIGl0
Iik7CiAKIHByb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKICAgICB2YXIgY2FjaGUgPSBhd2Fp
dCBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0LWNhY2hlLXJlY29yZHMtcGVyc2lzdGVuY3kiKTsKQEAg
LTQ0LDUgKzU4LDYgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHRlc3QgPT4gewogICAgIGFzc2VydF9l
cXVhbHMoa2V5cy5sZW5ndGgsIDAsICJyZWNvcmRzIHNob3VsZCBiZSBlbXB0eSIpOwogfSwgJ0Ns
ZWFyaW5nIGRpc2sgY2FjaGUgb2YgYSBnaXZlbiBvcmlnaW4nKTsKICAgICA8L3NjcmlwdD4KKyAg
ICA8aWZyYW1lIHNyYz0iaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0My9jYWNoZS1zdG9yYWdlL3Jlc291
cmNlcy9jYWNoZS1wZXJzaXN0ZW5jeS1pZnJhbWUuaHRtbCNuYW1lPWNhY2hlMSI+PC9pZnJhbWU+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy1leHBlY3RlZC50
eHQKaW5kZXggMzY3MDdkZDFhYjk0YTY3NmI1OGI0ZWQwOGFlNWQ1M2Q4ZmY2MDdmZi4uMzc4N2Ri
M2VlYzZmNjE5ZDRkMjFjNDczMGIwYTJlOWRjMDhmNTE0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmln
aW5zLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDcgQEAKICAgCiAKIFBBU1MgQ3JlYXRl
IGEgY2FjaGUgc3RvcmFnZSBhbmQgbG9vayBhdCB0aGUgcmVwcmVzZW50YXRpb24gCi1QQVNTIENh
Y2hlcyBmcm9tIGRpZmZlcmVudCBvcmlnaW5zIHNob3VsZCBub3QgbWl4IAorUEFTUyBWZXJpZnlp
bmcgdGhhdCB0d28gY2FjaGVzIGFyZSBjcmVhdGVkIG9uIHR3byBkaWZmZXJlbnQgY2xpZW50IG9y
aWdpbnMgCitQQVNTIFZlcmlmeWluZyB0aGF0IGNhY2hlcyBhcmUgY2x1c3RlcmVkIHBlciBjbGll
bnQgb3JpZ2luLiAKK1BBU1MgVmVyaWZ5aW5nIHRoYXQgY2xlYXJpbmcgY2FjaGVzIGZvciBhbiBv
cmlnaW4gd2lsbCBjbGVhciBib3RoIHRvcCBvcmlnaW4gYW5kIGNsaWVudCBvcmlnaW4gY2FjaGVz
LiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2Nh
Y2hlLW9yaWdpbnMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLmh0bWwKaW5kZXggZjI5YjliMTc4MWYwYTM1NzdhMTRh
YWMxMDJjYTNmMDcwYmQxMjI1MC4uNzczMWYxYzRhMWYzMDEwODhkOGVhZmMzNDM4NjZhNzk1Zjgz
ZmNlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2Nh
Y2hlLW9yaWdpbnMuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hl
LXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy5odG1sCkBAIC04LDI4ICs4LDU0IEBACiA8Ym9k
eT4KICAgICA8c2NyaXB0PgogCi0gICAgZnVuY3Rpb24gY2hlY2tDYWNoZXMobmFtZSkgewotICAg
ICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVz
LmtleXMoKS50aGVuKGtleXMgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGtleXMu
aW5kZXhPZigiY2FjaGUxIikgIT09IC0xLCAiU2hvdWxkIGhhdmUgY2FjaGUxIik7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoa2V5cy5pbmRleE9mKCJjYWNoZTIiKSA9PT0gLTEsICJTaG91
bGQgbm90IGhhdmUgY2FjaGUxIik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgbmFtZSk7
CisgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tDYWNoZXNBZnRlckNsZWFyaW5nTWVtb3J5UmVwcmVz
ZW50YXRpb24obmFtZSkgeworICAgICAgICBhd2FpdCBpbnRlcm5hbHMuY2xlYXJDYWNoZVN0b3Jh
Z2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOworICAgICAgICB2YXIga2V5cyA9IGF3YWl0IHNlbGYu
Y2FjaGVzLmtleXMoKTsKKyAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShrZXlzLmluZGV4T2YoImNhY2hlMSIpICE9PSAtMSwgIlNob3VsZCBoYXZlIGNhY2hlMSIp
OworICAgICAgICAgICAgYXNzZXJ0X3RydWUoa2V5cy5pbmRleE9mKCJjYWNoZTIiKSA9PT0gLTEs
ICJTaG91bGQgbm90IGhhdmUgY2FjaGUyIik7CisgICAgICAgIH0sICJWZXJpZnlpbmcgdGhhdCBj
YWNoZXMgYXJlIGNsdXN0ZXJlZCBwZXIgY2xpZW50IG9yaWdpbi4iKTsKKyAgICB9CisKKyAgICBh
c3luYyBmdW5jdGlvbiBjaGVja0NhY2hlc0FmdGVyQ2xlYXJpbmdPcmlnaW5zKCkgeworICAgICAg
ICB0ZXN0UnVubmVyLmNsZWFyRE9NQ2FjaGUoJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMnKTsKKyAg
ICAgICAgdmFyIHJlcHJlc2VudGF0aW9uID0gSlNPTi5wYXJzZShhd2FpdCBpbnRlcm5hbHMuY2Fj
aGVTdG9yYWdlRW5naW5lUmVwcmVzZW50YXRpb24oKSk7CisgICAgICAgIHRlc3QoKCkgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5vcmlnaW4udG9wT3Jp
Z2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJ0b3Agb3JpZ2luIG9mIGNhY2hlIDEiKTsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMV0ub3JpZ2luLnRvcE9y
aWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMiLCAidG9wIG9yaWdpbiBvZiBjYWNoZSAyIik7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi5jbGll
bnRPcmlnaW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2Fj
aGUgMSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblsxXS5vcmln
aW4uY2xpZW50T3JpZ2luLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MyIsICJjbGllbnQgb3JpZ2lu
IG9mIGNhY2hlIDIiKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVwcmVzZW50
YXRpb25bMF0uY2FjaGVzLnBlcnNpc3RlbnQsIFtdKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMocmVwcmVzZW50YXRpb25bMV0uY2FjaGVzLnBlcnNpc3RlbnQsIFtdKTsKKyAgICAg
ICAgfSwgIlZlcmlmeWluZyB0aGF0IGNsZWFyaW5nIGNhY2hlcyBmb3IgYW4gb3JpZ2luIHdpbGwg
Y2xlYXIgYm90aCB0b3Agb3JpZ2luIGFuZCBjbGllbnQgb3JpZ2luIGNhY2hlcy4iKTsKKyAgICB9
CisKKyAgICBhc3luYyBmdW5jdGlvbiBjaGVja0NhY2hlUmVwcmVzZW50YXRpb24oKSB7CisgICAg
ICAgIHZhciByZXByZXNlbnRhdGlvbiA9IEpTT04ucGFyc2UoYXdhaXQgaW50ZXJuYWxzLmNhY2hl
U3RvcmFnZUVuZ2luZVJlcHJlc2VudGF0aW9uKCkpOworICAgICAgICB0ZXN0KCgpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0ub3JpZ2luLnRvcE9yaWdp
biwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMiLCAidG9wIG9yaWdpbiBvZiBjYWNoZSAxIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzFdLm9yaWdpbi50b3BPcmln
aW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwgInRvcCBvcmlnaW4gb2YgY2FjaGUgMiIpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5vcmlnaW4uY2xpZW50
T3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJjbGllbnQgb3JpZ2luIG9mIGNhY2hl
IDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMV0ub3JpZ2lu
LmNsaWVudE9yaWdpbiwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMiLCAiY2xpZW50IG9yaWdpbiBv
ZiBjYWNoZSAyIik7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlcHJlc2VudGF0
aW9uWzBdLmNhY2hlcy5wZXJzaXN0ZW50LCBbImNhY2hlMSJdKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMocmVwcmVzZW50YXRpb25bMV0uY2FjaGVzLnBlcnNpc3RlbnQsIFsiY2Fj
aGUyIl0pOworICAgICAgICB9LCAiVmVyaWZ5aW5nIHRoYXQgdHdvIGNhY2hlcyBhcmUgY3JlYXRl
ZCBvbiB0d28gZGlmZmVyZW50IGNsaWVudCBvcmlnaW5zIik7CiAgICAgfQogCiAgICAgcHJvbWlz
ZV90ZXN0KHRlc3QgPT4gewotICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIik7Cisg
ICAgICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50ZXJuYWxzIGFu
ZCB0ZXN0IHJ1bm5lciIpOwogCiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CiAgICAgICAgICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKChldmVudCkg
PT4geworICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0
LnN0ZXBfZnVuYyhhc3luYyAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBpZiAoKytjb3Vu
dGVyIDw9IDEpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBp
bnRlcm5hbHMuY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgICAgICBjaGVja0NhY2hlcygiQ2FjaGVzIGZyb20gZGlmZmVy
ZW50IG9yaWdpbnMgc2hvdWxkIG5vdCBtaXgiKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwotICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgYXdhaXQgY2hlY2tD
YWNoZVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgICAgICAgICAgYXdhaXQgY2hlY2tDYWNoZXNB
ZnRlckNsZWFyaW5nTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAgICAgICBhd2Fp
dCBjaGVja0NhY2hlc0FmdGVyQ2xlYXJpbmdPcmlnaW5zKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSkpOwogICAgICAgICB9KQogICAgIH0sICJDcmVhdGUgYSBj
YWNoZSBzdG9yYWdlIGFuZCBsb29rIGF0IHRoZSByZXByZXNlbnRhdGlvbiIpOwpAQCAtNDAsNCAr
NjYsMyBAQAogICAgIDwvZGl2PgogPC9ib2R5PgogPC9odG1sPgotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330398</attachid>
            <date>2018-01-03 10:18:23 -0800</date>
            <delta_ts>2018-01-04 00:28:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181240-20180103191821.patch</filename>
            <type>text/plain</type>
            <size>64991</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhmMGJhMjk2YjczMzc5
YWE4MWNjYjg1NjNiM2ZmN2VkOWQwOGMxMS4uZGMyOWRjODUwZDNhMTc4MmE1MGU4ZGJlODg3ZGY5
OTVkMGMxZWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ2FjaGUg
QVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgdXBkYXRlZCB0ZXN0cy4K
KworICAgICAgICBQcmV2aW91c2x5LCBjYWNoZSBzdG9yYWdlIHdhcyBwYXJ0aXRpb25lZCBhY2Nv
cmRpbmcgdGhlIG9yaWdpbiBvZiB0aGUgY2xpZW50LCByZXByZXNlbnRlZCBhcyBhIFN0cmluZy4K
KyAgICAgICAgV2Ugbm93IHBhcnRpdGlvbiBhY2NvcmRpbmcgYm90aCBjbGllbnQgYW5kIHRvcCBv
cmlnaW5zLCByZXByZXNlbnRlZCBhcyBhIENsaWVudE9yaWdpbgorCisgICAgICAgIE1pbm9yIHJl
ZmFjdG9yaW5nIHRvIHVzZSBtb3JlIG1ha2VQZW5kaW5nQWN0aXZpdHkuCisgICAgICAgIEFkZGVk
IHN1cHBvcnQgZm9yIElQQyBzZXJpYWxpemF0aW9uIG9mIENsaWVudE9yaWdpbi4KKyAgICAgICAg
QWRkZWQgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZyB3aGljaCBpcyB1c2VkIGJ5IFdlYktp
dDIgQ2FjaGUgU3RvcmFnZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFn
ZTo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6cmV0
cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICog
cGFnZS9DbGllbnRPcmlnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNsaWVudE9yaWdpbjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE6OmRlYnVnU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5
UmVwcmVzZW50YXRpb24pOgorCiAyMDE4LTAxLTAzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBUaGUgYnVzIHN5bmNocm9ub3Vz
IGhhbmRsZXIgc2hvdWxkIGJlIGluIHRoZSBiYXNlIHBsYXllciBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5
YTZkMDQ0MjlhOGI0ZjA1YTdkNTdhZDAzODU2Zjg1MDk3NzNlMTlkLi4yM2VlZGY0Y2E1OWQ2OTFm
OGQ0ODNkZTY2YWMxN2Y4MDA2ZGEzYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4
LTAxLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgQ2FjaGUgQVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG9wZW4gYW5kIHJldHJp
ZXZlQ2FjaGVzIG5vdyB0YWtlIGEgQ2xpZW50T3JpZ2luIGluc3RlYWQgb2YgYSBTdHJpbmcuCisg
ICAgICAgIFVwZGF0ZWQgY2FjaGUgZmlsZXN5c3RlbSBwYXRoIGNvbXB1dGF0aW9uIHRvIHRha2Ug
Ym90aCBjbGllbnQgb3JpZ2luIGFuZCB0b3Agb3JpZ2luLgorCisgICAgICAgIFdoZW4gY2xlYXJp
bmcgYW4gb3JpZ2luLCBjYWNoZXMgd2hvc2UgY2xpZW50IG9yaWdpbiBvciB0b3Agb3JpZ2luIG1h
dGNoZXMgdGhlIG9yaWdpbiBhcmUgY2xlYXJlZC4KKyAgICAgICAgQ2FjaGVzIGFyZSBhZGRlZCB0
byB0aGUgd2ViIHNpdGUgZGF0YSBvZiB0aGVpciBjbGllbnQgb3JpZ2luIHdpdGggdGhlaXIgY29y
cmVzcG9uZGluZyBjYWNoZSBzaXplLgorICAgICAgICBDYWNoZXMgYXJlIGFkZGVkIHRvIHRoZSB3
ZWIgc2l0ZSBkYXRhIG9mIHRoZWlyIHRvcCBvcmlnaW4gd2l0aCBhIHNpemUgZXF1YWwgdG8gMC4K
KworICAgICAgICBVcGRhdGVkIG1lbW9yeSByZXByZXNlbnRhdGlvbiBkdW1waW5nIHVzZWQgZm9y
IHRlc3QgdG8gaW5jbHVkZSBib3RoIHRvcCBhbmQgY2xpZW50IG9yaWdpbnMuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjYWNoZXNSb290UGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6cmVtb3ZlQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmZldGNoRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
RW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OkNhY2hlcyk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpzdG9yZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZWFkT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZXM6Om9wZW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZXM6Om9yaWdpbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpjYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpkb09wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpk
b1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisKIDIwMTgtMDEtMDMgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFJlYWxseSBmaXggcGx1Z2luIHByb2Nlc3MgYWZ0ZXIgcjIyNjMyNy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmlu
ZGV4IDIwNTIyZjBhZDk3YWIyODZjNTg5NDU1NDY3YmRjNjc0YWNiZjFkMzcuLmZlMGRmYTZiYzE4
NGIxZmViNjlhM2FlYzU3ZGE1NjczMTNhMWQ3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMzMsNyAr
MzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOwogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJ
ZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9vcGVuQW5kUmVtb3Zl
Q2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVt
b3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsCiAgICAgZG9S
ZW1vdmUocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4s
IHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFz
dFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMu
YWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4
IDZjYTdiZmI5MTRlMDU5ZGRlYWE0NDMzNTZjNjAyOWUxYzBkMGFlY2QuLjRkYWEzNDQ4ZjIyYWNk
MWM0ODIwMTczMDJkM2M2N2I5Yjk0ZDhkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIEZl
dGNoUmVzcG9uc2U7CiAKIGNsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gewpAQCAtMzksOSArNDAs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSk7IH0K
ICAgICB2aXJ0dWFsIH5DYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCi0gICAg
dm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwg
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQgb3Bl
bihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgRE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVtb3ZlKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxi
YWNrJiYpOwotICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCB1cGRhdGVDb3VudGVyLCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwog
CiAgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgYmF0
Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgfQog
CiAgICAgLy8gVXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgotICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBE
T01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2so
RE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBDbGllbnRPcmlnaW4mLCBET01DYWNo
ZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spIHsgY2FsbGJhY2soRE9NQ2Fj
aGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5n
aW5lUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNh
bGxiYWNrKSB7IGNhbGxiYWNrKFN0cmluZyB7IH0pOyB9CiAKIHByb3RlY3RlZDoKQEAgLTY3LDkg
KzY4LDkgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UmVjb3Jkc0Nv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZElkZW50aWZpZXJzT3JFcnJvciYmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9P
cGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAq
LywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIHsgb3BlbkNvbXBsZXRlZChyZXF1ZXN0
SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBs
ZW1lbnRlZCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUg
Ki8pIHsgb3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9N
Q2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlk
ZW50aWZpZXIgKi8pIHsgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5l
eHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50ZXIgKi8p
IHsgdXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9CisgICAgdmlydHVhbCB2
b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENs
aWVudE9yaWdpbiYsIHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50ZXIgKi8pIHsgdXBkYXRlQ2FjaGVz
KHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9SZXRyaWV2
ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRl
bnRpZmllciAqLywgY29uc3QgVVJMJiAvKiB1cmwgKi8pIHsgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0
SWRlbnRpZmllciwgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZp
ZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYpIHsgZGVs
ZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9N
Q2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggODU5OTU4OTQ0ZjNi
YjJkYTgyMGNjOTE1NmVhYThhMTgxODJhZTI4OS4uNWNmYjM2Yzk0NWQyNmU3OGJlY2RhMWZjOGIw
NDk0MzMxMjA5YTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVTdG9yYWdlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRPTUNhY2hlU3Rv
cmFnZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVRdWVyeU9wdGlvbnMuaCIKKyNpbmNsdWRlICJDbGll
bnRPcmlnaW4uaCIKICNpbmNsdWRlICJKU0RPTUNhY2hlLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJl
c3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDIsMTEg
KzQzLDEzIEBAIERPTUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVTdG9yYWdlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3JhCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7
CiB9CiAKLVN0cmluZyBET01DYWNoZVN0b3JhZ2U6Om9yaWdpbigpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAogewotICAg
IC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBmb3Igb3JpZ2luIGJlaW5nIG51
bGw/CiAgICAgYXV0byogb3JpZ2luID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID8gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKLSAgICByZXR1
cm4gb3JpZ2luID8gb3JpZ2luLT50b1N0cmluZygpIDogU3RyaW5nKCk7CisgICAgaWYgKCFvcmln
aW4pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gQ2xpZW50T3Jp
Z2luIHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT50b3BPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKCpvcmlnaW4pIH07CiB9CiAKIHN0YXRpYyB2b2lkIGRvU2VxdWVudGlhbE1hdGNo
KHNpemVfdCBpbmRleCwgVmVjdG9yPFJlZjxET01DYWNoZT4+JiYgY2FjaGVzLCBET01DYWNoZTo6
UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTUNhY2hl
OjpNYXRjaENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMzUsMTIgKzEzOCwxMSBA
QCBSZWY8RE9NQ2FjaGU+IERPTUNhY2hlU3RvcmFnZTo6ZmluZENhY2hlT3JDcmVhdGUoQ2FjaGVJ
bmZvJiYgaW5mbykKIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKFdURjo6
RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY2FsbGJhY2spCiB7
Ci0gICAgU3RyaW5nIG9yaWdpbiA9IHRoaXMtPm9yaWdpbigpOwotICAgIGlmIChvcmlnaW4uaXNO
dWxsKCkpCisgICAgYXV0byBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKKyAgICBpZiAoIW9yaWdp
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAg
IG1fY29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2luLCBtX3VwZGF0ZUNvdW50ZXIsIFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZUluZm9zT3JFcnJvciYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgbV9jb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcygqb3JpZ2lu
LCBtX3VwZGF0ZUNvdW50ZXIsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBw
ZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oQ2FjaGVJbmZvc09y
RXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7CiAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGNh
bGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7
CkBAIC0xNTgsNyArMTYwLDYgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVz
KFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KLSAgICAg
ICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgfSk7CiB9CiAKQEAgLTE3NywzMyAr
MTc4LDMyIEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxECiAgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKyAgICAgICAgZG9PcGVuKG5hbWUsIFdURk1vdmUocHJvbWlzZSkpOworICAgIH0p
OworfQogCi0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KTsKLSAgICAgICAg
aWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBhdXRvJiBjYWNoZSA9IG1f
Y2FjaGVzW3Bvc2l0aW9uXTsKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShET01DYWNoZTo6
Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IGNhY2hlLT5uYW1lKCkg
fSwgY2FjaGUtPmlkZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nIG9yaWdpbiA9IHRoaXMt
Pm9yaWdpbigpOwotICAgICAgICBBU1NFUlQoIW9yaWdpbi5pc051bGwoKSk7Cit2b2lkIERPTUNh
Y2hlU3RvcmFnZTo6ZG9PcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVk
PElETEludGVyZmFjZTxET01DYWNoZT4+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIHBvc2l0aW9u
ID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5u
YW1lKCkgPT0gbmFtZTsgfSk7CisgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7CisgICAg
ICAgIGF1dG8mIGNhY2hlID0gbV9jYWNoZXNbcG9zaXRpb25dOworICAgICAgICBwcm9taXNlLnJl
c29sdmUoRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcg
eyBjYWNoZS0+bmFtZSgpIH0sIGNhY2hlLT5pZGVudGlmaWVyKCksIG1fY29ubmVjdGlvbi5jb3B5
UmVmKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBzZXRQZW5kaW5nQWN0
aXZpdHkodGhpcyk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIG5hbWUsIFt0
aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJZGVudGlm
aWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghbV9pc1N0b3Bw
ZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRp
b24ocmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgbmFtZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZSA9IERPTUNh
Y2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgbmFtZSB9LCBy
ZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhY2hlKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9jYWNoZXMuYXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgbV9jb25uZWN0aW9uLT5vcGVuKCpvcmlnaW4oKSwgbmFtZSwgW3RoaXMsIG5hbWUsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2
aXR5KCp0aGlzKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpCisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdp
bmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCisg
ICAgICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbmFtZSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9N
Q2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0s
IHJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAg
ICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYWNoZSk7CisgICAgICAgICAgICAgICAgbV9j
YWNoZXMuYXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICB9KTsKKyAgICAgICAgfQogICAg
IH0pOwogfQogCkBAIC0yMTQsMzEgKzIxNCwzMCBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6cmVt
b3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+Jgog
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGRvUmVtb3ZlKG5hbWUsIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIH0pOworfQogCi0gICAgICAgIGF1dG8gcG9zaXRpb24gPSBt
X2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUo
KSA9PSBuYW1lOyB9KTsKLSAgICAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgU3RyaW5nIG9yaWdpbiA9IHRoaXMtPm9yaWdpbigpOwotICAgICAg
ICBBU1NFUlQoIW9yaWdpbi5pc051bGwoKSk7Cit2b2lkIERPTUNhY2hlU3RvcmFnZTo6ZG9SZW1v
dmUoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBw
cm9taXNlKQoreworICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KTsKKyAgICBpZiAo
cG9zaXRpb24gPT0gbm90Rm91bmQpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhp
cyk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXS0+aWRl
bnRpZmllcigpLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGNvbnN0
IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBp
ZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpCi0gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjpl
cnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3Ip
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOwotICAgICAgICAgICAgICAgICAgICBwcm9taXNl
LnJlc29sdmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgIG1fY29ubmVjdGlvbi0+cmVt
b3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXS0+aWRlbnRpZmllcigpLCBbdGhpcywgbmFtZSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZp
dHkoKnRoaXMpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5o
YXNfdmFsdWUoKSkKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2lu
ZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUodHJ1
ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlz
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG1fY2FjaGVzLnJlbW92ZShwb3NpdGlvbik7CisgICAg
ICAgIH0KICAgICB9KTsKKyAgICBtX2NhY2hlcy5yZW1vdmUocG9zaXRpb24pOwogfQogCiB2b2lk
IERPTUNhY2hlU3RvcmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCA5M2E4MmZiYjcz
ZDU0MzAxZWZiYjU3NDVkYjBhNmIzMGM2OTkyZWE3Li5mMzBmZDNkMzI2Y2M2ZDlmMjk1ZmViMzg2
MjQ2MmU1NjE2MWU0MGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVTdG9yYWdlLmgKQEAgLTUyLDkgKzUyLDExIEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBkb09wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPERPTUNh
Y2hlPj4mJik7CisgICAgdm9pZCBkb1JlbW92ZShjb25zdCBTdHJpbmcmLCBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMQm9vbGVhbj4mJik7CiAgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0
aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKICAgICBSZWY8RE9NQ2Fj
aGU+IGZpbmRDYWNoZU9yQ3JlYXRlKERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8mJik7Ci0gICAg
U3RyaW5nIG9yaWdpbigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBv
cmlnaW4oKSBjb25zdDsKIAogICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBtX2NhY2hlczsKICAg
ICB1aW50NjRfdCBtX3VwZGF0ZUNvdW50ZXIgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cAppbmRleCBmOWU1NDcxNTJkZWMzY2NiM2ZkMjhlYzk1YjU3Mzk3ODY5NjU4Y2FmLi5jNTQzN2I2
NjU4NWI3NTZhYmQ4MTkzYTc5ZjQ4NjdmNDExY2Y2NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp+
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W21haW5UaHJlYWRDb25uZWN0aW9uID0gV1RGTW92ZShtX21haW5UaHJlYWRDb25uZWN0aW9uKV0o
KSBtdXRhYmxlIHsgfSk7CiB9CiAKLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OmRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQogewogICAgIGNhbGxPbk1haW5UaHJl
YWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRD
b25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIG9y
aWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKSwgY2FjaGVOYW1lID0gY2FjaGVOYW1lLmlzb2xh
dGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPm9w
ZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFt3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVh
ZCksIHJlcXVlc3RJZGVudGlmaWVyXSAoY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVz
dWx0KSBtdXRhYmxlIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dAogICAgIH0pOwogfQogCi12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikKIHsKICAgICBj
YWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2NvcGUudGhyZWFkKCkp
LCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJ
ZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIHVwZGF0ZUNvdW50ZXJd
ICgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0cmlldmVDYWNo
ZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJU
aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0gKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggMjc2YTU3YWRiMjBiMjJiNTYzZWQ3
ODU3NTdlOTRjOGI5NGViMGQyNi4uN2FhMDVhZGJjYmQwYjNhNDU3ODM1MjljNGZkY2Q5NjZkY2Y2
OThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKFdvcmtlckdsb2JhbFNj
b3BlJik7CiAKICAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLgotICAgIHZv
aWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOworICAgIHZvaWQgZG9PcGVuKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcm
IGNhY2hlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGRvUmV0
cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsKKyAgICB2b2lkIGRvUmV0cmlldmVD
YWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwogCiAgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jk
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBj
b25zdCBVUkwmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGll
bnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKaW5kZXggMjBl
MjgzODFhMzgwMWU5Y2I5YWI1YzZlNDFmMDVhNzBhMjZmOTBlZS4uODdjYmJkMWYwZTNiNTNlOTFm
MjI5YmU0ZTNkZjFhNjRlY2I5ZDQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
bGllbnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCkBA
IC0zNiw2ICszNiwxMSBAQCBzdHJ1Y3QgQ2xpZW50T3JpZ2luIHsKICAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYpIGNvbnN0
OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENs
aWVudE9yaWdpbj4gZGVjb2RlKERlY29kZXImKTsKKworICAgIENsaWVudE9yaWdpbiBpc29sYXRl
ZENvcHkoKSBjb25zdDsKKwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW47CiAgICAg
U2VjdXJpdHlPcmlnaW5EYXRhIGNsaWVudE9yaWdpbjsKIH07CkBAIC01NCw2ICs1OSwzMCBAQCBp
bmxpbmUgYm9vbCBDbGllbnRPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2luJiBv
dGhlcikgY29uc3QKICAgICByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyLnRvcE9yaWdpbiAmJiBj
bGllbnRPcmlnaW4gPT0gb3RoZXIuY2xpZW50T3JpZ2luOwogfQogCitpbmxpbmUgQ2xpZW50T3Jp
Z2luIENsaWVudE9yaWdpbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB0
b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNsaWVudE9yaWdpbi5pc29sYXRlZENvcHkoKSB9Owor
fQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBDbGllbnRPcmlnaW46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdG9wT3JpZ2lu
OworICAgIGVuY29kZXIgPDwgY2xpZW50T3JpZ2luOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IENsaWVudE9yaWdpbjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdp
bkRhdGE+IHRvcE9yaWdpbiwgY2xpZW50T3JpZ2luOworICAgIGRlY29kZXIgPj4gdG9wT3JpZ2lu
OworICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOworICAgIGlmICghY2xpZW50T3JpZ2luKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFdURk1v
dmUoKnRvcE9yaWdpbiksIFdURk1vdmUoKmNsaWVudE9yaWdpbikgfTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBhZGExZjQxZDIzMDVhN2VhNGEwOGE2ZDIwZjY2ODA0
YjZjNjdlMzlmLi5lOTBhYjgyMWY3OGZkNTU2ZmY1Njg3ZDMwZTlmMmY3NjBiMzk2NGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC00OCwxMiArNDgs
MTAgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogICAgIHJldHVybiBzZWN1cml0eU9yaWdpbkRh
dGE7CiB9CiAKLSNpZiAhTE9HX0RJU0FCTEVECi1TdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpk
ZWJ1Z1N0cmluZygpIGNvbnN0CitTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAi
OiIsIFN0cmluZzo6bnVtYmVyKHBvcnQudmFsdWVfb3IoMCkpKTsKIH0KLSNlbmRpZgogCiBTZWN1
cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoRnJhbWUqIGZyYW1l
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggMGVmZmE2
NDRmOTkyNGM4ODgzZmMxYWNkNDE5YmNjNWNlY2M4MWY5NS4uNWY1NWY5NDJiODFmY2ZlMDBiZmQ0
M2JjMTA5OTZmM2NkYzI0NzE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCkBAIC03Nyw4ICs3NywxMCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAg
ICAgICAgcmV0dXJuIHByb3RvY29sLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiAgICAgfQog
ICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCiAjaWYg
IUxPR19ESVNBQkxFRAotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkZWJ1Z1N0cmluZygpIGNv
bnN0OworICAgIFN0cmluZyBkZWJ1Z1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKCk7
IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDFm
YjYxY2UzZjg2ZWU3NjQ5YzRlOGFlZTU0YjVjMmJhYzVjYzgyZTIuLjY2NWRhMTliNzFiN2NhNjEy
ZjUzMjRmMDUyNmJkZGRhNzljODVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAi
Q2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJDdXJzb3IuaCIKICNpbmNsdWRlICJET01SZWN0LmgiCkBAIC00MjQ4LDcgKzQyNDksNyBA
QCB2b2lkIEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbihE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpLnRvU3RyaW5nKCksIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRp
b25hbDxET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBtX2Nh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24tPmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oQ2xpZW50T3Jp
Z2luIHsgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnRv
cE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCkpIH0sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGF1
dG8gJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsICFy
ZXN1bHQpOwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMGIzMjY0MWNi
YThjMzY5Yjg4NzcxN2IyNzM0ODRmN2ZjZWJmYTIxMS4uYjdjZDA5Njk1YmM1ZTNlYjg2OTk1YTUx
YzhhMTc3MTExMTI3YTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUyMywxMCArNTIzLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW8KICAgICB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6
IG9yaWdpbkRhdGFzKSB7Ci0gICAgICAgICAgICBhdXRvIG9yaWdpbiA9IG9yaWdpbkRhdGEuc2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKLSAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5n
aW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJDYWNoZXNGb3JPcmlnaW4ob3JpZ2luLCBjbGVhclRh
c2tzSGFuZGxlcik7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDog
b3JpZ2luRGF0YXMpCisgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbShzZXNz
aW9uSUQpLmNsZWFyQ2FjaGVzRm9yT3JpZ2luKG9yaWdpbkRhdGEsIGNsZWFyVGFza3NIYW5kbGVy
KTsKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkRpc2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCmluZGV4IDg0YzRmZmVlYjMxOTVhNjc2OTJmNjRmNDJiMDA1YmQ3NjQzOThhZjMuLmJh
NzI3MDM0YTFlMzQ5MDVjNTg0NWY3MDRjNGFkMjRjMjI5N2E0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKQEAgLTUyLDEzICs1MiwxMyBAQCBzdGF0aWMgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVm
UHRyPEVuZ2luZT4+JiBnbG9iYWxFbmdpbmVNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLVN0
cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luKQorU3RyaW5n
IEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4pCiB7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBLZXkga2V5KG9yaWdpbiwgeyB9LCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCks
IGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSk7CisgICAgS2V5IGtleShvcmlnaW4udG9wT3Jp
Z2luLnRvU3RyaW5nKCksIG9yaWdpbi5jbGllbnRPcmlnaW4udG9TdHJpbmcoKSwgeyB9LCB7IH0s
IHNhbHQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkuaGFzaEFzU3RyaW5nKCkpOwogfQogCiBFbmdpbmU6
On5FbmdpbmUoKQpAQCAtMTAwLDcgKzEwMCw3IEBAIEVuZ2luZTo6RW5naW5lKFN0cmluZyYmIHJv
b3RQYXRoKQogICAgICAgICBtX2lvUXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5DYWNoZVN0b3JhZ2VFbmdpbmUuc2VyaWFsQmFja2dyb3VuZCIsIFdvcmtRdWV1ZTo6
VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCk7CiB9CiAKLXZvaWQgRW5n
aW5lOjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwg
Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpvcGVuKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFt
ZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICByZWFkQ2FjaGVz
RnJvbURpc2sob3JpZ2luLCBbY2FjaGVOYW1lLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShDYWNoZXNPckVycm9yJiYgY2FjaGVzT3JFcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
Y2FjaGVzT3JFcnJvci5oYXNfdmFsdWUoKSkgewpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgRW5n
aW5lOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxs
YmFjayYmIGNhbGxiYWNrCiAgICAgZm9yIChhdXRvJiBjYWNoZXMgOiBtX2NhY2hlcy52YWx1ZXMo
KSkgewogICAgICAgICBhdXRvKiBjYWNoZVRvUmVtb3ZlID0gY2FjaGVzLT5maW5kKGNhY2hlSWRl
bnRpZmllcik7CiAgICAgICAgIGlmIChjYWNoZVRvUmVtb3ZlKSB7Ci0gICAgICAgICAgICBjYWNo
ZXNUb01vZGlmeSA9IGNhY2hlcy5wdHIoKTsKKyAgICAgICAgICAgIGNhY2hlc1RvTW9kaWZ5ID0g
Y2FjaGVzLmdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MzAsNyArMTMwLDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sKICAgICBjYWNoZXNUb01vZGlm
eS0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lk
IEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVw
ZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6
OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyLCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbdXBkYXRlQ291bnRlciwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIGNhY2hlc09yRXJyb3IpIG11dGFibGUg
ewogICAgICAgICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzX3ZhbHVlKCkpIHsKQEAgLTIwMywxNSAr
MjAzLDE2IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRp
b25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpy
ZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGluaXRpYWxpemUoW3RoaXMsIG9yaWdpbiwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
c3RkOjpvcHRpb25hbDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGNh
Y2hlcyA9IG1fY2FjaGVzLmVuc3VyZShvcmlnaW4sIFsmb3JpZ2luLCB0aGlzXSB7Ci0gICAgICAg
ICAgICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIFN0cmluZyB7IG9yaWdpbiB9LCBjYWNo
ZXNSb290UGF0aChvcmlnaW4pLCBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9y
YWdlUGVyT3JpZ2luUXVvdGEoKSk7CisgICAgICAgICAgICBhdXRvIHBhdGggPSBjYWNoZXNSb290
UGF0aChvcmlnaW4pOworICAgICAgICAgICAgcmV0dXJuIENhY2hlczo6Y3JlYXRlKCp0aGlzLCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4geyBvcmlnaW4gfSwgV1RGTW92ZShwYXRoKSwgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkpOwogICAgICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgaWYgKGNhY2hlcy0+aXNJbml0aWFsaXpl
ZCgpKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hl
cz4geyBjYWNoZXMuZ2V0KCkgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPENhY2hlcz4geyAqY2FjaGVzIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTIyNiw3ICsyMjcsNyBAQCB2b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21E
aXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY2FsbGJh
Y2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgY2FjaGVzLmdldCgpIH0pOworICAg
ICAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgKmNhY2hl
cyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0zMjIsMTIgKzMyMyw2IEBAIHZvaWQg
RW5naW5lOjpyZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgfSk7CiB9CiAK
LXZvaWQgRW5naW5lOjpyZW1vdmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4pCi17Ci0gICAg
QVNTRVJUKG1fY2FjaGVzLmNvbnRhaW5zKG9yaWdpbikpOwotICAgIG1fY2FjaGVzLnJlbW92ZShv
cmlnaW4pOwotfQotCiBjbGFzcyBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8UmVhZE9yaWdpbnNUYXNrQ291bnRlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
UmVhZE9yaWdpbnNUYXNrQ291bnRlcj4gY3JlYXRlKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY2FsbGJhY2spCkBAIC0zNTksNyArMzU0
LDcgQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENvbXB1dGVTaXplLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKIHsKICAgICBpZiAoIXNob3VsZFBlcnNpc3Qo
KSkgewogICAgICAgICBhdXRvIGVudHJpZXMgPSBXVEY6Om1hcChtX2NhY2hlcywgW10gKGF1dG8m
IHBhaXIpIHsKLSAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YTo6RW50cnkgeyBwYWlyLnZh
bHVlLT5vcmlnaW4oKSwgV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgMCB9OworICAgICAgICAg
ICAgcmV0dXJuIFdlYnNpdGVEYXRhOjpFbnRyeSB7IHBhaXIudmFsdWUtPm9yaWdpbigpLmNsaWVu
dE9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgMCB9OwogICAgICAgICB9KTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlbnRyaWVzKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTM2OSwyMiArMzY0LDIyIEBAIHZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoYm9vbCBz
aG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlCiAgICAgZm9y
IChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSht
X3Jvb3RQYXRoLCAiKiIpKSB7CiAgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxv
d1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDYWNo
ZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0Nv
dW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11dGFibGUgeworICAgICAgICBDYWNoZXM6OnJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIg
PSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChhdXRvJiYgb3JpZ2luKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoIW9yaWdp
bikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGlmICghc2hvdWxkQ29t
cHV0ZVNpemUpIHsKLSAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdURk1v
dmUob3JpZ2luLnZhbHVlKCkpLCAwKTsKKyAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRk
T3JpZ2luKFdURk1vdmUob3JpZ2luLT50b3BPcmlnaW4pLCAwKTsKKyAgICAgICAgICAgICAgICB0
YXNrQ291bnRlci0+YWRkT3JpZ2luKFdURk1vdmUob3JpZ2luLT5jbGllbnRPcmlnaW4pLCAwKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1
dG8gY2FjaGVPcmlnaW4gPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7Ci0g
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFkQ2FjaGVzRnJvbURpc2soY2FjaGVPcmlnaW4s
IFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbi52YWx1ZSgpKSwgdGFza0NvdW50ZXIgPSBXVEZNb3Zl
KHRhc2tDb3VudGVyKV0gKENhY2hlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+cmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbi52YWx1ZSgpLCBb
b3JpZ2luID0gb3JpZ2luLnZhbHVlKCksIHRhc2tDb3VudGVyID0gV1RGTW92ZSh0YXNrQ291bnRl
cildIChDYWNoZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92ZShvcmlnaW4pLCByZXN1
bHQudmFsdWUoKS5nZXQoKS5zdG9yYWdlU2l6ZSgpKTsKLQorICAgICAgICAgICAgICAgIHRhc2tD
b3VudGVyLT5hZGRPcmlnaW4oV1RGTW92ZShvcmlnaW4udG9wT3JpZ2luKSwgMCk7CisgICAgICAg
ICAgICAgICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi5jbGllbnRPcmln
aW4pLCByZXN1bHQudmFsdWUoKS5nZXQoKS5zdG9yYWdlU2l6ZSgpKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICB9CkBAIC00MDYsMjIgKzQwMSwzMyBAQCB2b2lkIEVuZ2luZTo6
Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0YXNrSGFuZGxlcikKICAgICB9KTsK
IH0KIAotdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBDYWxsYmFja0FnZ3JlZ2F0b3ImIHRhc2tIYW5kbGVyKQordm9pZCBFbmdpbmU6OmNsZWFy
Q2FjaGVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
LCBDYWxsYmFja0FnZ3JlZ2F0b3ImIHRhc2tIYW5kbGVyKQogewotICAgIGlmIChhdXRvIGNhY2hl
cyA9IG1fY2FjaGVzLmdldChvcmlnaW4pKSB7Ci0gICAgICAgIGNhY2hlcy0+Y2xlYXIoW3Rhc2tI
YW5kbGVyID0gbWFrZVJlZih0YXNrSGFuZGxlcildIHsgfSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICBmb3IgKGF1dG8mIGtleVZhbHVlIDogbV9jYWNoZXMpIHsKKyAgICAgICAgaWYgKGtleVZhbHVl
LmtleS50b3BPcmlnaW4gPT0gb3JpZ2luIHx8IGtleVZhbHVlLmtleS5jbGllbnRPcmlnaW4gPT0g
b3JpZ2luKQorICAgICAgICAgICAga2V5VmFsdWUudmFsdWUtPmNsZWFyKFt0YXNrSGFuZGxlciA9
IG1ha2VSZWYodGFza0hhbmRsZXIpXSB7IH0pOwogICAgIH0KIAogICAgIGlmICghc2hvdWxkUGVy
c2lzdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxl
bmFtZSA9IGNhY2hlc1Jvb3RQYXRoKG9yaWdpbiksIHRhc2tIYW5kbGVyID0gbWFrZVJlZih0YXNr
SGFuZGxlcildIHsKLSAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUp
OwotICAgIH0pOworICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVy
UGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
b3JpZ2luLCB0YXNrSGFuZGxlciA9IG1ha2VSZWYodGFza0hhbmRsZXIpXSAoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICghZm9sZGVyT3JpZ2luKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGlmIChmb2xkZXJPcmlnaW4tPnRvcE9yaWdpbiAhPSBvcmlnaW4gJiYgZm9sZGVyT3Jp
Z2luLT5jbGllbnRPcmlnaW4gIT0gb3JpZ2luKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IGNhY2hlc1Jvb3RQYXRoKCpm
b2xkZXJPcmlnaW4pLCB0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpXSB7CisgICAg
ICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkocGF0aCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCi12b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OmNsZWFyTWVt
b3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICByZWFkQ2FjaGVzRnJvbURpc2sob3JpZ2luLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgewpAQCAtNDY5LDkgKzQ3NSwxMSBAQCBTdHJpbmcgRW5naW5lOjpyZXByZXNlbnRh
dGlvbigpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCIpOwogICAgICAgICBpc0ZpcnN0
ID0gZmFsc2U7CiAKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxueyBcIm9yaWdpblwiIDogXCIi
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoa2V5VmFsdWUua2V5KTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlwiLCBcImNhY2hlc1wiIDogIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJc
bnsgXCJvcmlnaW5cIiA6IHsgXCJ0b3BPcmlnaW5cIiA6IFwiIik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGtleVZhbHVlLmtleS50b3BPcmlnaW4udG9TdHJpbmcoKSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcIiwgXCJjbGllbnRPcmlnaW5cIjogXCIiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoa2V5VmFsdWUua2V5LmNsaWVudE9yaWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoIlwiIH0sIFwiY2FjaGVzXCIgOiAiKTsKICAgICAgICAga2V5VmFsdWUudmFs
dWUtPmFwcGVuZFJlcHJlc2VudGF0aW9uKGJ1aWxkZXIpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZCgifSIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDhhZWE4ZjE4Y2VhZDdiZWY3YjMzMmIy
MTE1ZmQ3NjhjYWE5ZTVhYzYuLjA3NWVlZTVmY2QzOTk5OGEzZTQxOTRiZjExM2JiMzY0MzI4YzY5
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURhdGEuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CkBAIC02Myw5ICs2NCw5IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc2hvdWxkUGVyc2lzdCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pb1F1ZXVl
O30KIAotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBj
YWNoZU5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3Qg
U3RyaW5nJiBjYWNoZU5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZp
ZXJDYWxsYmFjayYmKTsKICAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAg
ICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRh
dGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYp
OworICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
dWludDY0X3QgdXBkYXRlQ291bnRlciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
b3NDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6VVJMJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmRzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBwdXRSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwpAQCAtODIsMTkg
KzgzLDE3IEBAIHB1YmxpYzoKICAgICBjb25zdCBOZXR3b3JrQ2FjaGU6OlNhbHQmIHNhbHQoKSBj
b25zdCB7IHJldHVybiBtX3NhbHQudmFsdWUoKTsgfQogICAgIHVpbnQ2NF90IG5leHRDYWNoZUlk
ZW50aWZpZXIoKSB7IHJldHVybiArK21fbmV4dENhY2hlSWRlbnRpZmllcjsgfQogCi0gICAgdm9p
ZCByZW1vdmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4pOwotCi0gICAgdm9pZCBjbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlv
bigpOwogCiAgICAgdm9pZCBjbGVhckFsbENhY2hlcyhXVEY6OkNhbGxiYWNrQWdncmVnYXRvciYp
OwotICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIFdU
Rjo6Q2FsbGJhY2tBZ2dyZWdhdG9yJik7CisgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXVEY6OkNhbGxiYWNrQWdncmVnYXRv
ciYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmdpbmUmIGRlZmF1bHRFbmdpbmUoKTsKICAg
ICBleHBsaWNpdCBFbmdpbmUoU3RyaW5nJiYgcm9vdFBhdGgpOwogCi0gICAgU3RyaW5nIGNhY2hl
c1Jvb3RQYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKyAgICBTdHJpbmcgY2FjaGVzUm9vdFBh
dGgoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAKICAgICB2b2lkIGZldGNoRW50cmll
cyhib29sIC8qIHNob3VsZENvbXB1dGVTaXplICovLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmKTsKIApAQCAtMTAyLDcgKzEwMSw3IEBA
IHByaXZhdGU6CiAKICAgICB1c2luZyBDYWNoZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxDYWNoZXM+LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+Owog
ICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlc09yRXJy
b3ImJik+OwotICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBDYWNoZXNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDYWNoZXNDYWxsYmFjayYmKTsKIAogICAgIHVzaW5nIENh
Y2hlT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGU+LCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+OwogICAgIHVzaW5nIENhY2hlQ2FsbGJhY2sgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVPckVycm9yJiYpPjsKQEAgLTExMCw3ICsxMDksNyBAQCBw
cml2YXRlOgogCiAgICAgQ2FjaGUqIGNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAK
LSAgICBIYXNoTWFwPFN0cmluZywgUmVmPENhY2hlcz4+IG1fY2FjaGVzOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBSZWZQdHI8Q2FjaGVzPj4gbV9jYWNoZXM7CiAgICAgdWlu
dDY0X3QgbV9uZXh0Q2FjaGVJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0cmluZyBtX3Jvb3RQYXRo
OwogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1faW9RdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcAppbmRleCBhMmYxOTcwMjU4MWY3NGIzMWEzMzY5MDUxNjU2MWFiZGNiYzVlNGYxLi4z
NTM1MzFmYWYxMTVmMzVmMWVlZTJkZWIyMmJjMTBhYTA3ZjY1ZjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNh
Y2hlc09yaWdpbkZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiAgICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZXNS
b290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7CiB9CiAKLXZvaWQgQ2FjaGVzOjpyZXRy
aWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVl
dWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBD
YWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBh
dGgsIFdvcmtRdWV1ZSYgcXVldWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgcXVldWUuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGZvbGRlclBhdGggPSBmb2xkZXJQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11
dGFibGUgewogICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoY2Fj
aGVzTGlzdEZpbGVuYW1lKGZvbGRlclBhdGgpKSkgewpAQCAtNzIsOSArNzIsOSBAQCB2b2lkIENh
Y2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0
aCwgV29ya1F1ZXVlJiBxdQogICAgIH0pOwogfQogCi1DYWNoZXM6OkNhY2hlcyhFbmdpbmUmIGVu
Z2luZSwgU3RyaW5nJiYgb3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEp
CitDYWNoZXM6OkNhY2hlcyhFbmdpbmUmIGVuZ2luZSwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
b3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpCiAgICAgOiBtX2VuZ2lu
ZSgmZW5naW5lKQotICAgICwgbV9vcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcob3JpZ2luKSkpCisgICAgLCBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCiAgICAgLCBtX3Jv
b3RQYXRoKFdURk1vdmUocm9vdFBhdGgpKQogICAgICwgbV9xdW90YShxdW90YSkKIHsKQEAgLTgz
LDI3ICs4MywzNiBAQCBDYWNoZXM6OkNhY2hlcyhFbmdpbmUmIGVuZ2luZSwgU3RyaW5nJiYgb3Jp
Z2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdAogdm9pZCBDYWNoZXM6OnN0b3Jl
T3JpZ2luKENvbXBsZXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKLSAgICBlbmNvZGVyIDw8IG1fb3JpZ2lu
LnByb3RvY29sOwotICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uaG9zdDsKLSAgICBlbmNvZGVyIDw8
IG1fb3JpZ2luLnBvcnQ7CisgICAgZW5jb2RlciA8PCBtX29yaWdpbi50b3BPcmlnaW4ucHJvdG9j
b2w7CisgICAgZW5jb2RlciA8PCBtX29yaWdpbi50b3BPcmlnaW4uaG9zdDsKKyAgICBlbmNvZGVy
IDw8IG1fb3JpZ2luLnRvcE9yaWdpbi5wb3J0OworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xp
ZW50T3JpZ2luLnByb3RvY29sOworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50T3JpZ2lu
Lmhvc3Q7CisgICAgZW5jb2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4ucG9ydDsKICAgICBt
X2VuZ2luZS0+d3JpdGVGaWxlKGNhY2hlc09yaWdpbkZpbGVuYW1lKG1fcm9vdFBhdGgpLCBEYXRh
IHsgZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkgfSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGVycm9yKSk7CiAgICAgfSk7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBDYWNoZXM6OnJlYWRPcmln
aW4oY29uc3QgRGF0YSYgZGF0YSkKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2lu
PiBDYWNoZXM6OnJlYWRPcmlnaW4oY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIG1vZGVybiBkZWNvZGVycyBmb3IgcGVyc2lzdGVudCBk
YXRhLgotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW47CisgICAgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbiwgY2xpZW50T3JpZ2luOwogICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4ucHJvdG9jb2wpKQorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodG9wT3JpZ2luLnByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9yaWdpbi5ob3N0KSkKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHRvcE9yaWdpbi5ob3N0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9yaWdpbi5wb3J0KSkKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHRvcE9yaWdpbi5wb3J0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICByZXR1cm4gV1RGTW92ZShvcmlnaW4pOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2xp
ZW50T3JpZ2luLnByb3RvY29sKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNsaWVudE9yaWdpbi5ob3N0KSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNsaWVudE9yaWdpbi5wb3J0KSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmlnaW4pLCBXVEZNb3ZlKGNsaWVudE9yaWdpbikgfTsKIH0K
IAogdm9pZCBDYWNoZXM6OmluaXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKaW5kZXgg
ZWMwOGUyM2VjNTFjYTAwMzczYTlkMTA1MTdiMzgxZDgzNzhkMzI1YS4uYWE4MjNmMjE2YjAyNDAx
NTBiOWI2NDU1MmEyZmU2NzA3YTE2NGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oCkBA
IC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIgog
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MzgsOSArMzgsOSBAQCBjbGFzcyBFbmdpbmU7CiAKIGNsYXNzIENhY2hlcyA6IHB1YmxpYyBSZWZD
b3VudGVkPENhY2hlcz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2FjaGVzPiBjcmVhdGUo
RW5naW5lJiBlbmdpbmUsIFN0cmluZyYmIG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2
NF90IHF1b3RhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlcyB7IGVuZ2luZSwgV1RGTW92
ZShvcmlnaW4pLCBXVEZNb3ZlKHJvb3RQYXRoKSwgcXVvdGEgfSk7IH0KKyAgICBzdGF0aWMgUmVm
PENhY2hlcz4gY3JlYXRlKEVuZ2luZSYgZW5naW5lLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBv
cmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBxdW90YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDYWNoZXMgeyBlbmdpbmUsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShyb290UGF0
aCksIHF1b3RhIH0pOyB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZU9yaWdpbkZyb21EaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiYpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYpPiYmKTsKIAogICAg
IHZvaWQgaW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxi
YWNrJiYpOwogICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlUmVjb3JkKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJik7
CiAKICAgICBjb25zdCBOZXR3b3JrQ2FjaGU6OlNhbHQmIHNhbHQoKSBjb25zdDsKLSAgICBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZ2luOyB9CisgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogCiAgICAgYm9vbCBzaG91bGRQZXJzaXN0KCkgY29uc3Qg
eyByZXR1cm4gIW1fcm9vdFBhdGguaXNOdWxsKCk7IH0KIApAQCAtNzYsMTQgKzc2LDE0IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCBzdG9yYWdlU2l6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IENhY2hlcyhFbmdpbmUmLCBTdHJpbmcmJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoLCB1aW50
NjRfdCBxdW90YSk7CisgICAgQ2FjaGVzKEVuZ2luZSYsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
LCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpOwogCiAgICAgdm9pZCBpbml0aWFs
aXplU2l6ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwog
ICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxW
ZWN0b3I8Q2FjaGU+LCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYpPiYmKTsKICAg
ICB2b2lkIHdyaXRlQ2FjaGVzVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0
aW9uQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHN0b3JlT3JpZ2luKFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiByZWFkT3JpZ2luKGNvbnN0IE5ldHdvcmtDYWNo
ZTo6RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdp
bj4gcmVhZE9yaWdpbihjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmKTsKIAogICAgIENhY2hlKiBm
aW5kKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNJbml0aWFsaXplZCB7IGZhbHNlIH07CiAgICAgRW5naW5lKiBtX2VuZ2luZSB7
IG51bGxwdHIgfTsKICAgICB1aW50NjRfdCBtX3VwZGF0ZUNvdW50ZXIgeyAwIH07Ci0gICAgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fb3JpZ2luOworICAgIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiBtX29yaWdpbjsKICAgICBTdHJpbmcgbV9yb290UGF0aDsKICAgICB1aW50NjRfdCBtX3F1
b3RhIHsgMCB9OwogICAgIHVpbnQ2NF90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IGIwMDA2ODkwNWIyZGJiZjllMGQzODBjMTM0YjRjMWEw
NjQ0NjhmMWYuLjU4OWM1ZTk5ZmMyNzEyMDFhMWY2MDY4OTE0Y2EzNmU5YWY1ODRiYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjp+Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbigp
CiAgICAgfQogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQordm9pZCBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkKIHsKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklE
KS5vcGVuKG9yaWdpbiwgY2FjaGVOYW1lLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0
aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENh
Y2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpPcGVuQ29tcGxldGVkKHJlcXVl
c3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwpAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlbW92ZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcQogICAgIH0pOwogfQogCi12b2lkIENhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0
X3QgdXBkYXRlQ291bnRlcikKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2Fj
aGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyKQogewogICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLnJldHJpZXZlQ2FjaGVzKG9yaWdp
biwgdXBkYXRlQ291bnRlciwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkpLCBzZXNzaW9uSUQsIG9yaWdpbiwgcmVxdWVzdElkZW50aWZpZXJdKENhY2hlSW5m
b3NPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmll
ciwgcmVzdWx0KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2
b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0XwogICAgIHJlZmVyZW5jZXMucmVtb3ZlKHJlZmVyZW5jZVJl
c3VsdCk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKG9yaWdpbiwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXSAoc3RkOjpv
cHRpb25hbDxFcnJvcj4mJiBlcnJvcikgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpDbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
Q29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBlcnJvciksIHNlc3Npb25JRC5zZXNzaW9uSUQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCmluZGV4IDlhZmZmNjg5NTNiMzli
YTU5N2FkNTUxMDU0NmVlYzllMzQ5NzhlYmYuLmU1N2M1ZTM5MGUwNjNkOWZiMWQ1ZDBkOTI1ZmEy
ZTMxZTdhZmQyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCkBAIC01MCw5
ICs1MCw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogCi0gICAgdm9p
ZCBvcGVuKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBvcGVuUmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSk7CisgICAgdm9pZCBv
cGVuKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBvcGVuUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKTsKICAgICB2
b2lkIHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3ZlUmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpOworICAgIHZvaWQgY2FjaGVzKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpOwogCiAgICAgdm9pZCByZXRy
aWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmKTsKICAgICB2b2lkIGRlbGV0
ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYpOwpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgZGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9y
aWdpbik7CisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
Jik7CiAgICAgdm9pZCBlbmdpbmVSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgppbmRleCBkNmUzY2U1NDI2YTU2OTJiN2QwNmFkZTRkOGExYjk5NTNlNGQz
ZDJkLi5lMzEwN2UyMDE0NmQ1OTAwM2IyMDZiMWRlZGY2Zjg2M2NiOGM1NWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yNCwxMSAr
MjQsMTEgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAgICAg
UmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKTsKICAgICBEZXJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcik7CiAKLSAgICBPcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0cmluZyBvcmlnaW4sIFN0cmluZyBjYWNoZU5h
bWUpOworICAgIE9wZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFN0cmluZyBj
YWNoZU5hbWUpOwogICAgIFJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwotICAgIENhY2hl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBT
dHJpbmcgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsKKyAgICBDYWNoZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpOwogCi0g
ICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcgb3JpZ2luKTsKKyAgICBDbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKTsKICAgICBF
bmdpbmVSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyKTsKIAogICAgIFJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlVSTCB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGYz
MTg4ZmRjNjc1NjY5M2ZkMTU4ZWJjNzZkYmI3YzRiZGYyYzQ0NDguLjNmMjcxMjMyZDYzZTRhNGY3
NzQ1ZWYyOGM2NGVhZTU1MzhjNGI3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgSVBDOjpDb25uZWN0aW9uJiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
b25uZWN0aW9uKCkKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lkIFdlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQordm9pZCBXZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFt
ZSkKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6T3BlbihtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwg
Y2FjaGVOYW1lKSwgMCk7CiB9CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhCiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OlJlbW92ZShtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRl
bnRpZmllciksIDApOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0
cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikKIHsK
ICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6Q2FjaGVzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCB1cGRh
dGVDb3VudGVyKSwgMCk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLAogICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQocmVx
dWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9y
aWdpbiwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2VuZ2luZVJlcHJlc2VudGF0aW9uTmV4
dElkZW50aWZpZXI7CiAgICAgbV9jbGVhclJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzLnNldChyZXF1
ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5k
ZXggMGIyNGUyYWFmMTkzNTdjZmNkM2ViODU4ZDgxNWQ3ZmY4YWMyZWJkMy4uNDgwZWRkZDliNGU1
MTVjNGI0YWFlNmQ0YzZkOTQyNThmY2JlMjUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC01
Miw5ICs1Miw5IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCk7
CiAKICAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uCi0gICAgdm9pZCBkb09w
ZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkb09wZW4odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmlu
ZyYgY2FjaGVOYW1lKSBmaW5hbDsKICAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZG9S
ZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOworICAgIHZvaWQgZG9SZXRyaWV2
ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikgZmluYWw7CiAKICAgICB2b2lkIGRvUmV0
cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKIAotICAgIHZvaWQg
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGNs
ZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGVuZ2luZVJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJikgZmluYWw7CiAKICAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJP
ckVycm9yJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYjQ0ZDViMDFkMWM2ZDQwYWUxOGRhZWEyNzYyOWJjMzRhNmNjYTUy
MC4uOTgzMGM5ZjEzNzI3ODJiYWI2NDYzZDQ4NmNkZjA5YjNkMjJiYWQ0YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE4LTAxLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgQ2FjaGUgQVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGll
bnRPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MTI0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJlZWZpbmcgdXAgdGVzdCB0byBlbnN1cmUgdGhhdCBjbGllbnQgYW5kIHRvcCBvcmlnaW5zIGFy
ZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hl
LXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xl
YXJpbmctb3JpZ2luLmh0dHBzLmh0bWw6CisKIDIwMTgtMDEtMDMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIENyYXNoIGRlc3Ryb3lp
bmcgV2ViQ29yZTo6RmlsZU1vbml0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9y
aWdpbi5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMjc4NTUxMTM1NDk4MGQ3NzkzNTAwOTJhNDIz
OWNjMzYwOTY4ZGRkZi4uMzM1ODdhYzY5YmE5N2I4MDgzNmY1ZmVhMmM4YWRkM2M5YzczMDAyYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNs
ZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3RlZC50
eHQKQEAgLTEsNCArMSw1IEBACiAKLVBBU1MgQ2xlYW5pbmcgZXhpc3RpbmcgY2FjaGVzIAorCitQ
QVNTIENyZWF0ZSBhIGNhY2hlIHN0b3JhZ2UgZnJvbSBsb2NhbGhvc3QgYW5kIGNsZWFyIGl0IAog
UEFTUyBDbGVhcmluZyBkaXNrIGNhY2hlIG9mIGEgZ2l2ZW4gb3JpZ2luIAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3Jp
Z2luLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2Fj
aGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0bWwKaW5kZXggMTI5NjY3MDQwYmNjN2FhODFhNjVk
MjUyYzMxODhmMTk5NGEwM2MxZi4uODcxMjkyMjkxMWE1MmZmOTY3ZmYxMWJiMGYxZjNiMWI3YTVl
YmY2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2Nh
Y2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbApAQCAtOCwx
MyArOCwyNyBAQAogPGJvZHk+CiAgICAgPHNjcmlwdD4KIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsK
LSAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7Ci0gICAgICAgIHZh
ciBwZW5kaW5nID0gW107Ci0gICAgICAgIGZvciAoa2V5IG9mIGtleXMpCi0gICAgICAgICAgICBw
ZW5kaW5nLnB1c2goc2VsZi5jYWNoZXMuZGVsZXRlKGtleXNbMF0pKTsKLSAgICAgICAgcmV0dXJu
IFByb21pc2UuYWxsKHBlbmRpbmcpOwotICAgIH0pOwotfSwgIkNsZWFuaW5nIGV4aXN0aW5nIGNh
Y2hlcyIpOworICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVzdCByZXF1aXJlcyBpbnRlcm5hbHMg
YW5kIHRlc3QgcnVubmVyIik7CisKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICB2YXIgY291bnRlciA9IDA7CisgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoYXN5bmMgKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICB2YXIgcmVwcmVzZW50YXRpb24gPSBKU09OLnBhcnNlKGF3YWl0IGludGVy
bmFscy5jYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbigpKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0ub3JpZ2luLnRvcE9yaWdpbiwgImh0dHBzOi8v
MTI3LjAuMC4xOjg0NDMiLCAidG9wIG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRw
czovL2xvY2FsaG9zdDo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5jYWNoZXMucGVyc2lz
dGVudCwgWyJjYWNoZTEiXSk7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJET01DYWNo
ZSgnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MycpOworICAgICAgICAgICAgdmFyIHJlcHJlc2VudGF0
aW9uID0gSlNPTi5wYXJzZShhd2FpdCBpbnRlcm5hbHMuY2FjaGVTdG9yYWdlRW5naW5lUmVwcmVz
ZW50YXRpb24oKSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBd
Lm9yaWdpbi50b3BPcmlnaW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwgInRvcCBvcmlnaW4g
b2YgY2FjaGUgMSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblsw
XS5vcmlnaW4uY2xpZW50T3JpZ2luLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MyIsICJjbGllbnQg
b3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVw
cmVzZW50YXRpb25bMF0uY2FjaGVzLnBlcnNpc3RlbnQsIFtdKTsKKworICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICB9KSk7CisgICAgfSkKK30sICJDcmVhdGUgYSBjYWNoZSBzdG9yYWdl
IGZyb20gbG9jYWxob3N0IGFuZCBjbGVhciBpdCIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgdGVz
dCA9PiB7CiAgICAgdmFyIGNhY2hlID0gYXdhaXQgc2VsZi5jYWNoZXMub3BlbigidGVzdC1jYWNo
ZS1yZWNvcmRzLXBlcnNpc3RlbmN5Iik7CkBAIC00NCw1ICs1OCw2IEBAIHByb21pc2VfdGVzdChh
c3luYyB0ZXN0ID0+IHsKICAgICBhc3NlcnRfZXF1YWxzKGtleXMubGVuZ3RoLCAwLCAicmVjb3Jk
cyBzaG91bGQgYmUgZW1wdHkiKTsKIH0sICdDbGVhcmluZyBkaXNrIGNhY2hlIG9mIGEgZ2l2ZW4g
b3JpZ2luJyk7CiAgICAgPC9zY3JpcHQ+CisgICAgPGlmcmFtZSBzcmM9Imh0dHBzOi8vbG9jYWxo
b3N0Ojg0NDMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvY2FjaGUtcGVyc2lzdGVuY3ktaWZyYW1l
Lmh0bWwjbmFtZT1jYWNoZTEiPjwvaWZyYW1lPgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2Nh
Y2hlLW9yaWdpbnMuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDM2NzA3ZGQxYWI5NGE2NzZiNThi
NGVkMDhhZTVkNTNkOGZmNjA3ZmYuLjM3ODdkYjNlZWM2ZjYxOWQ0ZDIxYzQ3MzBiMGEyZTlkYzA4
ZjUxNGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1vcmlnaW5zLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSw3IEBACiAgIAogCiBQQVNTIENyZWF0ZSBhIGNhY2hlIHN0b3JhZ2UgYW5kIGxvb2sgYXQg
dGhlIHJlcHJlc2VudGF0aW9uIAotUEFTUyBDYWNoZXMgZnJvbSBkaWZmZXJlbnQgb3JpZ2lucyBz
aG91bGQgbm90IG1peCAKK1BBU1MgVmVyaWZ5aW5nIHRoYXQgdHdvIGNhY2hlcyBhcmUgY3JlYXRl
ZCBvbiB0d28gZGlmZmVyZW50IGNsaWVudCBvcmlnaW5zIAorUEFTUyBWZXJpZnlpbmcgdGhhdCBj
YWNoZXMgYXJlIGNsdXN0ZXJlZCBwZXIgY2xpZW50IG9yaWdpbi4gCitQQVNTIFZlcmlmeWluZyB0
aGF0IGNsZWFyaW5nIGNhY2hlcyBmb3IgYW4gb3JpZ2luIHdpbGwgY2xlYXIgYm90aCB0b3Agb3Jp
Z2luIGFuZCBjbGllbnQgb3JpZ2luIGNhY2hlcy4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy5odG1s
CmluZGV4IGYyOWI5YjE3ODFmMGEzNTc3YTE0YWFjMTAyY2EzZjA3MGJkMTIyNTAuLjc3MzFmMWM0
YTFmMzAxMDg4ZDhlYWZjMzQzODY2YTc5NWY4M2ZjZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMu
aHRtbApAQCAtOCwyOCArOCw1NCBAQAogPGJvZHk+CiAgICAgPHNjcmlwdD4KIAotICAgIGZ1bmN0
aW9uIGNoZWNrQ2FjaGVzKG5hbWUpIHsKLSAgICAgICAgcHJvbWlzZV90ZXN0KCgpID0+IHsKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlcy5rZXlzKCkudGhlbihrZXlzID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShrZXlzLmluZGV4T2YoImNhY2hlMSIpICE9PSAtMSwgIlNo
b3VsZCBoYXZlIGNhY2hlMSIpOwotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGtleXMuaW5k
ZXhPZigiY2FjaGUyIikgPT09IC0xLCAiU2hvdWxkIG5vdCBoYXZlIGNhY2hlMSIpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0sIG5hbWUpOworICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrQ2Fj
aGVzQWZ0ZXJDbGVhcmluZ01lbW9yeVJlcHJlc2VudGF0aW9uKG5hbWUpIHsKKyAgICAgICAgYXdh
aXQgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVtb3J5UmVwcmVzZW50YXRpb24oKTsKKyAg
ICAgICAgdmFyIGtleXMgPSBhd2FpdCBzZWxmLmNhY2hlcy5rZXlzKCk7CisgICAgICAgIHRlc3Qo
KCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X3RydWUoa2V5cy5pbmRleE9mKCJjYWNoZTEiKSAh
PT0gLTEsICJTaG91bGQgaGF2ZSBjYWNoZTEiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGtl
eXMuaW5kZXhPZigiY2FjaGUyIikgPT09IC0xLCAiU2hvdWxkIG5vdCBoYXZlIGNhY2hlMiIpOwor
ICAgICAgICB9LCAiVmVyaWZ5aW5nIHRoYXQgY2FjaGVzIGFyZSBjbHVzdGVyZWQgcGVyIGNsaWVu
dCBvcmlnaW4uIik7CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tDYWNoZXNBZnRl
ckNsZWFyaW5nT3JpZ2lucygpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5jbGVhckRPTUNhY2hlKCdo
dHRwczovLzEyNy4wLjAuMTo4NDQzJyk7CisgICAgICAgIHZhciByZXByZXNlbnRhdGlvbiA9IEpT
T04ucGFyc2UoYXdhaXQgaW50ZXJuYWxzLmNhY2hlU3RvcmFnZUVuZ2luZVJlcHJlc2VudGF0aW9u
KCkpOworICAgICAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVw
cmVzZW50YXRpb25bMF0ub3JpZ2luLnRvcE9yaWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMi
LCAidG9wIG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJl
cHJlc2VudGF0aW9uWzFdLm9yaWdpbi50b3BPcmlnaW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQz
IiwgInRvcCBvcmlnaW4gb2YgY2FjaGUgMiIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXByZXNlbnRhdGlvblswXS5vcmlnaW4uY2xpZW50T3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6
ODQ0MyIsICJjbGllbnQgb3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMocmVwcmVzZW50YXRpb25bMV0ub3JpZ2luLmNsaWVudE9yaWdpbiwgImh0dHBzOi8vbG9j
YWxob3N0Ojg0NDMiLCAiY2xpZW50IG9yaWdpbiBvZiBjYWNoZSAyIik7CisgICAgICAgICAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLmNhY2hlcy5wZXJzaXN0ZW50LCBb
XSk7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzFdLmNh
Y2hlcy5wZXJzaXN0ZW50LCBbXSk7CisgICAgICAgIH0sICJWZXJpZnlpbmcgdGhhdCBjbGVhcmlu
ZyBjYWNoZXMgZm9yIGFuIG9yaWdpbiB3aWxsIGNsZWFyIGJvdGggdG9wIG9yaWdpbiBhbmQgY2xp
ZW50IG9yaWdpbiBjYWNoZXMuIik7CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tD
YWNoZVJlcHJlc2VudGF0aW9uKCkgeworICAgICAgICB2YXIgcmVwcmVzZW50YXRpb24gPSBKU09O
LnBhcnNlKGF3YWl0IGludGVybmFscy5jYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbigp
KTsKKyAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJl
c2VudGF0aW9uWzBdLm9yaWdpbi50b3BPcmlnaW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwg
InRvcCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXBy
ZXNlbnRhdGlvblsxXS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIs
ICJ0b3Agb3JpZ2luIG9mIGNhY2hlIDIiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVw
cmVzZW50YXRpb25bMF0ub3JpZ2luLmNsaWVudE9yaWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0
NDMiLCAiY2xpZW50IG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlcHJlc2VudGF0aW9uWzFdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRwczovL2xvY2Fs
aG9zdDo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMiIpOworICAgICAgICAgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5jYWNoZXMucGVyc2lzdGVudCwgWyJj
YWNoZTEiXSk7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlcHJlc2VudGF0aW9u
WzFdLmNhY2hlcy5wZXJzaXN0ZW50LCBbImNhY2hlMiJdKTsKKyAgICAgICAgfSwgIlZlcmlmeWlu
ZyB0aGF0IHR3byBjYWNoZXMgYXJlIGNyZWF0ZWQgb24gdHdvIGRpZmZlcmVudCBjbGllbnQgb3Jp
Z2lucyIpOwogICAgIH0KIAogICAgIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKLSAgICAgICAgaWYg
KCF3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJU
ZXN0IHJlcXVpcmVzIGludGVybmFscyIpOworICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMg
fHwgIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyBhbmQgdGVzdCBydW5uZXIiKTsKIAogICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgdmFy
IGNvdW50ZXIgPSAwOwotICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoYXN5bmMgKGV2ZW50KSA9PiB7
CiAgICAgICAgICAgICAgICAgaWYgKCsrY291bnRlciA8PSAxKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaW50ZXJuYWxzLmNsZWFyQ2FjaGVTdG9yYWdlTWVt
b3J5UmVwcmVzZW50YXRpb24oKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgY2hl
Y2tDYWNoZXMoIkNhY2hlcyBmcm9tIGRpZmZlcmVudCBvcmlnaW5zIHNob3VsZCBub3QgbWl4Iik7
Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgICAgIGF3YWl0IGNoZWNrQ2FjaGVSZXByZXNlbnRhdGlvbigpOworICAgICAg
ICAgICAgICAgIGF3YWl0IGNoZWNrQ2FjaGVzQWZ0ZXJDbGVhcmluZ01lbW9yeVJlcHJlc2VudGF0
aW9uKCk7CisgICAgICAgICAgICAgICAgYXdhaXQgY2hlY2tDYWNoZXNBZnRlckNsZWFyaW5nT3Jp
Z2lucygpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pKTsKICAg
ICAgICAgfSkKICAgICB9LCAiQ3JlYXRlIGEgY2FjaGUgc3RvcmFnZSBhbmQgbG9vayBhdCB0aGUg
cmVwcmVzZW50YXRpb24iKTsKQEAgLTQwLDQgKzY2LDMgQEAKICAgICA8L2Rpdj4KIDwvYm9keT4K
IDwvaHRtbD4KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330451</attachid>
            <date>2018-01-04 00:29:02 -0800</date>
            <delta_ts>2018-01-05 15:28:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181240-20180104092900.patch</filename>
            <type>text/plain</type>
            <size>65112</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNjMGVkMGZlYzgxNGI4
NzdhZjIwY2JlY2E2YzBjODBlYzg5NTRmYS4uNmY1ZDA1MmYzZTkzYTgwNDNjY2JjNzA4NTY3ZTE2
YzdjODU0OGRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ2FjaGUg
QVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVkIHRlc3Rz
LgorCisgICAgICAgIFByZXZpb3VzbHksIGNhY2hlIHN0b3JhZ2Ugd2FzIHBhcnRpdGlvbmVkIGFj
Y29yZGluZyB0aGUgb3JpZ2luIG9mIHRoZSBjbGllbnQsIHJlcHJlc2VudGVkIGFzIGEgU3RyaW5n
LgorICAgICAgICBXZSBub3cgcGFydGl0aW9uIGFjY29yZGluZyBib3RoIGNsaWVudCBhbmQgdG9w
IG9yaWdpbnMsIHJlcHJlc2VudGVkIGFzIGEgQ2xpZW50T3JpZ2luCisKKyAgICAgICAgTWlub3Ig
cmVmYWN0b3JpbmcgdG8gdXNlIG1vcmUgbWFrZVBlbmRpbmdBY3Rpdml0eS4KKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBmb3IgSVBDIHNlcmlhbGl6YXRpb24gb2YgQ2xpZW50T3JpZ2luLgorICAgICAg
ICBBZGRlZCBTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nIHdoaWNoIGlzIHVzZWQgYnkgV2Vi
S2l0MiBDYWNoZSBTdG9yYWdlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpy
ZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Om9wZW4p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpkZWNvZGUpOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZGVidWdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1v
cnlSZXByZXNlbnRhdGlvbik6CisKIDIwMTgtMDEtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSBzaG91bGQgYmUgYSBuby1vcCBpZiB3b3JrZXIgaXMg
YmVpbmcgdGVybWluYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4YjViYzQ3YjU5OTE2ZjJkYjY1OWM4ZjFmNWRi
N2M4YmVlZDllMjhjLi40NDQ2NTBjMmQ2NjJiMmUwNzQxMTRlMDZiNjIwZWM2YTQwZTdkNzkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTAxLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ2FjaGUgQVBJIHBhcnRpdGlvbmlu
ZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0
ZW5zZW4uCisKKyAgICAgICAgb3BlbiBhbmQgcmV0cmlldmVDYWNoZXMgbm93IHRha2UgYSBDbGll
bnRPcmlnaW4gaW5zdGVhZCBvZiBhIFN0cmluZy4KKyAgICAgICAgVXBkYXRlZCBjYWNoZSBmaWxl
c3lzdGVtIHBhdGggY29tcHV0YXRpb24gdG8gdGFrZSBib3RoIGNsaWVudCBvcmlnaW4gYW5kIHRv
cCBvcmlnaW4uCisKKyAgICAgICAgV2hlbiBjbGVhcmluZyBhbiBvcmlnaW4sIGNhY2hlcyB3aG9z
ZSBjbGllbnQgb3JpZ2luIG9yIHRvcCBvcmlnaW4gbWF0Y2hlcyB0aGUgb3JpZ2luIGFyZSBjbGVh
cmVkLgorICAgICAgICBDYWNoZXMgYXJlIGFkZGVkIHRvIHRoZSB3ZWIgc2l0ZSBkYXRhIG9mIHRo
ZWlyIGNsaWVudCBvcmlnaW4gd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGNhY2hlIHNpemUuCisg
ICAgICAgIENhY2hlcyBhcmUgYWRkZWQgdG8gdGhlIHdlYiBzaXRlIGRhdGEgb2YgdGhlaXIgdG9w
IG9yaWdpbiB3aXRoIGEgc2l6ZSBlcXVhbCB0byAwLgorCisgICAgICAgIFVwZGF0ZWQgbWVtb3J5
IHJlcHJlc2VudGF0aW9uIGR1bXBpbmcgdXNlZCBmb3IgdGVzdCB0byBpbmNsdWRlIGJvdGggdG9w
IGFuZCBjbGllbnQgb3JpZ2lucy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6
OmNhY2hlc1Jvb3RQYXRoKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6
Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlz
ayk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZW1vdmVDYWNoZXMp
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKToK
KyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyTWVtb3J5
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
cmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
Q2FjaGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXRy
aWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkNhY2hlczo6Q2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6
OnN0b3JlT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJl
YWRPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6b3Blbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVz
Lmg6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6b3JpZ2luIGNvbnN0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3Blbik6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyk6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVt
b3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaDoKKwogMjAxOC0wMS0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBl
bGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVzIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMjA1
MjJmMGFkOTdhYjI4NmM1ODk0NTU0NjdiZGM2NzRhY2JmMWQzNy4uZmUwZGZhNmJjMTg0YjFmZWI2
OWEzYWVjNTdkYTU2NzMxM2ExZDdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU7CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3QgQ2xp
ZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZp
ZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
ID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBl
bmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
QEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUodWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWwKICAgICBkb1JlbW92ZShy
ZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0
X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVz
dElkZW50aWZpZXI7CiAgICAgbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVx
dWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNmNhN2Jm
YjkxNGUwNTlkZGVhYTQ0MzM1NmM2MDI5ZTFjMGQwYWVjZC4uNGRhYTM0NDhmMjJhY2QxYzQ4MjAx
NzMwMmQzYzY3YjliOTRkOGQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgQ2xpZW50T3JpZ2luOwogY2xhc3MgRmV0Y2hSZXNw
b25zZTsKIAogY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiB7CkBAIC0zOSw5ICs0MCw5IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpKTsgfQogICAgIHZp
cnR1YWwgfkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIG9w
ZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBET01DYWNo
ZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCBvcGVuKGNvbnN0
IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBET01DYWNoZUVuZ2luZTo6
Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7
Ci0gICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3Qg
dXBkYXRlQ291bnRlciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0
ZUNvdW50ZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKICAgICB2
b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYs
IERPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBiYXRjaERlbGV0
ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYpOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRlcmVmZXJlbmNlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgeyB9CiAKICAgICAv
LyBVc2VkIG9ubHkgZm9yIHRlc3RpbmcgcHVycG9zZXMuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIERPTUNhY2hl
RW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayhET01DYWNo
ZUVuZ2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVh
ck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIERPTUNhY2hlRW5naW5l
OjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayhET01DYWNoZUVuZ2lu
ZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmdpbmVSZXBy
ZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2sp
IHsgY2FsbGJhY2soU3RyaW5nIHsgfSk7IH0KIAogcHJvdGVjdGVkOgpAQCAtNjcsOSArNjgsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRSZWNvcmRzQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNPckVycm9yJiYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25z
dCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLykgeyBvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVk
KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLykgeyBv
cGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZUVu
Z2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9SZW1v
dmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmll
ciAqLykgeyByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVk
KERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIC8qIG9yaWdpbiAqLywgdWludDY0X3QgLyogdXBkYXRlQ291bnRlciAqLykgeyB1cGRh
dGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9S
ZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3Jp
Z2luJiwgdWludDY0X3QgLyogdXBkYXRlQ291bnRlciAqLykgeyB1cGRhdGVDYWNoZXMocmVxdWVz
dElkZW50aWZpZXIsIHsgfSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlUmVjb3Jk
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVy
ICovLCBjb25zdCBVUkwmIC8qIHVybCAqLykgeyB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlm
aWVyLCB7IH0pOyB9CiAgICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJikgeyBkZWxldGVSZWNv
cmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZUVu
Z2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA4NTk5NTg5NDRmM2JiMmRhODIw
Y2M5MTU2ZWFhOGExODE4MmFlMjg5Li41Y2ZiMzZjOTQ1ZDI2ZTc4YmVjZGExZmM4YjA0OTQzMzEy
MDlhNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0
b3JhZ2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRE9NQ2FjaGVTdG9yYWdlLmgi
CiAKICNpbmNsdWRlICJDYWNoZVF1ZXJ5T3B0aW9ucy5oIgorI2luY2x1ZGUgIkNsaWVudE9yaWdp
bi5oIgogI2luY2x1ZGUgIkpTRE9NQ2FjaGUuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2Uu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC00MiwxMSArNDMsMTMg
QEAgRE9NQ2FjaGVTdG9yYWdlOjpET01DYWNoZVN0b3JhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgUmVmPENhY2hlU3RvcmEKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAot
U3RyaW5nIERPTUNhY2hlU3RvcmFnZTo6b3JpZ2luKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Q2xp
ZW50T3JpZ2luPiBET01DYWNoZVN0b3JhZ2U6Om9yaWdpbigpIGNvbnN0CiB7Ci0gICAgLy8gRklY
TUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIGNoZWNrIGZvciBvcmlnaW4gYmVpbmcgbnVsbD8KICAg
ICBhdXRvKiBvcmlnaW4gPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPyBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkgOiBudWxscHRyOwotICAgIHJldHVybiBvcmln
aW4gPyBvcmlnaW4tPnRvU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBpZiAoIW9yaWdpbikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBDbGllbnRPcmlnaW4geyBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnRvcE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oKm9yaWdpbikgfTsKIH0KIAogc3RhdGljIHZvaWQgZG9TZXF1ZW50aWFsTWF0Y2goc2l6ZV90
IGluZGV4LCBWZWN0b3I8UmVmPERPTUNhY2hlPj4mJiBjYWNoZXMsIERPTUNhY2hlOjpSZXF1ZXN0
SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgRE9NQ2FjaGU6Ok1hdGNo
Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEzNSwxMiArMTM4LDExIEBAIFJlZjxE
T01DYWNoZT4gRE9NQ2FjaGVTdG9yYWdlOjpmaW5kQ2FjaGVPckNyZWF0ZShDYWNoZUluZm8mJiBp
bmZvKQogCiB2b2lkIERPTUNhY2hlU3RvcmFnZTo6cmV0cmlldmVDYWNoZXMoV1RGOjpGdW5jdGlv
bjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBT
dHJpbmcgb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7Ci0gICAgaWYgKG9yaWdpbi5pc051bGwoKSkK
KyAgICBhdXRvIG9yaWdpbiA9IHRoaXMtPm9yaWdpbigpOworICAgIGlmICghb3JpZ2luKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgbV9jb25u
ZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIG1fdXBkYXRlQ291bnRlciwgW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICBtX2Nvbm5lY3Rpb24tPnJldHJpZXZlQ2FjaGVzKCpvcmlnaW4sIG1fdXBk
YXRlQ291bnRlciwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBlbmRpbmdB
Y3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShDYWNoZUluZm9zT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKICAgICAgICAg
ICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2so
RE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKQEAgLTE1
OCw3ICsxNjAsNiBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6cmV0cmlldmVDYWNoZXMoV1RGOjpG
dW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPgogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQotICAgICAgICB1bnNl
dFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICB9KTsKIH0KIApAQCAtMTc3LDMzICsxNzgsMzIg
QEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEQKICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdU
Rk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorICAgICAgICBkb09wZW4obmFtZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgfSk7Cit9CiAK
LSAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYg
aXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOwotICAgICAgICBpZiAocG9z
aXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNhY2hlID0gbV9jYWNoZXNb
cG9zaXRpb25dOwotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpjcmVhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgY2FjaGUtPm5hbWUoKSB9LCBjYWNo
ZS0+aWRlbnRpZmllcigpLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgb3JpZ2luID0gdGhpcy0+b3JpZ2lu
KCk7Ci0gICAgICAgIEFTU0VSVCghb3JpZ2luLmlzTnVsbCgpKTsKK3ZvaWQgRE9NQ2FjaGVTdG9y
YWdlOjpkb09wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPERPTUNhY2hlPj4mJiBwcm9taXNlKQoreworICAgIGF1dG8gcG9zaXRpb24gPSBtX2Nh
Y2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9
PSBuYW1lOyB9KTsKKyAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKKyAgICAgICAgYXV0
byYgY2FjaGUgPSBtX2NhY2hlc1twb3NpdGlvbl07CisgICAgICAgIHByb21pc2UucmVzb2x2ZShE
T01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IGNhY2hl
LT5uYW1lKCkgfSwgY2FjaGUtPmlkZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0
aGlzKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgbmFtZSwgW3RoaXMsIG5h
bWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVy
cm9yJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewot
ICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1
bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBuYW1lKTsKLQotICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9NQ2FjaGU6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIHJlc3VsdC52
YWx1ZSgpLmlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOwotICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FjaGUpOwotICAgICAgICAgICAgICAgICAgICBtX2Nh
Y2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkpOwotICAgICAgICAgICAgICAgIH0KKyAgICBtX2Nv
bm5lY3Rpb24tPm9wZW4oKm9yaWdpbigpLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIW1faXNTdG9wcGVkKSB7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFs
dWUoKSkKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJy
b3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKKyAgICAgICAg
ICAgICAgICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBuYW1lKTsKKworICAgICAgICAgICAgICAgIGF1dG8gY2FjaGUgPSBET01DYWNoZTo6
Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IG5hbWUgfSwgcmVzdWx0
LnZhbHVlKCkuaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CisgICAgICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhY2hlKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlcy5h
cHBlbmQoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdW5zZXRQ
ZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIH0pOworICAgICAgICB9CiAgICAgfSk7CiB9
CiAKQEAgLTIxNCwzMSArMjE0LDMwIEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mCiAgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgZG9SZW1vdmUobmFtZSwgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgfSk7Cit9CiAKLSAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVz
LmZpbmRNYXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5h
bWU7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAg
IHByb21pc2UucmVzb2x2ZShmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBTdHJpbmcgb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7Ci0gICAgICAgIEFTU0VS
VCghb3JpZ2luLmlzTnVsbCgpKTsKK3ZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpkb1JlbW92ZShjb25z
dCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2Up
Cit7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYg
aXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOworICAgIGlmIChwb3NpdGlv
biA9PSBub3RGb3VuZCkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCi0gICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVy
KCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJ
ZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghbV9p
c1N0b3BwZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9F
eGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2
ZSh0cnVlKTsKLSAgICAgICAgICAgICAgICB9CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9j
YWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghbV9pc1N0b3BwZWQpIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1
ZSgpKQorICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJv
clRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQorICAgICAgICAg
ICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIG5hbWUpOworICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh0cnVlKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAg
ICAgICB9KTsKLSAgICAgICAgbV9jYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICAgICAgfQog
ICAgIH0pOworICAgIG1fY2FjaGVzLnJlbW92ZShwb3NpdGlvbik7CiB9CiAKIHZvaWQgRE9NQ2Fj
aGVTdG9yYWdlOjprZXlzKEtleXNQcm9taXNlJiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCmluZGV4IDkzYTgyZmJiNzNkNTQzMDFl
ZmJiNTc0NWRiMGE2YjMwYzY5OTJlYTcuLmYzMGZkM2QzMjZjYzZkOWYyOTVmZWIzODYyNDYyZTU2
MTYxZTQwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0
b3JhZ2UuaApAQCAtNTIsOSArNTIsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIGRvT3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RE9NQ2FjaGU+PiYm
KTsKKyAgICB2b2lkIGRvUmVtb3ZlKGNvbnN0IFN0cmluZyYsIERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPiYmKTsKICAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKFdURjo6RnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpOwogICAgIFJlZjxET01DYWNoZT4gZmlu
ZENhY2hlT3JDcmVhdGUoRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mbyYmKTsKLSAgICBTdHJpbmcg
b3JpZ2luKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IG9yaWdpbigp
IGNvbnN0OwogCiAgICAgVmVjdG9yPFJlZjxET01DYWNoZT4+IG1fY2FjaGVzOwogICAgIHVpbnQ2
NF90IG1fdXBkYXRlQ291bnRlciB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4
IGY5ZTU0NzE1MmRlYzNjY2IzZmQyOGVjOTViNTczOTc4Njk2NThjYWYuLmM1NDM3YjY2NTg1Yjc1
NmFiZDgxOTNhNzlmNDg2N2Y0MTFjZjY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246On5Xb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbWFpblRo
cmVhZENvbm5lY3Rpb24gPSBXVEZNb3ZlKG1fbWFpblRocmVhZENvbm5lY3Rpb24pXSgpIG11dGFi
bGUgeyB9KTsKIH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4o
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGNhY2hlTmFtZSkKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9P
cGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd29y
a2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVhZENvbm5lY3Rp
b24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0g
b3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjYWNoZU5hbWUgPSBjYWNoZU5hbWUuaXNvbGF0ZWRDb3B5
KCldICgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+b3Blbihvcmln
aW4sIGNhY2hlTmFtZSwgW3dvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVx
dWVzdElkZW50aWZpZXJdIChjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11
dGFibGUgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90CiAgICAg
fSk7CiB9CiAKLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNh
Y2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXIpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVu
dE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQogewogICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5U
aHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZp
ZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKSwgdXBkYXRlQ291bnRlcl0gKCkgbXV0
YWJsZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhvcmln
aW4sIHVwZGF0ZUNvdW50ZXIsIFt3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCks
IHJlcXVlc3RJZGVudGlmaWVyXSAoQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCAyNzZhNTdhZGIyMGIyMmI1NjNlZDc4NTc1N2U5
NGM4Yjk0ZWIwZDI2Li43YWEwNWFkYmNiZDBiM2E0NTc4MzUyOWM0ZmRjZDk2NmRjZjY5OGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDIsOSArNDIsOSBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oV29ya2VyR2xvYmFsU2NvcGUmKTsK
IAogICAgIC8vIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uCi0gICAgdm9pZCBkb09w
ZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkb09wZW4odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVO
YW1lKSBmaW5hbDsKICAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZG9SZXRyaWV2ZUNh
Y2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVp
bnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOworICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3Qg
dXBkYXRlQ291bnRlcikgZmluYWw7CiAKICAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVS
TCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCAyMGUyODM4MWEz
ODAxZTljYjlhYjVjNmU0MWYwNWE3MGEyNmY5MGVlLi5hZjdjYTkyNjRhNGYyZjg1ZTk0MGM5YmQx
ZDQwMTZkZmEwOTkyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9y
aWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTM2LDYg
KzM2LDExIEBAIHN0cnVjdCBDbGllbnRPcmlnaW4gewogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2luJikgY29uc3Q7CiAKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3Jp
Z2luPiBkZWNvZGUoRGVjb2RlciYpOworCisgICAgQ2xpZW50T3JpZ2luIGlzb2xhdGVkQ29weSgp
IGNvbnN0OworCiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbjsKICAgICBTZWN1cml0
eU9yaWdpbkRhdGEgY2xpZW50T3JpZ2luOwogfTsKQEAgLTU0LDYgKzU5LDMxIEBAIGlubGluZSBi
b29sIENsaWVudE9yaWdpbjo6b3BlcmF0b3I9PShjb25zdCBDbGllbnRPcmlnaW4mIG90aGVyKSBj
b25zdAogICAgIHJldHVybiB0b3BPcmlnaW4gPT0gb3RoZXIudG9wT3JpZ2luICYmIGNsaWVudE9y
aWdpbiA9PSBvdGhlci5jbGllbnRPcmlnaW47CiB9CiAKK2lubGluZSBDbGllbnRPcmlnaW4gQ2xp
ZW50T3JpZ2luOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IHRvcE9yaWdp
bi5pc29sYXRlZENvcHkoKSwgY2xpZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpIH07Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIENsaWVudE9yaWdpbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB0b3BPcmlnaW47CisgICAg
ZW5jb2RlciA8PCBjbGllbnRPcmlnaW47Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlu
bGluZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gQ2xpZW50T3JpZ2luOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4g
dG9wT3JpZ2luOworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBjbGllbnRP
cmlnaW47CisgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CisgICAgaWYgKCF0b3BPcmlnaW4pCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47
CisgICAgaWYgKCFjbGllbnRPcmlnaW4pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSgqdG9wT3JpZ2luKSwgV1RGTW92ZSgq
Y2xpZW50T3JpZ2luKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFj
ZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4
IGFkYTFmNDFkMjMwNWE3ZWE0YTA4YTZkMjBmNjY4MDRiNmM2N2UzOWYuLmU5MGFiODIxZjc4ZmQ1
NTZmZjU2ODdkMzBlOWYyZjc2MGIzOTY0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5jcHAKQEAgLTQ4LDEyICs0OCwxMCBAQCBTZWN1cml0eU9yaWdpbkRhdGEg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4mCiAgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIAotI2lmICFMT0dfRElTQUJM
RUQKLVN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRlYnVnU3RyaW5nKCkgY29uc3QKK1N0cmlu
ZyBTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gbWFr
ZVN0cmluZyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52
YWx1ZV9vcigwKSkpOwogfQotI2VuZGlmCiAKIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21GcmFtZShGcmFtZSogZnJhbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCAwZWZmYTY0NGY5OTI0Yzg4ODNmYzFhY2Q0MTliY2M1
Y2VjYzgxZjk1Li41ZjU1Zjk0MmI4MWZjZmUwMGJmZDQzYmMxMDk5NmYzY2RjMjQ3MTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTc3LDggKzc3LDEwIEBA
IHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogICAgICAgICByZXR1cm4gcHJvdG9jb2wuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsKICAgICB9CiAgICAgCisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGRlYnVnU3RyaW5nKCkgY29uc3Q7CisgICAgU3RyaW5nIGRlYnVnU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gdG9TdHJpbmcoKTsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMWZiNjFjZTNmODZlZTc2NDljNGU4YWVlNTRi
NWMyYmFjNWNjODJlMi4uNjY1ZGExOWI3MWI3Y2E2MTJmNTMyNGYwNTI2YmRkZGE3OWM4NWE1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRl
ICJDb21wb3NlZFRyZWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUg
IkRPTVJlY3QuaCIKQEAgLTQyNDgsNyArNDI0OSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpjbGVhckNh
Y2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
CiAgICAgICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24tPmNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpFcnJv
cj4mJiByZXN1bHQpIG11dGFibGUgeworICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+Y2xl
YXJNZW1vcnlSZXByZXNlbnRhdGlvbihDbGllbnRPcmlnaW4geyBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkgfSwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byAmJiByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7CiAgICAgICAgIHByb21pc2Uu
cmVzb2x2ZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCA1YTFiM2FjZGViNDI2MGIwYjhhYzdmYWExOWI2ZjA3MWJk
MDBiY2VlLi5kMGNiZjA4MWUzNGI2ZTU2N2VmZmU2Mjg1YjgzOGRhY2E5YzlmYmJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTE1
LDEwICs1MTUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgIH0pOwogCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpIHsK
LSAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpIHsKLSAgICAgICAg
ICAgIGF1dG8gb3JpZ2luID0gb3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
OwotICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVh
ckNhY2hlc0Zvck9yaWdpbihvcmlnaW4sIGNsZWFyVGFza3NIYW5kbGVyKTsKLSAgICAgICAgfQor
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKKyAgICAgICAgICAg
IENhY2hlU3RvcmFnZTo6RW5naW5lOjpmcm9tKHNlc3Npb25JRCkuY2xlYXJDYWNoZXNGb3JPcmln
aW4ob3JpZ2luRGF0YSwgY2xlYXJUYXNrc0hhbmRsZXIpOwogICAgIH0KIAogICAgIGlmICh3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSAmJiAhc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggODRjNGZmZWViMzE5
NWE2NzY5MmY2NGY0MmIwMDViZDc2NDM5OGFmMy4uYmE3MjcwMzRhMWUzNDkwNWM1ODQ1ZjcwNGM0
YWQyNGMyMjk3YTRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNTIsMTMgKzUyLDEzIEBAIHN0
YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8RW5naW5lPj4mIGdsb2JhbEVuZ2lu
ZU1hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBh
dGgoY29uc3QgU3RyaW5nJiBvcmlnaW4pCitTdHJpbmcgRW5naW5lOjpjYWNoZXNSb290UGF0aChj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBpZiAoIXNob3VsZFBl
cnNpc3QoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIEtleSBrZXkob3JpZ2luLCB7IH0s
IHsgfSwgeyB9LCBzYWx0KCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmlu
ZygpKTsKKyAgICBLZXkga2V5KG9yaWdpbi50b3BPcmlnaW4udG9TdHJpbmcoKSwgb3JpZ2luLmNs
aWVudE9yaWdpbi50b1N0cmluZygpLCB7IH0sIHsgfSwgc2FsdCgpKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtl
eS5oYXNoQXNTdHJpbmcoKSk7CiB9CiAKIEVuZ2luZTo6fkVuZ2luZSgpCkBAIC0xMDAsNyArMTAw
LDcgQEAgRW5naW5lOjpFbmdpbmUoU3RyaW5nJiYgcm9vdFBhdGgpCiAgICAgICAgIG1faW9RdWV1
ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhY2hlU3RvcmFnZUVuZ2lu
ZS5zZXJpYWxCYWNrZ3JvdW5kIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6
UU9TOjpCYWNrZ3JvdW5kKTsKIH0KIAotdm9pZCBFbmdpbmU6Om9wZW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBFbmdpbmU6Om9wZW4oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmlnaW4sIFtjYWNoZU5h
bWUsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlc09yRXJyb3ImJiBjYWNoZXNP
ckVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFjYWNoZXNPckVycm9yLmhhc192YWx1ZSgp
KSB7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZSh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sKICAgICBmb3Ig
KGF1dG8mIGNhY2hlcyA6IG1fY2FjaGVzLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8qIGNhY2hl
VG9SZW1vdmUgPSBjYWNoZXMtPmZpbmQoY2FjaGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGNh
Y2hlVG9SZW1vdmUpIHsKLSAgICAgICAgICAgIGNhY2hlc1RvTW9kaWZ5ID0gY2FjaGVzLnB0cigp
OworICAgICAgICAgICAgY2FjaGVzVG9Nb2RpZnkgPSBjYWNoZXMuZ2V0KCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEVuZ2lu
ZTo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjawogICAgIGNhY2hlc1RvTW9kaWZ5LT5yZW1vdmUoY2FjaGVJZGVudGlmaWVy
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhj
b25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hl
SW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmln
aW4sIFt1cGRhdGVDb3VudGVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZXNP
ckVycm9yJiYgY2FjaGVzT3JFcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghY2FjaGVzT3JF
cnJvci5oYXNfdmFsdWUoKSkgewpAQCAtMjAzLDE1ICsyMDMsMTYgQEAgdm9pZCBFbmdpbmU6Omlu
aXRpYWxpemUoRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4mJiBjYWxsYmFj
aykKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBT
dHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpy
ZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENh
Y2hlc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaW5pdGlhbGl6ZShbdGhpcywgb3JpZ2lu
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY2FjaGVzID0gbV9jYWNoZXMuZW5zdXJlKG9y
aWdpbiwgWyZvcmlnaW4sIHRoaXNdIHsKLSAgICAgICAgICAgIHJldHVybiBDYWNoZXM6OmNyZWF0
ZSgqdGhpcywgU3RyaW5nIHsgb3JpZ2luIH0sIGNhY2hlc1Jvb3RQYXRoKG9yaWdpbiksIE5ldHdv
cmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSgpKTsKKyAg
ICAgICAgICAgIGF1dG8gcGF0aCA9IGNhY2hlc1Jvb3RQYXRoKG9yaWdpbik7CisgICAgICAgICAg
ICByZXR1cm4gQ2FjaGVzOjpjcmVhdGUoKnRoaXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IG9y
aWdpbiB9LCBXVEZNb3ZlKHBhdGgpLCBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEoKSk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAog
ICAgICAgICBpZiAoY2FjaGVzLT5pc0luaXRpYWxpemVkKCkpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7IGNhY2hlcy5nZXQoKSB9KTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7ICpjYWNo
ZXMgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI2LDcgKzIyNyw3
IEBAIHZvaWQgRW5naW5lOjpyZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4s
IENhY2hlc0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBjYWxsYmFjayhzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PENhY2hlcz4geyBjYWNoZXMuZ2V0KCkgfSk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPENhY2hlcz4geyAqY2FjaGVzIH0pOwogICAgICAgICB9KTsKICAgICB9
KTsKIH0KQEAgLTMyMiwxMiArMzIzLDYgQEAgdm9pZCBFbmdpbmU6OnJlbW92ZUZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSkKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnJlbW92ZUNhY2hl
cyhjb25zdCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICBBU1NFUlQobV9jYWNoZXMuY29udGFpbnMo
b3JpZ2luKSk7Ci0gICAgbV9jYWNoZXMucmVtb3ZlKG9yaWdpbik7Ci19Ci0KIGNsYXNzIFJlYWRP
cmlnaW5zVGFza0NvdW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkT3JpZ2luc1Rhc2tDb3Vu
dGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFkT3JpZ2luc1Rhc2tDb3VudGVyPiBj
cmVhdGUoV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50
cnk+KT4mJiBjYWxsYmFjaykKQEAgLTM1OSw3ICszNTQsNyBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hF
bnRyaWVzKGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZQogewogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7CiAgICAgICAgIGF1dG8gZW50cmll
cyA9IFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoYXV0byYgcGFpcikgewotICAgICAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhOjpFbnRyeSB7IHBhaXIudmFsdWUtPm9yaWdpbigpLCBXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlLCAwIH07CisgICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGE6OkVu
dHJ5IHsgcGFpci52YWx1ZS0+b3JpZ2luKCkuY2xpZW50T3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6
OkRPTUNhY2hlLCAwIH07CiAgICAgICAgIH0pOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGVudHJpZXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzY5LDIyICszNjQsMjIgQEAg
dm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3VsZENvbXB1dGVTaXplLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKICAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKICAgICAg
ICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGly
ZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHNob3VsZENvbXB1dGVTaXplLCB0YXNrQ291bnRlciA9IHRhc2tDb3VudGVyLmNvcHlS
ZWYoKV0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmIG9yaWdp
bikgbXV0YWJsZSB7CisgICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5
KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHNob3VsZENvbXB1dGVTaXplLCB0YXNrQ291bnRlciA9IHRhc2tDb3VudGVyLmNvcHlSZWYoKV0g
KGF1dG8mJiBvcmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICAgICAgICAgIGlmICghb3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAgICAgaWYgKCFzaG91bGRDb21wdXRlU2l6ZSkgewotICAgICAgICAgICAg
ICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92ZShvcmlnaW4udmFsdWUoKSksIDApOwor
ICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92ZShvcmlnaW4tPnRv
cE9yaWdpbiksIDApOworICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RG
TW92ZShvcmlnaW4tPmNsaWVudE9yaWdpbiksIDApOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBjYWNoZU9yaWdpbiA9IG9yaWdpbi0+
c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PnJlYWRDYWNoZXNGcm9tRGlzayhjYWNoZU9yaWdpbiwgW29yaWdpbiA9IFdURk1vdmUob3JpZ2lu
LnZhbHVlKCkpLCB0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXSAoQ2FjaGVzT3JF
cnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFk
Q2FjaGVzRnJvbURpc2sob3JpZ2luLnZhbHVlKCksIFtvcmlnaW4gPSBvcmlnaW4udmFsdWUoKSwg
dGFza0NvdW50ZXIgPSBXVEZNb3ZlKHRhc2tDb3VudGVyKV0gKENhY2hlc09yRXJyb3ImJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgdGFza0NvdW50ZXIt
PmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbiksIHJlc3VsdC52YWx1ZSgpLmdldCgpLnN0b3JhZ2VT
aXplKCkpOwotCisgICAgICAgICAgICAgICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3Zl
KG9yaWdpbi50b3BPcmlnaW4pLCAwKTsKKyAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRk
T3JpZ2luKFdURk1vdmUob3JpZ2luLmNsaWVudE9yaWdpbiksIHJlc3VsdC52YWx1ZSgpLmdldCgp
LnN0b3JhZ2VTaXplKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAg
LTQwNiwyMiArNDAxLDMzIEBAIHZvaWQgRW5naW5lOjpjbGVhckFsbENhY2hlcyhDYWxsYmFja0Fn
Z3JlZ2F0b3ImIHRhc2tIYW5kbGVyKQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhbGxiYWNrQWdncmVnYXRvciYg
dGFza0hhbmRsZXIpCit2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENhbGxiYWNrQWdncmVnYXRvciYgdGFz
a0hhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8gY2FjaGVzID0gbV9jYWNoZXMuZ2V0KG9yaWdpbikp
IHsKLSAgICAgICAgY2FjaGVzLT5jbGVhcihbdGFza0hhbmRsZXIgPSBtYWtlUmVmKHRhc2tIYW5k
bGVyKV0geyB9KTsKLSAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBt
X2NhY2hlcykgeworICAgICAgICBpZiAoa2V5VmFsdWUua2V5LnRvcE9yaWdpbiA9PSBvcmlnaW4g
fHwga2V5VmFsdWUua2V5LmNsaWVudE9yaWdpbiA9PSBvcmlnaW4pCisgICAgICAgICAgICBrZXlW
YWx1ZS52YWx1ZS0+Y2xlYXIoW3Rhc2tIYW5kbGVyID0gbWFrZVJlZih0YXNrSGFuZGxlcildIHsg
fSk7CiAgICAgfQogCiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gY2FjaGVzUm9vdFBhdGgob3Jp
Z2luKSwgdGFza0hhbmRsZXIgPSBtYWtlUmVmKHRhc2tIYW5kbGVyKV0gewotICAgICAgICBkZWxl
dGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxlbmFtZSk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRv
JiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQ
YXRoLCAiKiIpKSB7CisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGly
ZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6Ok5vKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBDYWNoZXM6OnJl
dHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvcmlnaW4sIHRhc2tIYW5kbGVyID0gbWFr
ZVJlZih0YXNrSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4m
JiBmb2xkZXJPcmlnaW4pIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFmb2xkZXJPcmlnaW4p
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKGZvbGRlck9yaWdpbi0+
dG9wT3JpZ2luICE9IG9yaWdpbiAmJiBmb2xkZXJPcmlnaW4tPmNsaWVudE9yaWdpbiAhPSBvcmln
aW4pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2lvUXVldWUtPmRp
c3BhdGNoKFtwYXRoID0gY2FjaGVzUm9vdFBhdGgoKmZvbGRlck9yaWdpbiksIHRhc2tIYW5kbGVy
ID0gV1RGTW92ZSh0YXNrSGFuZGxlcildIHsKKyAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3Rv
cnlSZWN1cnNpdmVseShwYXRoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9
CiB9CiAKLXZvaWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNv
bXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHJlYWRDYWNoZXNGcm9tRGlzayhv
cmlnaW4sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZXNPckVycm9yJiYgcmVz
dWx0KSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CkBAIC00NjksOSArNDc1
LDExIEBAIFN0cmluZyBFbmdpbmU6OnJlcHJlc2VudGF0aW9uKCkKICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIsIik7CiAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKIAotICAgICAgICBidWls
ZGVyLmFwcGVuZCgiXG57IFwib3JpZ2luXCIgOiBcIiIpOwotICAgICAgICBidWlsZGVyLmFwcGVu
ZChrZXlWYWx1ZS5rZXkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXCIsIFwiY2FjaGVzXCIg
OiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxueyBcIm9yaWdpblwiIDogeyBcInRvcE9y
aWdpblwiIDogXCIiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoa2V5VmFsdWUua2V5LnRvcE9y
aWdpbi50b1N0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlwiLCBcImNsaWVudE9y
aWdpblwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChrZXlWYWx1ZS5rZXkuY2xpZW50
T3JpZ2luLnRvU3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXCIgfSwgXCJjYWNo
ZXNcIiA6ICIpOwogICAgICAgICBrZXlWYWx1ZS52YWx1ZS0+YXBwZW5kUmVwcmVzZW50YXRpb24o
YnVpbGRlcik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ9Iik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
LmgKaW5kZXggOGFlYThmMThjZWFkN2JlZjdiMzMyYjIxMTVmZDc2OGNhYTllNWFjNi4uMDc1ZWVl
NWZjZDM5OTk4YTNlNDE5NGJmMTEzYmIzNjQzMjhjNjkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NhY2hlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KQEAgLTYzLDkgKzY0LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRQZXJz
aXN0KCkgY29uc3QgeyByZXR1cm4gISFtX2lvUXVldWU7fQogCi0gICAgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQgb3Blbihjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQg
cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hl
cyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCiAgICAgdm9p
ZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwm
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2b2lk
IHB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2smJik7CkBAIC04MiwxOSArODMsMTcgQEAgcHVibGljOgogICAgIGNv
bnN0IE5ldHdvcmtDYWNoZTo6U2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdC52YWx1
ZSgpOyB9CiAgICAgdWludDY0X3QgbmV4dENhY2hlSWRlbnRpZmllcigpIHsgcmV0dXJuICsrbV9u
ZXh0Q2FjaGVJZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIHJlbW92ZUNhY2hlcyhjb25zdCBTdHJp
bmcmIG9yaWdpbik7Ci0KLSAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJh
Y2smJik7CiAgICAgU3RyaW5nIHJlcHJlc2VudGF0aW9uKCk7CiAKICAgICB2b2lkIGNsZWFyQWxs
Q2FjaGVzKFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yJik7Ci0gICAgdm9pZCBjbGVhckNhY2hlc0Zv
ck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3ImKTsK
KyAgICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yJik7CiAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIEVuZ2luZSYgZGVmYXVsdEVuZ2luZSgpOwogICAgIGV4cGxpY2l0IEVuZ2luZShTdHJpbmcm
JiByb290UGF0aCk7CiAKLSAgICBTdHJpbmcgY2FjaGVzUm9vdFBhdGgoY29uc3QgU3RyaW5nJiBv
cmlnaW4pOworICAgIFN0cmluZyBjYWNoZXNSb290UGF0aChjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mKTsKIAogICAgIHZvaWQgZmV0Y2hFbnRyaWVzKGJvb2wgLyogc2hvdWxkQ29tcHV0ZVNp
emUgKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVu
dHJ5Pik+JiYpOwogCkBAIC0xMDIsNyArMTAxLDcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIENh
Y2hlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hlcz4sIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcj47CiAgICAgdXNpbmcgQ2FjaGVzQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT47Ci0gICAgdm9pZCByZWFkQ2Fj
aGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNrJiYpOworICAg
IHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENh
Y2hlc0NhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgQ2FjaGVPckVycm9yID0gRXhwZWN0ZWQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZT4sIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJv
cj47CiAgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDYWNoZU9y
RXJyb3ImJik+OwpAQCAtMTEwLDcgKzEwOSw3IEBAIHByaXZhdGU6CiAKICAgICBDYWNoZSogY2Fj
aGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8
Q2FjaGVzPj4gbV9jYWNoZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIFJl
ZlB0cjxDYWNoZXM+PiBtX2NhY2hlczsKICAgICB1aW50NjRfdCBtX25leHRDYWNoZUlkZW50aWZp
ZXIgeyAwIH07CiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4g
bV9pb1F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IGEyZjE5NzAyNTgx
Zjc0YjMxYTMzNjkwNTE2NTYxYWJkY2JjNWU0ZjEuLjM1MzUzMWZhZjExNWYzNWYxZWVlMmRlYjIy
YmMxMGFhMDdmNjVmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgY2FjaGVzT3JpZ2luRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJiBjYWNoZXNSb290UGF0aCkKICAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoIm9y
aWdpbiIpKTsKIH0KIAotdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXVldWUsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9t
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5kaXNwYXRjaChbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZm9sZGVyUGF0aCA9
IGZvbGRlclBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhjYWNoZXNMaXN0RmlsZW5hbWUoZm9sZGVyUGF0
aCkpKSB7CkBAIC03Miw5ICs3Miw5IEBAIHZvaWQgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21E
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmIHF1CiAgICAgfSk7
CiB9CiAKLUNhY2hlczo6Q2FjaGVzKEVuZ2luZSYgZW5naW5lLCBTdHJpbmcmJiBvcmlnaW4sIFN0
cmluZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBxdW90YSkKK0NhY2hlczo6Q2FjaGVzKEVuZ2luZSYg
ZW5naW5lLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRo
LCB1aW50NjRfdCBxdW90YSkKICAgICA6IG1fZW5naW5lKCZlbmdpbmUpCi0gICAgLCBtX29yaWdp
bihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pKSkKKyAgICAsIG1fb3Jp
Z2luKFdURk1vdmUob3JpZ2luKSkKICAgICAsIG1fcm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkp
CiAgICAgLCBtX3F1b3RhKHF1b3RhKQogewpAQCAtODMsMjcgKzgzLDM2IEBAIENhY2hlczo6Q2Fj
aGVzKEVuZ2luZSYgZW5naW5lLCBTdHJpbmcmJiBvcmlnaW4sIFN0cmluZyYmIHJvb3RQYXRoLCB1
aW50NjRfdCBxdW90CiB2b2lkIENhY2hlczo6c3RvcmVPcmlnaW4oQ29tcGxldGlvbkNhbGxiYWNr
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBl
bmNvZGVyOwotICAgIGVuY29kZXIgPDwgbV9vcmlnaW4ucHJvdG9jb2w7Ci0gICAgZW5jb2RlciA8
PCBtX29yaWdpbi5ob3N0OwotICAgIGVuY29kZXIgPDwgbV9vcmlnaW4ucG9ydDsKKyAgICBlbmNv
ZGVyIDw8IG1fb3JpZ2luLnRvcE9yaWdpbi5wcm90b2NvbDsKKyAgICBlbmNvZGVyIDw8IG1fb3Jp
Z2luLnRvcE9yaWdpbi5ob3N0OworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4udG9wT3JpZ2luLnBv
cnQ7CisgICAgZW5jb2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4ucHJvdG9jb2w7CisgICAg
ZW5jb2RlciA8PCBtX29yaWdpbi5jbGllbnRPcmlnaW4uaG9zdDsKKyAgICBlbmNvZGVyIDw8IG1f
b3JpZ2luLmNsaWVudE9yaWdpbi5wb3J0OwogICAgIG1fZW5naW5lLT53cml0ZUZpbGUoY2FjaGVz
T3JpZ2luRmlsZW5hbWUobV9yb290UGF0aCksIERhdGEgeyBlbmNvZGVyLmJ1ZmZlcigpLCBlbmNv
ZGVyLmJ1ZmZlclNpemUoKSB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoc3RkOjpvcHRpb25h
bDxFcnJvcj4mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoZXJyb3IpKTsKICAgICB9KTsKIH0KIAotc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IENhY2hlczo6cmVhZE9yaWdpbihjb25zdCBEYXRhJiBkYXRhKQorc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IENhY2hlczo6cmVhZE9yaWdpbihjb25z
dCBEYXRhJiBkYXRhKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2Ug
bW9kZXJuIGRlY29kZXJzIGZvciBwZXJzaXN0ZW50IGRhdGEuCi0gICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIG9yaWdpbjsKKyAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9w
T3JpZ2luLCBjbGllbnRPcmlnaW47CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG9yaWdpbi5wcm90b2NvbCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0b3BPcmlnaW4ucHJv
dG9jb2wpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUob3JpZ2luLmhvc3QpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUodG9wT3JpZ2luLmhv
c3QpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUob3JpZ2luLnBvcnQpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUodG9wT3JpZ2luLnBvcnQp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBXVEZNb3ZlKG9yaWdp
bik7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGllbnRPcmlnaW4ucHJvdG9jb2wpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2xpZW50
T3JpZ2luLmhvc3QpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY2xpZW50T3JpZ2luLnBvcnQpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBXVEZNb3ZlKHRvcE9yaWdp
biksIFdURk1vdmUoY2xpZW50T3JpZ2luKSB9OwogfQogCiB2b2lkIENhY2hlczo6aW5pdGlhbGl6
ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaAppbmRleCBlYzA4ZTIzZWM1MWNhMDAzNzNhOWQxMDUx
N2IzODFkODM3OGQzMjVhLi5hYTgyM2YyMTZiMDI0MDE1MGI5YjY0NTUyYTJmZTY3MDdhMTY0Yjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3Rv
cmFnZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIEVuZ2lu
ZTsKIAogY2xhc3MgQ2FjaGVzIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVzPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxDYWNoZXM+IGNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgU3RyaW5nJiYg
b3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ2FjaGVzIHsgZW5naW5lLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUocm9vdFBh
dGgpLCBxdW90YSB9KTsgfQorICAgIHN0YXRpYyBSZWY8Q2FjaGVzPiBjcmVhdGUoRW5naW5lJiBl
bmdpbmUsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgs
IHVpbnQ2NF90IHF1b3RhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlcyB7IGVuZ2luZSwg
V1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKHJvb3RQYXRoKSwgcXVvdGEgfSk7IH0KIAotICAgIHN0
YXRpYyB2b2lkIHJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRl
clBhdGgsIFdvcmtRdWV1ZSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYpOworICAgIHN0YXRpYyB2b2lk
IHJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdv
cmtRdWV1ZSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNsaWVudE9yaWdpbj4mJik+JiYpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCBvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmll
ckNhbGxiYWNrJiYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVS
ZWNvcmQoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mKTsKIAogICAgIGNvbnN0IE5ldHdvcmtDYWNo
ZTo6U2FsdCYgc2FsdCgpIGNvbnN0OwotICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKyAgICBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAK
ICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhbV9yb290UGF0aC5pc051
bGwoKTsgfQogCkBAIC03NiwxNCArNzYsMTQgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHN0b3Jh
Z2VTaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ2FjaGVzKEVuZ2luZSYsIFN0cmluZyYm
IG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3RhKTsKKyAgICBDYWNoZXMo
RW5naW5lJiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIHJvb3RQYXRoLCB1aW50
NjRfdCBxdW90YSk7CiAKICAgICB2b2lkIGluaXRpYWxpemVTaXplKFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZWFkQ2FjaGVzRnJvbURp
c2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNoZT4sIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpFcnJvcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGVDYWNoZXNUb0Rpc2so
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKIAogICAgIHZv
aWQgc3RvcmVPcmlnaW4oV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFj
ayYmKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IHJlYWRPcmlnaW4oY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiByZWFkT3JpZ2luKGNvbnN0IE5ldHdv
cmtDYWNoZTo6RGF0YSYpOwogCiAgICAgQ2FjaGUqIGZpbmQoY29uc3QgU3RyaW5nJiBuYW1lKTsK
IApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsg
ZmFsc2UgfTsKICAgICBFbmdpbmUqIG1fZW5naW5lIHsgbnVsbHB0ciB9OwogICAgIHVpbnQ2NF90
IG1fdXBkYXRlQ291bnRlciB7IDAgfTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
bV9vcmlnaW47CisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG1fb3JpZ2luOwogICAgIFN0cmlu
ZyBtX3Jvb3RQYXRoOwogICAgIHVpbnQ2NF90IG1fcXVvdGEgeyAwIH07CiAgICAgdWludDY0X3Qg
bV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5kZXgg
YjAwMDY4OTA1YjJkYmJmOWUwZDM4MGMxMzRiNGMxYTA2NDQ2OGYxZi4uNTg5YzVlOTlmYzI3MTIw
MWExZjYwNjg5MTRjYTM2ZTlhZjU4NGJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24uY3BwCkBAIC01Myw3ICs1Myw3IEBAIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
On5DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKCkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBjYWNoZU5hbWUpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1l
KQogewogICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUs
IFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lv
bklELCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVz
dWx0KSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246Ok9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNl
c3Npb25JRC5zZXNzaW9uSUQoKSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxCiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
Y2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpCiB7CiAgICAgRW5naW5lOjpmcm9t
KHNlc3Npb25JRCkucmV0cmlldmVDYWNoZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBbY29ubmVj
dGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25JRCwgb3Jp
Z2luLCByZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIHsKICAg
ICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6VXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vz
c2lvbklEKCkpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbjo6ZGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfCiAg
ICAgcmVmZXJlbmNlcy5yZW1vdmUocmVmZXJlbmNlUmVzdWx0KTsKIH0KIAotdm9pZCBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2lu
LCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Np
b25JRCwgcmVxdWVzdElkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVycm9yKSB7
CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OkNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb25Db21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIGVycm9yKSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmgKaW5kZXggOWFmZmY2ODk1M2IzOWJhNTk3YWQ1NTEwNTQ2ZWVjOWUzNDk3OGVi
Zi4uZTU3YzVlMzkwZTA2M2Q5ZmIxZDVkMGQ5MjVmYTJlMzFlN2FmZDIyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKLSAgICB2b2lkIG9wZW4oUEFMOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IG9wZW5SZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgY2FjaGVOYW1lKTsKKyAgICB2b2lkIG9wZW4oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IG9wZW5SZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpOwogICAgIHZvaWQgcmVtb3ZlKFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCByZW1vdmVSZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVD
YWNoZXNJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291
bnRlcik7CisgICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJldHJpZXZl
Q2FjaGVzSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qg
dXBkYXRlQ291bnRlcik7CiAKICAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViQ29yZTo6VVJMJiYpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlv
bnMmJik7CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZlcmVuY2UoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZXJlZmVy
ZW5jZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIHZv
aWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKyAgICB2b2lkIGNsZWFyTWVt
b3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIGVuZ2luZVJlcHJl
c2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAK
ICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQ2ZTNj
ZTU0MjZhNTY5MmI3ZDA2YWRlNGQ4YTFiOTk1M2U0ZDNkMmQuLmUzMTA3ZTIwMTQ2ZDU5MDAzYjIw
NmIxZGVkZjZmODYzY2I4YzU1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI0LDExICsyNCwxMSBAQCBtZXNzYWdlcyAtPiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIHsKICAgICBSZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIERlcmVmZXJlbmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAg
IE9wZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgU3RyaW5nIG9yaWdpbiwgU3RyaW5nIGNhY2hlTmFtZSk7CisgICAgT3BlbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgU3RyaW5nIGNhY2hlTmFtZSk7CiAgICAgUmVtb3ZlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcik7Ci0gICAgQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0cmluZyBvcmlnaW4sIHVpbnQ2NF90IHVw
ZGF0ZUNvdW50ZXIpOworICAgIENhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
biwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7CiAKLSAgICBDbGVhck1lbW9yeVJlcHJlc2VudGF0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFN0cmluZyBvcmlnaW4pOworICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pOwogICAgIEVuZ2luZVJlcHJlc2VudGF0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAg
UmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6VVJMIHVybCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjMxODhmZGM2NzU2NjkzZmQxNThlYmM3NmRi
YjdjNGJkZjJjNDQ0OC4uM2YyNzEyMzJkNjNlNGE0Zjc3NDVlZjI4YzY0ZWFlNTUzOGM0YjdiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTYsNyArNTYsNyBAQCBJUEM6OkNvbm5lY3Rp
b24mIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbm5lY3Rpb24oKQogICAgIHJldHVybiBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVu
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBjYWNoZU5hbWUpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Bl
bih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKQogewogICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpPcGVuKG1fc2Vzc2lv
bklELCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCBjYWNoZU5hbWUpLCAwKTsKIH0KQEAgLTY2
LDcgKzY2LDcgQEAgdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2EKICAgICBjb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmVtb3ZlKG1fc2Vzc2lv
bklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQg
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50
ZXIpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQs
IHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKIH0KQEAgLTEy
Niw3ICsxMjYsNyBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHND
b21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAgQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShy
ZXN1bHQpKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlS
ZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxl
dGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIgPSArK21fZW5naW5lUmVwcmVzZW50YXRpb25OZXh0SWRlbnRpZmllcjsKICAgICBtX2NsZWFy
UmVwcmVzZW50YXRpb25DYWxsYmFja3Muc2V0KHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hl
L1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCAwYjI0ZTJhYWYxOTM1N2NmY2QzZWI4
NThkODE1ZDdmZjhhYzJlYmQzLi40ODBlZGRkOWI0ZTUxNWM0YjRhYWU2ZDRjNmQ5NDI1OGZjYmUy
NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9X
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTUyLDkgKzUyLDkgQEAgcHJpdmF0ZToKICAg
ICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKTsKIAogICAgIC8vIFdlYkNvcmU6OkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24KLSAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKSBmaW5h
bDsKKyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOwogICAg
IHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291
bnRlcikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVD
b3VudGVyKSBmaW5hbDsKIAogICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
VVJMJikgZmluYWw7CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYpIGZpbmFsOwpA
QCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmZXJlbmNlKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIpIGZpbmFsOwogCi0gICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29t
cGxldGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRpb24o
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQg
b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNjhhZGMx
ZTI3YmUzNjEyMWViM2Y3NmQwMDI3N2VhZjkzMjEwOTY0Li5hY2UxZTBhOGZmNzBjZDZlYWI5YTY5
OTViZjQzNzNkYTEwMDdhNjkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDEtMDQgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDYWNo
ZSBBUEkgcGFydGl0aW9uaW5nIGJhc2VkIG9uIENsaWVudE9yaWdpbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMjQwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBCZWVmaW5nIHVwIHRlc3QgdG8gZW5z
dXJlIHRoYXQgY2xpZW50IGFuZCB0b3Agb3JpZ2lucyBhcmUgdGFrZW4gaW50byBjb25zaWRlcmF0
aW9uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMu
aHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1vcmlnaW5zLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9y
YWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy5odG1s
OgorCiAyMDE4LTAxLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEFkZCBwbHVtYmluZyBmb3Igc3RhcnRpbmcg
YSBkcmFnIHdpdGggcHJvbWlzZWQgYmxvYiBkYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVh
cmluZy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDI3ODU1MTEzNTQ5ODBkNzc5MzUw
MDkyYTQyMzljYzM2MDk2OGRkZGYuLjMzNTg3YWM2OWJhOTdiODA4MzZmNWZlYTJjOGFkZDNjOWM3
MzAwMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAogCi1QQVNTIENsZWFuaW5nIGV4aXN0aW5nIGNhY2hl
cyAKKworUEFTUyBDcmVhdGUgYSBjYWNoZSBzdG9yYWdlIGZyb20gbG9jYWxob3N0IGFuZCBjbGVh
ciBpdCAKIFBBU1MgQ2xlYXJpbmcgZGlzayBjYWNoZSBvZiBhIGdpdmVuIG9yaWdpbiAKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFy
aW5nLW9yaWdpbi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9y
YWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy5odG1sCmluZGV4IDEyOTY2NzA0MGJjYzdh
YTgxYTY1ZDI1MmMzMTg4ZjE5OTRhMDNjMWYuLjg3MTI5MjI5MTFhNTJmZjk2N2ZmMTFiYjBmMWYz
YjFiN2E1ZWJmNmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0bWwK
QEAgLTgsMTMgKzgsMjcgQEAKIDxib2R5PgogICAgIDxzY3JpcHQ+CiBwcm9taXNlX3Rlc3QodGVz
dCA9PiB7Ci0gICAgcmV0dXJuIHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4gewotICAg
ICAgICB2YXIgcGVuZGluZyA9IFtdOwotICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQotICAgICAg
ICAgICAgcGVuZGluZy5wdXNoKHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlzWzBdKSk7Ci0gICAgICAg
IHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nKTsKLSAgICB9KTsKLX0sICJDbGVhbmluZyBleGlz
dGluZyBjYWNoZXMiKTsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwgIXdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIlRlc3QgcmVxdWlyZXMgaW50
ZXJuYWxzIGFuZCB0ZXN0IHJ1bm5lciIpOworCisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdmFyIGNvdW50ZXIgPSAwOworICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKGFzeW5jIChldmVu
dCkgPT4geworICAgICAgICAgICAgdmFyIHJlcHJlc2VudGF0aW9uID0gSlNPTi5wYXJzZShhd2Fp
dCBpbnRlcm5hbHMuY2FjaGVTdG9yYWdlRW5naW5lUmVwcmVzZW50YXRpb24oKSk7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi50b3BPcmlnaW4sICJo
dHRwczovLzEyNy4wLjAuMTo4NDQzIiwgInRvcCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5vcmlnaW4uY2xpZW50T3JpZ2lu
LCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MyIsICJjbGllbnQgb3JpZ2luIG9mIGNhY2hlIDEiKTsK
KyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0uY2FjaGVz
LnBlcnNpc3RlbnQsIFsiY2FjaGUxIl0pOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFy
RE9NQ2FjaGUoJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnKTsKKyAgICAgICAgICAgIHZhciByZXBy
ZXNlbnRhdGlvbiA9IEpTT04ucGFyc2UoYXdhaXQgaW50ZXJuYWxzLmNhY2hlU3RvcmFnZUVuZ2lu
ZVJlcHJlc2VudGF0aW9uKCkpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRh
dGlvblswXS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJ0b3Ag
b3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50
YXRpb25bMF0ub3JpZ2luLmNsaWVudE9yaWdpbiwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMiLCAi
Y2xpZW50IG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHJlcHJlc2VudGF0aW9uWzBdLmNhY2hlcy5wZXJzaXN0ZW50LCBbXSk7CisKKyAgICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pCit9LCAiQ3JlYXRlIGEgY2FjaGUg
c3RvcmFnZSBmcm9tIGxvY2FsaG9zdCBhbmQgY2xlYXIgaXQiKTsKIAogcHJvbWlzZV90ZXN0KGFz
eW5jIHRlc3QgPT4gewogICAgIHZhciBjYWNoZSA9IGF3YWl0IHNlbGYuY2FjaGVzLm9wZW4oInRl
c3QtY2FjaGUtcmVjb3Jkcy1wZXJzaXN0ZW5jeSIpOwpAQCAtNDQsNSArNTgsNiBAQCBwcm9taXNl
X3Rlc3QoYXN5bmMgdGVzdCA9PiB7CiAgICAgYXNzZXJ0X2VxdWFscyhrZXlzLmxlbmd0aCwgMCwg
InJlY29yZHMgc2hvdWxkIGJlIGVtcHR5Iik7CiB9LCAnQ2xlYXJpbmcgZGlzayBjYWNoZSBvZiBh
IGdpdmVuIG9yaWdpbicpOwogICAgIDwvc2NyaXB0PgorICAgIDxpZnJhbWUgc3JjPSJodHRwczov
L2xvY2FsaG9zdDo4NDQzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5
LWlmcmFtZS5odG1sI25hbWU9Y2FjaGUxIj48L2lmcmFtZT4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmln
aW5zLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzNjcwN2RkMWFiOTRh
Njc2YjU4YjRlZDA4YWU1ZDUzZDhmZjYwN2ZmLi4zNzg3ZGIzZWVjNmY2MTlkNGQyMWM0NzMwYjBh
MmU5ZGMwOGY1MTRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0
b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0xLDUgKzEsNyBAQAogICAKIAogUEFTUyBDcmVhdGUgYSBjYWNoZSBzdG9yYWdlIGFuZCBs
b29rIGF0IHRoZSByZXByZXNlbnRhdGlvbiAKLVBBU1MgQ2FjaGVzIGZyb20gZGlmZmVyZW50IG9y
aWdpbnMgc2hvdWxkIG5vdCBtaXggCitQQVNTIFZlcmlmeWluZyB0aGF0IHR3byBjYWNoZXMgYXJl
IGNyZWF0ZWQgb24gdHdvIGRpZmZlcmVudCBjbGllbnQgb3JpZ2lucyAKK1BBU1MgVmVyaWZ5aW5n
IHRoYXQgY2FjaGVzIGFyZSBjbHVzdGVyZWQgcGVyIGNsaWVudCBvcmlnaW4uIAorUEFTUyBWZXJp
ZnlpbmcgdGhhdCBjbGVhcmluZyBjYWNoZXMgZm9yIGFuIG9yaWdpbiB3aWxsIGNsZWFyIGJvdGgg
dG9wIG9yaWdpbiBhbmQgY2xpZW50IG9yaWdpbiBjYWNoZXMuIAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0
cHMuaHRtbAppbmRleCBmMjliOWIxNzgxZjBhMzU3N2ExNGFhYzEwMmNhM2YwNzBiZDEyMjUwLi43
NzMxZjFjNGExZjMwMTA4OGQ4ZWFmYzM0Mzg2NmE3OTVmODNmY2UxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5z
Lmh0dHBzLmh0bWwKQEAgLTgsMjggKzgsNTQgQEAKIDxib2R5PgogICAgIDxzY3JpcHQ+CiAKLSAg
ICBmdW5jdGlvbiBjaGVja0NhY2hlcyhuYW1lKSB7Ci0gICAgICAgIHByb21pc2VfdGVzdCgoKSA9
PiB7Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoa2V5cy5pbmRleE9mKCJjYWNoZTEiKSAhPT0g
LTEsICJTaG91bGQgaGF2ZSBjYWNoZTEiKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShr
ZXlzLmluZGV4T2YoImNhY2hlMiIpID09PSAtMSwgIlNob3VsZCBub3QgaGF2ZSBjYWNoZTEiKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCBuYW1lKTsKKyAgICBhc3luYyBmdW5jdGlvbiBj
aGVja0NhY2hlc0FmdGVyQ2xlYXJpbmdNZW1vcnlSZXByZXNlbnRhdGlvbihuYW1lKSB7CisgICAg
ICAgIGF3YWl0IGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KCk7CisgICAgICAgIHZhciBrZXlzID0gYXdhaXQgc2VsZi5jYWNoZXMua2V5cygpOworICAgICAg
ICB0ZXN0KCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGtleXMuaW5kZXhPZigiY2Fj
aGUxIikgIT09IC0xLCAiU2hvdWxkIGhhdmUgY2FjaGUxIik7CisgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShrZXlzLmluZGV4T2YoImNhY2hlMiIpID09PSAtMSwgIlNob3VsZCBub3QgaGF2ZSBjYWNo
ZTIiKTsKKyAgICAgICAgfSwgIlZlcmlmeWluZyB0aGF0IGNhY2hlcyBhcmUgY2x1c3RlcmVkIHBl
ciBjbGllbnQgb3JpZ2luLiIpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrQ2Fj
aGVzQWZ0ZXJDbGVhcmluZ09yaWdpbnMoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJET01D
YWNoZSgnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MycpOworICAgICAgICB2YXIgcmVwcmVzZW50YXRp
b24gPSBKU09OLnBhcnNlKGF3YWl0IGludGVybmFscy5jYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNl
bnRhdGlvbigpKTsKKyAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi50b3BPcmlnaW4sICJodHRwczovLzEyNy4wLjAu
MTo4NDQzIiwgInRvcCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXByZXNlbnRhdGlvblsxXS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4w
LjE6ODQ0MyIsICJ0b3Agb3JpZ2luIG9mIGNhY2hlIDIiKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMocmVwcmVzZW50YXRpb25bMF0ub3JpZ2luLmNsaWVudE9yaWdpbiwgImh0dHBzOi8vMTI3
LjAuMC4xOjg0NDMiLCAiY2xpZW50IG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzFdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRw
czovL2xvY2FsaG9zdDo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMiIpOworICAgICAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5jYWNoZXMucGVyc2lz
dGVudCwgW10pOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlv
blsxXS5jYWNoZXMucGVyc2lzdGVudCwgW10pOworICAgICAgICB9LCAiVmVyaWZ5aW5nIHRoYXQg
Y2xlYXJpbmcgY2FjaGVzIGZvciBhbiBvcmlnaW4gd2lsbCBjbGVhciBib3RoIHRvcCBvcmlnaW4g
YW5kIGNsaWVudCBvcmlnaW4gY2FjaGVzLiIpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9u
IGNoZWNrQ2FjaGVSZXByZXNlbnRhdGlvbigpIHsKKyAgICAgICAgdmFyIHJlcHJlc2VudGF0aW9u
ID0gSlNPTi5wYXJzZShhd2FpdCBpbnRlcm5hbHMuY2FjaGVTdG9yYWdlRW5naW5lUmVwcmVzZW50
YXRpb24oKSk7CisgICAgICAgIHRlc3QoKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyZXByZXNlbnRhdGlvblswXS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6
ODQ0MyIsICJ0b3Agb3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMocmVwcmVzZW50YXRpb25bMV0ub3JpZ2luLnRvcE9yaWdpbiwgImh0dHBzOi8vMTI3LjAuMC4x
Ojg0NDMiLCAidG9wIG9yaWdpbiBvZiBjYWNoZSAyIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRwczovLzEyNy4w
LjAuMTo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblsxXS5vcmlnaW4uY2xpZW50T3JpZ2luLCAiaHR0cHM6
Ly9sb2NhbGhvc3Q6ODQ0MyIsICJjbGllbnQgb3JpZ2luIG9mIGNhY2hlIDIiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0uY2FjaGVzLnBlcnNpc3Rl
bnQsIFsiY2FjaGUxIl0pOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNl
bnRhdGlvblsxXS5jYWNoZXMucGVyc2lzdGVudCwgWyJjYWNoZTIiXSk7CisgICAgICAgIH0sICJW
ZXJpZnlpbmcgdGhhdCB0d28gY2FjaGVzIGFyZSBjcmVhdGVkIG9uIHR3byBkaWZmZXJlbnQgY2xp
ZW50IG9yaWdpbnMiKTsKICAgICB9CiAKICAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7Ci0gICAg
ICAgIGlmICghd2luZG93LmludGVybmFscykKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdCgiVGVzdCByZXF1aXJlcyBpbnRlcm5hbHMiKTsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzIHx8ICF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdCgiVGVzdCByZXF1aXJlcyBpbnRlcm5hbHMgYW5kIHRlc3QgcnVubmVyIik7CiAKICAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAg
ICAgIHZhciBjb3VudGVyID0gMDsKLSAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKGFzeW5jIChldmVu
dCkgPT4gewogICAgICAgICAgICAgICAgIGlmICgrK2NvdW50ZXIgPD0gMSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3Rv
cmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoZWNrQ2FjaGVzKCJDYWNoZXMgZnJvbSBkaWZmZXJlbnQgb3JpZ2lucyBzaG91bGQgbm90
IG1peCIpOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgICAgICBhd2FpdCBjaGVja0NhY2hlUmVwcmVzZW50YXRpb24oKTsK
KyAgICAgICAgICAgICAgICBhd2FpdCBjaGVja0NhY2hlc0FmdGVyQ2xlYXJpbmdNZW1vcnlSZXBy
ZXNlbnRhdGlvbigpOworICAgICAgICAgICAgICAgIGF3YWl0IGNoZWNrQ2FjaGVzQWZ0ZXJDbGVh
cmluZ09yaWdpbnMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9
KSk7CiAgICAgICAgIH0pCiAgICAgfSwgIkNyZWF0ZSBhIGNhY2hlIHN0b3JhZ2UgYW5kIGxvb2sg
YXQgdGhlIHJlcHJlc2VudGF0aW9uIik7CkBAIC00MCw0ICs2NiwzIEBACiAgICAgPC9kaXY+CiA8
L2JvZHk+CiA8L2h0bWw+Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330596</attachid>
            <date>2018-01-05 15:28:58 -0800</date>
            <delta_ts>2018-01-05 17:56:27 -0800</delta_ts>
            <desc>Updated test</desc>
            <filename>bug-181240-20180106002856.patch</filename>
            <type>text/plain</type>
            <size>66596</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE1YTA3NzliNzg3NDFm
MWI2ODZlMTdiZTliNTQ0YWMwMzYxNmM4Yi4uODc4NDlmMzlmMGUxMjhmOWRmNTMwODkyNTk4OTY1
ZTQ1M2ViNzc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQ2FjaGUg
QVBJIHBhcnRpdGlvbmluZyBiYXNlZCBvbiBDbGllbnRPcmlnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTI0MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVkIHRlc3Rz
LgorCisgICAgICAgIFByZXZpb3VzbHksIGNhY2hlIHN0b3JhZ2Ugd2FzIHBhcnRpdGlvbmVkIGFj
Y29yZGluZyB0aGUgb3JpZ2luIG9mIHRoZSBjbGllbnQsIHJlcHJlc2VudGVkIGFzIGEgU3RyaW5n
LgorICAgICAgICBXZSBub3cgcGFydGl0aW9uIGFjY29yZGluZyBib3RoIGNsaWVudCBhbmQgdG9w
IG9yaWdpbnMsIHJlcHJlc2VudGVkIGFzIGEgQ2xpZW50T3JpZ2luCisKKyAgICAgICAgTWlub3Ig
cmVmYWN0b3JpbmcgdG8gdXNlIG1vcmUgbWFrZVBlbmRpbmdBY3Rpdml0eS4KKyAgICAgICAgQWRk
ZWQgc3VwcG9ydCBmb3IgSVBDIHNlcmlhbGl6YXRpb24gb2YgQ2xpZW50T3JpZ2luLgorICAgICAg
ICBBZGRlZCBTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nIHdoaWNoIGlzIHVzZWQgYnkgV2Vi
S2l0MiBDYWNoZSBTdG9yYWdlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9y
YWdlOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpy
ZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Om9wZW4p
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpkZWNvZGUpOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZGVidWdTdHJpbmcgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1v
cnlSZXByZXNlbnRhdGlvbik6CisKIDIwMTgtMDEtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBbY3VybF0gQ2FuJ3QgbG9hZCBmaWxlOi8vIFVSTCB3
aXRoIGEgVVJMIGZyYWdtZW50IGlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzEzOGI4NGNhZjk0ZDAz
Njg4ZjY4NzA3Y2NjNDEzODZmYzc5ZDYwYS4uZTNjZDg2MDliYzYzOWRkY2ViMmVjZTYwMzJiMTli
MjAwYjAwNzkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxOC0wMS0wNSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENhY2hlIEFQ
SSBwYXJ0aXRpb25pbmcgYmFzZWQgb24gQ2xpZW50T3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEyNDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIG9wZW4gYW5kIHJldHJpZXZlQ2FjaGVzIG5v
dyB0YWtlIGEgQ2xpZW50T3JpZ2luIGluc3RlYWQgb2YgYSBTdHJpbmcuCisgICAgICAgIFVwZGF0
ZWQgY2FjaGUgZmlsZXN5c3RlbSBwYXRoIGNvbXB1dGF0aW9uIHRvIHRha2UgYm90aCBjbGllbnQg
b3JpZ2luIGFuZCB0b3Agb3JpZ2luLgorCisgICAgICAgIFdoZW4gY2xlYXJpbmcgYW4gb3JpZ2lu
LCBjYWNoZXMgd2hvc2UgY2xpZW50IG9yaWdpbiBvciB0b3Agb3JpZ2luIG1hdGNoZXMgdGhlIG9y
aWdpbiBhcmUgY2xlYXJlZC4KKyAgICAgICAgQ2FjaGVzIGFyZSBhZGRlZCB0byB0aGUgd2ViIHNp
dGUgZGF0YSBvZiB0aGVpciBjbGllbnQgb3JpZ2luIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBj
YWNoZSBzaXplLgorICAgICAgICBDYWNoZXMgYXJlIGFkZGVkIHRvIHRoZSB3ZWIgc2l0ZSBkYXRh
IG9mIHRoZWlyIHRvcCBvcmlnaW4gd2l0aCBhIHNpemUgZXF1YWwgdG8gMC4KKworICAgICAgICBV
cGRhdGVkIG1lbW9yeSByZXByZXNlbnRhdGlvbiBkdW1waW5nIHVzZWQgZm9yIHRlc3QgdG8gaW5j
bHVkZSBib3RoIHRvcCBhbmQgY2xpZW50IG9yaWdpbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpjYWNoZXNSb290UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZXRy
aWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpyZWFk
Q2FjaGVzRnJvbURpc2spOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
cmVtb3ZlQ2FjaGVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmZl
dGNoRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVh
ckNhY2hlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
OjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpFbmdpbmU6OnJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OkNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6Q2FjaGVzOjpzdG9yZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGVzOjpyZWFkT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpD
YWNoZXM6Om9wZW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5oOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6Om9yaWdpbiBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpjYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2Fj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisKIDIwMTgtMDEtMDUgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ3VybF0gQWRkIGltcGxlbWVudGF0aW9uIHN0
dWJzIGZvciBOZXR3b3JrIENhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAyMDUyMmYwYWQ5N2FiMjg2
YzU4OTQ1NTQ2N2JkYzY3NGFjYmYxZDM3Li5mZTBkZmE2YmMxODRiMWZlYjY5YTNhZWM1N2RhNTY3
MzEzYTFkN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTsKIAotdm9p
ZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbihjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJl
cXVlc3RJZGVudGlmaWVyOwogICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3Rz
LmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNDksNyArNDks
NyBAQCB2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbAogICAgIGRvUmVtb3ZlKHJlcXVlc3RJZGVudGlm
aWVyLCBjYWNoZUlkZW50aWZpZXIpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyLCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2
NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsK
ICAgICBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA2Y2E3YmZiOTE0ZTA1OWRkZWFh
NDQzMzU2YzYwMjllMWMwZDBhZWNkLi40ZGFhMzQ0OGYyMmFjZDFjNDgyMDE3MzAyZDNjNjdiOWI5
NGQ4ZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0cnVjdCBDbGllbnRPcmlnaW47CiBjbGFzcyBGZXRjaFJlc3BvbnNlOwogCiBjbGFz
cyBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+IHsKQEAgLTM5LDkgKzQwLDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkpOyB9CiAgICAgdmlydHVhbCB+Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgb3Blbihjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERPTUNhY2hlRW5naW5lOjpDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgQ2xpZW50T3JpZ2lu
JiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZp
ZXJDYWxsYmFjayYmKTsKICAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJl
dHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVy
LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmll
dmVDYWNoZXMoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgcmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgRE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKICAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVy
eU9wdGlvbnMmJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7
CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZlcmVuY2Uo
dWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IH0KIAogICAgIC8vIFVzZWQgb25seSBm
b3IgdGVzdGluZyBwdXJwb3Nlcy4KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgRE9NQ2FjaGVFbmdpbmU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjpFcnJv
cjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwgRE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25D
YWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90
SW1wbGVtZW50ZWQpOyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZ2luZVJlcHJlc2VudGF0aW9uKFdU
Rjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhT
dHJpbmcgeyB9KTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC02Nyw5ICs2OCw5IEBAIHByb3RlY3RlZDoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3Im
Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyog
Y2FjaGVOYW1lICovKSB7IG9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4
cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVu
dE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgLyogY2FjaGVOYW1lICovKSB7IG9wZW5Db21wbGV0ZWQo
cmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6
Tm90SW1wbGVtZW50ZWQpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHJlbW92
ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdp
bmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvUmV0cmll
dmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3Jp
Z2luICovLCB1aW50NjRfdCAvKiB1cGRhdGVDb3VudGVyICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1
ZXN0SWRlbnRpZmllciwgeyB9KTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCAvKiB1cGRhdGVDb3VudGVyICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwg
eyB9KTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFVS
TCYgLyogdXJsICovKSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQo
cmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6
Tm90SW1wbGVtZW50ZWQpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDg1OTk1ODk0NGYzYmIyZGE4MjBjYzkxNTZlYWE4YTE4
MTgyYWUyODkuLjVjZmIzNmM5NDVkMjZlNzhiZWNkYTFmYzhiMDQ5NDMzMTIwOWE2NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJET01DYWNoZVN0b3JhZ2UuaCIKIAogI2luY2x1ZGUg
IkNhY2hlUXVlcnlPcHRpb25zLmgiCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiSlNET01DYWNoZS5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTQyLDExICs0MywxMyBAQCBET01DYWNoZVN0
b3JhZ2U6OkRPTUNhY2hlU3RvcmFnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBS
ZWY8Q2FjaGVTdG9yYQogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCi1TdHJpbmcgRE9NQ2Fj
aGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAorc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IERP
TUNhY2hlU3RvcmFnZTo6b3JpZ2luKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogRG8gd2UgcmVh
bGx5IG5lZWQgdG8gY2hlY2sgZm9yIG9yaWdpbiBiZWluZyBudWxsPwogICAgIGF1dG8qIG9yaWdp
biA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIG9yaWdpbiA/IG9yaWdpbi0+
dG9TdHJpbmcoKSA6IFN0cmluZygpOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3Jp
Z2luKCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9
OwogfQogCiBzdGF0aWMgdm9pZCBkb1NlcXVlbnRpYWxNYXRjaChzaXplX3QgaW5kZXgsIFZlY3Rv
cjxSZWY8RE9NQ2FjaGU+PiYmIGNhY2hlcywgRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywg
Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBET01DYWNoZTo6TWF0Y2hDYWxsYmFjayYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTM1LDEyICsxMzgsMTEgQEAgUmVmPERPTUNhY2hlPiBET01D
YWNoZVN0b3JhZ2U6OmZpbmRDYWNoZU9yQ3JlYXRlKENhY2hlSW5mbyYmIGluZm8pCiAKIHZvaWQg
RE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZyBvcmlnaW4g
PSB0aGlzLT5vcmlnaW4oKTsKLSAgICBpZiAob3JpZ2luLmlzTnVsbCgpKQorICAgIGF1dG8gb3Jp
Z2luID0gdGhpcy0+b3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybjsK
IAotICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnJldHJp
ZXZlQ2FjaGVzKG9yaWdpbiwgbV91cGRhdGVDb3VudGVyLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAg
IG1fY29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMoKm9yaWdpbiwgbV91cGRhdGVDb3VudGVyLCBb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFr
ZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewogICAgICAgICAgICAgaWYgKCFyZXN1
bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZUVuZ2lu
ZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwpAQCAtMTU4LDcgKzE2MCw2IEBA
IHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQo
c3RkOjpvcHRpb25hbDxFeGNlcHRpb24+CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICB9Ci0gICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2
aXR5KHRoaXMpOwogICAgIH0pOwogfQogCkBAIC0xNzcsMzMgKzE3OCwzMiBAQCB2b2lkIERPTUNh
Y2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJ
RExJbnRlcmZhY2U8RAogICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24udmFsdWUoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGRv
T3BlbihuYW1lLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICB9KTsKK30KIAotICAgICAgICBhdXRv
IHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVy
biBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiAhPSBub3RG
b3VuZCkgewotICAgICAgICAgICAgYXV0byYgY2FjaGUgPSBtX2NhY2hlc1twb3NpdGlvbl07Ci0g
ICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBjYWNoZS0+bmFtZSgpIH0sIGNhY2hlLT5pZGVudGlmaWVy
KCksIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIFN0cmluZyBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKLSAgICAgICAg
QVNTRVJUKCFvcmlnaW4uaXNOdWxsKCkpOwordm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvT3Blbihj
b25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RE9NQ2Fj
aGU+PiYmIHByb21pc2UpCit7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRj
aGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOwor
ICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgeworICAgICAgICBhdXRvJiBjYWNoZSA9IG1f
Y2FjaGVzW3Bvc2l0aW9uXTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgY2FjaGUtPm5hbWUoKSB9LCBj
YWNoZS0+aWRlbnRpZmllcigpLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIHByb21pc2Uu
cmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7
Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQu
dmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dDb25z
b2xlUGVyc2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGUgPSBET01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IG5hbWUgfSwgcmVzdWx0LnZhbHVlKCkuaWRlbnRp
ZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShjYWNoZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2FjaGVzLmFwcGVuZChX
VEZNb3ZlKGNhY2hlKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgIG1fY29ubmVjdGlvbi0+b3Bl
bigqb3JpZ2luKCksIG5hbWUsIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKGNvbnN0IENh
Y2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9p
c1N0b3BwZWQpIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAg
ICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhjZXB0aW9u
KHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQorICAgICAgICAgICAgICAgICAgICBs
b2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUp
OworCisgICAgICAgICAgICAgICAgYXV0byBjYWNoZSA9IERPTUNhY2hlOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgbmFtZSB9LCByZXN1bHQudmFsdWUoKS5pZGVu
dGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgICAgICAgICBwcm9taXNl
LnJlc29sdmUoY2FjaGUpOworICAgICAgICAgICAgICAgIG1fY2FjaGVzLmFwcGVuZChXVEZNb3Zl
KGNhY2hlKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9KTsKIH0KIApAQCAtMjE0LDMx
ICsyMTQsMzAgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5h
bWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYKICAgICAgICAgICAgIHByb21pc2Uu
cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorICAgICAgICBkb1JlbW92ZShuYW1lLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAg
ICB9KTsKK30KIAotICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5n
KFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7Ci0gICAg
ICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFN0
cmluZyBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKLSAgICAgICAgQVNTRVJUKCFvcmlnaW4uaXNO
dWxsKCkpOwordm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvUmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRv
IHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVy
biBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7CisgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5k
KSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnJlbW92ZShtX2NhY2hlc1twb3NpdGlvbl0tPmlkZW50aWZpZXIoKSwgW3RoaXMsIG5h
bWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVy
cm9yJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewot
ICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1
bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBuYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRydWUpOwotICAg
ICAgICAgICAgICAgIH0KKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZShtX2NhY2hlc1twb3NpdGlv
bl0tPmlkZW50aWZpZXIoKSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oY29uc3QgQ2Fj
aGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX2lz
U3RvcHBlZCkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmVycm9yVG9FeGNlcHRpb24o
cmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGxv
Z0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbmFtZSk7
CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRydWUpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAgIH0pOwotICAg
ICAgICBtX2NhY2hlcy5yZW1vdmUocG9zaXRpb24pOworICAgICAgICB9CiAgICAgfSk7CisgICAg
bV9jYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKIH0KIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6Omtl
eXMoS2V5c1Byb21pc2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVTdG9yYWdlLmgKaW5kZXggOTNhODJmYmI3M2Q1NDMwMWVmYmI1NzQ1ZGIwYTZi
MzBjNjk5MmVhNy4uZjMwZmQzZDMyNmNjNmQ5ZjI5NWZlYjM4NjI0NjJlNTYxNjFlNDBlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCkBAIC01
Miw5ICs1MiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgZG9PcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
RE9NUHJvbWlzZURlZmVycmVkPElETEludGVyZmFjZTxET01DYWNoZT4+JiYpOworICAgIHZvaWQg
ZG9SZW1vdmUoY29uc3QgU3RyaW5nJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYp
OwogICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiYmKT4mJik7CiAgICAgUmVmPERPTUNhY2hlPiBmaW5kQ2FjaGVPckNyZWF0
ZShET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvJiYpOwotICAgIFN0cmluZyBvcmlnaW4oKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luKCkgY29uc3Q7CiAKICAg
ICBWZWN0b3I8UmVmPERPTUNhY2hlPj4gbV9jYWNoZXM7CiAgICAgdWludDY0X3QgbV91cGRhdGVD
b3VudGVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZjllNTQ3MTUyZGVj
M2NjYjNmZDI4ZWM5NWI1NzM5Nzg2OTY1OGNhZi4uYzU0MzdiNjY1ODViNzU2YWJkODE5M2E3OWY0
ODY3ZjQxMWNmNjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6fldvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24oKQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkQ29ubmVjdGlv
biA9IFdURk1vdmUobV9tYWluVGhyZWFkQ29ubmVjdGlvbildKCkgbXV0YWJsZSB7IH0pOwogfQog
Ci12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVO
YW1lKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4odWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGNhY2hlTmFtZSkKIHsKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBt
YWtlUmVmKG1fc2NvcGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRo
cmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCksIGNhY2hlTmFtZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgY2FjaGVOYW1l
LCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmll
cl0gKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CkBAIC0x
MzIsNyArMTMyLDcgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92
ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QKICAgICB9KTsKIH0KIAotdm9p
ZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRl
Q291bnRlcikKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNh
Y2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbd29y
a2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVhZENvbm5lY3Rp
b24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luID0g
b3JpZ2luLmlzb2xhdGVkQ29weSgpLCB1cGRhdGVDb3VudGVyXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwgdXBkYXRlQ291
bnRlciwgW3dvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50
aWZpZXJdIChDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oCmluZGV4IDI3NmE1N2FkYjIwYjIyYjU2M2VkNzg1NzU3ZTk0YzhiOTRlYjBkMjYu
LjdhYTA1YWRiY2JkMGIzYTQ1NzgzNTI5YzRmZGNkOTY2ZGNmNjk4YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oCkBAIC00Miw5ICs0Miw5IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbihXb3JrZXJHbG9iYWxTY29wZSYpOwogCiAgICAgLy8gV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi4KLSAgICB2b2lkIGRvT3Blbih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2Fj
aGVOYW1lKSBmaW5hbDsKKyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOwog
ICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRl
Q291bnRlcikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVy
KSBmaW5hbDsKIAogICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IDIwZTI4MzgxYTM4MDFlOWNiOWFiNWM2
ZTQxZjA1YTcwYTI2ZjkwZWUuLmFmN2NhOTI2NGE0ZjJmODVlOTQwYzliZDFkNDAxNmRmYTA5OTJj
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMzYsNiArMzYsMTEgQEAgc3Ry
dWN0IENsaWVudE9yaWdpbiB7CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDbGllbnRPcmlnaW4mKSBjb25zdDsKIAorICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IGRlY29kZShE
ZWNvZGVyJik7CisKKyAgICBDbGllbnRPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKICAg
ICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBj
bGllbnRPcmlnaW47CiB9OwpAQCAtNTQsNiArNTksMzEgQEAgaW5saW5lIGJvb2wgQ2xpZW50T3Jp
Z2luOjpvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0
dXJuIHRvcE9yaWdpbiA9PSBvdGhlci50b3BPcmlnaW4gJiYgY2xpZW50T3JpZ2luID09IG90aGVy
LmNsaWVudE9yaWdpbjsKIH0KIAoraW5saW5lIENsaWVudE9yaWdpbiBDbGllbnRPcmlnaW46Omlz
b2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgdG9wT3JpZ2luLmlzb2xhdGVkQ29w
eSgpLCBjbGllbnRPcmlnaW4uaXNvbGF0ZWRDb3B5KCkgfTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gaW5saW5lIHZvaWQgQ2xpZW50T3JpZ2luOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHRvcE9yaWdpbjsKKyAgICBlbmNvZGVyIDw8IGNs
aWVudE9yaWdpbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0
aW9uYWw8Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW47Cisg
ICAgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGNsaWVudE9yaWdpbjsKKyAgICBk
ZWNvZGVyID4+IHRvcE9yaWdpbjsKKyAgICBpZiAoIXRvcE9yaWdpbikKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKKyAgICBpZiAoIWNs
aWVudE9yaWdpbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBD
bGllbnRPcmlnaW4geyBXVEZNb3ZlKCp0b3BPcmlnaW4pLCBXVEZNb3ZlKCpjbGllbnRPcmlnaW4p
IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggYWRhMWY0MWQyMzA1
YTdlYTRhMDhhNmQyMGY2NjgwNGI2YzY3ZTM5Zi4uZTkwYWI4MjFmNzhmZDU1NmZmNTY4N2QzMGU5
ZjJmNzYwYjM5NjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcApAQCAtNDgsMTIgKzQ4LDEwIEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYKICAgICByZXR1
cm4gc2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCi0jaWYgIUxPR19ESVNBQkxFRAotU3RyaW5nIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcoKSBjb25zdAorU3RyaW5nIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3Rv
Y29sLCAiOi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlX29yKDApKSk7
CiB9Ci0jZW5kaWYKIAogU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bUZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCmluZGV4IDBlZmZhNjQ0Zjk5MjRjODg4M2ZjMWFjZDQxOWJjYzVjZWNjODFmOTUuLjVm
NTVmOTQyYjgxZmNmZTAwYmZkNDNiYzEwOTk2ZjNjZGMyNDcxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtNzcsOCArNzcsMTAgQEAgc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSB7CiAgICAgICAgIHJldHVybiBwcm90b2NvbC5pc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpOwogICAgIH0KICAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKKwogI2lmICFMT0dfRElTQUJMRUQKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgZGVidWdTdHJpbmcoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVidWdTdHJpbmcoKSBjb25zdCB7
IHJldHVybiB0b1N0cmluZygpOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCAxZmI2MWNlM2Y4NmVlNzY0OWM0ZThhZWU1NGI1YzJiYWM1Y2M4MmUy
Li42NjVkYTE5YjcxYjdjYTYxMmY1MzI0ZjA1MjZiZGRkYTc5Yzg1YTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNo
cm9tZS5oIgorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbXBvc2VkVHJl
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVkZSAiRE9NUmVjdC5oIgpA
QCAtNDI0OCw3ICs0MjQ5LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmNsZWFyQ2FjaGVTdG9yYWdlTWVt
b3J5UmVwcmVzZW50YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYKICAgICAgICAgaWYg
KCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbi0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKGRvY3VtZW50LT50b3BPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNl
Y3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSB9LCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDVhMWIzYWNkZWI0MjYwYjBiOGFjN2ZhYTE5YjZmMDcxYmQwMGJjZWUuLmQwY2Jm
MDgxZTM0YjZlNTY3ZWZmZTYyODViODM4ZGFjYTljOWZiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MTUsMTAgKzUxNSw4IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgfSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewotICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykgewotICAgICAgICAgICAgYXV0byBvcmln
aW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7Ci0gICAgICAgICAg
ICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLmNsZWFyQ2FjaGVzRm9yT3Jp
Z2luKG9yaWdpbiwgY2xlYXJUYXNrc0hhbmRsZXIpOwotICAgICAgICB9CisgICAgICAgIGZvciAo
YXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQorICAgICAgICAgICAgQ2FjaGVTdG9yYWdl
OjpFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5jbGVhckNhY2hlc0Zvck9yaWdpbihvcmlnaW5EYXRh
LCBjbGVhclRhc2tzSGFuZGxlcik7CiAgICAgfQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCA4NGM0ZmZlZWIzMTk1YTY3NjkyZjY0ZjQy
YjAwNWJkNzY0Mzk4YWYzLi5iYTcyNzAzNGExZTM0OTA1YzU4NDVmNzA0YzRhZDI0YzIyOTdhNGE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAgc3RhdGljIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxFbmdpbmU+PiYgZ2xvYmFsRW5naW5lTWFwKCkKICAgICBy
ZXR1cm4gbWFwOwogfQogCi1TdHJpbmcgRW5naW5lOjpjYWNoZXNSb290UGF0aChjb25zdCBTdHJp
bmcmIG9yaWdpbikKK1N0cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgS2V5IGtleShvcmlnaW4sIHsgfSwgeyB9LCB7IH0sIHNh
bHQoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpOworICAgIEtl
eSBrZXkob3JpZ2luLnRvcE9yaWdpbi50b1N0cmluZygpLCBvcmlnaW4uY2xpZW50T3JpZ2luLnRv
U3RyaW5nKCksIHsgfSwgeyB9LCBzYWx0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5Lmhhc2hBc1N0cmlu
ZygpKTsKIH0KIAogRW5naW5lOjp+RW5naW5lKCkKQEAgLTEwMCw3ICsxMDAsNyBAQCBFbmdpbmU6
OkVuZ2luZShTdHJpbmcmJiByb290UGF0aCkKICAgICAgICAgbV9pb1F1ZXVlID0gV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlhbEJhY2tn
cm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91
bmQpOwogfQogCi12b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIEVuZ2luZTo6b3Blbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhY2hlTmFtZSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIGNhY2hlc09yRXJyb3IpIG11dGFi
bGUgewogICAgICAgICBpZiAoIWNhY2hlc09yRXJyb3IuaGFzX3ZhbHVlKCkpIHsKQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjawogICAgIGZvciAoYXV0byYgY2FjaGVz
IDogbV9jYWNoZXMudmFsdWVzKCkpIHsKICAgICAgICAgYXV0byogY2FjaGVUb1JlbW92ZSA9IGNh
Y2hlcy0+ZmluZChjYWNoZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoY2FjaGVUb1JlbW92ZSkg
ewotICAgICAgICAgICAgY2FjaGVzVG9Nb2RpZnkgPSBjYWNoZXMucHRyKCk7CisgICAgICAgICAg
ICBjYWNoZXNUb01vZGlmeSA9IGNhY2hlcy5nZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgRW5naW5lOjpyZW1vdmUodWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNr
CiAgICAgY2FjaGVzVG9Nb2RpZnktPnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIAotdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYg
b3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW3VwZGF0ZUNv
dW50ZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlc09yRXJyb3ImJiBjYWNo
ZXNPckVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFjYWNoZXNPckVycm9yLmhhc192YWx1
ZSgpKSB7CkBAIC0yMDMsMTUgKzIwMywxNiBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShGdW5j
dGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNhbGxiYWNrKQogICAgIH0pOwog
fQogCi12b2lkIEVuZ2luZTo6cmVhZENhY2hlc0Zyb21EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBDYWNoZXNDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJlYWRDYWNoZXNGcm9t
RGlzayhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICBpbml0aWFsaXplKFt0aGlzLCBvcmlnaW4sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIG11dGFibGUg
ewogICAgICAgICBhdXRvJiBjYWNoZXMgPSBtX2NhY2hlcy5lbnN1cmUob3JpZ2luLCBbJm9yaWdp
biwgdGhpc10gewotICAgICAgICAgICAgcmV0dXJuIENhY2hlczo6Y3JlYXRlKCp0aGlzLCBTdHJp
bmcgeyBvcmlnaW4gfSwgY2FjaGVzUm9vdFBhdGgob3JpZ2luKSwgTmV0d29ya1Byb2Nlc3M6OnNp
bmdsZXRvbigpLmNhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhKCkpOworICAgICAgICAgICAgYXV0
byBwYXRoID0gY2FjaGVzUm9vdFBhdGgob3JpZ2luKTsKKyAgICAgICAgICAgIHJldHVybiBDYWNo
ZXM6OmNyZWF0ZSgqdGhpcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luIH0sIFdURk1v
dmUocGF0aCksIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQZXJPcmln
aW5RdW90YSgpKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIGlmIChj
YWNoZXMtPmlzSW5pdGlhbGl6ZWQoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgY2FjaGVzLmdldCgpIH0pOworICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZXM+IHsgKmNhY2hlcyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMjYsNyArMjI3LDcgQEAgdm9pZCBFbmdp
bmU6OnJlYWRDYWNoZXNGcm9tRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiB7IGNh
Y2hlcy5nZXQoKSB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8Q2FjaGVzPiB7ICpjYWNoZXMgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMzIy
LDEyICszMjMsNiBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKQogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmVtb3ZlQ2FjaGVzKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKQotewotICAgIEFTU0VSVChtX2NhY2hlcy5jb250YWlucyhvcmlnaW4pKTsKLSAg
ICBtX2NhY2hlcy5yZW1vdmUob3JpZ2luKTsKLX0KLQogY2xhc3MgUmVhZE9yaWdpbnNUYXNrQ291
bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRPcmlnaW5zVGFza0NvdW50ZXI+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFJlYWRPcmlnaW5zVGFza0NvdW50ZXI+IGNyZWF0ZShXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmIGNhbGxi
YWNrKQpAQCAtMzU5LDcgKzM1NCw3IEBAIHZvaWQgRW5naW5lOjpmZXRjaEVudHJpZXMoYm9vbCBz
aG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlCiB7CiAgICAg
aWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKICAgICAgICAgYXV0byBlbnRyaWVzID0gV1RGOjptYXAo
bV9jYWNoZXMsIFtdIChhdXRvJiBwYWlyKSB7Ci0gICAgICAgICAgICByZXR1cm4gV2Vic2l0ZURh
dGE6OkVudHJ5IHsgcGFpci52YWx1ZS0+b3JpZ2luKCksIFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2Fj
aGUsIDAgfTsKKyAgICAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YTo6RW50cnkgeyBwYWlyLnZh
bHVlLT5vcmlnaW4oKS5jbGllbnRPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIDAg
fTsKICAgICAgICAgfSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cmll
cykpOwogICAgICAgICByZXR1cm47CkBAIC0zNjksMjIgKzM2NCwyMiBAQCB2b2lkIEVuZ2luZTo6
ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZQogICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewogICAgICAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVy
UGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxk
Q29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigpXSAoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgb3JpZ2luKSBtdXRhYmxlIHsK
KyAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwg
Km1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxkQ29tcHV0
ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigpXSAoYXV0byYmIG9yaWdp
bikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
ICAgICAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICBpZiAoIXNob3VsZENvbXB1dGVTaXplKSB7Ci0gICAgICAgICAgICAgICAgdGFza0NvdW50
ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi52YWx1ZSgpKSwgMCk7CisgICAgICAgICAgICAg
ICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi0+dG9wT3JpZ2luKSwgMCk7
CisgICAgICAgICAgICAgICAgdGFza0NvdW50ZXItPmFkZE9yaWdpbihXVEZNb3ZlKG9yaWdpbi0+
Y2xpZW50T3JpZ2luKSwgMCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBhdXRvIGNhY2hlT3JpZ2luID0gb3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVhZENhY2hlc0Zy
b21EaXNrKGNhY2hlT3JpZ2luLCBbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4udmFsdWUoKSksIHRh
c2tDb3VudGVyID0gV1RGTW92ZSh0YXNrQ291bnRlcildIChDYWNoZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnJlYWRDYWNoZXNGcm9tRGlz
ayhvcmlnaW4udmFsdWUoKSwgW29yaWdpbiA9IG9yaWdpbi52YWx1ZSgpLCB0YXNrQ291bnRlciA9
IFdURk1vdmUodGFza0NvdW50ZXIpXSAoQ2FjaGVzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdU
Rk1vdmUob3JpZ2luKSwgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuc3RvcmFnZVNpemUoKSk7Ci0KKyAg
ICAgICAgICAgICAgICB0YXNrQ291bnRlci0+YWRkT3JpZ2luKFdURk1vdmUob3JpZ2luLnRvcE9y
aWdpbiksIDApOworICAgICAgICAgICAgICAgIHRhc2tDb3VudGVyLT5hZGRPcmlnaW4oV1RGTW92
ZShvcmlnaW4uY2xpZW50T3JpZ2luKSwgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuc3RvcmFnZVNpemUo
KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtNDA2LDIyICs0MDEs
MzMgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKENhbGxiYWNrQWdncmVnYXRvciYgdGFz
a0hhbmRsZXIpCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0YXNrSGFuZGxlcikK
K3ZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0YXNrSGFuZGxlcikKIHsK
LSAgICBpZiAoYXV0byBjYWNoZXMgPSBtX2NhY2hlcy5nZXQob3JpZ2luKSkgewotICAgICAgICBj
YWNoZXMtPmNsZWFyKFt0YXNrSGFuZGxlciA9IG1ha2VSZWYodGFza0hhbmRsZXIpXSB7IH0pOwot
ICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IG1fY2FjaGVzKSB7Cisg
ICAgICAgIGlmIChrZXlWYWx1ZS5rZXkudG9wT3JpZ2luID09IG9yaWdpbiB8fCBrZXlWYWx1ZS5r
ZXkuY2xpZW50T3JpZ2luID09IG9yaWdpbikKKyAgICAgICAgICAgIGtleVZhbHVlLnZhbHVlLT5j
bGVhcihbdGFza0hhbmRsZXIgPSBtYWtlUmVmKHRhc2tIYW5kbGVyKV0geyB9KTsKICAgICB9CiAK
ICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pb1F1
ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBjYWNoZXNSb290UGF0aChvcmlnaW4pLCB0YXNrSGFu
ZGxlciA9IG1ha2VSZWYodGFza0hhbmRsZXIpXSB7Ci0gICAgICAgIGRlbGV0ZURpcmVjdG9yeVJl
Y3Vyc2l2ZWx5KGZpbGVuYW1lKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGgg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsK
KyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVy
UGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8p
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5G
cm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbiwgdGFza0hhbmRsZXIgPSBtYWtlUmVmKHRhc2tIYW5k
bGVyKV0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdp
bikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIWZvbGRlck9yaWdpbikKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoZm9sZGVyT3JpZ2luLT50b3BPcmlnaW4gIT0g
b3JpZ2luICYmIGZvbGRlck9yaWdpbi0+Y2xpZW50T3JpZ2luICE9IG9yaWdpbikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGgg
PSBjYWNoZXNSb290UGF0aCgqZm9sZGVyT3JpZ2luKSwgdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRh
c2tIYW5kbGVyKV0geworICAgICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5
KHBhdGgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAotdm9pZCBF
bmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKQEAgLTQ2OSw5ICs0NzUsMTEgQEAgU3RyaW5n
IEVuZ2luZTo6cmVwcmVzZW50YXRpb24oKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwi
KTsKICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOwogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJc
bnsgXCJvcmlnaW5cIiA6IFwiIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGtleVZhbHVlLmtl
eSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcIiwgXCJjYWNoZXNcIiA6ICIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXG57IFwib3JpZ2luXCIgOiB7IFwidG9wT3JpZ2luXCIgOiBcIiIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChrZXlWYWx1ZS5rZXkudG9wT3JpZ2luLnRvU3RyaW5n
KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXCIsIFwiY2xpZW50T3JpZ2luXCI6IFwiIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGtleVZhbHVlLmtleS5jbGllbnRPcmlnaW4udG9TdHJp
bmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcIiB9LCBcImNhY2hlc1wiIDogIik7CiAg
ICAgICAgIGtleVZhbHVlLnZhbHVlLT5hcHBlbmRSZXByZXNlbnRhdGlvbihidWlsZGVyKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIn0iKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA4YWVh
OGYxOGNlYWQ3YmVmN2IzMzJiMjExNWZkNzY4Y2FhOWU1YWM2Li4wNzVlZWU1ZmNkMzk5OThhM2U0
MTk0YmYxMTNiYjM2NDMyOGM2OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAt
NjMsOSArNjQsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7
IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKLSAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CiAgICAgdm9pZCByZW1vdmUodWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlm
aWVyQ2FsbGJhY2smJik7Ci0gICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9y
aWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mb3NDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHJldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlVSTCYmLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwogICAgIHZvaWQgcHV0UmVjb3Jkcyh1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxs
YmFjayYmKTsKQEAgLTgyLDE5ICs4MywxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmV0d29ya0Nh
Y2hlOjpTYWx0JiBzYWx0KCkgY29uc3QgeyByZXR1cm4gbV9zYWx0LnZhbHVlKCk7IH0KICAgICB1
aW50NjRfdCBuZXh0Q2FjaGVJZGVudGlmaWVyKCkgeyByZXR1cm4gKyttX25leHRDYWNoZUlkZW50
aWZpZXI7IH0KIAotICAgIHZvaWQgcmVtb3ZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luKTsK
LQotICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2
b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICBT
dHJpbmcgcmVwcmVzZW50YXRpb24oKTsKIAogICAgIHZvaWQgY2xlYXJBbGxDYWNoZXMoV1RGOjpD
YWxsYmFja0FnZ3JlZ2F0b3ImKTsKLSAgICB2b2lkIGNsZWFyQ2FjaGVzRm9yT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBXVEY6OkNhbGxiYWNrQWdncmVnYXRvciYpOworICAgIHZvaWQgY2xl
YXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV1RG
OjpDYWxsYmFja0FnZ3JlZ2F0b3ImKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5naW5lJiBk
ZWZhdWx0RW5naW5lKCk7CiAgICAgZXhwbGljaXQgRW5naW5lKFN0cmluZyYmIHJvb3RQYXRoKTsK
IAotICAgIFN0cmluZyBjYWNoZXNSb290UGF0aChjb25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAg
U3RyaW5nIGNhY2hlc1Jvb3RQYXRoKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCiAg
ICAgdm9pZCBmZXRjaEVudHJpZXMoYm9vbCAvKiBzaG91bGRDb21wdXRlU2l6ZSAqLywgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJik7CiAK
QEAgLTEwMiw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQ2FjaGVzT3JFcnJvciA9
IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGVzPiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkVycm9yPjsKICAgICB1c2luZyBDYWNoZXNDYWxsYmFjayA9IFdURjo6RnVuY3Rp
b248dm9pZChDYWNoZXNPckVycm9yJiYpPjsKLSAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhj
b25zdCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFkQ2Fj
aGVzRnJvbURpc2soY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ2FjaGVzQ2FsbGJhY2sm
Jik7CiAKICAgICB1c2luZyBDYWNoZU9yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yPjsKICAgICB1c2lu
ZyBDYWNoZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYmKT47CkBA
IC0xMTAsNyArMTA5LDcgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlKiBjYWNoZSh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxDYWNoZXM+PiBtX2Nh
Y2hlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgUmVmUHRyPENhY2hlcz4+
IG1fY2FjaGVzOwogICAgIHVpbnQ2NF90IG1fbmV4dENhY2hlSWRlbnRpZmllciB7IDAgfTsKICAg
ICBTdHJpbmcgbV9yb290UGF0aDsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2lvUXVldWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggYTJmMTk3MDI1ODFmNzRiMzFhMzM2OTA1
MTY1NjFhYmRjYmM1ZTRmMS4uMzUzNTMxZmFmMTE1ZjM1ZjFlZWUyZGViMjJiYzEwYWEwN2Y2NWY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0
aWMgaW5saW5lIFN0cmluZyBjYWNoZXNPcmlnaW5GaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hl
c1Jvb3RQYXRoKQogICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgib3JpZ2luIikpOwogfQog
Ci12b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
Zm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIHF1ZXVlLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmb2xkZXJQYXRoID0gZm9sZGVyUGF0aC5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RGaWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKQEAgLTcy
LDkgKzcyLDkgQEAgdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXUKICAgICB9KTsKIH0KIAotQ2FjaGVz
OjpDYWNoZXMoRW5naW5lJiBlbmdpbmUsIFN0cmluZyYmIG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBh
dGgsIHVpbnQ2NF90IHF1b3RhKQorQ2FjaGVzOjpDYWNoZXMoRW5naW5lJiBlbmdpbmUsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1
b3RhKQogICAgIDogbV9lbmdpbmUoJmVuZ2luZSkKLSAgICAsIG1fb3JpZ2luKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikpKQorICAgICwgbV9vcmlnaW4oV1RGTW92ZShv
cmlnaW4pKQogICAgICwgbV9yb290UGF0aChXVEZNb3ZlKHJvb3RQYXRoKSkKICAgICAsIG1fcXVv
dGEocXVvdGEpCiB7CkBAIC04MywyNyArODMsMzYgQEAgQ2FjaGVzOjpDYWNoZXMoRW5naW5lJiBl
bmdpbmUsIFN0cmluZyYmIG9yaWdpbiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3QK
IHZvaWQgQ2FjaGVzOjpzdG9yZU9yaWdpbihDb21wbGV0aW9uQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7Ci0gICAg
ZW5jb2RlciA8PCBtX29yaWdpbi5wcm90b2NvbDsKLSAgICBlbmNvZGVyIDw8IG1fb3JpZ2luLmhv
c3Q7Ci0gICAgZW5jb2RlciA8PCBtX29yaWdpbi5wb3J0OworICAgIGVuY29kZXIgPDwgbV9vcmln
aW4udG9wT3JpZ2luLnByb3RvY29sOworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4udG9wT3JpZ2lu
Lmhvc3Q7CisgICAgZW5jb2RlciA8PCBtX29yaWdpbi50b3BPcmlnaW4ucG9ydDsKKyAgICBlbmNv
ZGVyIDw8IG1fb3JpZ2luLmNsaWVudE9yaWdpbi5wcm90b2NvbDsKKyAgICBlbmNvZGVyIDw8IG1f
b3JpZ2luLmNsaWVudE9yaWdpbi5ob3N0OworICAgIGVuY29kZXIgPDwgbV9vcmlnaW4uY2xpZW50
T3JpZ2luLnBvcnQ7CiAgICAgbV9lbmdpbmUtPndyaXRlRmlsZShjYWNoZXNPcmlnaW5GaWxlbmFt
ZShtX3Jvb3RQYXRoKSwgRGF0YSB7IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmIGVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShlcnJvcikp
OwogICAgIH0pOwogfQogCi1zdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRhdGEpCitzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRhdGEp
CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBtb2Rlcm4gZGVjb2Rl
cnMgZm9yIHBlcnNpc3RlbnQgZGF0YS4KLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
b3JpZ2luOworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIGNsaWVu
dE9yaWdpbjsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3JpZ2luLnByb3Rv
Y29sKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRvcE9yaWdpbi5wcm90b2NvbCkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4u
aG9zdCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0b3BPcmlnaW4uaG9zdCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4ucG9y
dCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0b3BPcmlnaW4ucG9ydCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFdURk1vdmUob3JpZ2luKTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNsaWVudE9yaWdpbi5wcm90b2NvbCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGllbnRPcmlnaW4uaG9zdCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
bGllbnRPcmlnaW4ucG9ydCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IFdURk1vdmUodG9wT3JpZ2luKSwgV1RGTW92ZShj
bGllbnRPcmlnaW4pIH07CiB9CiAKIHZvaWQgQ2FjaGVzOjppbml0aWFsaXplKFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5oCmluZGV4IGVjMDhlMjNlYzUxY2EwMDM3M2E5ZDEwNTE3YjM4MWQ4Mzc4ZDMy
NWEuLmFhODIzZjIxNmIwMjQwMTUwYjliNjQ1NTJhMmZlNjcwN2ExNjRiN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Ns
aWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgRW5naW5lOwogCiBjbGFzcyBD
YWNoZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENhY2hlcz4gY3JlYXRlKEVuZ2luZSYgZW5naW5lLCBTdHJpbmcmJiBvcmlnaW4sIFN0cmlu
ZyYmIHJvb3RQYXRoLCB1aW50NjRfdCBxdW90YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNo
ZXMgeyBlbmdpbmUsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShyb290UGF0aCksIHF1b3RhIH0p
OyB9CisgICAgc3RhdGljIFJlZjxDYWNoZXM+IGNyZWF0ZShFbmdpbmUmIGVuZ2luZSwgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBTdHJpbmcmJiByb290UGF0aCwgdWludDY0X3QgcXVv
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVzIHsgZW5naW5lLCBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUocm9vdFBhdGgpLCBxdW90YSB9KTsgfQogCi0gICAgc3RhdGljIHZvaWQgcmV0
cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1
ZXVlJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJik7CisgICAgc3RhdGljIHZvaWQgcmV0cmlldmVPcmln
aW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luPiYmKT4mJik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKICAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVJlY29yZChjb25zdCBS
ZWNvcmRJbmZvcm1hdGlvbiYpOwogCiAgICAgY29uc3QgTmV0d29ya0NhY2hlOjpTYWx0JiBzYWx0
KCkgY29uc3Q7Ci0gICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KIAogICAgIGJvb2wgc2hv
dWxkUGVyc2lzdCgpIGNvbnN0IHsgcmV0dXJuICFtX3Jvb3RQYXRoLmlzTnVsbCgpOyB9CiAKQEAg
LTc2LDE0ICs3NiwxNCBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc3RvcmFnZVNpemUoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBDYWNoZXMoRW5naW5lJiwgU3RyaW5nJiYgb3JpZ2luLCBTdHJp
bmcmJiByb290UGF0aCwgdWludDY0X3QgcXVvdGEpOworICAgIENhY2hlcyhFbmdpbmUmLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiwgU3RyaW5nJiYgcm9vdFBhdGgsIHVpbnQ2NF90IHF1b3RhKTsK
IAogICAgIHZvaWQgaW5pdGlhbGl6ZVNpemUoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmKTsKICAgICB2b2lkIHJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkVycm9yPiYmKT4mJik7CiAgICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogCiAgICAgdm9pZCBzdG9yZU9yaWdp
bihXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gcmVhZE9yaWdp
bihjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDbGllbnRPcmlnaW4+IHJlYWRPcmlnaW4oY29uc3QgTmV0d29ya0NhY2hlOjpEYXRh
Jik7CiAKICAgICBDYWNoZSogZmluZChjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC05Myw3ICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwogICAg
IEVuZ2luZSogbV9lbmdpbmUgeyBudWxscHRyIH07CiAgICAgdWludDY0X3QgbV91cGRhdGVDb3Vu
dGVyIHsgMCB9OwotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBtX29yaWdpbjsKKyAg
ICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47CiAgICAgU3RyaW5nIG1fcm9vdFBhdGg7
CiAgICAgdWludDY0X3QgbV9xdW90YSB7IDAgfTsKICAgICB1aW50NjRfdCBtX3NpemUgeyAwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBiMDAwNjg5MDViMmRi
YmY5ZTBkMzgwYzEzNGI0YzFhMDY0NDY4ZjFmLi41ODljNWU5OWZjMjcxMjAxYTFmNjA2ODkxNGNh
MzZlOWFmNTg0YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6fkNhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24oKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFt
ZSkKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCiB7CiAgICAgRW5n
aW5lOjpmcm9tKHNlc3Npb25JRCkub3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW2Nvbm5lY3Rpb24g
PSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJ
ZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIHsKICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
T3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KSwgc2Vzc2lvbklELnNlc3Np
b25JRCgpKTsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpyZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXEKICAgICB9
KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpCit2b2lkIENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
dWludDY0X3QgdXBkYXRlQ291bnRlcikKIHsKICAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5y
ZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIHVwZGF0ZUNvdW50ZXIsIFtjb25uZWN0aW9uID0gbWFrZVJl
ZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCBvcmlnaW4sIHJlcXVlc3RJ
ZGVudGlmaWVyXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBjb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpVcGRhdGVDYWNo
ZXMocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CkBA
IC0xMjcsNyArMTI3LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZXJl
ZmVyZW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF8KICAgICByZWZlcmVuY2Vz
LnJlbW92ZShyZWZlcmVuY2VSZXN1bHQpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit2
b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgRW5naW5lOjpmcm9t
KHNlc3Npb25JRCkuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihvcmlnaW4sIFtjb25uZWN0aW9u
ID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCByZXF1ZXN0
SWRlbnRpZmllcl0gKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IpIHsKICAgICAgICAgY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpLCBz
ZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApp
bmRleCA5YWZmZjY4OTUzYjM5YmE1OTdhZDU1MTA1NDZlZWM5ZTM0OTc4ZWJmLi5lNTdjNWUzOTBl
MDYzZDlmYjFkNWQwZDkyNWZhMmUzMWU3YWZkMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uaApAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmKTsKIAotICAgIHZvaWQgb3BlbihQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgb3BlblJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNo
ZU5hbWUpOworICAgIHZvaWQgb3BlbihQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgb3BlblJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcm
IGNhY2hlTmFtZSk7CiAgICAgdm9pZCByZW1vdmUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJl
bW92ZVJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwotICAgIHZv
aWQgY2FjaGVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsKKyAgICB2
b2lkIGNhY2hlcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmV0cmlldmVDYWNoZXNJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVy
KTsKIAogICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwm
Jik7CiAgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKTsKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlcmVmZXJlbmNlKFBBTDo6U2Vz
c2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRh
dGlvbihQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRpb24oUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZDZlM2NlNTQyNmE1NjkyYjdk
MDZhZGU0ZDhhMWI5OTUzZTRkM2QyZC4uZTMxMDdlMjAxNDZkNTkwMDNiMjA2YjFkZWRmNmY4NjNj
YjhjNTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgpAQCAtMjQsMTEgKzI0LDExIEBAIG1lc3NhZ2VzIC0+IENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24gewogICAgIFJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgRGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCi0gICAgT3BlbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcgb3Jp
Z2luLCBTdHJpbmcgY2FjaGVOYW1lKTsKKyAgICBPcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luLCBTdHJpbmcgY2FjaGVOYW1lKTsKICAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKTsKLSAgICBDYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcik7
CisgICAgQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCB1
cGRhdGVDb3VudGVyKTsKIAotICAgIENsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nIG9yaWdp
bik7CisgICAgQ2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbik7CiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICBSZXRyaWV2ZVJlY29y
ZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpVUkwgdXJsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAppbmRleCBmMzE4OGZkYzY3NTY2OTNmZDE1OGViYzc2ZGJiN2M0YmRmMmM0NDQ4
Li4zZjI3MTIzMmQ2M2U0YTRmNzc0NWVmMjhjNjRlYWU1NTM4YzRiN2I5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCkBAIC01Niw3ICs1Niw3IEBAIElQQzo6Q29ubmVjdGlvbiYgV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6Y29ubmVjdGlvbigpCiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
IH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb09wZW4odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hl
TmFtZSkKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBjYWNoZU5hbWUpCiB7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Ok9wZW4obV9zZXNzaW9uSUQsIHJlcXVlc3RJ
ZGVudGlmaWVyLCBvcmlnaW4sIGNhY2hlTmFtZSksIDApOwogfQpAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYQogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpSZW1vdmUobV9zZXNzaW9uSUQsIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpLCAwKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikKK3ZvaWQgV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90
IHVwZGF0ZUNvdW50ZXIpCiB7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50
aWZpZXIsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIDApOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRS
ZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQog
Ci12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9lbmdp
bmVSZXByZXNlbnRhdGlvbk5leHRJZGVudGlmaWVyOwogICAgIG1fY2xlYXJSZXByZXNlbnRhdGlv
bkNhbGxiYWNrcy5zZXQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oCmluZGV4IDBiMjRlMmFhZjE5MzU3Y2ZjZDNlYjg1OGQ4MTVkN2ZmOGFj
MmViZDMuLjQ4MGVkZGQ5YjRlNTE1YzRiNGFhZTZkNGM2ZDk0MjU4ZmNiZTI1MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaApAQCAtNTIsOSArNTIsOSBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbigpOwogCiAgICAgLy8gV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbgotICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOworICAgIHZvaWQg
ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBkb1JlbW92
ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5hbDsK
KyAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFs
OwogCiAgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBmaW5hbDsK
ICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7CkBAIC02Myw3ICs2Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikg
ZmluYWw7CiAKLSAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBlbmdpbmVSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBvcGVuQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI2YmI4MGYzMzVmNTk1Mjg5NWIy
ODUwMzcwNmY2YTQ0ZjY1NDJhMDQuLjg1NDk1YjM5NjA1ODQ4MWQwN2ViYjRkNTA4YTc4NWM3YjU5
YzkwM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wMS0wNSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IENhY2hlIEFQSSBwYXJ0aXRp
b25pbmcgYmFzZWQgb24gQ2xpZW50T3JpZ2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODEyNDAKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuLgorCisgICAgICAgIEJlZWZpbmcgdXAgdGVzdCB0byBlbnN1cmUgdGhhdCBjbGll
bnQgYW5kIHRvcCBvcmlnaW5zIGFyZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMu
aHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xl
YXJpbmctb3JpZ2luLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nh
Y2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0bWw6CisKIDIwMTgtMDEt
MDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsg
bWF0aG1sL29wZW50eXBlL2hvcml6b250YWwtbXVuZGVyb3Zlci5odG1sIGFzIGZhaWx1cmUgb24g
V2luZG93cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFn
ZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggMjc4NTUxMTM1NDk4MGQ3NzkzNTAwOTJhNDIzOWNjMzYwOTY4ZGRkZi4u
NWFhYzZkOWU2OTc1ZGFkMDg3NjdhN2EzOGM0MGQzMGUwYjAxZDVkMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9y
YWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw3
IEBACiAKLVBBU1MgQ2xlYW5pbmcgZXhpc3RpbmcgY2FjaGVzIAorCitQQVNTIENyZWF0ZSBhIGNh
Y2hlIHN0b3JhZ2UgZnJvbSBsb2NhbGhvc3QgYW5kIGNsZWFyIGl0IAogUEFTUyBDbGVhcmluZyBk
aXNrIGNhY2hlIG9mIGEgZ2l2ZW4gb3JpZ2luIAorUEFTUyBWYWxpZGF0aW5nIGNhY2hlIHJlcHJl
c2VudGF0aW9uIGJlZm9yZSBjbGVhcmluZyAKK1BBU1MgVmFsaWRhdGluZyBjYWNoZSByZXByZXNl
bnRhdGlvbiBhZnRlciBjbGVhcmluZyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLWNsZWFyaW5nLW9yaWdpbi5o
dHRwcy5odG1sCmluZGV4IDEyOTY2NzA0MGJjYzdhYTgxYTY1ZDI1MmMzMTg4ZjE5OTRhMDNjMWYu
LjAxZjAzMjEwMmRlMWY5NWNlMTYxM2I5MmIyNjAxMWIzMGUyOTMwNzggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1jbGVhcmluZy1vcmlnaW4u
aHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2Fj
aGUtY2xlYXJpbmctb3JpZ2luLmh0dHBzLmh0bWwKQEAgLTcsMTQgKzcsNDQgQEAKIDwvaGVhZD4K
IDxib2R5PgogICAgIDxzY3JpcHQ+Ci1wcm9taXNlX3Rlc3QodGVzdCA9PiB7Ci0gICAgcmV0dXJu
IHNlbGYuY2FjaGVzLmtleXMoKS50aGVuKGtleXMgPT4gewotICAgICAgICB2YXIgcGVuZGluZyA9
IFtdOwotICAgICAgICBmb3IgKGtleSBvZiBrZXlzKQotICAgICAgICAgICAgcGVuZGluZy5wdXNo
KHNlbGYuY2FjaGVzLmRlbGV0ZShrZXlzWzBdKSk7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLmFs
bChwZW5kaW5nKTsKLSAgICB9KTsKLX0sICJDbGVhbmluZyBleGlzdGluZyBjYWNoZXMiKTsKK2Z1
bmN0aW9uIGNvbXBhcmVDbGllbnRPcmlnaW5zKGEsIGIpCit7CisgICAgaWYgKGEub3JpZ2luLmNs
aWVudE9yaWdpbiA8IGIuY2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAo
YS5vcmlnaW4uY2xpZW50T3JpZ2luID4gYi5vcmlnaW4uY2xpZW50T3JpZ2luKQorICAgICAgICBy
ZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK3Byb21pc2VfdGVzdCgoKSA9PiB7CisgICAg
aWYgKCF3aW5kb3cuaW50ZXJuYWxzIHx8ICF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KCJUZXN0IHJlcXVpcmVzIGludGVybmFscyBhbmQgdGVzdCBydW5u
ZXIiKTsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgICAgIHZhciBjb3VudGVyID0gMDsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIHZhciByZXByZXNlbnRh
dGlvbiA9IEpTT04ucGFyc2UoYXdhaXQgaW50ZXJuYWxzLmNhY2hlU3RvcmFnZUVuZ2luZVJlcHJl
c2VudGF0aW9uKCkpOworICAgICAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAg
cmVwcmVzZW50YXRpb24uc29ydChjb21wYXJlQ2xpZW50T3JpZ2lucyk7CisgICAgICAgICAgICAg
ICAgdmFyIGNhY2hlID0gcmVwcmVzZW50YXRpb25bMF0ub3JpZ2luLmNsaWVudE9yaWdpbiA9PT0g
Imh0dHBzOi8vbG9jYWxob3N0Ojg0NDMiCisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXByZXNlbnRhdGlvblswXS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MyIsICJ0b3Agb3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRwczovL2xvY2Fs
aG9zdDo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0uY2FjaGVzLnBlcnNpc3RlbnQs
IFsiY2FjaGUxIl0pOworICAgICAgICAgICAgfSwgIlZhbGlkYXRpbmcgY2FjaGUgcmVwcmVzZW50
YXRpb24gYmVmb3JlIGNsZWFyaW5nIik7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJE
T01DYWNoZSgnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MycpOworCisgICAgICAgICAgICByZXByZXNl
bnRhdGlvbiA9IEpTT04ucGFyc2UoYXdhaXQgaW50ZXJuYWxzLmNhY2hlU3RvcmFnZUVuZ2luZVJl
cHJlc2VudGF0aW9uKCkpOworICAgICAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmVwcmVzZW50YXRpb24uc29ydChjb21wYXJlQ2xpZW50T3JpZ2lucyk7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5vcmlnaW4udG9wT3JpZ2luLCAi
aHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJ0b3Agb3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2VudGF0aW9uWzBdLm9yaWdpbi5jbGllbnRP
cmlnaW4sICJodHRwczovL2xvY2FsaG9zdDo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUg
MSIpOworICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMocmVwcmVzZW50YXRpb25b
MF0uY2FjaGVzLnBlcnNpc3RlbnQsIFtdKTsKKyAgICAgICAgICAgIH0sICJWYWxpZGF0aW5nIGNh
Y2hlIHJlcHJlc2VudGF0aW9uIGFmdGVyIGNsZWFyaW5nIik7CisgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgIH0pOworICAgIH0pCit9LCAiQ3JlYXRlIGEgY2FjaGUgc3RvcmFnZSBmcm9t
IGxvY2FsaG9zdCBhbmQgY2xlYXIgaXQiKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5jIHRlc3QgPT4g
ewogICAgIHZhciBjYWNoZSA9IGF3YWl0IHNlbGYuY2FjaGVzLm9wZW4oInRlc3QtY2FjaGUtcmVj
b3Jkcy1wZXJzaXN0ZW5jeSIpOwpAQCAtNDQsNSArNzQsNiBAQCBwcm9taXNlX3Rlc3QoYXN5bmMg
dGVzdCA9PiB7CiAgICAgYXNzZXJ0X2VxdWFscyhrZXlzLmxlbmd0aCwgMCwgInJlY29yZHMgc2hv
dWxkIGJlIGVtcHR5Iik7CiB9LCAnQ2xlYXJpbmcgZGlzayBjYWNoZSBvZiBhIGdpdmVuIG9yaWdp
bicpOwogICAgIDwvc2NyaXB0PgorICAgIDxpZnJhbWUgc3JjPSJodHRwczovL2xvY2FsaG9zdDo4
NDQzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL2NhY2hlLXBlcnNpc3RlbmN5LWlmcmFtZS5odG1s
I25hbWU9Y2FjaGUxIj48L2lmcmFtZT4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1v
cmlnaW5zLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzNjcwN2RkMWFiOTRhNjc2YjU4YjRlZDA4
YWU1ZDUzZDhmZjYwN2ZmLi4zNzg3ZGIzZWVjNmY2MTlkNGQyMWM0NzMwYjBhMmU5ZGMwOGY1MTRi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUt
b3JpZ2lucy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEs
NyBAQAogICAKIAogUEFTUyBDcmVhdGUgYSBjYWNoZSBzdG9yYWdlIGFuZCBsb29rIGF0IHRoZSBy
ZXByZXNlbnRhdGlvbiAKLVBBU1MgQ2FjaGVzIGZyb20gZGlmZmVyZW50IG9yaWdpbnMgc2hvdWxk
IG5vdCBtaXggCitQQVNTIFZlcmlmeWluZyB0aGF0IHR3byBjYWNoZXMgYXJlIGNyZWF0ZWQgb24g
dHdvIGRpZmZlcmVudCBjbGllbnQgb3JpZ2lucyAKK1BBU1MgVmVyaWZ5aW5nIHRoYXQgY2FjaGVz
IGFyZSBjbHVzdGVyZWQgcGVyIGNsaWVudCBvcmlnaW4uIAorUEFTUyBWZXJpZnlpbmcgdGhhdCBj
bGVhcmluZyBjYWNoZXMgZm9yIGFuIG9yaWdpbiB3aWxsIGNsZWFyIGJvdGggdG9wIG9yaWdpbiBh
bmQgY2xpZW50IG9yaWdpbiBjYWNoZXMuIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLW9yaWdpbnMuaHR0cHMuaHRtbAppbmRl
eCBmMjliOWIxNzgxZjBhMzU3N2ExNGFhYzEwMmNhM2YwNzBiZDEyMjUwLi43NzMxZjFjNGExZjMw
MTA4OGQ4ZWFmYzM0Mzg2NmE3OTVmODNmY2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtb3JpZ2lucy5odHRwcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9jYWNoZS1vcmlnaW5zLmh0dHBzLmh0bWwK
QEAgLTgsMjggKzgsNTQgQEAKIDxib2R5PgogICAgIDxzY3JpcHQ+CiAKLSAgICBmdW5jdGlvbiBj
aGVja0NhY2hlcyhuYW1lKSB7Ci0gICAgICAgIHByb21pc2VfdGVzdCgoKSA9PiB7Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5jYWNoZXMua2V5cygpLnRoZW4oa2V5cyA9PiB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoa2V5cy5pbmRleE9mKCJjYWNoZTEiKSAhPT0gLTEsICJTaG91bGQg
aGF2ZSBjYWNoZTEiKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShrZXlzLmluZGV4T2Yo
ImNhY2hlMiIpID09PSAtMSwgIlNob3VsZCBub3QgaGF2ZSBjYWNoZTEiKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9LCBuYW1lKTsKKyAgICBhc3luYyBmdW5jdGlvbiBjaGVja0NhY2hlc0Fm
dGVyQ2xlYXJpbmdNZW1vcnlSZXByZXNlbnRhdGlvbihuYW1lKSB7CisgICAgICAgIGF3YWl0IGlu
dGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKCk7CisgICAgICAg
IHZhciBrZXlzID0gYXdhaXQgc2VsZi5jYWNoZXMua2V5cygpOworICAgICAgICB0ZXN0KCgpID0+
IHsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGtleXMuaW5kZXhPZigiY2FjaGUxIikgIT09IC0x
LCAiU2hvdWxkIGhhdmUgY2FjaGUxIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShrZXlzLmlu
ZGV4T2YoImNhY2hlMiIpID09PSAtMSwgIlNob3VsZCBub3QgaGF2ZSBjYWNoZTIiKTsKKyAgICAg
ICAgfSwgIlZlcmlmeWluZyB0aGF0IGNhY2hlcyBhcmUgY2x1c3RlcmVkIHBlciBjbGllbnQgb3Jp
Z2luLiIpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrQ2FjaGVzQWZ0ZXJDbGVh
cmluZ09yaWdpbnMoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJET01DYWNoZSgnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycpOworICAgICAgICB2YXIgcmVwcmVzZW50YXRpb24gPSBKU09OLnBh
cnNlKGF3YWl0IGludGVybmFscy5jYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbigpKTsK
KyAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2Vu
dGF0aW9uWzBdLm9yaWdpbi50b3BPcmlnaW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwgInRv
cCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNl
bnRhdGlvblsxXS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJ0
b3Agb3JpZ2luIG9mIGNhY2hlIDIiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVz
ZW50YXRpb25bMF0ub3JpZ2luLmNsaWVudE9yaWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMi
LCAiY2xpZW50IG9yaWdpbiBvZiBjYWNoZSAxIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJlcHJlc2VudGF0aW9uWzFdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRwczovL2xvY2FsaG9z
dDo4NDQzIiwgImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMiIpOworICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlvblswXS5jYWNoZXMucGVyc2lzdGVudCwgW10pOwor
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlvblsxXS5jYWNoZXMu
cGVyc2lzdGVudCwgW10pOworICAgICAgICB9LCAiVmVyaWZ5aW5nIHRoYXQgY2xlYXJpbmcgY2Fj
aGVzIGZvciBhbiBvcmlnaW4gd2lsbCBjbGVhciBib3RoIHRvcCBvcmlnaW4gYW5kIGNsaWVudCBv
cmlnaW4gY2FjaGVzLiIpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIGNoZWNrQ2FjaGVS
ZXByZXNlbnRhdGlvbigpIHsKKyAgICAgICAgdmFyIHJlcHJlc2VudGF0aW9uID0gSlNPTi5wYXJz
ZShhd2FpdCBpbnRlcm5hbHMuY2FjaGVTdG9yYWdlRW5naW5lUmVwcmVzZW50YXRpb24oKSk7Cisg
ICAgICAgIHRlc3QoKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXByZXNlbnRh
dGlvblswXS5vcmlnaW4udG9wT3JpZ2luLCAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MyIsICJ0b3Ag
b3JpZ2luIG9mIGNhY2hlIDEiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVwcmVzZW50
YXRpb25bMV0ub3JpZ2luLnRvcE9yaWdpbiwgImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMiLCAidG9w
IG9yaWdpbiBvZiBjYWNoZSAyIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlcHJlc2Vu
dGF0aW9uWzBdLm9yaWdpbi5jbGllbnRPcmlnaW4sICJodHRwczovLzEyNy4wLjAuMTo4NDQzIiwg
ImNsaWVudCBvcmlnaW4gb2YgY2FjaGUgMSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXByZXNlbnRhdGlvblsxXS5vcmlnaW4uY2xpZW50T3JpZ2luLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6
ODQ0MyIsICJjbGllbnQgb3JpZ2luIG9mIGNhY2hlIDIiKTsKKyAgICAgICAgICAgIGFzc2VydF9h
cnJheV9lcXVhbHMocmVwcmVzZW50YXRpb25bMF0uY2FjaGVzLnBlcnNpc3RlbnQsIFsiY2FjaGUx
Il0pOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXByZXNlbnRhdGlvblsxXS5j
YWNoZXMucGVyc2lzdGVudCwgWyJjYWNoZTIiXSk7CisgICAgICAgIH0sICJWZXJpZnlpbmcgdGhh
dCB0d28gY2FjaGVzIGFyZSBjcmVhdGVkIG9uIHR3byBkaWZmZXJlbnQgY2xpZW50IG9yaWdpbnMi
KTsKICAgICB9CiAKICAgICBwcm9taXNlX3Rlc3QodGVzdCA9PiB7Ci0gICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscykKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVzdCBy
ZXF1aXJlcyBpbnRlcm5hbHMiKTsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzIHx8ICF3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiVGVz
dCByZXF1aXJlcyBpbnRlcm5hbHMgYW5kIHRlc3QgcnVubmVyIik7CiAKICAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgIHZhciBjb3Vu
dGVyID0gMDsKLSAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
dGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibWVzc2FnZSIsIHRlc3Quc3RlcF9mdW5jKGFzeW5jIChldmVudCkgPT4gewogICAg
ICAgICAgICAgICAgIGlmICgrK2NvdW50ZXIgPD0gMSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIGludGVybmFscy5jbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJl
cHJlc2VudGF0aW9uKCkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrQ2Fj
aGVzKCJDYWNoZXMgZnJvbSBkaWZmZXJlbnQgb3JpZ2lucyBzaG91bGQgbm90IG1peCIpOwotICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBhd2FpdCBjaGVja0NhY2hlUmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgICAg
ICAgICBhd2FpdCBjaGVja0NhY2hlc0FmdGVyQ2xlYXJpbmdNZW1vcnlSZXByZXNlbnRhdGlvbigp
OworICAgICAgICAgICAgICAgIGF3YWl0IGNoZWNrQ2FjaGVzQWZ0ZXJDbGVhcmluZ09yaWdpbnMo
KTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAg
IH0pCiAgICAgfSwgIkNyZWF0ZSBhIGNhY2hlIHN0b3JhZ2UgYW5kIGxvb2sgYXQgdGhlIHJlcHJl
c2VudGF0aW9uIik7CkBAIC00MCw0ICs2NiwzIEBACiAgICAgPC9kaXY+CiA8L2JvZHk+CiA8L2h0
bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUtc3RvcmFnZS9j
YWNoZS1yZXByZXNlbnRhdGlvbi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLXJlcHJlc2VudGF0aW9uLmh0dHBzLmh0bWwKaW5kZXggOWVhYTFm
Yzc4NDdiYTdjNzM3Mjc3NTBjYWRhZmNhNWJlZGE0ZWM4My4uMmY5MzAyODBiNDg4NTU0ZGI4NzU2
ZjliNTI0YjUyZWNkM2I3MTE2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS1zdG9yYWdlL2NhY2hlLXJlcHJlc2VudGF0aW9uLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlL2NhY2hlLXJlcHJlc2VudGF0aW9uLmh0dHBz
Lmh0bWwKQEAgLTE1LDYgKzE1LDcgQEAKICAgICBmdW5jdGlvbiBjaGVja0NhY2hlcyhoYXNQZXJz
aXN0ZW50LCBoYXNSZW1vdmVkLCBuYW1lLCB2YWx1ZSkgewogICAgICAgICB0ZXN0KCgpID0+IHsK
ICAgICAgICAgICAgIHZhciByZXN1bHRzID0gSlNPTi5wYXJzZSh2YWx1ZSk7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdHMubGVuZ3RoLCAxKTsKICAgICAgICAgICAgIHZhciBjYWNo
ZXMgPSByZXN1bHRzWzBdLmNhY2hlczsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoISFjYWNo
ZXNbInBlcnNpc3RlbnQiXS5sZW5ndGgsIGhhc1BlcnNpc3RlbnQsICJwZXJzaXN0ZW50Iik7CiAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKCEhY2FjaGVzWyJyZW1vdmVkIl0ubGVuZ3RoLCBoYXNS
ZW1vdmVkLCAicmVtb3ZlZCIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>