<?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>234366</bug_id>
          
          <creation_ts>2021-12-15 14:20:57 -0800</creation_ts>
          <short_desc>Move WebIDBServers from NetworkProcess to NetworkSession class</short_desc>
          <delta_ts>2021-12-16 15:44:09 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234179</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234409</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824542</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-15 14:20:57 -0800</bug_when>
    <thetext>Move WebIDBServers from NetworkProcess to NetworkSession class, since they are per session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824543</commentid>
    <comment_count>1</comment_count>
      <attachid>447284</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-15 14:23:19 -0800</bug_when>
    <thetext>Created attachment 447284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824550</commentid>
    <comment_count>2</comment_count>
      <attachid>447286</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-15 14:39:42 -0800</bug_when>
    <thetext>Created attachment 447286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824554</commentid>
    <comment_count>3</comment_count>
      <attachid>447288</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-15 15:10:47 -0800</bug_when>
    <thetext>Created attachment 447288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824561</commentid>
    <comment_count>4</comment_count>
      <attachid>447292</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-15 15:34:32 -0800</bug_when>
    <thetext>Created attachment 447292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824611</commentid>
    <comment_count>5</comment_count>
      <attachid>447292</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-15 17:47:27 -0800</bug_when>
    <thetext>Comment on attachment 447292
Patch

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

Looks like a good, relatively straightforward refactoring. I didn’t spot anything obviously missing.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:393
&gt; +    if (auto* networkSession = this-&gt;networkSession(sessionID))
&gt; +        networkSession-&gt;ensureWebIDBServer().addConnection(connection.connection(), identifier);

Tempting to just use &quot;session&quot; to avoid the need for &quot;this-&gt;&quot; and possibly make things even more readable. Other cases of that below.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1847
&gt; +            auto* session = this-&gt;networkSession(sessionID);

Not sure we need the &quot;this-&gt;&quot; here since there is no name collision.

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:677
&gt; +    // *********
&gt; +    // IMPORTANT: Do not change the directory structure for indexed databases on disk without first consulting a reviewer from Apple (&lt;rdar://problem/17454712&gt;)
&gt; +    // *********

This is clearly a valuable comment. But is this function the absolute best place for it?

&gt; Source/WebKit/NetworkProcess/ios/NetworkProcessIOS.mm:120
&gt; +        forEachNetworkSession([](auto&amp; networkSession) {

Formatting tweak: can’t remember if we use spaces here.
Cod style tweak: Always love the single words when the scope is small enough, so just &quot;session&quot; would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824746</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-16 07:15:09 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 447292 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447292&amp;action=review
&gt; 
&gt; Looks like a good, relatively straightforward refactoring. I didn’t spot
&gt; anything obviously missing.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:393
&gt; &gt; +    if (auto* networkSession = this-&gt;networkSession(sessionID))
&gt; &gt; +        networkSession-&gt;ensureWebIDBServer().addConnection(connection.connection(), identifier);
&gt; 
&gt; Tempting to just use &quot;session&quot; to avoid the need for &quot;this-&gt;&quot; and possibly
&gt; make things even more readable. Other cases of that below.

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:1847
&gt; &gt; +            auto* session = this-&gt;networkSession(sessionID);
&gt; 
&gt; Not sure we need the &quot;this-&gt;&quot; here since there is no name collision.

I had to for this one because there is a networkSession variable outside the lambda and the compiler was complaining that it couldn&apos;t be called as a function and wasn&apos;t captured in the lambda.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:677
&gt; &gt; +    // *********
&gt; &gt; +    // IMPORTANT: Do not change the directory structure for indexed databases on disk without first consulting a reviewer from Apple (&lt;rdar://problem/17454712&gt;)
&gt; &gt; +    // *********
&gt; 
&gt; This is clearly a valuable comment. But is this function the absolute best
&gt; place for it?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ios/NetworkProcessIOS.mm:120
&gt; &gt; +        forEachNetworkSession([](auto&amp; networkSession) {
&gt; 
&gt; Formatting tweak: can’t remember if we use spaces here.
&gt; Cod style tweak: Always love the single words when the scope is small
&gt; enough, so just &quot;session&quot; would be nice.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824758</commentid>
    <comment_count>7</comment_count>
      <attachid>447354</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-16 07:52:27 -0800</bug_when>
    <thetext>Created attachment 447354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824829</commentid>
    <comment_count>8</comment_count>
      <attachid>447376</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-16 11:42:46 -0800</bug_when>
    <thetext>Created attachment 447376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824830</commentid>
    <comment_count>9</comment_count>
      <attachid>447377</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-16 11:53:35 -0800</bug_when>
    <thetext>Created attachment 447377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824834</commentid>
    <comment_count>10</comment_count>
      <attachid>447379</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-16 11:59:11 -0800</bug_when>
    <thetext>Created attachment 447379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824839</commentid>
    <comment_count>11</comment_count>
      <attachid>447381</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-16 12:10:03 -0800</bug_when>
    <thetext>Created attachment 447381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824843</commentid>
    <comment_count>12</comment_count>
      <attachid>447384</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-16 12:28:24 -0800</bug_when>
    <thetext>Created attachment 447384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824880</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-16 14:39:02 -0800</bug_when>
    <thetext>Committed r287159 (245336@main): &lt;https://commits.webkit.org/245336@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447384.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824889</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-16 15:09:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/86598786&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447284</attachid>
            <date>2021-12-15 14:23:19 -0800</date>
            <delta_ts>2021-12-15 14:42:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211215142318.patch</filename>
            <type>text/plain</type>
            <size>28558</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM0MjMzMjkwNTFhZDMy
YTczMDlhYzlhN2FhMGI0NWM0YzE2MTcuLmRlZGJmMjY0NmRkOWNiNDBlYzdlYWNlYTk5MzYxMGRi
OTUzZjJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20g
TmV0d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBl
ciBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGlj
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERh
dGFiYXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpzZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5k
aW5nUHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFu
ZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNh
bmRib3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hD
b29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtRmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZl
TG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGlt
ZW91dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNz
aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JT
Rm9yUmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cnRjRGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVs
dFNlc3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRD
YW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2Vy
dmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Np
b24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0x
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBQcm94eVNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDdl
YTY0OTY3ZmUzNDNiNjg3NzkzMTUwZDQxYjhkNDY1ODkyYzAyLi45YzZkZDhjZTRkOGYwNmEyMDNi
NjQwYWEyMmEwMjVlOTk3ZjMxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9y
cy5oIgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTk0MCw3ICs5NDEsOCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
c0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJl
bmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT53ZWJJREJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlZ2lzdGVyVGVtcG9y
YXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CisgICAgICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPmVu
c3VyZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5l
Y3Rpb24sIGZpbGVQYXRocyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmls
ZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFkNjM2NjJkZjg1NGUyODZjZDhjZWQyMGJhNDFhYjZj
ZTZiZWEwOTEuLjk4OTZlNjAzNjJhMmQyYTg1YjBjZjMwNmIwMDBhM2U3ODNmM2YzZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01
Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlB1c2hN
ZXNzYWdlLmgiCkBAIC0yNjgsMTIgKzI2OSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29r
aWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsm
XSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMo
bmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cisg
ICAgICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VS
ZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4KKyAgICAgICAgbmV0d29ya1Nlc3Npb24uY2xvc2VJREJTZXJ2
ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKLQotICAgIC8vIE1ha2Ugc3Vy
ZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3Zl
ZC4KLSAgICBhdXRvIHNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVycywgeyB9
KTsKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IHNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNl
cnZlci0+Y2xvc2UoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMzkxLDcgKzM4OSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50CiAKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKS5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlm
aWVyKTsKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVy
KCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CiAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKQog
ICAgICAgICBtYW5hZ2VyLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiB9CkBAIC00MDksMTcgKzQwOCwxOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycwogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogCisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKwogICAgIGFkZFN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFt
ZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgYWRkU2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdU
Rk1vdmUocGFyYW1ldGVycykpOwotCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNl
c3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRp
ZgorICAgIH0KKwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90
YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJv
b3RQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBA
IC01NTgsOCArNTU4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIG1fc2Vzc2lvbnNDb250cm9sbGVkQnlBdXRvbWF0
aW9uLnJlbW92ZShzZXNzaW9uSUQpOwogICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkZXN0cm95
RW5naW5lKCp0aGlzLCBzZXNzaW9uSUQpOwogCi0gICAgaWYgKGF1dG8gc2VydmVyID0gbV93ZWJJ
REJTZXJ2ZXJzLnRha2Uoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAg
IHJlbW92ZVN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCkBAIC0xNDgw
LDkgKzE0NzgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBwYXRoID0gbV9p
ZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkg
JiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBu
ZXR3b3JrU2Vzc2lvbiAmJiBuZXR3b3JrU2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsK
KyAgICAgICAgbmV0d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMo
W2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxl
ICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKQEAgLTE1
NTYsOCArMTU1Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCiAgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcygqdGhpcywgc2Vzc2lvbklELCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKQotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVy
XSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgbmV0
d29ya1Nlc3Npb24pCisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIo
KS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2Ns
ZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTE2NTMsOCArMTY1
MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlP
cmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAg
fQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAg
d2ViSURCU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBuZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgbmV0
d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKTsKQEAgLTE4NDUsMTQgKzE4NDIsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNl
c3MKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBh
dGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkgJiYgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsK
LSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMp
IHsKLSAgICAgICAgICAgIGlmICghbV93ZWJJREJTZXJ2ZXJzLmNvbnRhaW5zKHNlc3Npb25JRCkp
CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtTZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJ
REJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHNl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICAgICAgaWYg
KCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMo
b3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICAgICAg
c2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lu
cyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgIH0p
OwogICAgIH0KICAgICAKQEAgLTE5OTMsOSArMTk5MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsCiAgICAgICAgIH0pOwogICAgIH0KICAgICAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFi
YXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSkgewotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtT
ZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAg
ICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgd2hpbGUgKCFvcmln
aW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vi
c2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CiAgICAgICAgIH0pOwpAQCAtMjE3Niw4ICsy
MTcyLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNT
dXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29sIGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAg
YXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3Vz
cGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0
aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFs
dWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7
CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIo
KSkKKyAgICAgICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICB9KTsKIAogICAgIGlmIChhbGxTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTIxODksOCArMjE4NywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVy
cyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQogICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRp
ZmllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChX
ZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7CisgICAgICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAg
ICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRp
b246OkFsd2F5cyk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0yMjYzLDggKzIyNjMs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICB9KTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CisgICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFtdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKKyAgICAgICAgICAgIHNl
cnZlci0+cmVzdW1lKCkpOworICAgIH0pOwogICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMg
PSBmYWxzZTsKICNlbmRpZgogCkBAIC0yMzE4LDQzICsyMzIwLDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBj
b25zdAogICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nl
c3Moc2NoZW1lKTsKIH0KIAotUmVmPFdlYklEQlNlcnZlcj4gTmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZVdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgU3RyaW5nIHBh
dGg7Ci0gICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBBU1NFUlQo
bV9pZGJEYXRhYmFzZVBhdGhzLmNvbnRhaW5zKHNlc3Npb25JRCkpOwotICAgICAgICBwYXRoID0g
bV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIH0KLQotICAgIGF1dG8gc3Bh
Y2VSZXF1ZXN0ZXIgPSBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRF0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgewotICAgICAgICBy
ZXR1cm4gcHJvdGVjdGVkVGhpcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdp
biktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAg
fTsKLQotICAgIGF1dG8gcmVzdWx0ID0gV2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBw
YXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7Ci0gICAgaWYgKG1fc2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMpCi0gICAgICAgIHJlc3VsdC0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNp
b25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotV2ViSURCU2Vy
dmVyJiBOZXR3b3JrUHJvY2Vzczo6d2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSAgICByZXR1cm4gKm1fd2ViSURCU2VydmVycy5lbnN1cmUoc2Vzc2lvbklELCBbdGhp
cywgc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5jcmVhdGVXZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBoYW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBu
b3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBv
biBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxy
ZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2lkYkRhdGFiYXNlUGF0aHMuYWRkKHNlc3Npb25JRCwgaW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5KTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7Ci0gICAgICAgIHNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklELCBpbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2Vz
c2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwpAQCAtMjQwMSw5ICsyMzY2LDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFUKICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5tb3ZlRGF0
YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiAKICAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewot
ICAgICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0g
ICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vz
c2lvbklEKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7
IH0pOworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCisgICAgICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBu
ZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMjYyNiw4ICsyNTkw
LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fd2ViSURCU2VydmVy
cy5nZXQoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkp
CisgICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CisgICAg
fQogCiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9u
SUQpKQogICAgICAgICBtYW5hZ2VyLT5zdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9u
KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRi
NTI5OTc3MGIyMDBlYjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJ
ZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdl
ci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdz
OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNs
YXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBV
c2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cigpIHsgcmV0dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgog
Ci0gICAgV2ViSURCU2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJv
b2wgc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzOyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2
b2lkIHNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJp
bmcmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBj
cmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBpZGJSb290UGF0aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBB
TDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5z
aW9uSW1taW5lbnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEs
NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2Nr
ZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBT
dHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBS
ZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRT
dXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRl
bnRpZmllciB7IDAgfTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBt
X2Z0cEVuYWJsZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5h
Z2VyczsgLy8gRklYTUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3
N2M5YWIuLmJmN2FkNGRmYWNhOTNmZTJjYzRjYTg2NzczN2ExNmFkZWY2MWQ2YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lk
IE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFs
aWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhj
aGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7
CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlm
CkBAIC02MzksNCArNjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3Jr
ZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCitXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQor
eworICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAg
ICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJU
KCFtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJE
YXRhYmFzZVBhdGg7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0g
W25ldHdvcmtQcm9jZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBz
ZXNzaW9uSUQoKV0oY29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkg
eworICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2Vy
KHNlc3Npb25JRCwgb3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNl
UmVxdWVzdGVkKTsKKyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklE
QlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVy
KSk7CisgICAgICAgIGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJz
KCkpCisgICAgICAgICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1
c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJT
ZXJ2ZXI7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2Vi
SURCU2VydmVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0
ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRh
YmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8v
IElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5k
ZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdl
ciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioq
KgorICAgIGF1dG8gaXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lk
YkRhdGFiYXNlUGF0aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcp
IHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7
CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJ
REJSb290UGF0aChzZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4
OGVlZWQxYmZiMmMuLmFhYjlhYTExOTAxNDBhODIxYzBjMjZjZjgwMzdlN2E3MzE2ZTdmY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0
LDYgKzc0LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xh
c3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdl
YlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC0yMDMsNiArMjA0LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCisgICAgV2ViSURC
U2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQor
ICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7CisgICAgdm9pZCBjbG9zZUlE
QlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkSW5kZXhl
ZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBoYXNJREJEYXRhYmFzZVBhdGgo
KSBjb25zdCB7IHJldHVybiAhbV9pZGJEYXRhYmFzZVBhdGguaXNFbXB0eSgpOyB9CisKICAgICBO
ZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKICAgICBQQ006Ok1h
bmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z01vZGUoYm9vbCk7CkBAIC0yOTUsNiArMzAyLDkgQEAgcHJvdGVjdGVkOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRp
ZgogCisgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOworICAgIFJlZlB0cjxXZWJJREJTZXJ2
ZXI+IG1fd2ViSURCU2VydmVyOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhIG1fYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOwogI2VuZGlm
Cg==
</data>
<flag name="commit-queue"
          id="472880"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447286</attachid>
            <date>2021-12-15 14:39:42 -0800</date>
            <delta_ts>2021-12-15 15:10:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211215143942.patch</filename>
            <type>text/plain</type>
            <size>29324</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM0MjMzMjkwNTFhZDMy
YTczMDlhYzlhN2FhMGI0NWM0YzE2MTcuLmRlZGJmMjY0NmRkOWNiNDBlYzdlYWNlYTk5MzYxMGRi
OTUzZjJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20g
TmV0d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBl
ciBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGlj
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERh
dGFiYXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpzZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5k
aW5nUHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFu
ZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNh
bmRib3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hD
b29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtRmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZl
TG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGlt
ZW91dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNz
aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JT
Rm9yUmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cnRjRGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVs
dFNlc3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRD
YW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2Vy
dmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Np
b24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0x
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBQcm94eVNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDdl
YTY0OTY3ZmUzNDNiNjg3NzkzMTUwZDQxYjhkNDY1ODkyYzAyLi45YzZkZDhjZTRkOGYwNmEyMDNi
NjQwYWEyMmEwMjVlOTk3ZjMxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9y
cy5oIgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTk0MCw3ICs5NDEsOCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
c0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJl
bmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT53ZWJJREJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlZ2lzdGVyVGVtcG9y
YXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CisgICAgICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPmVu
c3VyZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5l
Y3Rpb24sIGZpbGVQYXRocyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmls
ZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFkNjM2NjJkZjg1NGUyODZjZDhjZWQyMGJhNDFhYjZj
ZTZiZWEwOTEuLjk4OTZlNjAzNjJhMmQyYTg1YjBjZjMwNmIwMDBhM2U3ODNmM2YzZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01
Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlB1c2hN
ZXNzYWdlLmgiCkBAIC0yNjgsMTIgKzI2OSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29r
aWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsm
XSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMo
bmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cisg
ICAgICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VS
ZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4KKyAgICAgICAgbmV0d29ya1Nlc3Npb24uY2xvc2VJREJTZXJ2
ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKLQotICAgIC8vIE1ha2Ugc3Vy
ZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3Zl
ZC4KLSAgICBhdXRvIHNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVycywgeyB9
KTsKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IHNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNl
cnZlci0+Y2xvc2UoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMzkxLDcgKzM4OSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50CiAKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKS5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlm
aWVyKTsKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVy
KCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CiAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKQog
ICAgICAgICBtYW5hZ2VyLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiB9CkBAIC00MDksMTcgKzQwOCwxOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycwogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogCisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKwogICAgIGFkZFN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFt
ZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgYWRkU2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdU
Rk1vdmUocGFyYW1ldGVycykpOwotCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNl
c3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRp
ZgorICAgIH0KKwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90
YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJv
b3RQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBA
IC01NTgsOCArNTU4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIG1fc2Vzc2lvbnNDb250cm9sbGVkQnlBdXRvbWF0
aW9uLnJlbW92ZShzZXNzaW9uSUQpOwogICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkZXN0cm95
RW5naW5lKCp0aGlzLCBzZXNzaW9uSUQpOwogCi0gICAgaWYgKGF1dG8gc2VydmVyID0gbV93ZWJJ
REJTZXJ2ZXJzLnRha2Uoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAg
IHJlbW92ZVN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCkBAIC0xNDgw
LDkgKzE0NzgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBwYXRoID0gbV9p
ZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkg
JiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBu
ZXR3b3JrU2Vzc2lvbiAmJiBuZXR3b3JrU2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsK
KyAgICAgICAgbmV0d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMo
W2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxl
ICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKQEAgLTE1
NTYsOCArMTU1Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCiAgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcygqdGhpcywgc2Vzc2lvbklELCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKQotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVy
XSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgbmV0
d29ya1Nlc3Npb24pCisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIo
KS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2Ns
ZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTE2NTMsOCArMTY1
MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlP
cmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAg
fQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAg
d2ViSURCU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBuZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgbmV0
d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKTsKQEAgLTE4NDUsMTQgKzE4NDIsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNl
c3MKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBh
dGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkgJiYgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsK
LSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMp
IHsKLSAgICAgICAgICAgIGlmICghbV93ZWJJREJTZXJ2ZXJzLmNvbnRhaW5zKHNlc3Npb25JRCkp
CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtTZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJ
REJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHNl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICAgICAgaWYg
KCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMo
b3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICAgICAg
c2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lu
cyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgIH0p
OwogICAgIH0KICAgICAKQEAgLTE5OTMsOSArMTk5MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsCiAgICAgICAgIH0pOwogICAgIH0KICAgICAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFi
YXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSkgewotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtT
ZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAg
ICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgd2hpbGUgKCFvcmln
aW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vi
c2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CiAgICAgICAgIH0pOwpAQCAtMjE3Niw4ICsy
MTcyLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNT
dXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29sIGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAg
YXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3Vz
cGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0
aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFs
dWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7
CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIo
KSkKKyAgICAgICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICB9KTsKIAogICAgIGlmIChhbGxTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTIxODksOCArMjE4NywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVy
cyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQogICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRp
ZmllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChX
ZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7CisgICAgICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAg
ICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRp
b246OkFsd2F5cyk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0yMjYzLDggKzIyNjMs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICB9KTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CisgICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFtdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKKyAgICAgICAgICAgIHNl
cnZlci0+cmVzdW1lKCkpOworICAgIH0pOwogICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMg
PSBmYWxzZTsKICNlbmRpZgogCkBAIC0yMzE4LDQzICsyMzIwLDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBj
b25zdAogICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nl
c3Moc2NoZW1lKTsKIH0KIAotUmVmPFdlYklEQlNlcnZlcj4gTmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZVdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgU3RyaW5nIHBh
dGg7Ci0gICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBBU1NFUlQo
bV9pZGJEYXRhYmFzZVBhdGhzLmNvbnRhaW5zKHNlc3Npb25JRCkpOwotICAgICAgICBwYXRoID0g
bV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIH0KLQotICAgIGF1dG8gc3Bh
Y2VSZXF1ZXN0ZXIgPSBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRF0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgewotICAgICAgICBy
ZXR1cm4gcHJvdGVjdGVkVGhpcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdp
biktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAg
fTsKLQotICAgIGF1dG8gcmVzdWx0ID0gV2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBw
YXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7Ci0gICAgaWYgKG1fc2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMpCi0gICAgICAgIHJlc3VsdC0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNp
b25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotV2ViSURCU2Vy
dmVyJiBOZXR3b3JrUHJvY2Vzczo6d2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSAgICByZXR1cm4gKm1fd2ViSURCU2VydmVycy5lbnN1cmUoc2Vzc2lvbklELCBbdGhp
cywgc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5jcmVhdGVXZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBoYW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBu
b3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBv
biBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxy
ZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2lkYkRhdGFiYXNlUGF0aHMuYWRkKHNlc3Npb25JRCwgaW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5KTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7Ci0gICAgICAgIHNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklELCBpbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2Vz
c2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwpAQCAtMjQwMSw5ICsyMzY2LDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFUKICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5tb3ZlRGF0
YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiAKICAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewot
ICAgICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0g
ICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vz
c2lvbklEKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7
IH0pOworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCisgICAgICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBu
ZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMjYyNiw4ICsyNTkw
LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fd2ViSURCU2VydmVy
cy5nZXQoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkp
CisgICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CisgICAg
fQogCiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9u
SUQpKQogICAgICAgICBtYW5hZ2VyLT5zdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9u
KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRi
NTI5OTc3MGIyMDBlYjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJ
ZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdl
ci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdz
OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNs
YXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBV
c2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cigpIHsgcmV0dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgog
Ci0gICAgV2ViSURCU2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJv
b2wgc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzOyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2
b2lkIHNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJp
bmcmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBj
cmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBpZGJSb290UGF0aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBB
TDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5z
aW9uSW1taW5lbnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEs
NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2Nr
ZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBT
dHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBS
ZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRT
dXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRl
bnRpZmllciB7IDAgfTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBt
X2Z0cEVuYWJsZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5h
Z2VyczsgLy8gRklYTUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3
N2M5YWIuLmJmN2FkNGRmYWNhOTNmZTJjYzRjYTg2NzczN2ExNmFkZWY2MWQ2YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lk
IE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFs
aWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhj
aGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7
CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlm
CkBAIC02MzksNCArNjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3Jr
ZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCitXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQor
eworICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAg
ICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJU
KCFtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJE
YXRhYmFzZVBhdGg7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0g
W25ldHdvcmtQcm9jZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBz
ZXNzaW9uSUQoKV0oY29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkg
eworICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2Vy
KHNlc3Npb25JRCwgb3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNl
UmVxdWVzdGVkKTsKKyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklE
QlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVy
KSk7CisgICAgICAgIGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJz
KCkpCisgICAgICAgICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1
c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJT
ZXJ2ZXI7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2Vi
SURCU2VydmVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0
ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRh
YmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8v
IElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5k
ZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdl
ciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioq
KgorICAgIGF1dG8gaXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lk
YkRhdGFiYXNlUGF0aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcp
IHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7
CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJ
REJSb290UGF0aChzZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4
OGVlZWQxYmZiMmMuLmFhYjlhYTExOTAxNDBhODIxYzBjMjZjZjgwMzdlN2E3MzE2ZTdmY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0
LDYgKzc0LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xh
c3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdl
YlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC0yMDMsNiArMjA0LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCisgICAgV2ViSURC
U2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQor
ICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7CisgICAgdm9pZCBjbG9zZUlE
QlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkSW5kZXhl
ZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBoYXNJREJEYXRhYmFzZVBhdGgo
KSBjb25zdCB7IHJldHVybiAhbV9pZGJEYXRhYmFzZVBhdGguaXNFbXB0eSgpOyB9CisKICAgICBO
ZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKICAgICBQQ006Ok1h
bmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z01vZGUoYm9vbCk7CkBAIC0yOTUsNiArMzAyLDkgQEAgcHJvdGVjdGVkOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRp
ZgogCisgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOworICAgIFJlZlB0cjxXZWJJREJTZXJ2
ZXI+IG1fd2ViSURCU2VydmVyOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhIG1fYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9j
ZXNzSU9TLm1tCmluZGV4IGY4ZGNmMTUxY2M4OGMwMzkyYzhmM2NkYmUyNDUzYjUyODdlMDNhNDAu
LjFlYTMzYmJmMzM0M2E2Yjg1MjZmYTE3MDMxNzE2ODVjMDUyZTcwZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBA
IC0xMTYsOCArMTE2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tl
ZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAgICAgICAgIGlmICghbV9zaG91bGRT
dXNwZW5kSURCU2VydmVycykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKGF1
dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZl
ci0+c3VzcGVuZCgpOworICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgbmV0
d29ya1Nlc3Npb24pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBuZXR3b3JrU2Vz
c2lvbi53ZWJJREJTZXJ2ZXIoKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoKTsK
KyAgICAgICAgfSkKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447288</attachid>
            <date>2021-12-15 15:10:47 -0800</date>
            <delta_ts>2021-12-15 15:38:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211215151046.patch</filename>
            <type>text/plain</type>
            <size>29592</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM0MjMzMjkwNTFhZDMy
YTczMDlhYzlhN2FhMGI0NWM0YzE2MTcuLmRlZGJmMjY0NmRkOWNiNDBlYzdlYWNlYTk5MzYxMGRi
OTUzZjJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20g
TmV0d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBl
ciBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGlj
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERh
dGFiYXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpzZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5k
aW5nUHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFu
ZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNh
bmRib3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hD
b29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtRmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZl
TG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGlt
ZW91dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNz
aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JT
Rm9yUmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cnRjRGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVs
dFNlc3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRD
YW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2Vy
dmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Np
b24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0x
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBQcm94eVNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDdl
YTY0OTY3ZmUzNDNiNjg3NzkzMTUwZDQxYjhkNDY1ODkyYzAyLi45YzZkZDhjZTRkOGYwNmEyMDNi
NjQwYWEyMmEwMjVlOTk3ZjMxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9y
cy5oIgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTk0MCw3ICs5NDEsOCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
c0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJl
bmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT53ZWJJREJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlZ2lzdGVyVGVtcG9y
YXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CisgICAgICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPmVu
c3VyZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5l
Y3Rpb24sIGZpbGVQYXRocyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmls
ZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFkNjM2NjJkZjg1NGUyODZjZDhjZWQyMGJhNDFhYjZj
ZTZiZWEwOTEuLjk4OTZlNjAzNjJhMmQyYTg1YjBjZjMwNmIwMDBhM2U3ODNmM2YzZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01
Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlB1c2hN
ZXNzYWdlLmgiCkBAIC0yNjgsMTIgKzI2OSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29r
aWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsm
XSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMo
bmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cisg
ICAgICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VS
ZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4KKyAgICAgICAgbmV0d29ya1Nlc3Npb24uY2xvc2VJREJTZXJ2
ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKLQotICAgIC8vIE1ha2Ugc3Vy
ZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3Zl
ZC4KLSAgICBhdXRvIHNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVycywgeyB9
KTsKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IHNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNl
cnZlci0+Y2xvc2UoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMzkxLDcgKzM4OSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50CiAKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKS5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlm
aWVyKTsKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVy
KCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CiAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKQog
ICAgICAgICBtYW5hZ2VyLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiB9CkBAIC00MDksMTcgKzQwOCwxOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycwogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogCisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKwogICAgIGFkZFN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFt
ZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgYWRkU2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdU
Rk1vdmUocGFyYW1ldGVycykpOwotCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNl
c3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRp
ZgorICAgIH0KKwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90
YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJv
b3RQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBA
IC01NTgsOCArNTU4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIG1fc2Vzc2lvbnNDb250cm9sbGVkQnlBdXRvbWF0
aW9uLnJlbW92ZShzZXNzaW9uSUQpOwogICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkZXN0cm95
RW5naW5lKCp0aGlzLCBzZXNzaW9uSUQpOwogCi0gICAgaWYgKGF1dG8gc2VydmVyID0gbV93ZWJJ
REJTZXJ2ZXJzLnRha2Uoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAg
IHJlbW92ZVN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCkBAIC0xNDgw
LDkgKzE0NzgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBwYXRoID0gbV9p
ZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkg
JiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBu
ZXR3b3JrU2Vzc2lvbiAmJiBuZXR3b3JrU2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsK
KyAgICAgICAgbmV0d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMo
W2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxl
ICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKQEAgLTE1
NTYsOCArMTU1Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCiAgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcygqdGhpcywgc2Vzc2lvbklELCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKQotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVy
XSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgbmV0
d29ya1Nlc3Npb24pCisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIo
KS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2Ns
ZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTE2NTMsOCArMTY1
MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlP
cmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAg
fQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAg
d2ViSURCU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBuZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgbmV0
d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKTsKQEAgLTE4NDUsMTQgKzE4NDIsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNl
c3MKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBh
dGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkgJiYgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsK
LSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMp
IHsKLSAgICAgICAgICAgIGlmICghbV93ZWJJREJTZXJ2ZXJzLmNvbnRhaW5zKHNlc3Npb25JRCkp
CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtTZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJ
REJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHNl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICAgICAgaWYg
KCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMo
b3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICAgICAg
c2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lu
cyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgIH0p
OwogICAgIH0KICAgICAKQEAgLTE5OTMsOSArMTk5MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsCiAgICAgICAgIH0pOwogICAgIH0KICAgICAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFi
YXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSkgewotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtT
ZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAg
ICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgd2hpbGUgKCFvcmln
aW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vi
c2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CiAgICAgICAgIH0pOwpAQCAtMjE3Niw4ICsy
MTcyLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNT
dXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29sIGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAg
YXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3Vz
cGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0
aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFs
dWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7
CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIo
KSkKKyAgICAgICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICB9KTsKIAogICAgIGlmIChhbGxTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTIxODksOCArMjE4NywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVy
cyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQogICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRp
ZmllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChX
ZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7CisgICAgICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAg
ICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRp
b246OkFsd2F5cyk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0yMjYzLDggKzIyNjMs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICB9KTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CisgICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFtdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKKyAgICAgICAgICAgIHNl
cnZlci0+cmVzdW1lKCkpOworICAgIH0pOwogICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMg
PSBmYWxzZTsKICNlbmRpZgogCkBAIC0yMzE4LDQzICsyMzIwLDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBj
b25zdAogICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nl
c3Moc2NoZW1lKTsKIH0KIAotUmVmPFdlYklEQlNlcnZlcj4gTmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZVdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgU3RyaW5nIHBh
dGg7Ci0gICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBBU1NFUlQo
bV9pZGJEYXRhYmFzZVBhdGhzLmNvbnRhaW5zKHNlc3Npb25JRCkpOwotICAgICAgICBwYXRoID0g
bV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIH0KLQotICAgIGF1dG8gc3Bh
Y2VSZXF1ZXN0ZXIgPSBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRF0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgewotICAgICAgICBy
ZXR1cm4gcHJvdGVjdGVkVGhpcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdp
biktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Ci0gICAg
fTsKLQotICAgIGF1dG8gcmVzdWx0ID0gV2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBw
YXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7Ci0gICAgaWYgKG1fc2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMpCi0gICAgICAgIHJlc3VsdC0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNp
b25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotV2ViSURCU2Vy
dmVyJiBOZXR3b3JrUHJvY2Vzczo6d2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSAgICByZXR1cm4gKm1fd2ViSURCU2VydmVycy5lbnN1cmUoc2Vzc2lvbklELCBbdGhp
cywgc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiB0aGlzLT5jcmVhdGVXZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiBoYW5kbGUpCi17Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBu
b3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBv
biBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxy
ZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2lkYkRhdGFiYXNlUGF0aHMuYWRkKHNlc3Npb25JRCwgaW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5KTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7Ci0gICAgICAgIHNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vzc2lvbklELCBpbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnkpOwotICAgIH0KLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2Vz
c2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
c2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwpAQCAtMjQwMSw5ICsyMzY2LDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFUKICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5tb3ZlRGF0
YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiAKICAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewot
ICAgICAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0g
ICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vz
c2lvbklEKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7
IH0pOworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7IHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpCisgICAgICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5yZW5hbWVPcmlnaW4ob2xkT3JpZ2luLCBu
ZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMjYyNiw4ICsyNTkw
LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fd2ViSURCU2VydmVy
cy5nZXQoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi0+d2ViSURCU2VydmVyKCkp
CisgICAgICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CisgICAg
fQogCiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9u
SUQpKQogICAgICAgICBtYW5hZ2VyLT5zdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9u
KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRi
NTI5OTc3MGIyMDBlYjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgotI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJ
ZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdl
ci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdz
OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNs
YXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBV
c2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cigpIHsgcmV0dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgog
Ci0gICAgV2ViSURCU2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJv
b2wgc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzOyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2
b2lkIHNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
Ci0gICAgdm9pZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJp
bmcmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBj
cmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBpZGJSb290UGF0aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBB
TDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5z
aW9uSW1taW5lbnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEs
NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2Nr
ZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBT
dHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBS
ZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRT
dXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRl
bnRpZmllciB7IDAgfTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBt
X2Z0cEVuYWJsZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVm
PE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5h
Z2VyczsgLy8gRklYTUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3
N2M5YWIuLmJmN2FkNGRmYWNhOTNmZTJjYzRjYTg2NzczN2ExNmFkZWY2MWQ2YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lk
IE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFs
aWRhdGVBbmRDYW5jZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhj
aGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7
CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlm
CkBAIC02MzksNCArNjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3Jr
ZXJEYXRhYmFzZVBhdGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCitXZWJJREJTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQor
eworICAgIGlmICghbV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAg
ICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJU
KCFtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJE
YXRhYmFzZVBhdGg7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0g
W25ldHdvcmtQcm9jZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBz
ZXNzaW9uSUQoKV0oY29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkg
eworICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2Vy
KHNlc3Npb25JRCwgb3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNl
UmVxdWVzdGVkKTsKKyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklE
QlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVy
KSk7CisgICAgICAgIGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJz
KCkpCisgICAgICAgICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1
c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJT
ZXJ2ZXI7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2Vi
SURCU2VydmVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0
ZDo6ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRh
YmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8v
IElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5k
ZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdl
ciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioq
KgorICAgIGF1dG8gaXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lk
YkRhdGFiYXNlUGF0aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcp
IHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7
CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJ
REJSb290UGF0aChzZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4
OGVlZWQxYmZiMmMuLmFhYjlhYTExOTAxNDBhODIxYzBjMjZjZjgwMzdlN2E3MzE2ZTdmY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0
LDYgKzc0LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xh
c3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdl
YlBhZ2VOZXR3b3JrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTsKIGNsYXNzIFdlYlNvY2tldFRhc2s7CkBAIC0yMDMsNiArMjA0LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCisgICAgV2ViSURC
U2VydmVyKiB3ZWJJREJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQor
ICAgIFdlYklEQlNlcnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7CisgICAgdm9pZCBjbG9zZUlE
QlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkSW5kZXhl
ZERhdGFiYXNlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBoYXNJREJEYXRhYmFzZVBhdGgo
KSBjb25zdCB7IHJldHVybiAhbV9pZGJEYXRhYmFzZVBhdGguaXNFbXB0eSgpOyB9CisKICAgICBO
ZXR3b3JrTG9hZFNjaGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKICAgICBQQ006Ok1h
bmFnZXJJbnRlcmZhY2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z01vZGUoYm9vbCk7CkBAIC0yOTUsNiArMzAyLDkgQEAgcHJvdGVjdGVkOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRp
ZgogCisgICAgU3RyaW5nIG1faWRiRGF0YWJhc2VQYXRoOworICAgIFJlZlB0cjxXZWJJREJTZXJ2
ZXI+IG1fd2ViSURCU2VydmVyOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhIG1fYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9j
ZXNzSU9TLm1tCmluZGV4IGY4ZGNmMTUxY2M4OGMwMzkyYzhmM2NkYmUyNDUzYjUyODdlMDNhNDAu
LjYyMjc4MGE4ZjgzNGU1OGUzMDIwZTBlYTQ5NzliNTBhZWMwNGU0ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBA
IC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJT
YW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJTZWNJdGVtU2hpbS5o
IgorI2ltcG9ydCAiV2ViSURCU2VydmVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRl
SW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTYsOCArMTE3LDEwIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xk
aW5nTG9ja2VkRmlsZXMpCiAgICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycykK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2Vi
SURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOworICAg
ICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIo
KSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="472889"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447292</attachid>
            <date>2021-12-15 15:34:32 -0800</date>
            <delta_ts>2021-12-16 07:52:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211215153431.patch</filename>
            <type>text/plain</type>
            <size>29591</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM0MjMzMjkwNTFhZDMy
YTczMDlhYzlhN2FhMGI0NWM0YzE2MTcuLmRlZGJmMjY0NmRkOWNiNDBlYzdlYWNlYTk5MzYxMGRi
OTUzZjJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20g
TmV0d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBl
ciBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KToKKyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGlj
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERh
dGFiYXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpzZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5k
aW5nUHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFu
ZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNh
bmRib3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hD
b29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtRmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3Rpbmcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZl
TG9hZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGlt
ZW91dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNz
aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JT
Rm9yUmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cnRjRGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVs
dFNlc3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRD
YW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2Vy
dmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Np
b24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0x
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBQcm94eVNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDdl
YTY0OTY3ZmUzNDNiNjg3NzkzMTUwZDQxYjhkNDY1ODkyYzAyLi45YzZkZDhjZTRkOGYwNmEyMDNi
NjQwYWEyMmEwMjVlOTk3ZjMxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9y
cy5oIgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTk0MCw3ICs5NDEsOCBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
c0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJl
bmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT53ZWJJREJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlZ2lzdGVyVGVtcG9y
YXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CisgICAgICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPmVu
c3VyZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5l
Y3Rpb24sIGZpbGVQYXRocyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmls
ZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFkNjM2NjJkZjg1NGUyODZjZDhjZWQyMGJhNDFhYjZj
ZTZiZWEwOTEuLmQ4NDEzMGU1MTBlOTU2ZWE4ZWNlNmUyNmU1NjVjNWJiYmU3ODYwMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01
Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgorI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlB1c2hN
ZXNzYWdlLmgiCkBAIC0yNjgsMTIgKzI2OSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGZsdXNoIGFsbCBjb29r
aWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsm
XSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMo
bmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cisg
ICAgICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VS
ZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4KKyAgICAgICAgbmV0d29ya1Nlc3Npb24uY2xvc2VJREJTZXJ2
ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKLQotICAgIC8vIE1ha2Ugc3Vy
ZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3Zl
ZC4KLSAgICBhdXRvIHNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVycywgeyB9
KTsKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IHNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNl
cnZlci0+Y2xvc2UoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMzkxLDcgKzM4OSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50CiAKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIo
c2Vzc2lvbklEKS5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlm
aWVyKTsKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVy
KCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CiAg
ICAgaWYgKGF1dG8gbWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpKQog
ICAgICAgICBtYW5hZ2VyLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKSk7CiB9CkBAIC00MDksMTcgKzQwOCwxOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycwogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogCisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKwogICAgIGFkZFN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFt
ZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VE
aXJlY3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgYWRkU2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJh
bWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihz
ZXNzaW9uSUQsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdU
Rk1vdmUocGFyYW1ldGVycykpOwotCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNl
c3Npb24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRp
ZgorICAgIH0KKwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90
YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJv
b3RQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBA
IC01NTgsOCArNTU4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIG1fc2Vzc2lvbnNDb250cm9sbGVkQnlBdXRvbWF0
aW9uLnJlbW92ZShzZXNzaW9uSUQpOwogICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkZXN0cm95
RW5naW5lKCp0aGlzLCBzZXNzaW9uSUQpOwogCi0gICAgaWYgKGF1dG8gc2VydmVyID0gbV93ZWJJ
REJTZXJ2ZXJzLnRha2Uoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAg
IHJlbW92ZVN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCkBAIC0xNDgw
LDkgKzE0NzgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBwYXRoID0gbV9p
ZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkg
JiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBu
ZXR3b3JrU2Vzc2lvbiAmJiBuZXR3b3JrU2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsK
KyAgICAgICAgbmV0d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMo
W2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxl
ICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNp
dGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKQEAgLTE1
NTYsOCArMTU1Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkpCiAgICAgICAgIENh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhckFsbENhY2hlcygqdGhpcywgc2Vzc2lvbklELCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKQotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0
ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVy
XSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgbmV0
d29ya1Nlc3Npb24pCisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIo
KS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSwgW2Ns
ZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTE2NTMsOCArMTY1
MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlP
cmlnaW5EYXRhIHsgb3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAg
fQogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAg
d2ViSURCU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBuZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgbmV0
d29ya1Nlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25zKTsKQEAgLTE4NDUsMTQgKzE4NDIsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNl
c3MKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBh
dGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkgJiYgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsK
LSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMp
IHsKLSAgICAgICAgICAgIGlmICghbV93ZWJJREJTZXJ2ZXJzLmNvbnRhaW5zKHNlc3Npb25JRCkp
CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtTZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJ
REJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURC
U2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8qIHNl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICAgICAgaWYg
KCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVsZXRlID0gZmlsdGVyRm9yUmVn
aXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNp
dGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucyk7Ci0gICAgICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMo
b3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICAgICAg
c2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lu
cyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgICAgIH0p
OwogICAgIH0KICAgICAKQEAgLTE5OTMsOSArMTk5MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsCiAgICAgICAgIH0pOwogICAgIH0KICAgICAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFi
YXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSkgewotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIG5ldHdvcmtT
ZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAg
ICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgewogICAgICAgICAgICAgd2hpbGUgKCFvcmln
aW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vi
c2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFU
eXBlOjpJbmRleGVkREJEYXRhYmFzZXMsIDAgfSk7CiAgICAgICAgIH0pOwpAQCAtMjE3Niw4ICsy
MTcyLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNT
dXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29sIGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAg
YXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3Vz
cGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0
aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFs
dWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7
CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIo
KSkKKyAgICAgICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9u
KTsKKyAgICB9KTsKIAogICAgIGlmIChhbGxTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTIxODksOCArMjE4NywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVy
cyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQogICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRp
ZmllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChX
ZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyk7CisgICAgICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICAgICAg
aWYgKGF1dG8qIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAg
ICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRp
b246OkFsd2F5cyk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0yMjYzLDggKzIyNjMs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICB9KTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7CisgICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFtdKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKKyAgICAgICAgICAgIHNl
cnZlci0+cmVzdW1lKCk7CisgICAgfSk7CiAgICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyA9
IGZhbHNlOwogI2VuZGlmCiAKQEAgLTIzMTgsNDMgKzIzMjAsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNv
bnN0CiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vz
cyhzY2hlbWUpOwogfQogCi1SZWY8V2ViSURCU2VydmVyPiBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRl
V2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBTdHJpbmcgcGF0
aDsKLSAgICBpZiAoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIEFTU0VSVCht
X2lkYkRhdGFiYXNlUGF0aHMuY29udGFpbnMoc2Vzc2lvbklEKSk7Ci0gICAgICAgIHBhdGggPSBt
X2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgfQotCi0gICAgYXV0byBzcGFj
ZVJlcXVlc3RlciA9IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklEXShj
b25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0gICAgICAgIHJl
dHVybiBwcm90ZWN0ZWRUaGlzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgb3JpZ2lu
KS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsKLSAgICB9
OwotCi0gICAgYXV0byByZXN1bHQgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHBh
dGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5kSURC
U2VydmVycykKLSAgICAgICAgcmVzdWx0LT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lv
bkNvbmRpdGlvbjo6QWx3YXlzKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1XZWJJREJTZXJ2
ZXImIE5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQotewotICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXJzLmVuc3VyZShzZXNzaW9uSUQsIFt0aGlz
LCBzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIHRoaXMtPmNyZWF0ZVdlYklEQlNlcnZlcihz
ZXNzaW9uSUQpOwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKLX0KLQotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGhhbmRsZSkKLXsKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERvIG5v
dCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9u
IGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJk
YXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGFkZFJl
c3VsdCA9IG1faWRiRGF0YWJhc2VQYXRocy5hZGQoc2Vzc2lvbklELCBpbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnkpOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKLSAgICAgICAgc2V0U2Vz
c2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChzZXNzaW9uSUQsIGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTZXNz
aW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBpZGJSb290UGF0aCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9z
ZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07CkBAIC0yNDAxLDkgKzIzNjYsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVQogICAgICAgICBpdGVyYXRvci0+dmFsdWUtPm1vdmVEYXRh
KG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKIAogICAgIGlmIChkYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7Ci0g
ICAgICAgIGF1dG8gcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAg
ICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHdlYklEQlNlcnZlcihzZXNz
aW9uSUQpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsg
fSk7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KTsgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkKKyAgICAgICAgICAg
IHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5l
d09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0yNjI2LDggKzI1OTAs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRv
V2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAoYXV0byogc2VydmVyID0gbV93ZWJJREJTZXJ2ZXJz
LmdldChzZXNzaW9uSUQpKQotICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29ubmVj
dGlvbik7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkK
KyAgICAgICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAgICB9
CiAKICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25J
RCkpCiAgICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24o
Y29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggY2RiMDM5ODlkZjZhZDVhY2NjMTRiMzRjNTM1NzA0ODg5MjczOWM3OC4uNGI1
Mjk5NzcwYjIwMGViMjY2YTUzYmIxYWI1ZWU1M2VlZDJhNGIyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCi0jaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCkBAIC00NCwxMyArNDMsMTMgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElk
ZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlUXVvdGFNYW5hZ2Vy
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTgyLDcgKzgxLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ3VybFByb3h5U2V0dGluZ3M7
CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7Ci1jbGFzcyBTdG9yYWdlUXVvdGFNYW5hZ2VyOwogY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFVz
ZXJDb250ZW50VVJMUGF0dGVybjsKQEAgLTI5Myw3ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXImIG5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
KCkgeyByZXR1cm4gbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjsgfQogI2VuZGlmCiAK
LSAgICBXZWJJREJTZXJ2ZXImIHdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCk7CisgICAgYm9v
bCBzaG91bGRTdXNwZW5kSURCU2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnM7IH0KIAogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCkBAIC0zODYsNiArMzg0LDggQEAgcHVibGljOgogICAgIHZvaWQg
ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmlj
YXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKIAorICAgIHZv
aWQgc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBpZGJSb290UGF0aCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpOwogCkBAIC00NzgsMTAgKzQ3OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAK
LSAgICB2b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFN0cmlu
ZyYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwotICAgIFJlZjxXZWJJREJTZXJ2ZXI+IGNy
ZWF0ZVdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBzZXRTZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkYlJvb3RQYXRoKTsKLSAgICB2b2lkIHJlbW92ZVdlYklEQlNlcnZlcklmUG9zc2libGUoUEFM
OjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc3VzcGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNp
b25JbW1pbmVudCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTY1LDggKzU2MSw2
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tl
ZEZpbGVBc3NlcnRpb247CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0
cmluZz4gbV9pZGJEYXRhYmFzZVBhdGhzOwotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJl
ZlB0cjxXZWJJREJTZXJ2ZXI+PiBtX3dlYklEQlNlcnZlcnM7CiAgICAgYm9vbCBtX3Nob3VsZFN1
c3BlbmRJREJTZXJ2ZXJzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX3N1c3BlbnNpb25JZGVu
dGlmaWVyIHsgMCB9OwogICAgIApAQCAtNTg5LDcgKzU4Myw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1f
ZnRwRW5hYmxlZCB7IGZhbHNlIH07CiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWY8
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPj4gbV9zdG9yYWdlTWFuYWdlcnM7CisgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtTdG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFn
ZXJzOyAvLyBGSVhNRTogU2hvdWxkIG1vdmUgdG8gTmV0d29ya1Nlc3Npb24uCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKaW5kZXggYzUzYTBhODQwY2ZjYTlkOWU5MTg0ODIxY2ZmNGQ2ZTJhZDc3
YzlhYi4uYmY3YWQ0ZGZhY2E5M2ZlMmNjNGNhODY3NzM3YTE2YWRlZjYxZDZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCIKICNp
bmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKKyNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtMTk3LDYgKzE5OCw4IEBAIHZvaWQg
TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgIGlmIChtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW52YWxp
ZGF0ZUFuZENhbmNlbCgpOwogI2VuZGlmCisgICAgaWYgKGF1dG8gc2VydmVyID0gc3RkOjpleGNo
YW5nZShtX3dlYklEQlNlcnZlciwgbnVsbHB0cikpCisgICAgICAgIHNlcnZlci0+Y2xvc2UoKTsK
ICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faXNJbnZhbGlkYXRlZCA9IHRydWU7CiAjZW5kaWYK
QEAgLTYzOSw0ICs2NDIsNDUgQEAgYm9vbCBOZXR3b3JrU2Vzc2lvbjo6aGFzU2VydmljZVdvcmtl
ckRhdGFiYXNlUGF0aCgpIGNvbnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKK1dlYklEQlNlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVdlYklEQlNlcnZlcigpCit7
CisgICAgaWYgKCFtX3dlYklEQlNlcnZlcikgeworICAgICAgICBTdHJpbmcgcGF0aDsKKyAgICAg
ICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7CisgICAgICAgICAgICBBU1NFUlQo
IW1faWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIHBhdGggPSBtX2lkYkRh
dGFiYXNlUGF0aDsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc3BhY2VSZXF1ZXN0ZXIgPSBb
bmV0d29ya1Byb2Nlc3MgPSBSZWYgeyBuZXR3b3JrUHJvY2VzcygpIH0sIHNlc3Npb25JRCA9IHNl
c3Npb25JRCgpXShjb25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7
CisgICAgICAgICAgICByZXR1cm4gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VRdW90YU1hbmFnZXIo
c2Vzc2lvbklELCBvcmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VS
ZXF1ZXN0ZWQpOworICAgICAgICB9OworCisgICAgICAgIG1fd2ViSURCU2VydmVyID0gV2ViSURC
U2VydmVyOjpjcmVhdGUoc2Vzc2lvbklEKCksIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIp
KTsKKyAgICAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkuc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMo
KSkKKyAgICAgICAgICAgIG1fd2ViSURCU2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3Vz
cGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKKyAgICB9CisgICAgcmV0dXJuICptX3dlYklEQlNl
cnZlcjsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV93ZWJJ
REJTZXJ2ZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgc3Rk
OjpleGNoYW5nZShtX3dlYklEQlNlcnZlciwgbnVsbHB0ciktPmNsb3NlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpCit7CisgICAgLy8gKioqKioqKioqCisgICAgLy8g
SU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRl
eGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2Vy
IGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCisgICAgLy8gKioqKioqKioq
CisgICAgYXV0byBpc05ldyA9IG1faWRiRGF0YWJhc2VQYXRoLmlzTnVsbCgpOworICAgIG1faWRi
RGF0YWJhc2VQYXRoID0gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OworICAgIGlmIChpc05ldykg
eworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsK
KyAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS5zZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklE
QlJvb3RQYXRoKHNlc3Npb25JRCgpLCBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOworICAgIH0K
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYzEzYzA1ZWQ2NzQ4NjE4OGEzNDMwMzEzYTA0MDg4
ZWVlZDFiZmIyYy4uYWFiOWFhMTE5MDE0MGE4MjFjMGMyNmNmODAzN2U3YTczMTZlN2ZjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNzQs
NiArNzQsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBOZXR3b3JrQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOworY2xhc3MgV2ViSURCU2VydmVyOwogY2xhc3MgV2Vi
UGFnZU5ldHdvcmtQYXJhbWV0ZXJzOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOwogY2xhc3MgV2ViU29ja2V0VGFzazsKQEAgLTIwMyw2ICsyMDQsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKKyAgICBXZWJJREJT
ZXJ2ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVyLmdldCgpOyB9Cisg
ICAgV2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKKyAgICB2b2lkIGNsb3NlSURC
U2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBhZGRJbmRleGVk
RGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIGhhc0lEQkRhdGFiYXNlUGF0aCgp
IGNvbnN0IHsgcmV0dXJuICFtX2lkYkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7IH0KKwogICAgIE5l
dHdvcmtMb2FkU2NoZWR1bGVyJiBuZXR3b3JrTG9hZFNjaGVkdWxlcigpOwogICAgIFBDTTo6TWFu
YWdlckludGVyZmFjZSYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSB7IHJldHVybiBtX3ByaXZh
dGVDbGlja01lYXN1cmVtZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERlYnVnTW9kZShib29sKTsKQEAgLTI5NSw2ICszMDIsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2VydmVyOwogI2VuZGlm
CiAKKyAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7CisgICAgUmVmUHRyPFdlYklEQlNlcnZl
cj4gbV93ZWJJREJTZXJ2ZXI7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBBcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGEgbV9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9j
ZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nl
c3NJT1MubW0KaW5kZXggZjhkY2YxNTFjYzg4YzAzOTJjOGYzY2RiZTI0NTNiNTI4N2UwM2E0MC4u
NjIyNzgwYThmODM0ZTU4ZTMwMjBlMGVhNDk3OWI1MGFlYzA0ZTRlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAg
LTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlByb2Nlc3NBc3NlcnRpb24uaCIKICNpbXBvcnQgIlNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlNlY0l0ZW1TaGltLmgi
CisjaW1wb3J0ICJXZWJJREJTZXJ2ZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJ
bmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTExNiw4ICsxMTcsMTAgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykKICAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93ZWJJ
REJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7CisgICAg
ICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBuZXR3b3JrU2Vzc2lvbikgeworICAg
ICAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLndlYklEQlNlcnZlcigp
KQorICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOworICAgICAgICB9KTsKICAgICB9
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447354</attachid>
            <date>2021-12-16 07:52:27 -0800</date>
            <delta_ts>2021-12-16 11:42:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211216075226.patch</filename>
            <type>text/plain</type>
            <size>90841</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM0MjMzMjkwNTFhZDMy
YTczMDlhYzlhN2FhMGI0NWM0YzE2MTcuLjQwM2IwNDA0MDU4MzI4ZjEwYjcxZTg1NjllYmU3Nzcx
ZWMxNmFiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20gTmV0
d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBlciBz
ZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNX
aXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VzcGVu
ZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hDb29r
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
Rmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZlTG9h
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0
QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91
dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
QXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JTRm9y
UmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVsdFNl
c3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5j
ZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0xNSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSBQcm94eVNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0ZDdlYTY0
OTY3ZmUzNDNiNjg3NzkzMTUwZDQxYjhkNDY1ODkyYzAyLi45YzZkZDhjZTRkOGYwNmEyMDNiNjQw
YWEyMmEwMjVlOTk3ZjMxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTgs
NiArNTgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5o
IgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTk0MCw3ICs5NDEsOCBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlc0Zv
ckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNl
cykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAotICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT53ZWJJREJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlZ2lzdGVyVGVtcG9yYXJ5
QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CisgICAgICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKKyAgICAgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rp
b24sIGZpbGVQYXRocyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZmlsZVBh
dGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFkNjM2NjJkZjg1NGUyODZjZDhjZWQyMGJhNDFhYjZjZTZi
ZWEwOTEuLjY2MDNlZjRlMjI5ODg1NTdiNDlmNjRmMmNhMjRhNzMxZGQzMTU5ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01Niw2
ICs1Niw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgorI2luY2x1
ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlB1c2hNZXNz
YWdlLmgiCkBAIC0yNjYsMTQgKzI2NywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIH0pOwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGZsdXNo
IGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCi0gICAgZm9yRWFjaE5ldHdvcmtT
ZXNzaW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgcGxhdGZvcm1GbHVz
aENvb2tpZXMobmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgc2Vzc2lvbikgewor
ICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlIHRvIE5l
dHdvcmtQcm9jZXNzIGluIHNwYWNlUmVxdWVzdGVyIGlzIHJlbW92ZWQuCisgICAgICAgIHNlc3Np
b24uY2xvc2VJREJTZXJ2ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKLQot
ICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1
ZXN0ZXIgaXMgcmVtb3ZlZC4KLSAgICBhdXRvIHNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fd2Vi
SURCU2VydmVycywgeyB9KTsKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IHNlcnZlcnMudmFsdWVz
KCkpCi0gICAgICAgIHNlcnZlci0+Y2xvc2UoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpAQCAtMzAzLDggKzMw
MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWwgY3Jp
dGljYWwpCiAKICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogCi0gICAg
Zm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtjcml0aWNhbF0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsK
LSAgICAgICAgbmV0d29ya1Nlc3Npb24ubG93TWVtb3J5SGFuZGxlcihjcml0aWNhbCk7CisgICAg
Zm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtjcml0aWNhbF0oYXV0byYgc2Vzc2lvbikgeworICAgICAg
ICBzZXNzaW9uLmxvd01lbW9yeUhhbmRsZXIoY3JpdGljYWwpOwogICAgIH0pOwogCiAgICAgZm9y
IChhdXRvJiBtYW5hZ2VyIDogbV9zdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpCkBAIC0zOTEsMTcg
KzM4OSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogCiAgICAgY29ubmVjdGlvbi5zZXRP
bkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkub25MaW5lKCkpOwog
Ci0gICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIo
KS5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKICAg
ICBpZiAoYXV0byBtYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCkpCiAg
ICAgICAgIG1hbmFnZXItPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0aW9uKGNvbm5l
Y3Rpb24uY29ubmVjdGlvbigpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNo
ZWRDcmVkZW50aWFscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IHNlc3Npb24t
Pm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNy
ZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOwotICAgICAgICBuZXR3b3JrU2Vz
c2lvbi0+Y2xlYXJDcmVkZW50aWFscygpOworICAgICAgICBzZXNzaW9uLT5jbGVhckNyZWRlbnRp
YWxzKCk7CiAgICAgfQogfQogCkBAIC00MDksMTcgKzQwOCwxOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycwogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuc2Vzc2lvbklEOwogCisgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KwogICAgIGFkZFN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMu
Z2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3Rv
cnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgYWRkU2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90
YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0ZXJz
LmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogCi0gICAgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihzZXNzaW9u
SUQsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdURk1vdmUo
cGFyYW1ldGVycykpOwotCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24o
cGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLnNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgorICAg
IH0KKwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1b3RhTWFu
YWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwgdWlu
dDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBAIC01NTgs
MTYgKzU1OCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24u
cmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lFbmdp
bmUoKnRoaXMsIHNlc3Npb25JRCk7CiAKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBtX3dlYklEQlNl
cnZlcnMudGFrZShzZXNzaW9uSUQpKQotICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAgcmVt
b3ZlU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFCTEUo
SU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTU4Niw4ICs1ODQsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNz
aW9uSUQgc2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZChkb21haW4sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtNTk5LDggKzU5Nyw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2UoZG9t
YWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYxMiw4ICs2MTAsOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYzMiw4ICs2
MzAsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2ll
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKGRvbWFpbiwgaXNHcmFuZGZhdGhlcmVkLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDUsOCArNjQzLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NTgsOCArNjU2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3Vy
Y2VGb3JEZWJ1Z01vZGUoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NzEsOCArNjY5
LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0
VmVyeVByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNjg0
LDggKzY4Miw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAg
LTY5Nyw4ICs2OTUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZhbGVudFJlc291
cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ29va2llQmxvY2tp
bmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNzEwLDkgKzcwOCw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hv
dWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhcklzb2xhdGVk
U2Vzc2lvbnMoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24t
PmNsZWFySXNvbGF0ZWRTZXNzaW9ucygpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAg
ICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNpbmNl
LnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgICAgICBlbHNlCkBAIC03MjcsOCArNzI1LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
QEAgLTc0MCw5ICs3MzgsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVzZXRDTkFNRURvbWFpbkRh
dGEoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9uLT5yZXNldENO
QU1FRG9tYWluRGF0YSgpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CkBAIC03NTQsOCArNzUyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVz
ZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ28K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQ
cm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC03NjcsOCArNzY1LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklE
IHMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFibGVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CkBAIC03ODAsOCArNzc4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGljc0Rh
dGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ28KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVl
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC03OTMsOCArNzkxLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Np
b25JRCBzZXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0SXNSdW5uaW5nVGVzdCh2YWx1ZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwpAQCAtODA2LDggKzgwNCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Np
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKHN1
YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODE5
LDggKzgxNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oZG9tYWluUmVkaXJlY3Rl
ZEZyb20sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC04
MzIsOCArODMwLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRpcmVj
dGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFt
ZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC04NDUsOCArODQzLDggQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9t
YWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NTgsOCArODU2LDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVk
aXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdFRvKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTg3MSw4ICs4NjksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0
ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC04ODQsOCArODgyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291
cmNlVW5kZXIoc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKQEAgLTg5Nyw4ICs4OTUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjbwog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8odG9wRnJh
bWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtOTEw
LDggKzkwOCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZURvbWFpbiwgZG9t
YWluUmVkaXJlY3RlZEZyb20sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTkyNCw4ICs5MjIsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5zZXRMYXN0U2Vlbihkb21haW4sIHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTkz
Nyw4ICs5MzUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBp
bnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+ZG9tYWluSURF
eGlzdHNJbkRhdGFiYXNlKGRvbWFpbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTk1
MCw4ICs5NDgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0YWJh
c2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBpbnQgZG9tYQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4xLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4y
LCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZh
bGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhk
b21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFkVXNl
ckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQs
IGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwpAQCAtOTYzLDggKzk2MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om1l
cmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
biwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29s
IGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoZG9tYWluLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQs
IGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTk4Niw4ICs5ODQsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5h
dmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVjdCwg
Ym9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2Fk
LCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQogewotICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4sIHRv
cEZyYW1lRG9tYWluLCBzb3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBkZWxh
eUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNl
cik7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTk1LDgg
Kzk5Myw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dV
c2VySW50ZXJhY3Rpb24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDA4LDggKzEw
MDYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpo
YWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQor
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmhh
c0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAt
MTAyMSw4ICsxMDE5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFkVXNlckludGVyYWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmEKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKHN1YkRvbWFpbiwgdG9wRG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTEwMzQsOCArMTAzMiw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJhY3Rp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQog
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJVc2VySW50ZXJhY3Rpb24o
ZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDcwLDggKzEwNjgsOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6
OlNlc3Npb25JRCBzZXNzaQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhlcmlu
Z1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtMTA4Myw4ICsxMDgxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25k
cyBzZWMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1heGltdW1F
bnRyeUNvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDk2LDggKzEwOTQsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE1pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29u
ZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBA
IC0xMTA5LDggKzExMDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNaW5pbXVtVGltZUJl
dHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKHBydW5lVGFyZ2V0Q291bnQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKQEAgLTExMjIsOCArMTEyMCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFBydW5l
RW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHByCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTExMzUsOCArMTEzMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0
YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVm
b3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMTQ4
LDIxICsxMTQ2LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2VzCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgYm9vbCBlbmFibGVkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24t
PnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGJv
b2wgZW5hYmxlZCkKIHsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1dG8m
IG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoZW5hYmxlZCk7CisgICAgZm9yRWFjaE5ldHdvcmtT
ZXNzaW9uKFtlbmFibGVkXShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHNlc3Npb24uc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChlbmFibGVkKTsKICAgICB9KTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShkZWJ1
Z01vZGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTExNzQsOCArMTE3Miw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklECiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VwaGVtZXJhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzRXBoZW1l
cmFsKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjEwLDggKzEyMDgs
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFU
cmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIAogICAgIGlmIChuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmNvbnRhaW5zKENyb3NzU2l0ZU5h
dmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc6OkRlc3RpbmF0aW9uTGlua0RlY29yYXRpb24pKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5sb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWlu
LCBbXSB7IH0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTIyMCw4ICsxMjE4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ29tbWl0
Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihm
cm9tRG9tYWluLCB0b0RvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTI0MywxNiArMTI0
MSwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npbwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFz
SXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpCi0gICAgICAgIHJlc3VsdCA9IG5ldHdvcmtTZXNzaW9uLT5oYXNJc29sYXRlZFNlc3Np
b24oZG9tYWluKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmhhc0lzb2xhdGVkU2Vzc2lvbihkb21h
aW4pOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUoYXBw
Qm91bmREb21haW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0xMjY0LDE2ICsxMjYyLDE2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpT
ZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJy
ZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbZW5hYmxlZF0o
YXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24uc2V0U2hvdWxk
RG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpOworICAgIGZvckVhY2hOZXR3b3Jr
U2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBzZXNzaW9uLnNldFNo
b3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkKTsKICAgICB9KTsKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3
b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01vZGUp
OworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01v
ZGUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKQEAgLTEyODEsOCArMTI3OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29y
a1Nlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChlbmFibGVk
KTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgIHNlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChl
bmFibGVkKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjkwLDggKzEyODgsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBB
TDo6U2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUobW9kZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtMTMxMywxNSArMTMxMSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0UGFy
dHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAg
ICAgbmV0d29ya1Nlc3Npb24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92ZShm
aXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUo
Y25hbWVEb21haW4pKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAg
ICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhX
VEZNb3ZlKGRvbWFpbikpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC0xMzM4
LDggKzEzMzYsOCBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVuYWJsZWQoKSBjb25zdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5hYmxl
ZCkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z01vZGUoZW5hYmxlZCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5zZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnTW9kZShlbmFibGVkKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCkKQEAgLTEzNTIsOCArMTM1MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RU
byhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAgICAgICAg
IHJldHVybjsKICNlbmRpZgogCi0gICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAgYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNzaW9u
KQogICAgICAgICByZXR1cm47CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKQEAgLTEzNzIsMTAgKzEzNzAsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVj
dFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAgICBw
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5
OjpZZXM7CiAKLSAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5zdGFy
dGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCk7Ci0gICAgYXV0byB0
YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3dlYWtOZXR3b3JrU2Vzc2lvbiA9IFdlYWtQdHIgeyAqbmV0d29ya1Nlc3Npb24gfSwg
dXJsLCB1c2VyQWdlbnRdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7Ci0g
ICAgICAgIGlmICh3ZWFrTmV0d29ya1Nlc3Npb24pCi0gICAgICAgICAgICB3ZWFrTmV0d29ya1Nl
c3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFpblJl
c291cmNlKHVybCwgdXNlckFnZW50LCBlcnJvcik7CisgICAgc2Vzc2lvbi0+bmV0d29ya0xvYWRT
Y2hlZHVsZXIoKS5zdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2Vu
dCk7CisgICAgYXV0byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpzZXNzaW9uLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBbc2Vzc2lvbiA9IFdlYWtQdHIgeyAqc2Vzc2lvbiB9LCB1cmwsIHVzZXJB
Z2VudF0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKKyAgICAgICAgaWYg
KHNlc3Npb24pCisgICAgICAgICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLmZp
bmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCwgZXJyb3IpOwog
ICAgIH0pOwogICAgIHRhc2stPnNldFRpbWVvdXQoMTBfcyk7CiAgICAgdGFzay0+c3RhcnQoKTsK
QEAgLTE0NTEsNyArMTQ0OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfTsKIAog
ICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0FnZ3Jl
Z2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKLSAgICBhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpAQCAt
MTQ4MCwxNyArMTQ3OCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBwYXRo
ID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5pc0Vt
cHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4
ZWREQkRhdGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3Jp
Z2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7CisgICAgICAg
IHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdncmVn
YXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRh
LmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgbmV0d29ya1Nlc3Npb24g
JiYgbmV0d29ya1Nlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewotICAg
ICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lz
dHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
ICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7
CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3Ry
YXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5E
YXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0byYg
b3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURhdGFU
eXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAgfSk7CkBAIC0x
NTA1LDE1ICsxNTAyLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfQogCiAjaWYg
SEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpICYmIG5l
dHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbmV0d29ya1Nlc3Np
b24tPmhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkpCisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAm
JiBzZXNzaW9uKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+aG9zdE5h
bWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURhdGFU
eXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAwIH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSAm
JiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MpICYmIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlZ2lzdHJhYmxlRG9tYWlucyhbY2FsbGJh
Y2tBZ2dyZWdhdG9yXShhdXRvJiYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
d2hpbGUgKCFkb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmFkZChkb21haW5zLnRha2VMYXN0KCkpOwpAQCAtMTUzMyw3ICsxNTMwLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byogbmV0
d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKQEAgLTE1NTYsMTggKzE1NTMsMTggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkRPTUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFy
QWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHdlYklE
QlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSht
b2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYm
ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5l
bnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
bW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
KTsKLSAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1Nl
cnZlcigpLmNsZWFyQWxsKFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICBpZiAoY2xlYXJT
ZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKKyAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5jbGVhckFsbChbY2xlYXJUYXNrc0hhbmRs
ZXJdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVW
RU5USU9OKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbiA/IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbiA/IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSA6IG51bGxwdHIpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBhbGwg
b2YgdGhlIGRhdGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0b3Jl
IG1vbml0b3JzCiAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZhdGhl
ciBvbGQgZGF0YS4KICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSB3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zQWxsKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9u
aXRvcmVkRGF0YVR5cGVzKCkpID8gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6IFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwpAQCAtMTU3NiwxOCArMTU3MywxOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG5ldHdvcmtT
ZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRh
KG1vZGlmaWVkU2luY2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwor
ICAgIGlmIChzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0ZURh
dGEobW9kaWZpZWRTaW5jZSwgc3RkOjpudWxsb3B0LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7
CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRp
c2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBjbGVhckRpc2tD
YWNoZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5j
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+Y2xlYXJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICNpZiBIQVZF
KENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYgbmV0d29y
a1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2Vydmlj
ZXMobW9kaWZpZWRTaW5jZSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBzZXNzaW9uKQorICAgICAgICBz
ZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAjZW5kaWYK
IAogICAgIGlmIChOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKHdlYnNpdGVE
YXRhVHlwZXMpKSB7CkBAIC0xNjIyLDcgKzE2MTksNyBAQCBzdGF0aWMgdm9pZCBjbGVhckRpc2tD
YWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxTZWN1
cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRl
RGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0YXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
IHJlZ2lzdHJhYmxlRG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNjM1LDE3ICsxNjMyLDE3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVS
TkFUSVZFX1NFUlZJQ0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgeworICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRp
dmVTZXJ2aWNlcykgJiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIGhvc3RzID0gb3JpZ2luRGF0
YXMubWFwKFtdKGF1dG8mIG9yaWdpbkRhdGEpIHsgcmV0dXJuIG9yaWdpbkRhdGEuaG9zdDsgfSk7
Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9z
dE5hbWVzKGhvc3RzKTsKKyAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNl
c0Zvckhvc3ROYW1lcyhob3N0cyk7CiAgICAgfQogI2VuZGlmCiAKICAgICBhdXRvIGNsZWFyVGFz
a3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Npb24p
IHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikgewogICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5j
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCksIFtjbGVh
clRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICAgICAgICAgIHNlc3Npb24tPmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luRGF0YS5ob3N0KSwgW2NsZWFyVGFza3NIYW5kbGVy
XSB7IH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBAIC0xNjUzLDEzICsxNjUwLDEzIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJD
YWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3Jp
Z2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFz
ZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgd2ViSURCU2VydmVyKHNl
c3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBb
Y2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2
ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtjbGVh
clRhc2tzSGFuZGxlcl0geyB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBi
b29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAgaWYgKGNsZWFyU2Vy
dmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIG5ldHdvcmtTZXNzaW9u
KSB7Ci0gICAgICAgIGF1dG8mIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1NlcnZl
cigpOworICAgIGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVuc3Vy
ZVNXU2VydmVyKCk7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFz
KQogICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKICAgICB9CkBAIC0xNjgwLDkgKzE2NzcsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpbwogICAgIH0KIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9O
KQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3RyYWJs
ZURvbWFpbnMpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQogICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJl
bW92ZURhdGFGb3JEb21haW4oZG9tYWluLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xNjkzLDcgKzE2OTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
bwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRhVHlw
ZXMsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAg
aWYgKG5ldHdvcmtTZXNzaW9uKSB7CisgICAgaWYgKHNlc3Npb24pIHsKICAgICAgICAgSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFG
b3I7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAgICAg
ICAgICAgZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW5EYXRhLmhvc3QpKTsKQEAg
LTE3MDQsNyArMTcwMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgIGZvciAo
YXV0byYgZG9tYWluIDogcmVnaXN0cmFibGVEb21haW5zKQogICAgICAgICAgICAgZG9tYWluc1Rv
RGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKGRvbWFpbik7CiAKLSAgICAgICAgbmV0d29ya1Nlc3Np
b24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdURk1vdmUoZG9tYWlu
c1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAg
ICAgIHNlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdURk1v
dmUoZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsg
fSk7CiAgICAgfQogfQogCkBAIC0xNzQ3LDcgKzE3NDQsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNvbnN0
IEhhcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5zVG9E
ZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlm
eVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9Ob3RD
cmVhdGVQcm9jZXNzZXM7CiAKQEAgLTE4MTMsOSArMTgxMCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFM
OjpTZXNzCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0Up
Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRl
cm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYg
c2Vzc2lvbikgewogICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlID0gZG9t
YWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IubWFwKFtdKGF1dG8mIGRvbWFp
bikgeyByZXR1cm4gZG9tYWluLnN0cmluZygpOyB9KTsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24t
PmRlbGV0ZUFsdGVybmF0aXZlU2VydmljZXNGb3JIb3N0TmFtZXMocmVnaXN0cmFibGVEb21haW5z
VG9EZWxldGUpOworICAgICAgICBzZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9y
SG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlKTsKICAgICB9CiAjZW5kaWYKIApA
QCAtMTg0NSwyNyArMTg0MiwyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0
cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAgICB9
KTsKICAgICB9CiAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Np
b25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICB3ZWJJ
REJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAgICAg
ICAgaWYgKCFtX3dlYklEQlNlcnZlcnMuY29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNl
cykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykg
eworICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7
CisgICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPndlYklEQlNlcnZlcigpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9EZWxl
dGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5z
KTsKLSAgICAgICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0
YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsg
fSk7CisgICAgICAgICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxldGVE
YXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0g
eyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAgaWYg
KGNsZWFyU2VydmljZVdvcmtlcnMgJiYgbmV0d29ya1Nlc3Npb24gJiYgbmV0d29ya1Nlc3Npb24t
Pmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFpbnNU
b0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG5l
dHdvcmtTZXNzaW9uID0gV2Vha1B0ciB7ICpuZXR3b3JrU2Vzc2lvbiB9XShjb25zdCBIYXNoU2V0
PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgaWYg
KGNsZWFyU2VydmljZVdvcmtlcnMgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29y
a2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5n
ZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdl
YnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHNlc3Npb24gPSBXZWFrUHRyIHsgKnNl
c3Npb24gfV0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdp
bnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6IHNl
Y3VyaXR5T3JpZ2lucykgewogICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRlQWxs
Tm9uQ29va2llV2Vic2l0ZURhdGFGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2Rv
bWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1
cml0eU9yaWdpbi5ob3N0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ldHdvcmtTZXNzaW9uKQot
ICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5jbGVh
cihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgICAg
ICAgICBpZiAoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dT
ZXJ2ZXIoKS5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTkyNyw3ICsxOTI0LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBSZWdpc3RyYWIKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFi
bGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVBy
b2Nlc3NlczsKICAgICAKQEAgLTE5OTMsMTcgKzE5OTAsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGF1dG8gcGF0aCA9IG1faWRiRGF0
YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYmIHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFz
ZXMpKSB7Ci0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmdldE9yaWdpbnMoW2NhbGxi
YWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vzc2lv
biAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBzZXNzaW9uLT5l
bnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8m
JiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFw
cGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcywgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBuZXR3b3JrU2Vzc2lvbiAmJiBuZXR3
b3JrU2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAgIG5l
dHdvcmtTZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9u
cyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4m
IHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgc2Vz
c2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMo
W2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBz
ZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0
eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAg
fSk7CkBAIC0yMDk1LDggKzIwOTEsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Us
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHJl
cXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7Ci0gICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbnMuZ2V0KHNlc3Npb25JRCkpCi0gICAgICAg
IG5ldHdvcmtTZXNzaW9uLT5yZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVlc3Qp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5yZXF1ZXN0UmVzb3Vy
Y2UocGFnZUlELCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSwgeyB9KTsKIH0K
QEAgLTIxMzAsOCArMjEyNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzLCBDb21wbGV0CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFsbG93VExTQ2VydGlmaWNhdGVDaGFpbkZvckxvY2FsUENNVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYg
Y2VydGlmaWNhdGVJbmZvKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1fbmV0
d29ya1Nlc3Npb25zLmdldChzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+YWxs
b3dUTFNDZXJ0aWZpY2F0ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5nKGNlcnRpZmljYXRlSW5mbyk7
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICBzZXNzaW9uLT5hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW5Gb3JMb2NhbFBDTVRlc3Rpbmco
Y2VydGlmaWNhdGVJbmZvKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQpAQCAtMjE3Niw4ICsyMTcyLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1
c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29sIGFs
bFN1c3BlbmRlZCA9IHRydWU7CiAgICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1p
bmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURC
U2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBzZXJ2
ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAmPSBz
ZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZd
KGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2Vi
SURCU2VydmVyKCkpCisgICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNwZW5k
KGNvbmRpdGlvbik7CisgICAgfSk7CiAKICAgICBpZiAoYWxsU3VzcGVuZGVkKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMTg5LDggKzIxODcsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVu
ZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKICAgICAgICAgaWYgKCFtX3No
b3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVu
c2lvbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChhdXRv
JiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2ZXIt
PnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOworICAg
ICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCisgICAgICAgICAg
ICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6
QWx3YXlzKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTIyMTUsMTAgKzIyMTUsMTAg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lv
bkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICNlbmRpZgogICAgIFBDTTo6U3RvcmU6OnByZXBh
cmVGb3JQcm9jZXNzVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKLSAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAg
ICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRv
JiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lv
bklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1NlcnZl
cigpKQorICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2VydmVyKCkpCiAg
ICAgICAgICAgICBzd1NlcnZlci0+c3RhcnRTdXNwZW5zaW9uKFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiAjZW5kaWYKICAgICB9KTsKQEAgLTIyNTcsMTQgKzIyNTcsMTYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBQQ006OlN0b3JlOjpwcm9jZXNzRGlkUmVzdW1lKCk7
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9u
KFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8gc3dTZXJ2ZXIg
PSBuZXR3b3JrU2Vzc2lvbi5zd1NlcnZlcigpKQorICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihb
XSAoYXV0byYgc2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0byBzd1NlcnZlciA9IHNlc3Npb24u
c3dTZXJ2ZXIoKSkKICAgICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAgICAg
fSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnJlc3VtZSgp
OworICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAg
IGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAgICAgICAg
c2VydmVyLT5yZXN1bWUoKTsKKyAgICB9KTsKICAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJz
ID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjMxOCw0MyArMjMyMCw2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVtZSkg
Y29uc3QKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNj
ZXNzKHNjaGVtZSk7CiB9CiAKLVJlZjxXZWJJREJTZXJ2ZXI+IE5ldHdvcmtQcm9jZXNzOjpjcmVh
dGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFN0cmluZyBw
YXRoOwotICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgQVNTRVJU
KG1faWRiRGF0YWJhc2VQYXRocy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAgICAgICAgcGF0aCA9
IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICB9Ci0KLSAgICBhdXRvIHNw
YWNlUmVxdWVzdGVyID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSURd
KGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAgICAg
cmV0dXJuIHByb3RlY3RlZFRoaXMtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBvcmln
aW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwotICAg
IH07Ci0KLSAgICBhdXRvIHJlc3VsdCA9IFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25JRCwg
cGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgIGlmIChtX3Nob3VsZFN1c3BlbmRJ
REJTZXJ2ZXJzKQotICAgICAgICByZXN1bHQtPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5z
aW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYklEQlNl
cnZlciYgTmV0d29ya1Byb2Nlc3M6OndlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCi17Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcnMuZW5zdXJlKHNlc3Npb25JRCwgW3Ro
aXMsIHNlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gdGhpcy0+Y3JlYXRlV2ViSURCU2VydmVy
KHNlc3Npb25JRCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgaGFuZGxlKQotewotICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDogRG8g
bm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMg
b24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8
cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9pZGJEYXRhYmFzZVBhdGhzLmFkZChzZXNzaW9uSUQsIGluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBzZXRT
ZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCwgaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5KTsKLSAgICB9Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBt
X3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKQEAgLTI0MDEsOSArMjM2Niw4IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+bW92ZURh
dGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgaWYgKGRh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsK
LSAgICAgICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwot
ICAgICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgd2ViSURCU2VydmVyKHNl
c3Npb25JRCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0g
eyB9KTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpOyBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKQorICAgICAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwg
bmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTI2MjYsOCArMjU5
MCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9u
VG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX3dlYklEQlNlcnZl
cnMuZ2V0KHNlc3Npb25JRCkpCi0gICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihjb25u
ZWN0aW9uKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24tPndlYklEQlNlcnZlcigp
KQorICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOworICAg
IH0KIAogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lv
bklEKSkKICAgICAgICAgbWFuYWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlv
bihjb25uZWN0aW9uKTsKQEAgLTI2NjIsMTUgKzI2MjgsMTUgQEAgU2Vjb25kcyBOZXR3b3JrUHJv
Y2Vzczo6cmFuZG9tQ2xvc2VkUG9ydERlbGF5KCkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0Fw
cEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFz
QXBwQm91bmRTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5oYXNBcHBCb3VuZFNlc3Np
b24oKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOworICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBz
ZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjcz
MSw4ICsyNjk3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1BhdHRl
cm5zKFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMKICNpZiBQTEFURk9STShDT0NP
QSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+YXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uLT5hcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTI3NDAsOCArMjcwNiw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtT
ZXNzaW9uLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5jbGVhckFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSgpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
KCkuY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsKIAogICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CkBAIC0yNzU5LDI5ICsyNzI1LDIwIEBAIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlTmV0
d29ya1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBzZXNzaW9uLT5hZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlELCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVy
cyhwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgc2Vzc2lvbi0+cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKHBhZ2VJ
RCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBzZXNzaW9uLT5yZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlEKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcigwKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24tPmNvdW50Tm9uRGVm
YXVsdFNlc3Npb25TZXRzKCkpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24gPyBzZXNzaW9uLT5jb3Vu
dE5vbkRlZmF1bHRTZXNzaW9uU2V0cygpIDogMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRiNTI5OTc3MGIyMDBl
YjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1
ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9z
c1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJU
eXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdzOwogY2xhc3MgUHJv
dGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBVc2VyQ29udGVudFVS
TFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0dXJu
IG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgV2ViSURC
U2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgc2hvdWxkU3Vz
cGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJz
OyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVB1c2hB
bmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIHNldFNlc3Np
b25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgdm9pZCBh
ZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBjcmVhdGVXZWJJREJT
ZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1h
bmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGJSb290UGF0
aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBBTDo6U2Vzc2lvbklE
KTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQp
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEsNiBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0
aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1faWRi
RGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViSURC
U2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURCU2Vy
dmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7IDAg
fTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Z0cEVuYWJsZWQg
eyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtTdG9y
YWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsgLy8gRklY
TUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3N2M5YWIuLmJmN2Fk
NGRmYWNhOTNmZTJjYzRjYTg2NzczN2ExNmFkZWY2MWQ2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5j
ZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJ
REJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MzksNCAr
NjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBh
dGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJJREJT
ZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQoreworICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAgICAgIGlmICghc2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2lkYkRhdGFi
YXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGg7
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW25ldHdvcmtQcm9j
ZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKV0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgeworICAgICAgICAg
ICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
b3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsK
KyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklEQlNlcnZlcjo6Y3Jl
YXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7CisgICAgICAg
IGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkpCisgICAgICAg
ICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25k
aXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXI7Cit9CisK
K3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2ViSURCU2VydmVyKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0ZDo6ZXhjaGFuZ2Uo
bV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgorICAgIGF1dG8g
aXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lkYkRhdGFiYXNlUGF0
aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcpIHsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChz
ZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4OGVlZWQxYmZiMmMu
LmFhYjlhYTExOTAxNDBhODIxYzBjMjZjZjgwMzdlN2E3MzE2ZTdmY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0LDYgKzc0LDcgQEAg
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3Jr
UGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNz
IFdlYlNvY2tldFRhc2s7CkBAIC0yMDMsNiArMjA0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZFNlcnZpY2VXb3JrZXJTZXNzaW9uKGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
LCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCisgICAgV2ViSURCU2VydmVyKiB3ZWJJ
REJTZXJ2ZXIoKSB7IHJldHVybiBtX3dlYklEQlNlcnZlci5nZXQoKTsgfQorICAgIFdlYklEQlNl
cnZlciYgZW5zdXJlV2ViSURCU2VydmVyKCk7CisgICAgdm9pZCBjbG9zZUlEQlNlcnZlcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgYWRkSW5kZXhlZERhdGFiYXNlU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJik7CisgICAgYm9vbCBoYXNJREJEYXRhYmFzZVBhdGgoKSBjb25zdCB7IHJl
dHVybiAhbV9pZGJEYXRhYmFzZVBhdGguaXNFbXB0eSgpOyB9CisKICAgICBOZXR3b3JrTG9hZFNj
aGVkdWxlciYgbmV0d29ya0xvYWRTY2hlZHVsZXIoKTsKICAgICBQQ006Ok1hbmFnZXJJbnRlcmZh
Y2UmIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkgeyByZXR1cm4gbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1
Z01vZGUoYm9vbCk7CkBAIC0yOTUsNiArMzAyLDkgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zd1NlcnZlcjsKICNlbmRpZgogCisgICAgU3Ry
aW5nIG1faWRiRGF0YWJhc2VQYXRoOworICAgIFJlZlB0cjxXZWJJREJTZXJ2ZXI+IG1fd2ViSURC
U2VydmVyOworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhIG1fYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCmlu
ZGV4IGY4ZGNmMTUxY2M4OGMwMzkyYzhmM2NkYmUyNDUzYjUyODdlMDNhNDAuLmE4N2FkODA1YjVk
ZjE1MDc4M2I1MzkxZThlMDNmOThlNzY0ZGYzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBAIC0zMyw2ICszMyw3
IEBACiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJTZWNJdGVtU2hpbS5oIgorI2ltcG9ydCAi
V2ViSURCU2VydmVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
VGhyZWFkU3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTYsOCArMTE3LDEwIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmls
ZXMpCiAgICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52
YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOworICAgICAgICBmb3JFYWNo
TmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAgICAgICAgaWYgKGF1dG8q
IHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCisgICAgICAgICAgICAgICAgc2VydmVy
LT5zdXNwZW5kKCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447376</attachid>
            <date>2021-12-16 11:42:46 -0800</date>
            <delta_ts>2021-12-16 12:02:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211216114245.patch</filename>
            <type>text/plain</type>
            <size>107233</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljYmUxZGI4YzBjYjlhMzY1
ZGFjYWYwODRjZWJlMWM2Mjg5OWY2ZTQuLmIwMWQ3OTBhNWM2MWJiZjY1ODQwNzhhY2YxODlmNmZj
NzZiNDAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20gTmV0
d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBlciBz
ZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNX
aXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VzcGVu
ZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hDb29r
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
Rmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZlTG9h
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0
QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91
dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
QXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JTRm9y
UmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVsdFNl
c3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5j
ZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0xNiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1Nd
IEFkanVzdCBzYW5kYm94IG1lc3NhZ2UgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDRkN2VhNjQ5NjdmZTM0M2I2ODc3OTMxNTBkNDFiOGQ0NjU4OTJjMDIuLjljNmRkOGNl
NGQ4ZjA2YTIwM2I2NDBhYTIyYTAyNWU5OTdmMzEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtOTQwLDcgKzk0
MSw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6
IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwog
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYklEQlNlcnZlcihtX3Nlc3Npb25JRCkucmVn
aXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQorICAgICAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShmaWxlUGF0aHMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYWQ2MzY2MmRmODU0ZTI4NmNkOGNl
ZDIwYmE0MWFiNmNlNmJlYTA5MS4uYzZjMjY0NWQ5NTMzMjE5YTE1OGU3Nzg4YjE3Y2RmMGIxMGU1
M2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHVzaE1lc3NhZ2UuaCIKQEAgLTI2NiwxNCArMjY3LDExIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgfSk7CiAKICAgICAvLyBNYWtl
IHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KLSAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAg
ICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRv
JiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lv
bklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBy
ZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4K
KyAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwogICAgIH0pOwotCi0gICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5jZSB0byBOZXR3b3JrUHJvY2Vz
cyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgIGF1dG8gc2VydmVycyA9IHN0ZDo6
ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXJzLCB7IH0pOwotICAgIGZvciAoYXV0byYgc2VydmVyIDog
c2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZShbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDcmVhdGVEb3dubG9hZCgp
CkBAIC0zMDMsOCArMzAxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbCBjcml0aWNhbCkKIAogICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KCk7CiAKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBuZXR3
b3JrU2Vzc2lvbikgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi5sb3dNZW1vcnlIYW5kbGVyKGNy
aXRpY2FsKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBzZXNz
aW9uKSB7CisgICAgICAgIHNlc3Npb24ubG93TWVtb3J5SGFuZGxlcihjcml0aWNhbCk7CiAgICAg
fSk7CiAKICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX3N0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMo
KSkKQEAgLTM5MSwxNyArMzg5LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAKICAgICBj
b25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24o
KS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5hZGRDb25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGlk
ZW50aWZpZXIpOwogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNv
bm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7Ci0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRpYWxzKCk7CisgICAgICAgIHNlc3Npb24t
PmNsZWFyQ3JlZGVudGlhbHMoKTsKICAgICB9CiB9CiAKQEAgLTQwOSwxNyArNDA4LDE3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CiAKKyAgICBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIHBhcmFtZXRl
cnMpOworCiAgICAgYWRkU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1l
dGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURp
cmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBhZGRTZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHNl
c3Npb25JRCwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLQotICAgIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7Ci0KKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFiYXNlU2Vz
c2lvbihwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwg
dWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBAIC01
NTgsMTYgKzU1NywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24ucmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lF
bmdpbmUoKnRoaXMsIHNlc3Npb25JRCk7CiAKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBtX3dlYklE
QlNlcnZlcnMudGFrZShzZXNzaW9uSUQpKQotICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAg
cmVtb3ZlU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFC
TEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTU4Niw4ICs1ODMsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpT
ZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZChkb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtNTk5LDggKzU5Niw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2Uo
ZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYxMiw4ICs2MDksOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYzMiw4
ICs2MjksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKGRvbWFpbiwgaXNHcmFuZGZhdGhlcmVk
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDUsOCArNjQyLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NTgsOCArNjU1LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NzEsOCAr
NjY4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
Njg0LDggKzY4MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTY5Nyw4ICs2OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZhbGVudFJl
c291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNzEwLDkgKzcwNyw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mg
c2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhcklzb2xh
dGVkU2Vzc2lvbnMoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Np
b24tPmNsZWFySXNvbGF0ZWRTZXNzaW9ucygpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAg
ICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNp
bmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgICAgICBlbHNlCkBAIC03MjcsOCArNzI0LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKQEAgLTc0MCw5ICs3MzcsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVzZXRDTkFNRURvbWFp
bkRhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9uLT5yZXNl
dENOQU1FRG9tYWluRGF0YSgpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC03NTQsOCArNzUxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q28KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC03NjcsOCArNzY0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lv
bklEIHMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFi
bGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CkBAIC03ODAsOCArNzc3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGlj
c0RhdGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ28KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZh
bHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC03OTMsOCArNzkwLDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNl
c3Npb25JRCBzZXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0SXNSdW5uaW5nVGVzdCh2YWx1ZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtODA2LDggKzgwMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNl
c3NpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
ODE5LDggKzgxNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oZG9tYWluUmVkaXJl
Y3RlZEZyb20sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBA
IC04MzIsOCArODI5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRp
cmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN1YkZyYW1lRG9tYWluLCB0b3BG
cmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC04NDUsOCArODQyLDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1l
RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NTgsOCArODU1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg3MSw4ICs4NjgsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGly
ZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9t
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04ODQsOCArODgxLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKQEAgLTg5Nyw4ICs4OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
bwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8odG9w
RnJhbWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
OTEwLDggKzkwNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZURvbWFpbiwg
ZG9tYWluUmVkaXJlY3RlZEZyb20sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTkyNCw4ICs5MjEs
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zZXRMYXN0U2Vlbihkb21haW4sIHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAg
LTkzNyw4ICs5MzQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+ZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlKGRvbWFpbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTk1MCw4ICs5NDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0
YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBpbnQgZG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
Zyhkb21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFk
VXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVy
ZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtOTYzLDggKzk2MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhw
aXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoZG9tYWluLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTk4Niw4ICs5ODMsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFt
ZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVj
dCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRM
b2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQogewotICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4s
IHRvcEZyYW1lRG9tYWluLCBzb3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBk
ZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5
VXNlcik7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTk1
LDggKzk5Miw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5s
b2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDA4LDgg
KzEwMDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewor
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
Pmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpA
QCAtMTAyMSw4ICsxMDE4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFkVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmEKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKHN1YkRvbWFpbiwgdG9wRG9t
YWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTEwMzQsOCArMTAzMSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJVc2VySW50ZXJhY3Rp
b24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDcwLDggKzEwNjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA4Myw4ICsxMDgwLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vj
b25kcyBzZWMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1heGlt
dW1FbnRyeUNvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDk2LDggKzEwOTMsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC0xMTA5LDggKzExMDYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKHBydW5lVGFyZ2V0Q291bnQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTExMjIsOCArMTExOSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFBy
dW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHByCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKQEAgLTExMzUsOCArMTEzMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNv
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0x
MTQ4LDIxICsxMTQ1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2VzCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Np
b24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKIHsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1
dG8mIG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoZW5hYmxlZCk7CisgICAgZm9yRWFjaE5ldHdv
cmtTZXNzaW9uKFtlbmFibGVkXShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHNlc3Npb24uc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChlbmFibGVkKTsKICAgICB9KTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShk
ZWJ1Z01vZGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTExNzQsOCArMTE3MSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklECiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VwaGVtZXJhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzRXBo
ZW1lcmFsKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjEwLDggKzEy
MDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERh
dGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAogICAgIGlmIChuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmNvbnRhaW5zKENyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc6OkRlc3RpbmF0aW9uTGlua0RlY29yYXRpb24p
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9t
YWluLCBbXSB7IH0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTIyMCw4ICsxMjE3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ29t
bWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihmcm9tRG9tYWluLCB0b0RvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTI0MywxNiAr
MTI0MCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExp
bmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npbwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIHJlc3VsdCA9IG5ldHdvcmtTZXNzaW9uLT5oYXNJc29sYXRlZFNl
c3Npb24oZG9tYWluKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCisgICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmhhc0lzb2xhdGVkU2Vzc2lvbihk
b21haW4pOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUo
YXBwQm91bmREb21haW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjY0LDE2ICsxMjYxLDE2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbZW5hYmxl
ZF0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24uc2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpOworICAgIGZvckVhY2hOZXR3
b3JrU2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBzZXNzaW9uLnNl
dFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkKTsKICAgICB9KTsKICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBu
ZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01v
ZGUpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2lu
Z01vZGUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTEyODEsOCArMTI3OCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0
d29ya1Nlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChlbmFi
bGVkKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgIHNlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dChlbmFibGVkKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjkwLDggKzEyODcsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUobW9kZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTMxMywxNSArMTMxMCwxNSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92
ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92ZShmaXJzdFBhcnR5SG9zdCksIFdURk1v
dmUoY25hbWVEb21haW4pKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
ZyhXVEZNb3ZlKGRvbWFpbikpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
Rm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC0x
MzM4LDggKzEzMzUsOCBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuYWJsZWQoKSBjb25zdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5h
YmxlZCkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z01vZGUoZW5hYmxlZCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShlbmFibGVkKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKQEAgLTEzNTIsOCArMTM0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAg
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKQEAgLTEzNzIsMTAgKzEzNjksMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAg
ICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RP
bmx5OjpZZXM7CiAKLSAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5z
dGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCk7Ci0gICAgYXV0
byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3dlYWtOZXR3b3JrU2Vzc2lvbiA9IFdlYWtQdHIgeyAqbmV0d29ya1Nlc3Npb24g
fSwgdXJsLCB1c2VyQWdlbnRdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7
Ci0gICAgICAgIGlmICh3ZWFrTmV0d29ya1Nlc3Npb24pCi0gICAgICAgICAgICB3ZWFrTmV0d29y
a1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFp
blJlc291cmNlKHVybCwgdXNlckFnZW50LCBlcnJvcik7CisgICAgc2Vzc2lvbi0+bmV0d29ya0xv
YWRTY2hlZHVsZXIoKS5zdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJB
Z2VudCk7CisgICAgYXV0byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpzZXNzaW9uLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbc2Vzc2lvbiA9IFdlYWtQdHIgeyAqc2Vzc2lvbiB9LCB1cmwsIHVz
ZXJBZ2VudF0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKKyAgICAgICAg
aWYgKHNlc3Npb24pCisgICAgICAgICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigp
LmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCwgZXJyb3Ip
OwogICAgIH0pOwogICAgIHRhc2stPnNldFRpbWVvdXQoMTBfcyk7CiAgICAgdGFzay0+c3RhcnQo
KTsKQEAgLTE0NTEsNyArMTQ0OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfTsK
IAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0Fn
Z3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKLSAgICBhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpA
QCAtMTQ4MCwxNyArMTQ3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9
IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBw
YXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5p
c0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0
T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7CisgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdn
cmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgbmV0d29ya1Nlc3Np
b24gJiYgbmV0d29ya1Nlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJl
Z2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgp
KSB7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdp
c3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAgfSk7CkBA
IC0xNTA1LDE1ICsxNTAxLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfQogCiAj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpICYm
IG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbmV0d29ya1Nl
c3Npb24tPmhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkpCisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2Vz
KSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+aG9z
dE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAwIH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KSAmJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3MpICYmIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlZ2lzdHJhYmxlRG9tYWlucyhbY2Fs
bGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKCFkb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmFkZChkb21haW5zLnRha2VMYXN0KCkpOwpAQCAtMTUzMyw3ICsxNTI5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKQEAgLTE1NTYsMTggKzE1NTIsMTggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
IAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHdl
YklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5j
ZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zKTsKLSAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVT
V1NlcnZlcigpLmNsZWFyQWxsKFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICBpZiAoY2xl
YXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikK
KyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5jbGVhckFsbChbY2xlYXJUYXNrc0hh
bmRsZXJdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19Q
UkVWRU5USU9OKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbiA/IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbiA/IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSA6IG51bGxwdHIpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBh
bGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0
b3JlIG1vbml0b3JzCiAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZh
dGhlciBvbGQgZGF0YS4KICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zQWxsKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bW9uaXRvcmVkRGF0YVR5cGVzKCkpID8gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwpAQCAtMTU3NiwxOCArMTU3MiwxOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG5ldHdv
cmtTZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVE
YXRhKG1vZGlmaWVkU2luY2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0p
OworICAgIGlmIChzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0
ZURhdGEobW9kaWZpZWRTaW5jZSwgc3RkOjpudWxsb3B0LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsg
fSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkRpc2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBjbGVhckRp
c2tDYWNoZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
KyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICNpZiBI
QVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYgbmV0
d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2Vy
dmljZXMobW9kaWZpZWRTaW5jZSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBzZXNzaW9uKQorICAgICAg
ICBzZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAjZW5k
aWYKIAogICAgIGlmIChOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKHdlYnNp
dGVEYXRhVHlwZXMpKSB7CkBAIC0xNjIyLDcgKzE2MTgsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckRp
c2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxT
ZWN1cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJz
aXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0
YXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mIHJlZ2lzdHJhYmxlRG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNjM1LDE3ICsxNjMxLDE3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgewor
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJu
YXRpdmVTZXJ2aWNlcykgJiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIGhvc3RzID0gb3JpZ2lu
RGF0YXMubWFwKFtdKGF1dG8mIG9yaWdpbkRhdGEpIHsgcmV0dXJuIG9yaWdpbkRhdGEuaG9zdDsg
fSk7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9y
SG9zdE5hbWVzKGhvc3RzKTsKKyAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhob3N0cyk7CiAgICAgfQogI2VuZGlmCiAKICAgICBhdXRvIGNsZWFy
VGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Np
b24pIHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikgewogICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCksIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICAgICAgICAgIHNlc3Npb24tPmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luRGF0YS5ob3N0KSwgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBAIC0xNjUzLDEzICsxNjQ5LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
b3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFz
LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJT
ZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAgaWYgKGNsZWFy
U2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIG5ldHdvcmtTZXNz
aW9uKSB7Ci0gICAgICAgIGF1dG8mIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1Nl
cnZlcigpOworICAgIGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVu
c3VyZVNXU2VydmVyKCk7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRh
dGFzKQogICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKICAgICB9CkBAIC0xNjgwLDkgKzE2NzYsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpbwogICAgIH0KIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5U
SU9OKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3Ry
YWJsZURvbWFpbnMpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnJlbW92ZURhdGFGb3JEb21haW4oZG9tYWluLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjkzLDcgKzE2ODksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpbwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRh
VHlwZXMsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0g
ICAgaWYgKG5ldHdvcmtTZXNzaW9uKSB7CisgICAgaWYgKHNlc3Npb24pIHsKICAgICAgICAgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0Rh
dGFGb3I7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAg
ICAgICAgICAgZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW5EYXRhLmhvc3QpKTsK
QEAgLTE3MDQsNyArMTcwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgIGZv
ciAoYXV0byYgZG9tYWluIDogcmVnaXN0cmFibGVEb21haW5zKQogICAgICAgICAgICAgZG9tYWlu
c1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKGRvbWFpbik7CiAKLSAgICAgICAgbmV0d29ya1Nl
c3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdURk1vdmUoZG9t
YWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Cisg
ICAgICAgIHNlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdU
Rk1vdmUoZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJd
IHsgfSk7CiAgICAgfQogfQogCkBAIC0xNzQ3LDcgKzE3NDMsNyBAQCBzdGF0aWMgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNv
bnN0IEhhcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5z
VG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5v
dGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9O
b3RDcmVhdGVQcm9jZXNzZXM7CiAKQEAgLTE4MTMsOSArMTgwOSw5IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJ
Q0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpB
bHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgeworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykg
JiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlID0g
ZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IubWFwKFtdKGF1dG8mIGRv
bWFpbikgeyByZXR1cm4gZG9tYWluLnN0cmluZygpOyB9KTsKLSAgICAgICAgbmV0d29ya1Nlc3Np
b24tPmRlbGV0ZUFsdGVybmF0aXZlU2VydmljZXNGb3JIb3N0TmFtZXMocmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGUpOworICAgICAgICBzZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
Rm9ySG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlKTsKICAgICB9CiAjZW5kaWYK
IApAQCAtMTg0NSwyNyArMTg0MSwyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNl
c3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAg
ICAgICAgaWYgKCFtX3dlYklEQlNlcnZlcnMuY29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAg
ICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lu
cykgeworICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7CisgICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPndlYklEQlNlcnZlcigp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21h
aW5zKTsKLSAgICAgICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CisgICAgICAgICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgbmV0d29ya1Nlc3Npb24gJiYgbmV0d29ya1Nlc3Np
b24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBuZXR3b3JrU2Vz
c2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IG5ldHdvcmtTZXNzaW9uID0gV2Vha1B0ciB7ICpuZXR3b3JrU2Vzc2lvbiB9XShjb25zdCBIYXNo
U2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNl
V29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIo
KS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tp
ZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHNlc3Npb24gPSBXZWFrUHRyIHsg
KnNlc3Npb24gfV0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9y
aWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6
IHNlY3VyaXR5T3JpZ2lucykgewogICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChz
ZWN1cml0eU9yaWdpbi5ob3N0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ldHdvcmtTZXNzaW9u
KQotICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5j
bGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJl
U1dTZXJ2ZXIoKS5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTkyNyw3ICsxOTIzLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWIKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0
ZVByb2Nlc3NlczsKICAgICAKQEAgLTE5OTMsMTcgKzE5ODksMTYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGF1dG8gcGF0aCA9IG1faWRi
RGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYm
IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpKSB7Ci0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmdldE9yaWdpbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vz
c2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1
dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcywgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBuZXR3b3JrU2Vzc2lvbiAmJiBu
ZXR3b3JrU2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAg
IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0
aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYg
c2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlv
bnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+
JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1
cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwg
V2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAg
ICAgfSk7CkBAIC0yMDk1LDggKzIwOTAsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbnMuZ2V0KHNlc3Npb25JRCkpCi0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5yZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5yZXF1ZXN0UmVz
b3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSwgeyB9KTsK
IH0KQEAgLTIxMzAsOCArMjEyNSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0Fu
eVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzLCBDb21wbGV0CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmFsbG93VExTQ2VydGlmaWNhdGVDaGFpbkZvckxvY2FsUENNVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1f
bmV0d29ya1Nlc3Npb25zLmdldChzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5nKGNlcnRpZmljYXRlSW5m
byk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBzZXNzaW9uLT5hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW5Gb3JMb2NhbFBDTVRlc3Rp
bmcoY2VydGlmaWNhdGVJbmZvKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25v
c3RpY01lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQpAQCAtMjE3Niw4ICsyMTcxLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29s
IGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25J
bW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2Vi
SURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAm
PSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
WyZdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24u
d2ViSURCU2VydmVyKCkpCisgICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNw
ZW5kKGNvbmRpdGlvbik7CisgICAgfSk7CiAKICAgICBpZiAoYWxsU3VzcGVuZGVkKQogICAgICAg
ICByZXR1cm47CkBAIC0yMTg5LDggKzIxODYsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKICAgICAgICAgaWYgKCFt
X3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3Vz
cGVuc2lvbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChh
dXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2
ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwor
ICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCisgICAgICAg
ICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlv
bjo6QWx3YXlzKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTIyMTUsMTAgKzIyMTQs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVu
c2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICNlbmRpZgogICAgIFBDTTo6U3RvcmU6OnBy
ZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKLSAg
ICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAg
ICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2Nh
bGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChh
dXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vz
c2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1Nl
cnZlcigpKQorICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2VydmVyKCkp
CiAgICAgICAgICAgICBzd1NlcnZlci0+c3RhcnRTdXNwZW5zaW9uKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAjZW5kaWYKICAgICB9KTsKQEAgLTIyNTcsMTQgKzIyNTYsMTYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBQQ006OlN0b3JlOjpwcm9jZXNzRGlkUmVzdW1l
KCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8gc3dTZXJ2
ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1NlcnZlcigpKQorICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbXSAoYXV0byYgc2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0byBzd1NlcnZlciA9IHNlc3Np
b24uc3dTZXJ2ZXIoKSkKICAgICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAg
ICAgfSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnJlc3Vt
ZSgpOworICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAgICAg
ICAgc2VydmVyLT5yZXN1bWUoKTsKKyAgICB9KTsKICAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjMxOCw0MyArMjMxOSw2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVt
ZSkgY29uc3QKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKHNjaGVtZSk7CiB9CiAKLVJlZjxXZWJJREJTZXJ2ZXI+IE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFN0cmlu
ZyBwYXRoOwotICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgQVNT
RVJUKG1faWRiRGF0YWJhc2VQYXRocy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAgICAgICAgcGF0
aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICB9Ci0KLSAgICBhdXRv
IHNwYWNlUmVxdWVzdGVyID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9u
SURdKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAg
ICAgcmV0dXJuIHByb3RlY3RlZFRoaXMtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBv
cmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwot
ICAgIH07Ci0KLSAgICBhdXRvIHJlc3VsdCA9IFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25J
RCwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgIGlmIChtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzKQotICAgICAgICByZXN1bHQtPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNw
ZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYklE
QlNlcnZlciYgTmV0d29ya1Byb2Nlc3M6OndlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCi17Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcnMuZW5zdXJlKHNlc3Npb25JRCwg
W3RoaXMsIHNlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gdGhpcy0+Y3JlYXRlV2ViSURCU2Vy
dmVyKHNlc3Npb25JRCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQotewotICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pZGJEYXRhYmFzZVBhdGhzLmFkZChzZXNzaW9uSUQsIGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCwgaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICB9Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKQEAgLTI0MDEsOSArMjM2NSw4
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+bW92
ZURhdGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgaWYg
KGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykp
IHsKLSAgICAgICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQp
OwotICAgICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRv
cl0geyB9KTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOyBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKQorICAgICAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVuYW1lT3JpZ2luKG9sZE9yaWdp
biwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTI2MjYsOCAr
MjU4OSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX3dlYklEQlNl
cnZlcnMuZ2V0KHNlc3Npb25JRCkpCi0gICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24tPndlYklEQlNlcnZl
cigpKQorICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
ICAgIH0KIAogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVj
dGlvbihjb25uZWN0aW9uKTsKQEAgLTI2NjIsMTUgKzI2MjcsMTUgQEAgU2Vjb25kcyBOZXR3b3Jr
UHJvY2Vzczo6cmFuZG9tQ2xvc2VkUG9ydERlbGF5KCkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+
aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQorICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5oYXNBcHBCb3VuZFNl
c3Npb24oKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAg
ICBzZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjczMSw4ICsyNjk2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zKFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMKICNpZiBQTEFURk9STShD
T0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+YXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uLT5h
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTI3NDAsOCArMjcwNSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5jbGVhckFwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSgpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKCkuY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsKIAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CkBAIC0yNzU5LDI5ICsyNzI0LDIwIEBAIFJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzZXNzaW9uLT5hZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlELCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1l
dGVycyhwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBhdXRvIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgc2Vzc2lvbi0+cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKHBh
Z2VJRCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlE
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigwKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24tPmNvdW50Tm9u
RGVmYXVsdFNlc3Npb25TZXRzKCkpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24gPyBzZXNzaW9uLT5j
b3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cygpIDogMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRiNTI5OTc3MGIy
MDBlYjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
cm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdzOwogY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBVc2VyQ29udGVu
dFVSTFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgV2Vi
SURCU2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgc2hvdWxk
U3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzOyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIHNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgdm9p
ZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBjcmVhdGVXZWJJ
REJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGJSb290
UGF0aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5l
bnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEsNiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1f
aWRiRGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2Vi
SURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURC
U2VydmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7
IDAgfTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Z0cEVuYWJs
ZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtT
dG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8UEFMOjpTZXNz
aW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsgLy8g
RklYTUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3N2M5YWIuLjQw
NTdmNDM5ODVjZjQxN2JlNmVmNjhlN2JlMzMxOGZlMGRkMDBkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTY1LDE2ICs2NiwxNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogY29uc3RleHByIFNlY29uZHMgY2FjaGVkTmV0d29ya1Jlc291cmNlTG9h
ZGVyTGlmZXRpbWUgeyAzMF9zIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4g
TmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3N0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0gICAgcmV0dXJuIE5ldHdvcmtT
ZXNzaW9uU291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBh
cmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCi0gICAgcmV0dXJuIE5ldHdvcmtTZXNz
aW9uQ3VybDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAg
ICByZXR1cm4gTmV0d29ya1Nlc3Npb25DdXJsOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpOwogI2VuZGlmCiB9CiAKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5j
ZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJ
REJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MzksNCAr
NjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBh
dGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJJREJT
ZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQoreworICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAgICAgIGlmICghc2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2lkYkRhdGFi
YXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGg7
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW25ldHdvcmtQcm9j
ZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKV0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgeworICAgICAgICAg
ICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
b3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsK
KyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklEQlNlcnZlcjo6Y3Jl
YXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7CisgICAgICAg
IGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkpCisgICAgICAg
ICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25k
aXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXI7Cit9CisK
K3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2ViSURCU2VydmVyKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0ZDo6ZXhjaGFuZ2Uo
bV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgorICAgIGF1dG8g
aXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lkYkRhdGFiYXNlUGF0
aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcpIHsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChz
ZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4OGVlZWQxYmZiMmMu
LjUxYTdlZDNmYzkwOWM4ODg1MThkOGFiZmU0NzZlMmU0ZWM1ZDc0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0LDYgKzc0LDcgQEAg
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3Jr
UGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNz
IFdlYlNvY2tldFRhc2s7CkBAIC05MSw3ICs5Miw3IEBAIGNsYXNzIENhY2hlOwogY2xhc3MgTmV0
d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpOwpAQCAtMjAzLDYgKzIwNCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYK
IAorICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2
ZXIuZ2V0KCk7IH0KKyAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOworICAg
IHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIGJvb2wgaGFzSURC
RGF0YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlzRW1wdHko
KTsgfQorCiAgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7
CiAgICAgUENNOjpNYW5hZ2VySW50ZXJmYWNlJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsg
cmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKGJvb2wpOwpAQCAtMjk1LDYgKzMwMiw5IEBA
IHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dT
ZXJ2ZXI7CiAjZW5kaWYKIAorICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKKyAgICBSZWZQ
dHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGU0YjhjYzhlYTdkMmU1NDc5NWQwZTBhZGM1
MjY5MDg0MzE2YjY3ODUuLmIwNTZmNGY2ZWI2MDdiNGQ3OWNlYjgyYTVmM2I5NDRkNjNmNGRhOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQgewogcHVibGljOgogICAg
IC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZS4KLSAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggZjdlNjQzYTJhZDNjN2FhN2Y2
NjMwOWVmZDMxODBmMDllZTNmYjRiMC4uYjA5MjJiMDNkYzk3NWZmZTgxN2M1MTY3YTdhY2RiMGEx
M2ZlNDVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIAot
ICAgIE5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB+TmV0
d29ya1Nlc3Npb25Db2NvYSgpOwogCiAgICAgU2Vzc2lvbldyYXBwZXImIGluaXRpYWxpemVFcGhl
bWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGVhZTAwNWIz
N2FhMmU2MTMwZGQwZGQ0YjU3ODBmMTcxNzM1MjY4YzQuLjUxNzUyZjNjYWIxMTJlNWM2MDljMGEy
NThlZGJlM2UxMzM3YWY4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTExNjksOSArMTE2OSw5
IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNz
aW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycyk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwcm94
eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkK
QEAgLTEyMzMsNyArMTIzMyw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlU2Vzc2lvbkNsZWFudXAo
TmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgY29uc3QgTmV0d29ya1NlCiB9CiAjZW5kaWYK
IAotTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK05ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNz
LCBwYXJhbWV0ZXJzKQogICAgICwgbV9kZWZhdWx0U2Vzc2lvblNldChTZXNzaW9uU2V0OjpjcmVh
dGUoKSkKICAgICAsIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKHBhcmFtZXRlcnMuYm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAppbmRleCA1NmQ1NWQ2NmU2YjZhMDZk
ZTg2ZTgwMmY5NWQ4ODgzYTJkYzZlYmVhLi4wMDEyMWVhYjhjZjBiYWJjMmIzYzJkMDI3MTY0YzM3
YTIzYzczZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya1Nlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25D
dXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vz
c2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCiB7CiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZS5pc0VtcHR5KCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRDb29raWVEYXRhYmFzZShtYWtlVW5p
cXVlUmVmPENvb2tpZUphckRCPihwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmls
ZSkpOwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRQcm94eVNldHRpbmdzKFdURk1v
dmUocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKSk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCktPnNldFByb3h5U2V0dGluZ3MocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKTsKIAogI2lmIEVO
QUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuZGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCmluZGV4IGUxOGE0MzkwYjE4OGEyN2U5MzE4
YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUuLmZlMTY3NTYwMjM4ZThkNzVmYTExMDkxYzYxZDQ1ZmFiYzc1
ZTFjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya1Nlc3Npb25DdXJsLmgKQEAgLTMzLDExICszMywxMSBAQCBzdHJ1Y3QgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5h
bCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29y
a1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpOwogICAgIH0KLSAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vz
c2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkN1cmwoKTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dEN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Q3VybC5jcHAKaW5kZXggYTc3M2MzY2MxMzZjZTU3NjA2YmYyZDdhZWU5M2Iw
YzQxYjU3MGJmOC4uY2YwNDkwYjZhNWU4NTJiNGM2Mjk0M2Q5NzlkMDcwZjk3NDJlMDNhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFT
dG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKICAgICBpZiAo
bmV0d29ya1Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbmV0d29ya1Byb2Nlc3MuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lv
biwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKLSAgICBuZXR3b3JrUHJv
Y2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3Jr
UHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsK
KyAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246
OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBmOGRjZjE1MWNjODhjMDM5MmM4ZjNjZGJlMjQ1
M2I1Mjg3ZTAzYTQwLi5hODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiUHJvY2Vzc0Fzc2VydGlvbi5o
IgogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAi
U2VjSXRlbVNoaW0uaCIKKyNpbXBvcnQgIldlYklEQlNlcnZlci5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMTE2
LDggKzExNywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnN1
c3BlbmQoKTsKKyAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24p
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigp
KQorICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOworICAgICAgICB9KTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCAxZTE4NDg5Zjk0NjIwZjAyYTdkOWU5
ZTg2OWVjODY0OTFiN2JiZDRmLi4wZGUyZjBmYzZiNWZhODY4ZDhkMWY2MGNhNzE2YWQ2NWFmNDUy
MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0
ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0dwogCiAg
ICAgbmV0d29ya1Byb2Nlc3MuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiwgbWFr
ZVN0cmluZyhiYXNlLCAnLicsIHNlc3Npb25JRC50b1VJbnQ2NCgpKSwgV1RGTW92ZSh1aVByb2Nl
c3NDb29raWVTdG9yYWdlKSk7CiAKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Np
b25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJh
bWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5z
ZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmNwcAppbmRleCA5ODczMDI2YTA5MWZkZjI5NzRiZTFhMWU3MzRlNmY1YjMwYTdkN2M1Li5i
MDU0ODQ5N2MwM2UxMjAyNWVmZjkzOWM5ZmY2MTVhMGIxYzQ2NjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNw
cApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1By
b2Nlc3MsIHBhcmFtZXRlcnMpCiAgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VVbmlxdWU8U291
cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCiAgICAgLCBtX3BlcnNpc3RlbnRDcmVkZW50
aWFsU3RvcmFnZUVuYWJsZWQocGFyYW1ldGVycy5wZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VF
bmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5oCmluZGV4IGIwMTdjZWZmYzBjODE5Zjc3MTFlZmNiZDM2YTUxNjhl
NjRlNDA5YzAuLmRjNjBiZDU4MTc0NjM4ZDhjYjFmNTA2NmQ2YjIwNTM3NjA4NDk4OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNv
dXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Np
b25Tb3VwLmgKQEAgLTQ0LDExICs0NCwxMSBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uU291cCBmaW5hbCA6IHB1YmxpYyBO
ZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3Vw
PihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMp
OwogICAgIH0KLSAgICBOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvblNvdXAoTmV0
d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwog
ICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKIAogICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vz
c2lvbiYgc291cE5ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gKm1fbmV0d29ya1Nlc3Np
b247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKaW5kZXggYWU5NDcyZjAwNmZh
ZGYwY2MwYzk5N2U0MmM5OWIxN2MxNjY0MTY0NC4uNzZjODJiZjhhMzAwODE4NGYyYjRjOGRjM2Fm
ZTUzOWZkNzUzMjAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKQEAgLTM2
LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9y
ZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAg
IGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vz
c2lvbklEOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICByZXR1cm47CiAKICAgICBuZXR3b3JrUHJvY2Vzcy5lbnN1cmVTZXNzaW9uKHNl
c3Npb25JRCwgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkVXNlVGVz
dGluZ05ldHdvcmtTZXNzaW9uLCBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQudG9VSW50NjQoKSkp
OwotICAgIG5ldHdvcmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lv
bjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzKSkpOworICAgIG5ldHdvcmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycykpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDEwODYwMDc0MzNlZTE5NWJjMjc4ZTdiODkw
NTQ1MGRiZDhhZWE4NmQuLjI2NmY2ZGI3ZjEzYzMyM2ZmZmY1MTM4YzAyZDg0NjA3YzMwOGVjZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJs
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBA
IC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCit2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKGNvbnN0IFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDQ2NzJiNzk1MjIwMTQwMzRmNzI2M2IzMjBl
ZDMwNzhhYmRlZDlkMjMuLmExNTk4YjIxODdiZWY2ZjFmNjM4MTBkOGYxNDRmOGI0NzM1NzczZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJs
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZW5z
dXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7
CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3
ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDliZjU4N2ZlMDZkMTY1MzJmN2I0N2Y4ZmNhMzI5NWVi
MzFkNzM0NTIuLjdiOWIyODQ2YjUzMWNmYTg5ZmJjYzMxNmE2MDg4ZDcwYWFjOTIzOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBGSVhNRTogcmVtb3ZlIHBsYXRmb3JtLXNwZWNp
ZmljIGNvZGUuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24o
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsK
IAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmlu
ZGV4IDI5NTk1YzdhZDNiZDc3YmMzMmZjODIzZDNkM2VlZmQ5ZmZjMWU1OGYuLjE0MWFhN2FhZTU4
YzZjZTQ1MDBiMTI2OWJkNTJlMjE2MWVhNGIzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJiYpCit2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJikK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmlu
ZGV4IDljYzhhZTQ2ODkyOTliNjYxNDQwODM5NjIyZDkwNzQ4ZjdjNWFkZTMuLmRhZmMwYjg5YmQw
NDE1YjI2ZGU1NDkzNGFjMTg3ZmRiMzhlNGVlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJik7Ci0gICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFT
dG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHZv
aWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmKTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNs
aWVudCgpIGNvbnN0OwogCg==
</data>
<flag name="commit-queue"
          id="472988"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447377</attachid>
            <date>2021-12-16 11:53:35 -0800</date>
            <delta_ts>2021-12-16 12:12:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211216115334.patch</filename>
            <type>text/plain</type>
            <size>107776</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljYmUxZGI4YzBjYjlhMzY1
ZGFjYWYwODRjZWJlMWM2Mjg5OWY2ZTQuLmIwMWQ3OTBhNWM2MWJiZjY1ODQwNzhhY2YxODlmNmZj
NzZiNDAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20gTmV0
d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBlciBz
ZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNX
aXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VzcGVu
ZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hDb29r
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
Rmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZlTG9h
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0
QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91
dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
QXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JTRm9y
UmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVsdFNl
c3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5j
ZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0xNiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1Nd
IEFkanVzdCBzYW5kYm94IG1lc3NhZ2UgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDRkN2VhNjQ5NjdmZTM0M2I2ODc3OTMxNTBkNDFiOGQ0NjU4OTJjMDIuLjljNmRkOGNl
NGQ4ZjA2YTIwM2I2NDBhYTIyYTAyNWU5OTdmMzEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtOTQwLDcgKzk0
MSw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6
IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwog
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYklEQlNlcnZlcihtX3Nlc3Npb25JRCkucmVn
aXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQorICAgICAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShmaWxlUGF0aHMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYWQ2MzY2MmRmODU0ZTI4NmNkOGNl
ZDIwYmE0MWFiNmNlNmJlYTA5MS4uYzZjMjY0NWQ5NTMzMjE5YTE1OGU3Nzg4YjE3Y2RmMGIxMGU1
M2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHVzaE1lc3NhZ2UuaCIKQEAgLTI2NiwxNCArMjY3LDExIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgfSk7CiAKICAgICAvLyBNYWtl
IHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KLSAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAg
ICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRv
JiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lv
bklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBy
ZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4K
KyAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwogICAgIH0pOwotCi0gICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5jZSB0byBOZXR3b3JrUHJvY2Vz
cyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgIGF1dG8gc2VydmVycyA9IHN0ZDo6
ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXJzLCB7IH0pOwotICAgIGZvciAoYXV0byYgc2VydmVyIDog
c2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZShbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDcmVhdGVEb3dubG9hZCgp
CkBAIC0zMDMsOCArMzAxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbCBjcml0aWNhbCkKIAogICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KCk7CiAKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBuZXR3
b3JrU2Vzc2lvbikgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi5sb3dNZW1vcnlIYW5kbGVyKGNy
aXRpY2FsKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBzZXNz
aW9uKSB7CisgICAgICAgIHNlc3Npb24ubG93TWVtb3J5SGFuZGxlcihjcml0aWNhbCk7CiAgICAg
fSk7CiAKICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX3N0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMo
KSkKQEAgLTM5MSwxNyArMzg5LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAKICAgICBj
b25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24o
KS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5hZGRDb25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGlk
ZW50aWZpZXIpOwogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNv
bm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7Ci0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRpYWxzKCk7CisgICAgICAgIHNlc3Npb24t
PmNsZWFyQ3JlZGVudGlhbHMoKTsKICAgICB9CiB9CiAKQEAgLTQwOSwxNyArNDA4LDE3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CiAKKyAgICBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIHBhcmFtZXRl
cnMpOworCiAgICAgYWRkU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1l
dGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURp
cmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBhZGRTZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHNl
c3Npb25JRCwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLQotICAgIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7Ci0KKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFiYXNlU2Vz
c2lvbihwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwg
dWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBAIC01
NTgsMTYgKzU1NywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24ucmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lF
bmdpbmUoKnRoaXMsIHNlc3Npb25JRCk7CiAKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBtX3dlYklE
QlNlcnZlcnMudGFrZShzZXNzaW9uSUQpKQotICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAg
cmVtb3ZlU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFC
TEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTU4Niw4ICs1ODMsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpT
ZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZChkb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtNTk5LDggKzU5Niw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2Uo
ZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYxMiw4ICs2MDksOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYzMiw4
ICs2MjksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKGRvbWFpbiwgaXNHcmFuZGZhdGhlcmVk
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDUsOCArNjQyLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NTgsOCArNjU1LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NzEsOCAr
NjY4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
Njg0LDggKzY4MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTY5Nyw4ICs2OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZhbGVudFJl
c291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNzEwLDkgKzcwNyw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mg
c2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhcklzb2xh
dGVkU2Vzc2lvbnMoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Np
b24tPmNsZWFySXNvbGF0ZWRTZXNzaW9ucygpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAg
ICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNp
bmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgICAgICBlbHNlCkBAIC03MjcsOCArNzI0LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKQEAgLTc0MCw5ICs3MzcsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVzZXRDTkFNRURvbWFp
bkRhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9uLT5yZXNl
dENOQU1FRG9tYWluRGF0YSgpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC03NTQsOCArNzUxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q28KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC03NjcsOCArNzY0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lv
bklEIHMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFi
bGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CkBAIC03ODAsOCArNzc3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGlj
c0RhdGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ28KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZh
bHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC03OTMsOCArNzkwLDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNl
c3Npb25JRCBzZXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0SXNSdW5uaW5nVGVzdCh2YWx1ZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtODA2LDggKzgwMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNl
c3NpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
ODE5LDggKzgxNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oZG9tYWluUmVkaXJl
Y3RlZEZyb20sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBA
IC04MzIsOCArODI5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRp
cmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN1YkZyYW1lRG9tYWluLCB0b3BG
cmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC04NDUsOCArODQyLDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1l
RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NTgsOCArODU1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg3MSw4ICs4NjgsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGly
ZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9t
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04ODQsOCArODgxLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKQEAgLTg5Nyw4ICs4OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
bwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8odG9w
RnJhbWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
OTEwLDggKzkwNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZURvbWFpbiwg
ZG9tYWluUmVkaXJlY3RlZEZyb20sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTkyNCw4ICs5MjEs
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zZXRMYXN0U2Vlbihkb21haW4sIHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAg
LTkzNyw4ICs5MzQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+ZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlKGRvbWFpbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTk1MCw4ICs5NDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0
YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBpbnQgZG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
Zyhkb21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFk
VXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVy
ZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtOTYzLDggKzk2MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhw
aXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoZG9tYWluLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTk4Niw4ICs5ODMsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFt
ZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVj
dCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRM
b2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQogewotICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4s
IHRvcEZyYW1lRG9tYWluLCBzb3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBk
ZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5
VXNlcik7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTk1
LDggKzk5Miw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5s
b2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDA4LDgg
KzEwMDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewor
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
Pmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpA
QCAtMTAyMSw4ICsxMDE4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFkVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmEKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKHN1YkRvbWFpbiwgdG9wRG9t
YWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTEwMzQsOCArMTAzMSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJVc2VySW50ZXJhY3Rp
b24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDcwLDggKzEwNjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA4Myw4ICsxMDgwLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vj
b25kcyBzZWMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1heGlt
dW1FbnRyeUNvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDk2LDggKzEwOTMsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC0xMTA5LDggKzExMDYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKHBydW5lVGFyZ2V0Q291bnQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTExMjIsOCArMTExOSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFBy
dW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHByCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKQEAgLTExMzUsOCArMTEzMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNv
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0x
MTQ4LDIxICsxMTQ1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2VzCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Np
b24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKIHsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1
dG8mIG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoZW5hYmxlZCk7CisgICAgZm9yRWFjaE5ldHdv
cmtTZXNzaW9uKFtlbmFibGVkXShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHNlc3Npb24uc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChlbmFibGVkKTsKICAgICB9KTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShk
ZWJ1Z01vZGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTExNzQsOCArMTE3MSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklECiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VwaGVtZXJhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzRXBo
ZW1lcmFsKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjEwLDggKzEy
MDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERh
dGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAogICAgIGlmIChuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmNvbnRhaW5zKENyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc6OkRlc3RpbmF0aW9uTGlua0RlY29yYXRpb24p
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9t
YWluLCBbXSB7IH0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTIyMCw4ICsxMjE3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ29t
bWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihmcm9tRG9tYWluLCB0b0RvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTI0MywxNiAr
MTI0MCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExp
bmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npbwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIHJlc3VsdCA9IG5ldHdvcmtTZXNzaW9uLT5oYXNJc29sYXRlZFNl
c3Npb24oZG9tYWluKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCisgICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmhhc0lzb2xhdGVkU2Vzc2lvbihk
b21haW4pOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUo
YXBwQm91bmREb21haW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjY0LDE2ICsxMjYxLDE2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbZW5hYmxl
ZF0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24uc2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpOworICAgIGZvckVhY2hOZXR3
b3JrU2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBzZXNzaW9uLnNl
dFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkKTsKICAgICB9KTsKICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBu
ZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01v
ZGUpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2lu
Z01vZGUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTEyODEsOCArMTI3OCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0
d29ya1Nlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChlbmFi
bGVkKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgIHNlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dChlbmFibGVkKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjkwLDggKzEyODcsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUobW9kZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTMxMywxNSArMTMxMCwxNSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92
ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92ZShmaXJzdFBhcnR5SG9zdCksIFdURk1v
dmUoY25hbWVEb21haW4pKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
ZyhXVEZNb3ZlKGRvbWFpbikpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
Rm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC0x
MzM4LDggKzEzMzUsOCBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuYWJsZWQoKSBjb25zdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5h
YmxlZCkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z01vZGUoZW5hYmxlZCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShlbmFibGVkKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKQEAgLTEzNTIsOCArMTM0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAg
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKQEAgLTEzNzIsMTAgKzEzNjksMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAg
ICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RP
bmx5OjpZZXM7CiAKLSAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5z
dGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCk7Ci0gICAgYXV0
byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3dlYWtOZXR3b3JrU2Vzc2lvbiA9IFdlYWtQdHIgeyAqbmV0d29ya1Nlc3Npb24g
fSwgdXJsLCB1c2VyQWdlbnRdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7
Ci0gICAgICAgIGlmICh3ZWFrTmV0d29ya1Nlc3Npb24pCi0gICAgICAgICAgICB3ZWFrTmV0d29y
a1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFp
blJlc291cmNlKHVybCwgdXNlckFnZW50LCBlcnJvcik7CisgICAgc2Vzc2lvbi0+bmV0d29ya0xv
YWRTY2hlZHVsZXIoKS5zdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJB
Z2VudCk7CisgICAgYXV0byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpzZXNzaW9uLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbc2Vzc2lvbiA9IFdlYWtQdHIgeyAqc2Vzc2lvbiB9LCB1cmwsIHVz
ZXJBZ2VudF0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKKyAgICAgICAg
aWYgKHNlc3Npb24pCisgICAgICAgICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigp
LmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCwgZXJyb3Ip
OwogICAgIH0pOwogICAgIHRhc2stPnNldFRpbWVvdXQoMTBfcyk7CiAgICAgdGFzay0+c3RhcnQo
KTsKQEAgLTE0NTEsNyArMTQ0OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfTsK
IAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0Fn
Z3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKLSAgICBhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpA
QCAtMTQ4MCwxNyArMTQ3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9
IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBw
YXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5p
c0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0
T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7CisgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdn
cmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgbmV0d29ya1Nlc3Np
b24gJiYgbmV0d29ya1Nlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJl
Z2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgp
KSB7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdp
c3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAgfSk7CkBA
IC0xNTA1LDE1ICsxNTAxLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfQogCiAj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpICYm
IG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbmV0d29ya1Nl
c3Npb24tPmhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkpCisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2Vz
KSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+aG9z
dE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAwIH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KSAmJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3MpICYmIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlZ2lzdHJhYmxlRG9tYWlucyhbY2Fs
bGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKCFkb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmFkZChkb21haW5zLnRha2VMYXN0KCkpOwpAQCAtMTUzMyw3ICsxNTI5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKQEAgLTE1NTYsMTggKzE1NTIsMTggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
IAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHdl
YklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5j
ZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zKTsKLSAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVT
V1NlcnZlcigpLmNsZWFyQWxsKFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICBpZiAoY2xl
YXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikK
KyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5jbGVhckFsbChbY2xlYXJUYXNrc0hh
bmRsZXJdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19Q
UkVWRU5USU9OKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbiA/IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbiA/IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSA6IG51bGxwdHIpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBh
bGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0
b3JlIG1vbml0b3JzCiAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZh
dGhlciBvbGQgZGF0YS4KICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zQWxsKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bW9uaXRvcmVkRGF0YVR5cGVzKCkpID8gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwpAQCAtMTU3NiwxOCArMTU3MiwxOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG5ldHdv
cmtTZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVE
YXRhKG1vZGlmaWVkU2luY2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0p
OworICAgIGlmIChzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0
ZURhdGEobW9kaWZpZWRTaW5jZSwgc3RkOjpudWxsb3B0LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsg
fSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkRpc2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBjbGVhckRp
c2tDYWNoZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
KyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICNpZiBI
QVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYgbmV0
d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2Vy
dmljZXMobW9kaWZpZWRTaW5jZSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBzZXNzaW9uKQorICAgICAg
ICBzZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAjZW5k
aWYKIAogICAgIGlmIChOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKHdlYnNp
dGVEYXRhVHlwZXMpKSB7CkBAIC0xNjIyLDcgKzE2MTgsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckRp
c2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxT
ZWN1cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJz
aXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0
YXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mIHJlZ2lzdHJhYmxlRG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNjM1LDE3ICsxNjMxLDE3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgewor
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJu
YXRpdmVTZXJ2aWNlcykgJiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIGhvc3RzID0gb3JpZ2lu
RGF0YXMubWFwKFtdKGF1dG8mIG9yaWdpbkRhdGEpIHsgcmV0dXJuIG9yaWdpbkRhdGEuaG9zdDsg
fSk7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9y
SG9zdE5hbWVzKGhvc3RzKTsKKyAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhob3N0cyk7CiAgICAgfQogI2VuZGlmCiAKICAgICBhdXRvIGNsZWFy
VGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Np
b24pIHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikgewogICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCksIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICAgICAgICAgIHNlc3Npb24tPmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luRGF0YS5ob3N0KSwgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBAIC0xNjUzLDEzICsxNjQ5LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
b3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFz
LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJT
ZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAgaWYgKGNsZWFy
U2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIG5ldHdvcmtTZXNz
aW9uKSB7Ci0gICAgICAgIGF1dG8mIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1Nl
cnZlcigpOworICAgIGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVu
c3VyZVNXU2VydmVyKCk7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRh
dGFzKQogICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKICAgICB9CkBAIC0xNjgwLDkgKzE2NzYsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpbwogICAgIH0KIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5U
SU9OKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3Ry
YWJsZURvbWFpbnMpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnJlbW92ZURhdGFGb3JEb21haW4oZG9tYWluLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjkzLDcgKzE2ODksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpbwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRh
VHlwZXMsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0g
ICAgaWYgKG5ldHdvcmtTZXNzaW9uKSB7CisgICAgaWYgKHNlc3Npb24pIHsKICAgICAgICAgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0Rh
dGFGb3I7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAg
ICAgICAgICAgZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW5EYXRhLmhvc3QpKTsK
QEAgLTE3MDQsNyArMTcwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgIGZv
ciAoYXV0byYgZG9tYWluIDogcmVnaXN0cmFibGVEb21haW5zKQogICAgICAgICAgICAgZG9tYWlu
c1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKGRvbWFpbik7CiAKLSAgICAgICAgbmV0d29ya1Nl
c3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdURk1vdmUoZG9t
YWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Cisg
ICAgICAgIHNlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdU
Rk1vdmUoZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJd
IHsgfSk7CiAgICAgfQogfQogCkBAIC0xNzQ3LDcgKzE3NDMsNyBAQCBzdGF0aWMgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNv
bnN0IEhhcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5z
VG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5v
dGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9O
b3RDcmVhdGVQcm9jZXNzZXM7CiAKQEAgLTE4MTMsOSArMTgwOSw5IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJ
Q0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpB
bHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgeworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykg
JiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlID0g
ZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IubWFwKFtdKGF1dG8mIGRv
bWFpbikgeyByZXR1cm4gZG9tYWluLnN0cmluZygpOyB9KTsKLSAgICAgICAgbmV0d29ya1Nlc3Np
b24tPmRlbGV0ZUFsdGVybmF0aXZlU2VydmljZXNGb3JIb3N0TmFtZXMocmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGUpOworICAgICAgICBzZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
Rm9ySG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlKTsKICAgICB9CiAjZW5kaWYK
IApAQCAtMTg0NSwyNyArMTg0MSwyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNl
c3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAg
ICAgICAgaWYgKCFtX3dlYklEQlNlcnZlcnMuY29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAg
ICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lu
cykgeworICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7CisgICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPndlYklEQlNlcnZlcigp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21h
aW5zKTsKLSAgICAgICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CisgICAgICAgICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgbmV0d29ya1Nlc3Npb24gJiYgbmV0d29ya1Nlc3Np
b24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBuZXR3b3JrU2Vz
c2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IG5ldHdvcmtTZXNzaW9uID0gV2Vha1B0ciB7ICpuZXR3b3JrU2Vzc2lvbiB9XShjb25zdCBIYXNo
U2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNl
V29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIo
KS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tp
ZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHNlc3Npb24gPSBXZWFrUHRyIHsg
KnNlc3Npb24gfV0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9y
aWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6
IHNlY3VyaXR5T3JpZ2lucykgewogICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChz
ZWN1cml0eU9yaWdpbi5ob3N0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ldHdvcmtTZXNzaW9u
KQotICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5j
bGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJl
U1dTZXJ2ZXIoKS5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTkyNyw3ICsxOTIzLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWIKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0
ZVByb2Nlc3NlczsKICAgICAKQEAgLTE5OTMsMTcgKzE5ODksMTYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGF1dG8gcGF0aCA9IG1faWRi
RGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYm
IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpKSB7Ci0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmdldE9yaWdpbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vz
c2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1
dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcywgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBuZXR3b3JrU2Vzc2lvbiAmJiBu
ZXR3b3JrU2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAg
IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0
aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYg
c2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlv
bnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+
JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1
cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwg
V2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAg
ICAgfSk7CkBAIC0yMDk1LDggKzIwOTAsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbnMuZ2V0KHNlc3Npb25JRCkpCi0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5yZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5yZXF1ZXN0UmVz
b3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSwgeyB9KTsK
IH0KQEAgLTIxMzAsOCArMjEyNSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0Fu
eVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzLCBDb21wbGV0CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmFsbG93VExTQ2VydGlmaWNhdGVDaGFpbkZvckxvY2FsUENNVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1f
bmV0d29ya1Nlc3Npb25zLmdldChzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5nKGNlcnRpZmljYXRlSW5m
byk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBzZXNzaW9uLT5hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW5Gb3JMb2NhbFBDTVRlc3Rp
bmcoY2VydGlmaWNhdGVJbmZvKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25v
c3RpY01lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQpAQCAtMjE3Niw4ICsyMTcxLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29s
IGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25J
bW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2Vi
SURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAm
PSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
WyZdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24u
d2ViSURCU2VydmVyKCkpCisgICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNw
ZW5kKGNvbmRpdGlvbik7CisgICAgfSk7CiAKICAgICBpZiAoYWxsU3VzcGVuZGVkKQogICAgICAg
ICByZXR1cm47CkBAIC0yMTg5LDggKzIxODYsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKICAgICAgICAgaWYgKCFt
X3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3Vz
cGVuc2lvbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChh
dXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2
ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwor
ICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCisgICAgICAg
ICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlv
bjo6QWx3YXlzKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTIyMTUsMTAgKzIyMTQs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVu
c2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICNlbmRpZgogICAgIFBDTTo6U3RvcmU6OnBy
ZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKLSAg
ICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAg
ICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2Nh
bGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChh
dXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vz
c2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1Nl
cnZlcigpKQorICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2VydmVyKCkp
CiAgICAgICAgICAgICBzd1NlcnZlci0+c3RhcnRTdXNwZW5zaW9uKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAjZW5kaWYKICAgICB9KTsKQEAgLTIyNTcsMTQgKzIyNTYsMTYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBQQ006OlN0b3JlOjpwcm9jZXNzRGlkUmVzdW1l
KCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8gc3dTZXJ2
ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1NlcnZlcigpKQorICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbXSAoYXV0byYgc2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0byBzd1NlcnZlciA9IHNlc3Np
b24uc3dTZXJ2ZXIoKSkKICAgICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAg
ICAgfSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnJlc3Vt
ZSgpOworICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAgICAg
ICAgc2VydmVyLT5yZXN1bWUoKTsKKyAgICB9KTsKICAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjMxOCw0MyArMjMxOSw2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVt
ZSkgY29uc3QKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKHNjaGVtZSk7CiB9CiAKLVJlZjxXZWJJREJTZXJ2ZXI+IE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFN0cmlu
ZyBwYXRoOwotICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgQVNT
RVJUKG1faWRiRGF0YWJhc2VQYXRocy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAgICAgICAgcGF0
aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICB9Ci0KLSAgICBhdXRv
IHNwYWNlUmVxdWVzdGVyID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9u
SURdKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAg
ICAgcmV0dXJuIHByb3RlY3RlZFRoaXMtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBv
cmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwot
ICAgIH07Ci0KLSAgICBhdXRvIHJlc3VsdCA9IFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25J
RCwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgIGlmIChtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzKQotICAgICAgICByZXN1bHQtPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNw
ZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYklE
QlNlcnZlciYgTmV0d29ya1Byb2Nlc3M6OndlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCi17Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcnMuZW5zdXJlKHNlc3Npb25JRCwg
W3RoaXMsIHNlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gdGhpcy0+Y3JlYXRlV2ViSURCU2Vy
dmVyKHNlc3Npb25JRCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQotewotICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pZGJEYXRhYmFzZVBhdGhzLmFkZChzZXNzaW9uSUQsIGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCwgaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICB9Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKQEAgLTI0MDEsOSArMjM2NSw4
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+bW92
ZURhdGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgaWYg
KGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykp
IHsKLSAgICAgICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQp
OwotICAgICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRv
cl0geyB9KTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOyBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKQorICAgICAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVuYW1lT3JpZ2luKG9sZE9yaWdp
biwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTI2MjYsOCAr
MjU4OSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX3dlYklEQlNl
cnZlcnMuZ2V0KHNlc3Npb25JRCkpCi0gICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24tPndlYklEQlNlcnZl
cigpKQorICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
ICAgIH0KIAogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVj
dGlvbihjb25uZWN0aW9uKTsKQEAgLTI2NjIsMTUgKzI2MjcsMTUgQEAgU2Vjb25kcyBOZXR3b3Jr
UHJvY2Vzczo6cmFuZG9tQ2xvc2VkUG9ydERlbGF5KCkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+
aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQorICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5oYXNBcHBCb3VuZFNl
c3Npb24oKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAg
ICBzZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjczMSw4ICsyNjk2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zKFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMKICNpZiBQTEFURk9STShD
T0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+YXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uLT5h
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTI3NDAsOCArMjcwNSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5jbGVhckFwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSgpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKCkuY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsKIAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CkBAIC0yNzU5LDI5ICsyNzI0LDIwIEBAIFJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzZXNzaW9uLT5hZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlELCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1l
dGVycyhwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBhdXRvIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgc2Vzc2lvbi0+cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKHBh
Z2VJRCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlE
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigwKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24tPmNvdW50Tm9u
RGVmYXVsdFNlc3Npb25TZXRzKCkpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24gPyBzZXNzaW9uLT5j
b3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cygpIDogMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRiNTI5OTc3MGIy
MDBlYjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
cm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdzOwogY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBVc2VyQ29udGVu
dFVSTFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgV2Vi
SURCU2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgc2hvdWxk
U3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzOyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIHNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgdm9p
ZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBjcmVhdGVXZWJJ
REJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGJSb290
UGF0aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5l
bnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEsNiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1f
aWRiRGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2Vi
SURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURC
U2VydmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7
IDAgfTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Z0cEVuYWJs
ZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtT
dG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8UEFMOjpTZXNz
aW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsgLy8g
RklYTUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3N2M5YWIuLjQw
NTdmNDM5ODVjZjQxN2JlNmVmNjhlN2JlMzMxOGZlMGRkMDBkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTY1LDE2ICs2NiwxNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogY29uc3RleHByIFNlY29uZHMgY2FjaGVkTmV0d29ya1Jlc291cmNlTG9h
ZGVyTGlmZXRpbWUgeyAzMF9zIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4g
TmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3N0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0gICAgcmV0dXJuIE5ldHdvcmtT
ZXNzaW9uU291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBh
cmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCi0gICAgcmV0dXJuIE5ldHdvcmtTZXNz
aW9uQ3VybDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAg
ICByZXR1cm4gTmV0d29ya1Nlc3Npb25DdXJsOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpOwogI2VuZGlmCiB9CiAKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5j
ZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJ
REJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MzksNCAr
NjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBh
dGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJJREJT
ZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQoreworICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAgICAgIGlmICghc2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2lkYkRhdGFi
YXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGg7
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW25ldHdvcmtQcm9j
ZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKV0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgeworICAgICAgICAg
ICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
b3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsK
KyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklEQlNlcnZlcjo6Y3Jl
YXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7CisgICAgICAg
IGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkpCisgICAgICAg
ICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25k
aXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXI7Cit9CisK
K3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2ViSURCU2VydmVyKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0ZDo6ZXhjaGFuZ2Uo
bV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgorICAgIGF1dG8g
aXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lkYkRhdGFiYXNlUGF0
aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcpIHsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChz
ZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4OGVlZWQxYmZiMmMu
LjUxYTdlZDNmYzkwOWM4ODg1MThkOGFiZmU0NzZlMmU0ZWM1ZDc0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0LDYgKzc0LDcgQEAg
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3Jr
UGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNz
IFdlYlNvY2tldFRhc2s7CkBAIC05MSw3ICs5Miw3IEBAIGNsYXNzIENhY2hlOwogY2xhc3MgTmV0
d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpOwpAQCAtMjAzLDYgKzIwNCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYK
IAorICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2
ZXIuZ2V0KCk7IH0KKyAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOworICAg
IHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIGJvb2wgaGFzSURC
RGF0YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlzRW1wdHko
KTsgfQorCiAgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7
CiAgICAgUENNOjpNYW5hZ2VySW50ZXJmYWNlJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsg
cmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKGJvb2wpOwpAQCAtMjk1LDYgKzMwMiw5IEBA
IHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dT
ZXJ2ZXI7CiAjZW5kaWYKIAorICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKKyAgICBSZWZQ
dHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGU0YjhjYzhlYTdkMmU1NDc5NWQwZTBhZGM1
MjY5MDg0MzE2YjY3ODUuLmIwNTZmNGY2ZWI2MDdiNGQ3OWNlYjgyYTVmM2I5NDRkNjNmNGRhOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQgewogcHVibGljOgogICAg
IC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZS4KLSAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggZjdlNjQzYTJhZDNjN2FhN2Y2
NjMwOWVmZDMxODBmMDllZTNmYjRiMC4uYjA5MjJiMDNkYzk3NWZmZTgxN2M1MTY3YTdhY2RiMGEx
M2ZlNDVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIAot
ICAgIE5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB+TmV0
d29ya1Nlc3Npb25Db2NvYSgpOwogCiAgICAgU2Vzc2lvbldyYXBwZXImIGluaXRpYWxpemVFcGhl
bWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGVhZTAwNWIz
N2FhMmU2MTMwZGQwZGQ0YjU3ODBmMTcxNzM1MjY4YzQuLjEyNDBkMjEwOTg5YmU5NzBlY2U1ZWJm
YjNhOWRmY2YxZWExNGEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTExNjksOSArMTE2OSw5
IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNz
aW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycyk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwcm94
eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkK
QEAgLTEyMzMsNyArMTIzMyw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlU2Vzc2lvbkNsZWFudXAo
TmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgY29uc3QgTmV0d29ya1NlCiB9CiAjZW5kaWYK
IAotTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK05ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNz
LCBwYXJhbWV0ZXJzKQogICAgICwgbV9kZWZhdWx0U2Vzc2lvblNldChTZXNzaW9uU2V0OjpjcmVh
dGUoKSkKICAgICAsIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKHBhcmFtZXRlcnMuYm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKQpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgTmV0d29ya1Nlc3Npb25D
b2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzICYmICFwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMpLCBbXSB7IH0pOwor
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyh7IHBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5z
IH0sIFtdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEhBVkUoU0VTU0lPTl9DTEVBTlVQKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25D
dXJsLmNwcAppbmRleCA1NmQ1NWQ2NmU2YjZhMDZkZTg2ZTgwMmY5NWQ4ODgzYTJkYzZlYmVhLi4w
MDEyMWVhYjhjZjBiYWJjMmIzYzJkMDI3MTY0YzM3YTIzYzczZmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNw
cApAQCAtMzcsMTIgKzM3LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0
d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3Vy
bChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29y
a1Byb2Nlc3MsIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlRmlsZS5pc0VtcHR5KCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpLT5zZXRDb29raWVEYXRhYmFzZShtYWtlVW5pcXVlUmVmPENvb2tpZUphckRCPihwYXJhbWV0
ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZSkpOwotICAgIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpLT5zZXRQcm94eVNldHRpbmdzKFdURk1vdmUocGFyYW1ldGVycy5wcm94eVNldHRpbmdz
KSk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNldFByb3h5U2V0dGluZ3MocGFyYW1l
dGVycy5wcm94eVNldHRpbmdzKTsKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19Q
UkVWRU5USU9OKQogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3Vy
bC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3Vy
bC5oCmluZGV4IGUxOGE0MzkwYjE4OGEyN2U5MzE4YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUuLmZlMTY3
NTYwMjM4ZThkNzVmYTExMDkxYzYxZDQ1ZmFiYzc1ZTFjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKQEAgLTMz
LDExICszMywxMSBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAK
IGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2Vz
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdv
cmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpOwogICAgIH0KLSAgICBO
ZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBj
b25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIH5OZXR3b3JrU2Vz
c2lvbkN1cmwoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dEN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKaW5kZXgg
YTc3M2MzY2MxMzZjZTU3NjA2YmYyZDdhZWU5M2IwYzQxYjU3MGJmOC4uY2YwNDkwYjZhNWU4NTJi
NGM2Mjk0M2Q5NzlkMDcwZjk3NDJlMDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3Vy
bC5jcHAKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBjb25zdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnNlc3Npb25JRDsKICAgICBpZiAobmV0d29ya1Byb2Nlc3Muc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbmV0d29ya1Byb2Nlc3MuZW5z
dXJlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklE
LnRvVUludDY0KCkpKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwg
TmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNz
aW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgcGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRl
eCBmOGRjZjE1MWNjODhjMDM5MmM4ZjNjZGJlMjQ1M2I1Mjg3ZTAzYTQwLi5hODdhZDgwNWI1ZGYx
NTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMzMsNiArMzMsNyBA
QAogI2ltcG9ydCAiUHJvY2Vzc0Fzc2VydGlvbi5oIgogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxp
emF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiU2VjSXRlbVNoaW0uaCIKKyNpbXBvcnQgIldl
YklEQlNlcnZlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBv
cnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMTE2LDggKzExNywxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVz
KQogICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFs
dWVzKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoKTsKKyAgICAgICAgZm9yRWFjaE5l
dHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBz
ZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAgICAgICAgICAgIHNlcnZlci0+
c3VzcGVuZCgpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5t
bQppbmRleCAxZTE4NDg5Zjk0NjIwZjAyYTdkOWU5ZTg2OWVjODY0OTFiN2JiZDRmLi4wZGUyZjBm
YzZiNWZhODY4ZDhkMWY2MGNhNzE2YWQ2NWFmNDUyMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5t
bQpAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0
b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0g
cGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChu
ZXR3b3JrUHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vz
c2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0dwogCiAgICAgbmV0d29ya1Byb2Nlc3MuZW5zdXJlU2Vz
c2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3Vs
ZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiwgbWFrZVN0cmluZyhiYXNlLCAnLicsIHNlc3Npb25J
RC50b1VJbnQ2NCgpKSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVTdG9yYWdlKSk7CiAKLSAgICBu
ZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0
ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycykpKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29y
a1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCA5ODczMDI2YTA5MWZk
ZjI5NzRiZTFhMWU3MzRlNmY1YjMwYTdkN2M1Li5iMDU0ODQ5N2MwM2UxMjAyNWVmZjkzOWM5ZmY2
MTVhMGIxYzQ2NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25T
b3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vz
c2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCiAgICAgLCBt
X25ldHdvcmtTZXNzaW9uKG1ha2VVbmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25J
RCkpCiAgICAgLCBtX3BlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQocGFyYW1ldGVy
cy5wZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCmluZGV4IGIw
MTdjZWZmYzBjODE5Zjc3MTFlZmNiZDM2YTUxNjhlNjRlNDA5YzAuLmRjNjBiZDU4MTc0NjM4ZDhj
YjFmNTA2NmQ2YjIwNTM3NjA4NDk4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKQEAgLTQ0LDExICs0NCwxMSBA
QCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdv
cmtTZXNzaW9uU291cCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+
IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uU291
cD4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpOwogICAgIH0KLSAgICBOZXR3b3JrU2Vzc2lv
blNvdXAoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYm
KTsKKyAgICBOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsK
IAogICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbiYgc291cE5ldHdvcmtTZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gKm1fbmV0d29ya1Nlc3Npb247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0U291cC5jcHAKaW5kZXggYWU5NDcyZjAwNmZhZGYwY2MwYzk5N2U0MmM5OWIxN2MxNjY0MTY0
NC4uNzZjODJiZjhhMzAwODE4NGYyYjRjOGRjM2FmZTUzOWZkNzUzMjAxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0U291cC5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lv
bihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChuZXR3b3JrUHJv
Y2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBu
ZXR3b3JrUHJvY2Vzcy5lbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uLCBTdHJpbmc6
Om51bWJlcihzZXNzaW9uSUQudG9VSW50NjQoKSkpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNldFNl
c3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBX
VEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOworICAgIG5ldHdv
cmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5l
dHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Y3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmlu
ZGV4IDEwODYwMDc0MzNlZTE5NWJjMjc4ZTdiODkwNTQ1MGRiZDhhZWE4NmQuLjI2NmY2ZGI3ZjEz
YzMyM2ZmZmY1MTM4YzAyZDg0NjA3YzMwOGVjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJiYpCit2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJikK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmlu
ZGV4IDQ2NzJiNzk1MjIwMTQwMzRmNzI2M2IzMjBlZDMwNzhhYmRlZDlkMjMuLmExNTk4YjIxODdi
ZWY2ZjFmNjM4MTBkOGYxNDRmOGI0NzM1NzczZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24o
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsK
IAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDli
ZjU4N2ZlMDZkMTY1MzJmN2I0N2Y4ZmNhMzI5NWViMzFkNzM0NTIuLjdiOWIyODQ2YjUzMWNmYTg5
ZmJjYzMxNmE2MDg4ZDcwYWFjOTIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAv
LyBGSVhNRTogcmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuCi0gICAgc3RhdGljIHZvaWQg
ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMm
Jik7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3Qg
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50
KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDI5NTk1YzdhZDNiZDc3YmMzMmZjODIz
ZDNkM2VlZmQ5ZmZjMWU1OGYuLjE0MWFhN2FhZTU4YzZjZTQ1MDBiMTI2OWJkNTJlMjE2MWVhNGIz
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3Bw
CkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVE
YXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCit2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKGNvbnN0
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDljYzhhZTQ2ODkyOTliNjYxNDQwODM5
NjIyZDkwNzQ4ZjdjNWFkZTMuLmRhZmMwYjg5YmQwNDE1YjI2ZGU1NDkzNGFjMTg3ZmRiMzhlNGVl
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7Ci0gICAg
c3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNl
c3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKIAogICAgIFdlYkZyYW1l
TG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwogCg==
</data>
<flag name="commit-queue"
          id="472991"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447379</attachid>
            <date>2021-12-16 11:59:11 -0800</date>
            <delta_ts>2021-12-16 12:23:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211216115910.patch</filename>
            <type>text/plain</type>
            <size>107803</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljYmUxZGI4YzBjYjlhMzY1
ZGFjYWYwODRjZWJlMWM2Mjg5OWY2ZTQuLmIwMWQ3OTBhNWM2MWJiZjY1ODQwNzhhY2YxODlmNmZj
NzZiNDAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20gTmV0
d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBlciBz
ZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNX
aXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VzcGVu
ZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hDb29r
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
Rmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZlTG9h
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0
QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91
dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
QXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JTRm9y
UmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVsdFNl
c3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5j
ZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0xNiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1Nd
IEFkanVzdCBzYW5kYm94IG1lc3NhZ2UgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDRkN2VhNjQ5NjdmZTM0M2I2ODc3OTMxNTBkNDFiOGQ0NjU4OTJjMDIuLjljNmRkOGNl
NGQ4ZjA2YTIwM2I2NDBhYTIyYTAyNWU5OTdmMzEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtOTQwLDcgKzk0
MSw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6
IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwog
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYklEQlNlcnZlcihtX3Nlc3Npb25JRCkucmVn
aXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQorICAgICAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShmaWxlUGF0aHMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYWQ2MzY2MmRmODU0ZTI4NmNkOGNl
ZDIwYmE0MWFiNmNlNmJlYTA5MS4uYzZjMjY0NWQ5NTMzMjE5YTE1OGU3Nzg4YjE3Y2RmMGIxMGU1
M2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHVzaE1lc3NhZ2UuaCIKQEAgLTI2NiwxNCArMjY3LDExIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgfSk7CiAKICAgICAvLyBNYWtl
IHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KLSAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAg
ICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRv
JiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lv
bklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBy
ZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4K
KyAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwogICAgIH0pOwotCi0gICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5jZSB0byBOZXR3b3JrUHJvY2Vz
cyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgIGF1dG8gc2VydmVycyA9IHN0ZDo6
ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXJzLCB7IH0pOwotICAgIGZvciAoYXV0byYgc2VydmVyIDog
c2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZShbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDcmVhdGVEb3dubG9hZCgp
CkBAIC0zMDMsOCArMzAxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbCBjcml0aWNhbCkKIAogICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KCk7CiAKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBuZXR3
b3JrU2Vzc2lvbikgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi5sb3dNZW1vcnlIYW5kbGVyKGNy
aXRpY2FsKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBzZXNz
aW9uKSB7CisgICAgICAgIHNlc3Npb24ubG93TWVtb3J5SGFuZGxlcihjcml0aWNhbCk7CiAgICAg
fSk7CiAKICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX3N0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMo
KSkKQEAgLTM5MSwxNyArMzg5LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAKICAgICBj
b25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24o
KS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5hZGRDb25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGlk
ZW50aWZpZXIpOwogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNv
bm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7Ci0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRpYWxzKCk7CisgICAgICAgIHNlc3Npb24t
PmNsZWFyQ3JlZGVudGlhbHMoKTsKICAgICB9CiB9CiAKQEAgLTQwOSwxNyArNDA4LDE3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CiAKKyAgICBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIHBhcmFtZXRl
cnMpOworCiAgICAgYWRkU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1l
dGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURp
cmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBhZGRTZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHNl
c3Npb25JRCwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLQotICAgIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7Ci0KKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFiYXNlU2Vz
c2lvbihwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwg
dWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBAIC01
NTgsMTYgKzU1NywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24ucmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lF
bmdpbmUoKnRoaXMsIHNlc3Npb25JRCk7CiAKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBtX3dlYklE
QlNlcnZlcnMudGFrZShzZXNzaW9uSUQpKQotICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAg
cmVtb3ZlU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFC
TEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTU4Niw4ICs1ODMsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpT
ZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZChkb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtNTk5LDggKzU5Niw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2Uo
ZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYxMiw4ICs2MDksOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYzMiw4
ICs2MjksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKGRvbWFpbiwgaXNHcmFuZGZhdGhlcmVk
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDUsOCArNjQyLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NTgsOCArNjU1LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NzEsOCAr
NjY4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
Njg0LDggKzY4MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTY5Nyw4ICs2OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZhbGVudFJl
c291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNzEwLDkgKzcwNyw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mg
c2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhcklzb2xh
dGVkU2Vzc2lvbnMoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Np
b24tPmNsZWFySXNvbGF0ZWRTZXNzaW9ucygpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAg
ICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNp
bmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgICAgICBlbHNlCkBAIC03MjcsOCArNzI0LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKQEAgLTc0MCw5ICs3MzcsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVzZXRDTkFNRURvbWFp
bkRhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9uLT5yZXNl
dENOQU1FRG9tYWluRGF0YSgpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC03NTQsOCArNzUxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q28KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC03NjcsOCArNzY0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lv
bklEIHMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFi
bGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CkBAIC03ODAsOCArNzc3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGlj
c0RhdGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ28KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZh
bHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC03OTMsOCArNzkwLDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNl
c3Npb25JRCBzZXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0SXNSdW5uaW5nVGVzdCh2YWx1ZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtODA2LDggKzgwMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNl
c3NpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
ODE5LDggKzgxNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oZG9tYWluUmVkaXJl
Y3RlZEZyb20sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBA
IC04MzIsOCArODI5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRp
cmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN1YkZyYW1lRG9tYWluLCB0b3BG
cmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC04NDUsOCArODQyLDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1l
RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NTgsOCArODU1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg3MSw4ICs4NjgsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGly
ZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9t
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04ODQsOCArODgxLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKQEAgLTg5Nyw4ICs4OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
bwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8odG9w
RnJhbWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
OTEwLDggKzkwNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZURvbWFpbiwg
ZG9tYWluUmVkaXJlY3RlZEZyb20sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTkyNCw4ICs5MjEs
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zZXRMYXN0U2Vlbihkb21haW4sIHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAg
LTkzNyw4ICs5MzQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+ZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlKGRvbWFpbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTk1MCw4ICs5NDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0
YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBpbnQgZG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
Zyhkb21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFk
VXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVy
ZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtOTYzLDggKzk2MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhw
aXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoZG9tYWluLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTk4Niw4ICs5ODMsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFt
ZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVj
dCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRM
b2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQogewotICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4s
IHRvcEZyYW1lRG9tYWluLCBzb3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBk
ZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5
VXNlcik7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTk1
LDggKzk5Miw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5s
b2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDA4LDgg
KzEwMDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewor
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
Pmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpA
QCAtMTAyMSw4ICsxMDE4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFkVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmEKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKHN1YkRvbWFpbiwgdG9wRG9t
YWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTEwMzQsOCArMTAzMSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJVc2VySW50ZXJhY3Rp
b24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDcwLDggKzEwNjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA4Myw4ICsxMDgwLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vj
b25kcyBzZWMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1heGlt
dW1FbnRyeUNvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDk2LDggKzEwOTMsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC0xMTA5LDggKzExMDYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKHBydW5lVGFyZ2V0Q291bnQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTExMjIsOCArMTExOSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFBy
dW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHByCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKQEAgLTExMzUsOCArMTEzMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNv
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0x
MTQ4LDIxICsxMTQ1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2VzCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Np
b24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKIHsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1
dG8mIG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoZW5hYmxlZCk7CisgICAgZm9yRWFjaE5ldHdv
cmtTZXNzaW9uKFtlbmFibGVkXShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHNlc3Npb24uc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChlbmFibGVkKTsKICAgICB9KTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShk
ZWJ1Z01vZGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTExNzQsOCArMTE3MSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklECiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VwaGVtZXJhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzRXBo
ZW1lcmFsKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjEwLDggKzEy
MDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERh
dGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAogICAgIGlmIChuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmNvbnRhaW5zKENyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc6OkRlc3RpbmF0aW9uTGlua0RlY29yYXRpb24p
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9t
YWluLCBbXSB7IH0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTIyMCw4ICsxMjE3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ29t
bWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihmcm9tRG9tYWluLCB0b0RvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTI0MywxNiAr
MTI0MCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExp
bmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npbwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIHJlc3VsdCA9IG5ldHdvcmtTZXNzaW9uLT5oYXNJc29sYXRlZFNl
c3Npb24oZG9tYWluKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCisgICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmhhc0lzb2xhdGVkU2Vzc2lvbihk
b21haW4pOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUo
YXBwQm91bmREb21haW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjY0LDE2ICsxMjYxLDE2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbZW5hYmxl
ZF0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24uc2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpOworICAgIGZvckVhY2hOZXR3
b3JrU2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBzZXNzaW9uLnNl
dFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkKTsKICAgICB9KTsKICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBu
ZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01v
ZGUpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2lu
Z01vZGUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTEyODEsOCArMTI3OCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0
d29ya1Nlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChlbmFi
bGVkKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgIHNlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dChlbmFibGVkKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjkwLDggKzEyODcsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUobW9kZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTMxMywxNSArMTMxMCwxNSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92
ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92ZShmaXJzdFBhcnR5SG9zdCksIFdURk1v
dmUoY25hbWVEb21haW4pKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
ZyhXVEZNb3ZlKGRvbWFpbikpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
Rm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC0x
MzM4LDggKzEzMzUsOCBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuYWJsZWQoKSBjb25zdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5h
YmxlZCkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z01vZGUoZW5hYmxlZCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShlbmFibGVkKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKQEAgLTEzNTIsOCArMTM0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAg
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKQEAgLTEzNzIsMTAgKzEzNjksMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAg
ICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RP
bmx5OjpZZXM7CiAKLSAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5z
dGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCk7Ci0gICAgYXV0
byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3dlYWtOZXR3b3JrU2Vzc2lvbiA9IFdlYWtQdHIgeyAqbmV0d29ya1Nlc3Npb24g
fSwgdXJsLCB1c2VyQWdlbnRdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7
Ci0gICAgICAgIGlmICh3ZWFrTmV0d29ya1Nlc3Npb24pCi0gICAgICAgICAgICB3ZWFrTmV0d29y
a1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFp
blJlc291cmNlKHVybCwgdXNlckFnZW50LCBlcnJvcik7CisgICAgc2Vzc2lvbi0+bmV0d29ya0xv
YWRTY2hlZHVsZXIoKS5zdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJB
Z2VudCk7CisgICAgYXV0byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpzZXNzaW9uLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbc2Vzc2lvbiA9IFdlYWtQdHIgeyAqc2Vzc2lvbiB9LCB1cmwsIHVz
ZXJBZ2VudF0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKKyAgICAgICAg
aWYgKHNlc3Npb24pCisgICAgICAgICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigp
LmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCwgZXJyb3Ip
OwogICAgIH0pOwogICAgIHRhc2stPnNldFRpbWVvdXQoMTBfcyk7CiAgICAgdGFzay0+c3RhcnQo
KTsKQEAgLTE0NTEsNyArMTQ0OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfTsK
IAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0Fn
Z3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKLSAgICBhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpA
QCAtMTQ4MCwxNyArMTQ3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9
IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBw
YXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5p
c0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0
T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7CisgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdn
cmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgbmV0d29ya1Nlc3Np
b24gJiYgbmV0d29ya1Nlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJl
Z2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgp
KSB7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdp
c3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAgfSk7CkBA
IC0xNTA1LDE1ICsxNTAxLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfQogCiAj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpICYm
IG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbmV0d29ya1Nl
c3Npb24tPmhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkpCisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2Vz
KSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+aG9z
dE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAwIH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KSAmJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3MpICYmIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlZ2lzdHJhYmxlRG9tYWlucyhbY2Fs
bGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKCFkb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmFkZChkb21haW5zLnRha2VMYXN0KCkpOwpAQCAtMTUzMyw3ICsxNTI5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKQEAgLTE1NTYsMTggKzE1NTIsMTggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
IAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHdl
YklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5j
ZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zKTsKLSAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVT
V1NlcnZlcigpLmNsZWFyQWxsKFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICBpZiAoY2xl
YXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikK
KyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5jbGVhckFsbChbY2xlYXJUYXNrc0hh
bmRsZXJdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19Q
UkVWRU5USU9OKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbiA/IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbiA/IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSA6IG51bGxwdHIpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBh
bGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0
b3JlIG1vbml0b3JzCiAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZh
dGhlciBvbGQgZGF0YS4KICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zQWxsKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bW9uaXRvcmVkRGF0YVR5cGVzKCkpID8gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwpAQCAtMTU3NiwxOCArMTU3MiwxOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG5ldHdv
cmtTZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVE
YXRhKG1vZGlmaWVkU2luY2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0p
OworICAgIGlmIChzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0
ZURhdGEobW9kaWZpZWRTaW5jZSwgc3RkOjpudWxsb3B0LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsg
fSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkRpc2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBjbGVhckRp
c2tDYWNoZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
KyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICNpZiBI
QVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYgbmV0
d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2Vy
dmljZXMobW9kaWZpZWRTaW5jZSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBzZXNzaW9uKQorICAgICAg
ICBzZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAjZW5k
aWYKIAogICAgIGlmIChOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKHdlYnNp
dGVEYXRhVHlwZXMpKSB7CkBAIC0xNjIyLDcgKzE2MTgsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckRp
c2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxT
ZWN1cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJz
aXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0
YXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mIHJlZ2lzdHJhYmxlRG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNjM1LDE3ICsxNjMxLDE3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgewor
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJu
YXRpdmVTZXJ2aWNlcykgJiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIGhvc3RzID0gb3JpZ2lu
RGF0YXMubWFwKFtdKGF1dG8mIG9yaWdpbkRhdGEpIHsgcmV0dXJuIG9yaWdpbkRhdGEuaG9zdDsg
fSk7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9y
SG9zdE5hbWVzKGhvc3RzKTsKKyAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhob3N0cyk7CiAgICAgfQogI2VuZGlmCiAKICAgICBhdXRvIGNsZWFy
VGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Np
b24pIHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikgewogICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCksIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICAgICAgICAgIHNlc3Npb24tPmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luRGF0YS5ob3N0KSwgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBAIC0xNjUzLDEzICsxNjQ5LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
b3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFz
LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJT
ZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAgaWYgKGNsZWFy
U2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIG5ldHdvcmtTZXNz
aW9uKSB7Ci0gICAgICAgIGF1dG8mIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1Nl
cnZlcigpOworICAgIGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVu
c3VyZVNXU2VydmVyKCk7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRh
dGFzKQogICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKICAgICB9CkBAIC0xNjgwLDkgKzE2NzYsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpbwogICAgIH0KIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5U
SU9OKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3Ry
YWJsZURvbWFpbnMpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnJlbW92ZURhdGFGb3JEb21haW4oZG9tYWluLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjkzLDcgKzE2ODksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpbwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRh
VHlwZXMsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0g
ICAgaWYgKG5ldHdvcmtTZXNzaW9uKSB7CisgICAgaWYgKHNlc3Npb24pIHsKICAgICAgICAgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0Rh
dGFGb3I7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAg
ICAgICAgICAgZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW5EYXRhLmhvc3QpKTsK
QEAgLTE3MDQsNyArMTcwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgIGZv
ciAoYXV0byYgZG9tYWluIDogcmVnaXN0cmFibGVEb21haW5zKQogICAgICAgICAgICAgZG9tYWlu
c1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKGRvbWFpbik7CiAKLSAgICAgICAgbmV0d29ya1Nl
c3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdURk1vdmUoZG9t
YWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Cisg
ICAgICAgIHNlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdU
Rk1vdmUoZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJd
IHsgfSk7CiAgICAgfQogfQogCkBAIC0xNzQ3LDcgKzE3NDMsNyBAQCBzdGF0aWMgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNv
bnN0IEhhcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5z
VG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5v
dGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9O
b3RDcmVhdGVQcm9jZXNzZXM7CiAKQEAgLTE4MTMsOSArMTgwOSw5IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJ
Q0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpB
bHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgeworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykg
JiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlID0g
ZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IubWFwKFtdKGF1dG8mIGRv
bWFpbikgeyByZXR1cm4gZG9tYWluLnN0cmluZygpOyB9KTsKLSAgICAgICAgbmV0d29ya1Nlc3Np
b24tPmRlbGV0ZUFsdGVybmF0aXZlU2VydmljZXNGb3JIb3N0TmFtZXMocmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGUpOworICAgICAgICBzZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
Rm9ySG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlKTsKICAgICB9CiAjZW5kaWYK
IApAQCAtMTg0NSwyNyArMTg0MSwyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNl
c3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAg
ICAgICAgaWYgKCFtX3dlYklEQlNlcnZlcnMuY29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAg
ICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lu
cykgeworICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7CisgICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPndlYklEQlNlcnZlcigp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21h
aW5zKTsKLSAgICAgICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CisgICAgICAgICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgbmV0d29ya1Nlc3Npb24gJiYgbmV0d29ya1Nlc3Np
b24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBuZXR3b3JrU2Vz
c2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IG5ldHdvcmtTZXNzaW9uID0gV2Vha1B0ciB7ICpuZXR3b3JrU2Vzc2lvbiB9XShjb25zdCBIYXNo
U2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNl
V29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIo
KS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tp
ZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHNlc3Npb24gPSBXZWFrUHRyIHsg
KnNlc3Npb24gfV0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9y
aWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6
IHNlY3VyaXR5T3JpZ2lucykgewogICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChz
ZWN1cml0eU9yaWdpbi5ob3N0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ldHdvcmtTZXNzaW9u
KQotICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5j
bGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJl
U1dTZXJ2ZXIoKS5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTkyNyw3ICsxOTIzLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWIKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0
ZVByb2Nlc3NlczsKICAgICAKQEAgLTE5OTMsMTcgKzE5ODksMTYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGF1dG8gcGF0aCA9IG1faWRi
RGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYm
IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpKSB7Ci0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmdldE9yaWdpbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vz
c2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1
dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcywgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBuZXR3b3JrU2Vzc2lvbiAmJiBu
ZXR3b3JrU2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAg
IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0
aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYg
c2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlv
bnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+
JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1
cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwg
V2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAg
ICAgfSk7CkBAIC0yMDk1LDggKzIwOTAsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbnMuZ2V0KHNlc3Npb25JRCkpCi0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5yZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5yZXF1ZXN0UmVz
b3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSwgeyB9KTsK
IH0KQEAgLTIxMzAsOCArMjEyNSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0Fu
eVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzLCBDb21wbGV0CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmFsbG93VExTQ2VydGlmaWNhdGVDaGFpbkZvckxvY2FsUENNVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1f
bmV0d29ya1Nlc3Npb25zLmdldChzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5nKGNlcnRpZmljYXRlSW5m
byk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBzZXNzaW9uLT5hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW5Gb3JMb2NhbFBDTVRlc3Rp
bmcoY2VydGlmaWNhdGVJbmZvKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25v
c3RpY01lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQpAQCAtMjE3Niw4ICsyMTcxLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29s
IGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25J
bW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2Vi
SURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAm
PSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
WyZdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24u
d2ViSURCU2VydmVyKCkpCisgICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNw
ZW5kKGNvbmRpdGlvbik7CisgICAgfSk7CiAKICAgICBpZiAoYWxsU3VzcGVuZGVkKQogICAgICAg
ICByZXR1cm47CkBAIC0yMTg5LDggKzIxODYsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKICAgICAgICAgaWYgKCFt
X3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3Vz
cGVuc2lvbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChh
dXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2
ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwor
ICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCisgICAgICAg
ICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlv
bjo6QWx3YXlzKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTIyMTUsMTAgKzIyMTQs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVu
c2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICNlbmRpZgogICAgIFBDTTo6U3RvcmU6OnBy
ZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKLSAg
ICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAg
ICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2Nh
bGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChh
dXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vz
c2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1Nl
cnZlcigpKQorICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2VydmVyKCkp
CiAgICAgICAgICAgICBzd1NlcnZlci0+c3RhcnRTdXNwZW5zaW9uKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAjZW5kaWYKICAgICB9KTsKQEAgLTIyNTcsMTQgKzIyNTYsMTYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBQQ006OlN0b3JlOjpwcm9jZXNzRGlkUmVzdW1l
KCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8gc3dTZXJ2
ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1NlcnZlcigpKQorICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbXSAoYXV0byYgc2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0byBzd1NlcnZlciA9IHNlc3Np
b24uc3dTZXJ2ZXIoKSkKICAgICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAg
ICAgfSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnJlc3Vt
ZSgpOworICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAgICAg
ICAgc2VydmVyLT5yZXN1bWUoKTsKKyAgICB9KTsKICAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjMxOCw0MyArMjMxOSw2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVt
ZSkgY29uc3QKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKHNjaGVtZSk7CiB9CiAKLVJlZjxXZWJJREJTZXJ2ZXI+IE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFN0cmlu
ZyBwYXRoOwotICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgQVNT
RVJUKG1faWRiRGF0YWJhc2VQYXRocy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAgICAgICAgcGF0
aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICB9Ci0KLSAgICBhdXRv
IHNwYWNlUmVxdWVzdGVyID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9u
SURdKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAg
ICAgcmV0dXJuIHByb3RlY3RlZFRoaXMtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBv
cmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwot
ICAgIH07Ci0KLSAgICBhdXRvIHJlc3VsdCA9IFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25J
RCwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgIGlmIChtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzKQotICAgICAgICByZXN1bHQtPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNw
ZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYklE
QlNlcnZlciYgTmV0d29ya1Byb2Nlc3M6OndlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCi17Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcnMuZW5zdXJlKHNlc3Npb25JRCwg
W3RoaXMsIHNlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gdGhpcy0+Y3JlYXRlV2ViSURCU2Vy
dmVyKHNlc3Npb25JRCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQotewotICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pZGJEYXRhYmFzZVBhdGhzLmFkZChzZXNzaW9uSUQsIGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCwgaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICB9Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKQEAgLTI0MDEsOSArMjM2NSw4
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+bW92
ZURhdGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgaWYg
KGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykp
IHsKLSAgICAgICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQp
OwotICAgICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRv
cl0geyB9KTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOyBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKQorICAgICAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVuYW1lT3JpZ2luKG9sZE9yaWdp
biwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTI2MjYsOCAr
MjU4OSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX3dlYklEQlNl
cnZlcnMuZ2V0KHNlc3Npb25JRCkpCi0gICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24tPndlYklEQlNlcnZl
cigpKQorICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
ICAgIH0KIAogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVj
dGlvbihjb25uZWN0aW9uKTsKQEAgLTI2NjIsMTUgKzI2MjcsMTUgQEAgU2Vjb25kcyBOZXR3b3Jr
UHJvY2Vzczo6cmFuZG9tQ2xvc2VkUG9ydERlbGF5KCkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+
aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQorICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5oYXNBcHBCb3VuZFNl
c3Npb24oKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAg
ICBzZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjczMSw4ICsyNjk2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zKFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMKICNpZiBQTEFURk9STShD
T0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+YXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uLT5h
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTI3NDAsOCArMjcwNSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5jbGVhckFwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSgpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKCkuY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsKIAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CkBAIC0yNzU5LDI5ICsyNzI0LDIwIEBAIFJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzZXNzaW9uLT5hZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlELCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1l
dGVycyhwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBhdXRvIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgc2Vzc2lvbi0+cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKHBh
Z2VJRCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlE
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigwKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24tPmNvdW50Tm9u
RGVmYXVsdFNlc3Npb25TZXRzKCkpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24gPyBzZXNzaW9uLT5j
b3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cygpIDogMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRiNTI5OTc3MGIy
MDBlYjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
cm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdzOwogY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBVc2VyQ29udGVu
dFVSTFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgV2Vi
SURCU2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgc2hvdWxk
U3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzOyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIHNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgdm9p
ZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBjcmVhdGVXZWJJ
REJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGJSb290
UGF0aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5l
bnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEsNiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1f
aWRiRGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2Vi
SURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURC
U2VydmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7
IDAgfTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Z0cEVuYWJs
ZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtT
dG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8UEFMOjpTZXNz
aW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsgLy8g
RklYTUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3N2M5YWIuLjQw
NTdmNDM5ODVjZjQxN2JlNmVmNjhlN2JlMzMxOGZlMGRkMDBkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTY1LDE2ICs2NiwxNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogY29uc3RleHByIFNlY29uZHMgY2FjaGVkTmV0d29ya1Jlc291cmNlTG9h
ZGVyTGlmZXRpbWUgeyAzMF9zIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4g
TmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3N0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0gICAgcmV0dXJuIE5ldHdvcmtT
ZXNzaW9uU291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBh
cmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCi0gICAgcmV0dXJuIE5ldHdvcmtTZXNz
aW9uQ3VybDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAg
ICByZXR1cm4gTmV0d29ya1Nlc3Npb25DdXJsOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpOwogI2VuZGlmCiB9CiAKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5j
ZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJ
REJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MzksNCAr
NjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBh
dGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJJREJT
ZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQoreworICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAgICAgIGlmICghc2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2lkYkRhdGFi
YXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGg7
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW25ldHdvcmtQcm9j
ZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKV0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgeworICAgICAgICAg
ICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
b3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsK
KyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklEQlNlcnZlcjo6Y3Jl
YXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7CisgICAgICAg
IGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkpCisgICAgICAg
ICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25k
aXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXI7Cit9CisK
K3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2ViSURCU2VydmVyKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0ZDo6ZXhjaGFuZ2Uo
bV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgorICAgIGF1dG8g
aXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lkYkRhdGFiYXNlUGF0
aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcpIHsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChz
ZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4OGVlZWQxYmZiMmMu
LjUxYTdlZDNmYzkwOWM4ODg1MThkOGFiZmU0NzZlMmU0ZWM1ZDc0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0LDYgKzc0LDcgQEAg
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3Jr
UGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNz
IFdlYlNvY2tldFRhc2s7CkBAIC05MSw3ICs5Miw3IEBAIGNsYXNzIENhY2hlOwogY2xhc3MgTmV0
d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpOwpAQCAtMjAzLDYgKzIwNCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYK
IAorICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2
ZXIuZ2V0KCk7IH0KKyAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOworICAg
IHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIGJvb2wgaGFzSURC
RGF0YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlzRW1wdHko
KTsgfQorCiAgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7
CiAgICAgUENNOjpNYW5hZ2VySW50ZXJmYWNlJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsg
cmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKGJvb2wpOwpAQCAtMjk1LDYgKzMwMiw5IEBA
IHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dT
ZXJ2ZXI7CiAjZW5kaWYKIAorICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKKyAgICBSZWZQ
dHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGU0YjhjYzhlYTdkMmU1NDc5NWQwZTBhZGM1
MjY5MDg0MzE2YjY3ODUuLmIwNTZmNGY2ZWI2MDdiNGQ3OWNlYjgyYTVmM2I5NDRkNjNmNGRhOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQgewogcHVibGljOgogICAg
IC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZS4KLSAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggZjdlNjQzYTJhZDNjN2FhN2Y2
NjMwOWVmZDMxODBmMDllZTNmYjRiMC4uYjA5MjJiMDNkYzk3NWZmZTgxN2M1MTY3YTdhY2RiMGEx
M2ZlNDVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIAot
ICAgIE5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB+TmV0
d29ya1Nlc3Npb25Db2NvYSgpOwogCiAgICAgU2Vzc2lvbldyYXBwZXImIGluaXRpYWxpemVFcGhl
bWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGVhZTAwNWIz
N2FhMmU2MTMwZGQwZGQ0YjU3ODBmMTcxNzM1MjY4YzQuLmUxOTIxNWE3MTMxNmQ2Y2EwMGYxZWJm
YjNmNGFjZjgxOGY4MzViYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTExNjksOSArMTE2OSw5
IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNz
aW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycyk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwcm94
eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkK
QEAgLTEyMzMsNyArMTIzMyw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlU2Vzc2lvbkNsZWFudXAo
TmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgY29uc3QgTmV0d29ya1NlCiB9CiAjZW5kaWYK
IAotTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK05ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNz
LCBwYXJhbWV0ZXJzKQogICAgICwgbV9kZWZhdWx0U2Vzc2lvblNldChTZXNzaW9uU2V0OjpjcmVh
dGUoKSkKICAgICAsIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKHBhcmFtZXRlcnMuYm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKQpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgTmV0d29ya1Nlc3Npb25D
b2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzICYmICFwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMpLCBbXSB7IH0pOwor
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB7IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zIH0sIFtdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEhB
VkUoU0VTU0lPTl9DTEVBTlVQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAppbmRleCA1NmQ1NWQ2NmU2YjZhMDZk
ZTg2ZTgwMmY5NWQ4ODgzYTJkYzZlYmVhLi4wMDEyMWVhYjhjZjBiYWJjMmIzYzJkMDI3MTY0YzM3
YTIzYzczZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya1Nlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25D
dXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vz
c2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCiB7CiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZS5pc0VtcHR5KCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRDb29raWVEYXRhYmFzZShtYWtlVW5p
cXVlUmVmPENvb2tpZUphckRCPihwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmls
ZSkpOwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRQcm94eVNldHRpbmdzKFdURk1v
dmUocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKSk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCktPnNldFByb3h5U2V0dGluZ3MocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKTsKIAogI2lmIEVO
QUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuZGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCmluZGV4IGUxOGE0MzkwYjE4OGEyN2U5MzE4
YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUuLmZlMTY3NTYwMjM4ZThkNzVmYTExMDkxYzYxZDQ1ZmFiYzc1
ZTFjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya1Nlc3Npb25DdXJsLmgKQEAgLTMzLDExICszMywxMSBAQCBzdHJ1Y3QgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5h
bCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29y
a1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpOwogICAgIH0KLSAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vz
c2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkN1cmwoKTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dEN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Q3VybC5jcHAKaW5kZXggYTc3M2MzY2MxMzZjZTU3NjA2YmYyZDdhZWU5M2Iw
YzQxYjU3MGJmOC4uY2YwNDkwYjZhNWU4NTJiNGM2Mjk0M2Q5NzlkMDcwZjk3NDJlMDNhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFT
dG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKICAgICBpZiAo
bmV0d29ya1Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbmV0d29ya1Byb2Nlc3MuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lv
biwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKLSAgICBuZXR3b3JrUHJv
Y2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3Jr
UHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsK
KyAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246
OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBmOGRjZjE1MWNjODhjMDM5MmM4ZjNjZGJlMjQ1
M2I1Mjg3ZTAzYTQwLi5hODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2NGRmM2Q1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiUHJvY2Vzc0Fzc2VydGlvbi5o
IgogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAi
U2VjSXRlbVNoaW0uaCIKKyNpbXBvcnQgIldlYklEQlNlcnZlci5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgpAQCAtMTE2
LDggKzExNywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVu
ZElEQlNlcnZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnN1
c3BlbmQoKTsKKyAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24p
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigp
KQorICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOworICAgICAgICB9KTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCAxZTE4NDg5Zjk0NjIwZjAyYTdkOWU5
ZTg2OWVjODY0OTFiN2JiZDRmLi4wZGUyZjBmYzZiNWZhODY4ZDhkMWY2MGNhNzE2YWQ2NWFmNDUy
MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0
ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0dwogCiAg
ICAgbmV0d29ya1Byb2Nlc3MuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiwgbWFr
ZVN0cmluZyhiYXNlLCAnLicsIHNlc3Npb25JRC50b1VJbnQ2NCgpKSwgV1RGTW92ZSh1aVByb2Nl
c3NDb29raWVTdG9yYWdlKSk7CiAKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Np
b25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJh
bWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5z
ZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmNwcAppbmRleCA5ODczMDI2YTA5MWZkZjI5NzRiZTFhMWU3MzRlNmY1YjMwYTdkN2M1Li5i
MDU0ODQ5N2MwM2UxMjAyNWVmZjkzOWM5ZmY2MTVhMGIxYzQ2NjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNw
cApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1By
b2Nlc3MsIHBhcmFtZXRlcnMpCiAgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VVbmlxdWU8U291
cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCiAgICAgLCBtX3BlcnNpc3RlbnRDcmVkZW50
aWFsU3RvcmFnZUVuYWJsZWQocGFyYW1ldGVycy5wZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VF
bmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5oCmluZGV4IGIwMTdjZWZmYzBjODE5Zjc3MTFlZmNiZDM2YTUxNjhl
NjRlNDA5YzAuLmRjNjBiZDU4MTc0NjM4ZDhjYjFmNTA2NmQ2YjIwNTM3NjA4NDk4OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNv
dXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Np
b25Tb3VwLmgKQEAgLTQ0LDExICs0NCwxMSBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uU291cCBmaW5hbCA6IHB1YmxpYyBO
ZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3Vw
PihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMp
OwogICAgIH0KLSAgICBOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvblNvdXAoTmV0
d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwog
ICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKIAogICAgIFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vz
c2lvbiYgc291cE5ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gKm1fbmV0d29ya1Nlc3Np
b247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKaW5kZXggYWU5NDcyZjAwNmZh
ZGYwY2MwYzk5N2U0MmM5OWIxN2MxNjY0MTY0NC4uNzZjODJiZjhhMzAwODE4NGYyYjRjOGRjM2Fm
ZTUzOWZkNzUzMjAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKQEAgLTM2
LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9y
ZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAg
IGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vz
c2lvbklEOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICByZXR1cm47CiAKICAgICBuZXR3b3JrUHJvY2Vzcy5lbnN1cmVTZXNzaW9uKHNl
c3Npb25JRCwgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkVXNlVGVz
dGluZ05ldHdvcmtTZXNzaW9uLCBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQudG9VSW50NjQoKSkp
OwotICAgIG5ldHdvcmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lv
bjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzKSkpOworICAgIG5ldHdvcmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycykpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDEwODYwMDc0MzNlZTE5NWJjMjc4ZTdiODkw
NTQ1MGRiZDhhZWE4NmQuLjI2NmY2ZGI3ZjEzYzMyM2ZmZmY1MTM4YzAyZDg0NjA3YzMwOGVjZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJs
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBA
IC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCit2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKGNvbnN0IFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDQ2NzJiNzk1MjIwMTQwMzRmNzI2M2IzMjBl
ZDMwNzhhYmRlZDlkMjMuLmExNTk4YjIxODdiZWY2ZjFmNjM4MTBkOGYxNDRmOGI0NzM1NzczZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJs
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZW5z
dXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7
CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3
ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDliZjU4N2ZlMDZkMTY1MzJmN2I0N2Y4ZmNhMzI5NWVi
MzFkNzM0NTIuLjdiOWIyODQ2YjUzMWNmYTg5ZmJjYzMxNmE2MDg4ZDcwYWFjOTIzOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBGSVhNRTogcmVtb3ZlIHBsYXRmb3JtLXNwZWNp
ZmljIGNvZGUuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24o
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsK
IAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmlu
ZGV4IDI5NTk1YzdhZDNiZDc3YmMzMmZjODIzZDNkM2VlZmQ5ZmZjMWU1OGYuLjE0MWFhN2FhZTU4
YzZjZTQ1MDBiMTI2OWJkNTJlMjE2MWVhNGIzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJiYpCit2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJikK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmlu
ZGV4IDljYzhhZTQ2ODkyOTliNjYxNDQwODM5NjIyZDkwNzQ4ZjdjNWFkZTMuLmRhZmMwYjg5YmQw
NDE1YjI2ZGU1NDkzNGFjMTg3ZmRiMzhlNGVlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJik7Ci0gICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFT
dG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHZv
aWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmKTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNs
aWVudCgpIGNvbnN0OwogCg==
</data>
<flag name="commit-queue"
          id="472993"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447381</attachid>
            <date>2021-12-16 12:10:03 -0800</date>
            <delta_ts>2021-12-16 13:16:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211216121002.patch</filename>
            <type>text/plain</type>
            <size>108372</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljYmUxZGI4YzBjYjlhMzY1
ZGFjYWYwODRjZWJlMWM2Mjg5OWY2ZTQuLmIwMWQ3OTBhNWM2MWJiZjY1ODQwNzhhY2YxODlmNmZj
NzZiNDAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20gTmV0
d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBlciBz
ZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNX
aXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VzcGVu
ZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hDb29r
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
Rmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZlTG9h
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0
QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91
dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
QXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JTRm9y
UmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVsdFNl
c3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5j
ZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0xNiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1Nd
IEFkanVzdCBzYW5kYm94IG1lc3NhZ2UgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDRkN2VhNjQ5NjdmZTM0M2I2ODc3OTMxNTBkNDFiOGQ0NjU4OTJjMDIuLjljNmRkOGNl
NGQ4ZjA2YTIwM2I2NDBhYTIyYTAyNWU5OTdmMzEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgpAQCAtOTQwLDcgKzk0
MSw4IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1Rl
bXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgZmlsZSA6
IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+cmV2b2tlRmlsZUFjY2VzcygpOwog
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYklEQlNlcnZlcihtX3Nlc3Npb25JRCkucmVn
aXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQorICAgICAgICAgICAg
c2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShmaWxlUGF0aHMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYWQ2MzY2MmRmODU0ZTI4NmNkOGNl
ZDIwYmE0MWFiNmNlNmJlYTA5MS4uYzZjMjY0NWQ5NTMzMjE5YTE1OGU3Nzg4YjE3Y2RmMGIxMGU1
M2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHVzaE1lc3NhZ2UuaCIKQEAgLTI2NiwxNCArMjY3LDExIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAgICAgfSk7CiAKICAgICAvLyBNYWtl
IHN1cmUgd2UgZmx1c2ggYWxsIGNvb2tpZXMgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KLSAgICBm
b3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAg
ICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRv
JiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lv
bklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBy
ZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4K
KyAgICAgICAgc2Vzc2lvbi5jbG9zZUlEQlNlcnZlcihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwogICAgIH0pOwotCi0gICAgLy8gTWFrZSBzdXJlIHJlZmVyZW5jZSB0byBOZXR3b3JrUHJvY2Vz
cyBpbiBzcGFjZVJlcXVlc3RlciBpcyByZW1vdmVkLgotICAgIGF1dG8gc2VydmVycyA9IHN0ZDo6
ZXhjaGFuZ2UobV93ZWJJREJTZXJ2ZXJzLCB7IH0pOwotICAgIGZvciAoYXV0byYgc2VydmVyIDog
c2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZShbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDcmVhdGVEb3dubG9hZCgp
CkBAIC0zMDMsOCArMzAxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbCBjcml0aWNhbCkKIAogICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KCk7CiAKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBuZXR3
b3JrU2Vzc2lvbikgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi5sb3dNZW1vcnlIYW5kbGVyKGNy
aXRpY2FsKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2NyaXRpY2FsXShhdXRvJiBzZXNz
aW9uKSB7CisgICAgICAgIHNlc3Npb24ubG93TWVtb3J5SGFuZGxlcihjcml0aWNhbCk7CiAgICAg
fSk7CiAKICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX3N0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMo
KSkKQEAgLTM5MSwxNyArMzg5LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAKICAgICBj
b25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24o
KS5vbkxpbmUoKSk7CiAKLSAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5hZGRDb25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmVuc3Vy
ZVdlYklEQlNlcnZlcigpLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGlk
ZW50aWZpZXIpOwogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlRnJvbUNv
bm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7Ci0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckNyZWRlbnRpYWxzKCk7CisgICAgICAgIHNlc3Npb24t
PmNsZWFyQ3JlZGVudGlhbHMoKTsKICAgICB9CiB9CiAKQEAgLTQwOSwxNyArNDA4LDE3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CiAKKyAgICBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIHBhcmFtZXRl
cnMpOworCiAgICAgYWRkU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1l
dGVycy5nZW5lcmFsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5nZW5lcmFsU3RvcmFnZURp
cmVjdG9yeUhhbmRsZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRl
cnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBhZGRTZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIHBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhLCBwYXJhbWV0ZXJzLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEsIHBhcmFt
ZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKHNl
c3Npb25JRCwgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLQotICAgIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbigqdGhpcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7Ci0KKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+YWRkSW5kZXhlZERhdGFiYXNlU2Vz
c2lvbihwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpCiAgICAgICAgIHNlc3Npb24tPmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLCBwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRlZmF1bHRRdW90YSwg
dWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgY29uc3QgU3RyaW5nJiBjYWNoZVJvb3RQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGNhY2hlUm9vdFBhdGhIYW5kbGUpCkBAIC01
NTgsMTYgKzU1NywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24ucmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lF
bmdpbmUoKnRoaXMsIHNlc3Npb25JRCk7CiAKLSAgICBpZiAoYXV0byBzZXJ2ZXIgPSBtX3dlYklE
QlNlcnZlcnMudGFrZShzZXNzaW9uSUQpKQotICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAgICAg
cmVtb3ZlU3RvcmFnZU1hbmFnZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFC
TEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTU4Niw4ICs1ODMsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpT
ZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZChkb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtNTk5LDggKzU5Niw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2Uo
ZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYxMiw4ICs2MDksOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTYzMiw4
ICs2MjksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKGRvbWFpbiwgaXNHcmFuZGZhdGhlcmVk
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NDUsOCArNjQyLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NTgsOCArNjU1LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC02NzEsOCAr
NjY4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
c2V0VmVyeVByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
Njg0LDggKzY4MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTY5Nyw4ICs2OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZhbGVudFJl
c291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ29va2llQmxv
Y2tpbmdVcGRhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNzEwLDkgKzcwNyw5IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mg
c2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhcklzb2xh
dGVkU2Vzc2lvbnMoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Np
b24tPmNsZWFySXNvbGF0ZWRTZXNzaW9ucygpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAg
ICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmllZFNp
bmNlLnZhbHVlKCksIHNob3VsZEdyYW5kZmF0aGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgICAgICBlbHNlCkBAIC03MjcsOCArNzI0LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0
YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKQEAgLTc0MCw5ICs3MzcsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVzZXRDTkFNRURvbWFp
bkRhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9uLT5yZXNl
dENOQU1FRG9tYWluRGF0YSgpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC03NTQsOCArNzUxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q28KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC03NjcsOCArNzY0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lv
bklEIHMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFi
bGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CkBAIC03ODAsOCArNzc3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3RhdGlzdGlj
c0RhdGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ28KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZh
bHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC03OTMsOCArNzkwLDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNl
c3Npb25JRCBzZXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0SXNSdW5uaW5nVGVzdCh2YWx1ZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtODA2LDggKzgwMyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNl
c3NpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
ODE5LDggKzgxNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oZG9tYWluUmVkaXJl
Y3RlZEZyb20sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBA
IC04MzIsOCArODI5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRp
cmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN1YkZyYW1lRG9tYWluLCB0b3BG
cmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC04NDUsOCArODQyLDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1l
RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NTgsOCArODU1LDggQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdFRvKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTg3MSw4ICs4NjgsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGly
ZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9t
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC04ODQsOCArODgxLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKQEAgLTg5Nyw4ICs4OTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
bwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8odG9w
RnJhbWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAt
OTEwLDggKzkwNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZURvbWFpbiwg
ZG9tYWluUmVkaXJlY3RlZEZyb20sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTkyNCw4ICs5MjEs
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zZXRMYXN0U2Vlbihkb21haW4sIHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAg
LTkzNyw4ICs5MzQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+ZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlKGRvbWFpbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTk1MCw4ICs5NDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0
YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBpbnQgZG9tYQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
Zyhkb21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFk
VXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVy
ZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtOTYzLDggKzk2MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhw
aXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoZG9tYWluLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTk4Niw4ICs5ODMsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFt
ZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVj
dCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRM
b2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQogewotICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4s
IHRvcEZyYW1lRG9tYWluLCBzb3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBk
ZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5
VXNlcik7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTk1
LDggKzk5Miw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5s
b2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDA4LDgg
KzEwMDUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewor
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
Pmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpA
QCAtMTAyMSw4ICsxMDE4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFkVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmEKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKHN1YkRvbWFpbiwgdG9wRG9t
YWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTEwMzQsOCArMTAzMSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJVc2VySW50ZXJhY3Rp
b24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDcwLDggKzEwNjcsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA4Myw4ICsxMDgwLDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vj
b25kcyBzZWMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKG1heGlt
dW1FbnRyeUNvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMDk2LDggKzEwOTMsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldE1pbmltdW1U
aW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC0xMTA5LDggKzExMDYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2VzcwogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0UHJ1bmVFbnRyaWVzRG93blRvKHBydW5lVGFyZ2V0Q291bnQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTExMjIsOCArMTExOSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFBy
dW5lRW50cmllc0Rvd25UbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHByCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKQEAgLTExMzUsOCArMTEzMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNv
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0x
MTQ4LDIxICsxMTQ1LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2VzCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCBlbmFibGVkKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Np
b24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgZW5hYmxlZCkKIHsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRdKGF1
dG8mIG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoZW5hYmxlZCk7CisgICAgZm9yRWFjaE5ldHdv
cmtTZXNzaW9uKFtlbmFibGVkXShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHNlc3Npb24uc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChlbmFibGVkKTsKICAgICB9KTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShk
ZWJ1Z01vZGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTExNzQsOCArMTE3MSw4IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklECiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VwaGVtZXJhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzRXBo
ZW1lcmFsKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjEwLDggKzEy
MDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERh
dGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAogICAgIGlmIChuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmNvbnRhaW5zKENyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc6OkRlc3RpbmF0aW9uTGlua0RlY29yYXRpb24p
KSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9t
YWluLCBbXSB7IH0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTIyMCw4ICsxMjE3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ29t
bWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihmcm9tRG9tYWluLCB0b0RvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTI0MywxNiAr
MTI0MCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExp
bmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npbwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIHJlc3VsdCA9IG5ldHdvcmtTZXNzaW9uLT5oYXNJc29sYXRlZFNl
c3Npb24oZG9tYWluKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCisgICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmhhc0lzb2xhdGVkU2Vzc2lvbihk
b21haW4pOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBhcHBCb3VuZERvbWFpbnMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUo
YXBwQm91bmREb21haW5zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjY0LDE2ICsxMjYxLDE2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbZW5hYmxl
ZF0oYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24uc2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpOworICAgIGZvckVhY2hOZXR3
b3JrU2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBzZXNzaW9uLnNl
dFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkKTsKICAgICB9KTsKICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBu
ZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2luZ01v
ZGUpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShibG9ja2lu
Z01vZGUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTEyODEsOCArMTI3OCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0
d29ya1Nlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChlbmFi
bGVkKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgIHNlc3Npb24tPnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dChlbmFibGVkKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMjkwLDggKzEyODcsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5n
KFBBTDo6U2VzcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUobW9kZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTMxMywxNSArMTMxMCwxNSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92
ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92ZShmaXJzdFBhcnR5SG9zdCksIFdURk1v
dmUoY25hbWVEb21haW4pKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
ZyhXVEZNb3ZlKGRvbWFpbikpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
Rm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC0x
MzM4LDggKzEzMzUsOCBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuYWJsZWQoKSBjb25zdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5h
YmxlZCkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z01vZGUoZW5hYmxlZCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZShlbmFibGVkKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKQEAgLTEzNTIsOCArMTM0OSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAg
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgaWYgKCFzZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKQEAgLTEzNzIsMTAgKzEzNjksMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29u
bmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmkKICAg
ICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RP
bmx5OjpZZXM7CiAKLSAgICBuZXR3b3JrU2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5z
dGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCk7Ci0gICAgYXV0
byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3dlYWtOZXR3b3JrU2Vzc2lvbiA9IFdlYWtQdHIgeyAqbmV0d29ya1Nlc3Npb24g
fSwgdXJsLCB1c2VyQWdlbnRdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7
Ci0gICAgICAgIGlmICh3ZWFrTmV0d29ya1Nlc3Npb24pCi0gICAgICAgICAgICB3ZWFrTmV0d29y
a1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuZmluaXNoZWRQcmVjb25uZWN0Rm9yTWFp
blJlc291cmNlKHVybCwgdXNlckFnZW50LCBlcnJvcik7CisgICAgc2Vzc2lvbi0+bmV0d29ya0xv
YWRTY2hlZHVsZXIoKS5zdGFydGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJB
Z2VudCk7CisgICAgYXV0byB0YXNrID0gbmV3IFByZWNvbm5lY3RUYXNrKCpzZXNzaW9uLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbc2Vzc2lvbiA9IFdlYWtQdHIgeyAqc2Vzc2lvbiB9LCB1cmwsIHVz
ZXJBZ2VudF0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKKyAgICAgICAg
aWYgKHNlc3Npb24pCisgICAgICAgICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigp
LmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5SZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCwgZXJyb3Ip
OwogICAgIH0pOwogICAgIHRhc2stPnNldFRpbWVvdXQoMTBfcyk7CiAgICAgdGFzay0+c3RhcnQo
KTsKQEAgLTE0NTEsNyArMTQ0OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfTsK
IAogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0Fn
Z3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKLSAgICBhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpA
QCAtMTQ4MCwxNyArMTQ3NywxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9
IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCi0gICAgYXV0byBw
YXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghcGF0aC5p
c0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcykpIHsKLSAgICAgICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuZ2V0
T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lucykgeworICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKSB7CisgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLmdldE9yaWdpbnMoW2NhbGxiYWNrQWdn
cmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZTo6
SW5kZXhlZERCRGF0YWJhc2VzLCAwIH0pOwogICAgICAgICB9KTsKICAgICB9CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgbmV0d29ya1Nlc3Np
b24gJiYgbmV0d29ya1Nlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJl
Z2lzdHJhdGlvbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9y
aWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgp
KSB7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdp
c3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAgICAgfSk7CkBA
IC0xNTA1LDE1ICsxNTAxLDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAgICAgfQogCiAj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpICYm
IG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbmV0d29ya1Nl
c3Npb24tPmhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkpCisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2Vz
KSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+aG9z
dE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSkKICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAwIH0pOwogICAgIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KSAmJiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3MpICYmIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlZ2lzdHJhYmxlRG9tYWlucyhbY2Fs
bGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgZG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKCFkb21haW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmFkZChkb21haW5zLnRha2VMYXN0KCkpOwpAQCAtMTUzMyw3ICsxNTI5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKQEAgLTE1NTYsMTggKzE1NTIsMTggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2kKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
IAotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHdl
YklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5j
ZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIGJvb2wgY2xlYXJTZXJ2aWNlV29ya2VycyA9IHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgfHwgd2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zKTsKLSAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVT
V1NlcnZlcigpLmNsZWFyQWxsKFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICBpZiAoY2xl
YXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikK
KyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5jbGVhckFsbChbY2xlYXJUYXNrc0hh
bmRsZXJdIHsgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19Q
UkVWRU5USU9OKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbiA/IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbiA/IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSA6IG51bGxwdHIpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBkZWxldGluZyBh
bGwgb2YgdGhlIGRhdGEgdHlwZXMgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0
b3JlIG1vbml0b3JzCiAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgbmVlZCB0byByZS1ncmFuZGZh
dGhlciBvbGQgZGF0YS4KICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSB3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zQWxsKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bW9uaXRvcmVkRGF0YVR5cGVzKCkpID8gU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpObyA6
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzOwpAQCAtMTU3NiwxOCArMTU3MiwxOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG5ldHdv
cmtTZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVE
YXRhKG1vZGlmaWVkU2luY2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0p
OworICAgIGlmIChzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0
ZURhdGEobW9kaWZpZWRTaW5jZSwgc3RkOjpudWxsb3B0LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsg
fSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkRpc2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICBjbGVhckRp
c2tDYWNoZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKLSAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
KyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICNpZiBI
QVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYgbmV0
d29ya1Nlc3Npb24pCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2Vy
dmljZXMobW9kaWZpZWRTaW5jZSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBzZXNzaW9uKQorICAgICAg
ICBzZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CiAjZW5k
aWYKIAogICAgIGlmIChOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNhbkhhbmRsZVR5cGVzKHdlYnNp
dGVEYXRhVHlwZXMpKSB7CkBAIC0xNjIyLDcgKzE2MTgsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckRp
c2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUsIGNvbnN0IFZlY3RvcjxT
ZWN1cgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJz
aXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luRGF0
YXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBIU1RTQ2FjaGVIb3N0TmFtZXMsIGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFp
bj4mIHJlZ2lzdHJhYmxlRG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xNjM1LDE3ICsxNjMxLDE3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgewor
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJu
YXRpdmVTZXJ2aWNlcykgJiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIGhvc3RzID0gb3JpZ2lu
RGF0YXMubWFwKFtdKGF1dG8mIG9yaWdpbkRhdGEpIHsgcmV0dXJuIG9yaWdpbkRhdGEuaG9zdDsg
fSk7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9y
SG9zdE5hbWVzKGhvc3RzKTsKKyAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhob3N0cyk7CiAgICAgfQogI2VuZGlmCiAKICAgICBhdXRvIGNsZWFy
VGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgbmV0d29ya1Nlc3Np
b24pIHsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50cykgJiYgc2Vzc2lvbikgewogICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCksIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICAgICAgICAgIHNlc3Npb24tPmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luRGF0YS5ob3N0KSwgW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7CkBAIC0xNjUzLDEzICsxNjQ5LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xl
YXJDYWNoZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsg
b3JpZ2luRGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFz
LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmICFzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSAmJiBzZXNzaW9uKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJT
ZXJ2ZXIoKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luRGF0YXMsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAgaWYgKGNsZWFy
U2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIG5ldHdvcmtTZXNz
aW9uKSB7Ci0gICAgICAgIGF1dG8mIHNlcnZlciA9IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1Nl
cnZlcigpOworICAgIGlmIChjbGVhclNlcnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGF1dG8mIHNlcnZlciA9IHNlc3Npb24tPmVu
c3VyZVNXU2VydmVyKCk7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRh
dGFzKQogICAgICAgICAgICAgc2VydmVyLmNsZWFyKG9yaWdpbkRhdGEsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKICAgICB9CkBAIC0xNjgwLDkgKzE2NzYsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpbwogICAgIH0KIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5U
SU9OKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3MpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3Ry
YWJsZURvbWFpbnMpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnJlbW92ZURhdGFGb3JEb21haW4oZG9tYWluLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjkzLDcgKzE2ODksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpbwogICAgICAgICAgICAgaXRlcmF0b3ItPnZhbHVlLT5kZWxldGVEYXRhKHdlYnNpdGVEYXRh
VHlwZXMsIG9yaWdpbkRhdGFzLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogCi0g
ICAgaWYgKG5ldHdvcmtTZXNzaW9uKSB7CisgICAgaWYgKHNlc3Npb24pIHsKICAgICAgICAgSGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1RvRGVsZXRlTmV0d29ya0Rh
dGFGb3I7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQogICAg
ICAgICAgICAgZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW5EYXRhLmhvc3QpKTsK
QEAgLTE3MDQsNyArMTcwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgIGZv
ciAoYXV0byYgZG9tYWluIDogcmVnaXN0cmFibGVEb21haW5zKQogICAgICAgICAgICAgZG9tYWlu
c1RvRGVsZXRlTmV0d29ya0RhdGFGb3IuYWRkKGRvbWFpbik7CiAKLSAgICAgICAgbmV0d29ya1Nl
c3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdURk1vdmUoZG9t
YWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Cisg
ICAgICAgIHNlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShzdGQ6Om51bGxvcHQsIFdU
Rk1vdmUoZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJd
IHsgfSk7CiAgICAgfQogfQogCkBAIC0xNzQ3LDcgKzE3NDMsNyBAQCBzdGF0aWMgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGNv
bnN0IEhhcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5z
VG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5v
dGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9O
b3RDcmVhdGVQcm9jZXNzZXM7CiAKQEAgLTE4MTMsOSArMTgwOSw5IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzCiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJ
Q0UpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpB
bHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBuZXR3b3JrU2Vzc2lvbikgeworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykg
JiYgc2Vzc2lvbikgewogICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlID0g
ZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IubWFwKFtdKGF1dG8mIGRv
bWFpbikgeyByZXR1cm4gZG9tYWluLnN0cmluZygpOyB9KTsKLSAgICAgICAgbmV0d29ya1Nlc3Np
b24tPmRlbGV0ZUFsdGVybmF0aXZlU2VydmljZXNGb3JIb3N0TmFtZXMocmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGUpOworICAgICAgICBzZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
Rm9ySG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlKTsKICAgICB9CiAjZW5kaWYK
IApAQCAtMTg0NSwyNyArMTg0MSwyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2VzcwogICAgICAg
ICB9KTsKICAgICB9CiAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNl
c3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewotICAgICAgICB3
ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGRvbWFpbnNUb0Rl
bGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lucykgewotICAgICAg
ICAgICAgaWYgKCFtX3dlYklEQlNlcnZlcnMuY29udGFpbnMoc2Vzc2lvbklEKSkKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAg
ICAgICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yXShhdXRvJiYgb3JpZ2lu
cykgeworICAgICAgICAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCk7CisgICAgICAgICAgICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24tPndlYklEQlNlcnZlcigp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byBvcmlnaW5zVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMob3JpZ2lucywgZG9tYWluc1RvRGVs
ZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21h
aW5zKTsKLSAgICAgICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CisgICAgICAgICAgICBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKS0+Y2xvc2VBbmREZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbnNUb0RlbGV0ZSwgW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk7Ci0gICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgbmV0d29ya1Nlc3Npb24gJiYgbmV0d29ya1Nlc3Np
b24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBuZXR3b3JrU2Vz
c2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IG5ldHdvcmtTZXNzaW9uID0gV2Vha1B0ciB7ICpuZXR3b3JrU2Vzc2lvbiB9XShjb25zdCBIYXNo
U2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAg
aWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNl
V29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIo
KS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoW2RvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tp
ZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIHNlc3Npb24gPSBXZWFrUHRyIHsg
KnNlc3Npb24gfV0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9y
aWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1cml0eU9yaWdpbiA6
IHNlY3VyaXR5T3JpZ2lucykgewogICAgICAgICAgICAgICAgIGlmICghZG9tYWluc1RvRGVsZXRl
QWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IuY29udGFpbnMoUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3QpKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChz
ZWN1cml0eU9yaWdpbi5ob3N0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ldHdvcmtTZXNzaW9u
KQotICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5j
bGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAg
ICAgICAgICBpZiAoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJl
U1dTZXJ2ZXIoKS5jbGVhcihzZWN1cml0eU9yaWdpbiwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTkyNyw3ICsxOTIzLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWIKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0
ZVByb2Nlc3NlczsKICAgICAKQEAgLTE5OTMsMTcgKzE5ODksMTYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwKICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIGF1dG8gcGF0aCA9IG1faWRi
RGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXBhdGguaXNFbXB0eSgpICYm
IHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpKSB7Ci0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmdldE9yaWdpbnMoW2Nh
bGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgc2Vz
c2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAgICBzZXNzaW9u
LT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1
dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRh
dGFiYXNlcywgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKSAmJiBuZXR3b3JrU2Vzc2lvbiAmJiBu
ZXR3b3JrU2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7Ci0gICAgICAg
IG5ldHdvcmtTZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0cmF0
aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0
YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYg
c2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKKyAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlv
bnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+
JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWN1
cml0eU9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwg
V2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucywgMCB9KTsKICAgICAg
ICAgfSk7CkBAIC0yMDk1LDggKzIwOTAsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBodHRwQm9keSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHJlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkudGFrZURhdGEoKSk7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbnMuZ2V0KHNlc3Npb25JRCkpCi0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5yZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5yZXF1ZXN0UmVz
b3VyY2UocGFnZUlELCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHsgfSwgeyB9KTsK
IH0KQEAgLTIxMzAsOCArMjEyNSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0Fu
eVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzLCBDb21wbGV0CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmFsbG93VExTQ2VydGlmaWNhdGVDaGFpbkZvckxvY2FsUENNVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1f
bmV0d29ya1Nlc3Npb25zLmdldChzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5nKGNlcnRpZmljYXRlSW5m
byk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBzZXNzaW9uLT5hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW5Gb3JMb2NhbFBDTVRlc3Rp
bmcoY2VydGlmaWNhdGVJbmZvKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25v
c3RpY01lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQpAQCAtMjE3Niw4ICsyMTcxLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiAKICAgICBib29s
IGFsbFN1c3BlbmRlZCA9IHRydWU7CiAgICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25J
bW1pbmVudCA/IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2Vi
SURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAm
PSBzZXJ2ZXItPnN1c3BlbmQoY29uZGl0aW9uKTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
WyZdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24u
d2ViSURCU2VydmVyKCkpCisgICAgICAgICAgICBhbGxTdXNwZW5kZWQgJj0gc2VydmVyLT5zdXNw
ZW5kKGNvbmRpdGlvbik7CisgICAgfSk7CiAKICAgICBpZiAoYWxsU3VzcGVuZGVkKQogICAgICAg
ICByZXR1cm47CkBAIC0yMTg5LDggKzIxODYsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3Vz
cGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkKICAgICAgICAgaWYgKCFt
X3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3Vz
cGVuc2lvbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChh
dXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2
ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwor
ICAgICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCisgICAgICAg
ICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlv
bjo6QWx3YXlzKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTIyMTUsMTAgKzIyMTQs
MTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVu
c2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICNlbmRpZgogICAgIFBDTTo6U3RvcmU6OnBy
ZXBhcmVGb3JQcm9jZXNzVG9TdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAKLSAg
ICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikgewotICAg
ICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSwgW2Nh
bGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChh
dXRvJiBzZXNzaW9uKSB7CisgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vz
c2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1Nl
cnZlcigpKQorICAgICAgICBpZiAoYXV0byogc3dTZXJ2ZXIgPSBzZXNzaW9uLnN3U2VydmVyKCkp
CiAgICAgICAgICAgICBzd1NlcnZlci0+c3RhcnRTdXNwZW5zaW9uKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CiAjZW5kaWYKICAgICB9KTsKQEAgLTIyNTcsMTQgKzIyNTYsMTYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBQQ006OlN0b3JlOjpwcm9jZXNzRGlkUmVzdW1l
KCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNz
aW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8gc3dTZXJ2
ZXIgPSBuZXR3b3JrU2Vzc2lvbi5zd1NlcnZlcigpKQorICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbXSAoYXV0byYgc2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0byBzd1NlcnZlciA9IHNlc3Np
b24uc3dTZXJ2ZXIoKSkKICAgICAgICAgICAgIHN3U2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAg
ICAgfSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnJlc3Vt
ZSgpOworICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbXShhdXRvJiBzZXNzaW9uKSB7CisgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAgICAg
ICAgc2VydmVyLT5yZXN1bWUoKTsKKyAgICB9KTsKICAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzID0gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjMxOCw0MyArMjMxOSw2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVt
ZSkgY29uc3QKICAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKHNjaGVtZSk7CiB9CiAKLVJlZjxXZWJJREJTZXJ2ZXI+IE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFN0cmlu
ZyBwYXRoOwotICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgQVNT
RVJUKG1faWRiRGF0YWJhc2VQYXRocy5jb250YWlucyhzZXNzaW9uSUQpKTsKLSAgICAgICAgcGF0
aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICB9Ci0KLSAgICBhdXRv
IHNwYWNlUmVxdWVzdGVyID0gW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9u
SURdKGNvbnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKLSAgICAg
ICAgcmV0dXJuIHByb3RlY3RlZFRoaXMtPnN0b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBv
cmlnaW4pLT5yZXF1ZXN0U3BhY2VPbkJhY2tncm91bmRUaHJlYWQoc3BhY2VSZXF1ZXN0ZWQpOwot
ICAgIH07Ci0KLSAgICBhdXRvIHJlc3VsdCA9IFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNlc3Npb25J
RCwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgIGlmIChtX3Nob3VsZFN1c3Bl
bmRJREJTZXJ2ZXJzKQotICAgICAgICByZXN1bHQtPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNw
ZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYklE
QlNlcnZlciYgTmV0d29ya1Byb2Nlc3M6OndlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCi17Ci0gICAgcmV0dXJuICptX3dlYklEQlNlcnZlcnMuZW5zdXJlKHNlc3Npb25JRCwg
W3RoaXMsIHNlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gdGhpcy0+Y3JlYXRlV2ViSURCU2Vy
dmVyKHNlc3Npb25JRCk7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQotewotICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pZGJEYXRhYmFzZVBhdGhzLmFkZChzZXNzaW9uSUQsIGluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwotICAgICAgICBz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKHNlc3Npb25JRCwgaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5KTsKLSAgICB9Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGlkYlJvb3RQYXRoKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKQEAgLTI0MDEsOSArMjM2NSw4
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+bW92
ZURhdGEob2xkT3JpZ2luLCBuZXdPcmlnaW4sIFthZ2dyZWdhdG9yXSB7IH0pOwogCiAgICAgaWYg
KGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykp
IHsKLSAgICAgICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNzaW9uSUQp
OwotICAgICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgd2ViSURCU2VydmVy
KHNlc3Npb25JRCkucmVuYW1lT3JpZ2luKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRv
cl0geyB9KTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpOyBzZXNzaW9uICYmIHNlc3Npb24tPmhhc0lEQkRhdGFiYXNlUGF0aCgpKQorICAgICAg
ICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkucmVuYW1lT3JpZ2luKG9sZE9yaWdp
biwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CiAKQEAgLTI2MjYsOCAr
MjU4OSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX3dlYklEQlNl
cnZlcnMuZ2V0KHNlc3Npb25JRCkpCi0gICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihj
b25uZWN0aW9uKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlcnZlciA9IHNlc3Npb24tPndlYklEQlNlcnZl
cigpKQorICAgICAgICAgICAgc2VydmVyLT5yZW1vdmVDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwor
ICAgIH0KIAogICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vz
c2lvbklEKSkKICAgICAgICAgbWFuYWdlci0+c3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVj
dGlvbihjb25uZWN0aW9uKTsKQEAgLTI2NjIsMTUgKzI2MjcsMTUgQEAgU2Vjb25kcyBOZXR3b3Jr
UHJvY2Vzczo6cmFuZG9tQ2xvc2VkUG9ydERlbGF5KCkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgYm9vbCBy
ZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+
aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQorICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5oYXNBcHBCb3VuZFNl
c3Npb24oKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckFwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAg
ICBzZXNzaW9uLT5jbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjczMSw4ICsyNjk2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zKFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMKICNpZiBQTEFURk9STShD
T0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+YXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKCkpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uLT5h
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTI3NDAsOCArMjcwNSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5jbGVhckFwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSgpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKCkuY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsKIAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CkBAIC0yNzU5LDI5ICsyNzI0LDIwIEBAIFJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzZXNzaW9uLT5hZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlELCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1l
dGVycyhwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBhdXRvIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgc2Vzc2lvbi0+cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKHBh
Z2VJRCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KQorICAgICAgICBzZXNzaW9uLT5yZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMocGFnZUlE
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y291bnROb25EZWZhdWx0U2Vzc2lvblNldHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigwKTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24tPmNvdW50Tm9u
RGVmYXVsdFNlc3Npb25TZXRzKCkpOworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlc3Npb24gPyBzZXNzaW9uLT5j
b3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cygpIDogMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGNkYjAzOTg5ZGY2YWQ1YWNjYzE0YjM0YzUzNTcwNDg4OTI3MzljNzguLjRiNTI5OTc3MGIy
MDBlYjI2NmE1M2JiMWFiNWVlNTNlZWQyYTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2lu
Y2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YS5oIgpAQCAtNDQsMTMgKzQzLDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9D
cm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC04Miw3ICs4MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cmxQcm94eVNldHRpbmdzOwogY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwotY2xhc3MgU3RvcmFnZVF1b3RhTWFuYWdlcjsKIGNsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBVc2VyQ29udGVu
dFVSTFBhdHRlcm47CkBAIC0yOTMsNyArMjkxLDcgQEAgcHVibGljOgogICAgIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyJiBuZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigpIHsgcmV0
dXJuIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7IH0KICNlbmRpZgogCi0gICAgV2Vi
SURCU2VydmVyJiB3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgc2hvdWxk
U3VzcGVuZElEQlNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2
ZXJzOyB9CiAKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIApAQCAtMzg2LDYgKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIHNldFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgaWRiUm9vdFBhdGgpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApAQCAtNDc4LDEwICs0NzgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgdm9p
ZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICBSZWY8V2ViSURCU2VydmVyPiBjcmVhdGVXZWJJ
REJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc2V0U2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGJSb290
UGF0aCk7Ci0gICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJZlBvc3NpYmxlKFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5l
bnQpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU2NSw4ICs1NjEsNiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1f
aWRiRGF0YWJhc2VQYXRoczsKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2Vi
SURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwogICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURC
U2VydmVycyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7
IDAgfTsKICAgICAKQEAgLTU4OSw3ICs1ODMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Z0cEVuYWJs
ZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdvcmtT
dG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOworICAgIEhhc2hNYXA8UEFMOjpTZXNz
aW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsgLy8g
RklYTUU6IFNob3VsZCBtb3ZlIHRvIE5ldHdvcmtTZXNzaW9uLgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IGM1M2EwYTg0MGNmY2E5ZDllOTE4NDgyMWNmZjRkNmUyYWQ3N2M5YWIuLjQw
NTdmNDM5ODVjZjQxN2JlNmVmNjhlN2JlMzMxOGZlMGRkMDBkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmgiCisjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTY1LDE2ICs2NiwxNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogY29uc3RleHByIFNlY29uZHMgY2FjaGVkTmV0d29ya1Jlc291cmNlTG9h
ZGVyTGlmZXRpbWUgeyAzMF9zIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4g
TmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3N0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgIHJldHVybiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUobmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0gICAgcmV0dXJuIE5ldHdvcmtT
ZXNzaW9uU291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBh
cmFtZXRlcnMpOwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCi0gICAgcmV0dXJuIE5ldHdvcmtTZXNz
aW9uQ3VybDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAg
ICByZXR1cm4gTmV0d29ya1Nlc3Npb25DdXJsOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpOwogI2VuZGlmCiB9CiAKQEAgLTE5Nyw2ICsxOTgsOCBAQCB2b2lkIE5ldHdvcmtTZXNz
aW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmludmFsaWRhdGVBbmRDYW5j
ZWwoKTsKICNlbmRpZgorICAgIGlmIChhdXRvIHNlcnZlciA9IHN0ZDo6ZXhjaGFuZ2UobV93ZWJJ
REJTZXJ2ZXIsIG51bGxwdHIpKQorICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02MzksNCAr
NjQyLDQ1IEBAIGJvb2wgTmV0d29ya1Nlc3Npb246Omhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBh
dGgoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCitXZWJJREJT
ZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVXZWJJREJTZXJ2ZXIoKQoreworICAgIGlmICgh
bV93ZWJJREJTZXJ2ZXIpIHsKKyAgICAgICAgU3RyaW5nIHBhdGg7CisgICAgICAgIGlmICghc2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2lkYkRhdGFi
YXNlUGF0aC5pc051bGwoKSk7CisgICAgICAgICAgICBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGg7
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHNwYWNlUmVxdWVzdGVyID0gW25ldHdvcmtQcm9j
ZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MoKSB9LCBzZXNzaW9uSUQgPSBzZXNzaW9uSUQoKV0o
Y29uc3QgYXV0byYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcXVlc3RlZCkgeworICAgICAgICAg
ICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwg
b3JpZ2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsK
KyAgICAgICAgfTsKKworICAgICAgICBtX3dlYklEQlNlcnZlciA9IFdlYklEQlNlcnZlcjo6Y3Jl
YXRlKHNlc3Npb25JRCgpLCBwYXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7CisgICAgICAg
IGlmIChuZXR3b3JrUHJvY2VzcygpLnNob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKCkpCisgICAgICAg
ICAgICBtX3dlYklEQlNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25k
aXRpb246OkFsd2F5cyk7CisgICAgfQorICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXI7Cit9CisK
K3ZvaWQgTmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fd2ViSURCU2VydmVyKQor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIHN0ZDo6ZXhjaGFuZ2Uo
bV93ZWJJREJTZXJ2ZXIsIG51bGxwdHIpLT5jbG9zZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgaGFuZGxlKQoreworICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFOVDog
RG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFz
ZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxl
ICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgorICAgIGF1dG8g
aXNOZXcgPSBtX2lkYkRhdGFiYXNlUGF0aC5pc051bGwoKTsKKyAgICBtX2lkYkRhdGFiYXNlUGF0
aCA9IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoaXNOZXcpIHsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIG5l
dHdvcmtQcm9jZXNzKCkuc2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChz
ZXNzaW9uSUQoKSwgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGMxM2MwNWVkNjc0ODYxODhhMzQzMDMxM2EwNDA4OGVlZWQxYmZiMmMu
LjUxYTdlZDNmYzkwOWM4ODg1MThkOGFiZmU0NzZlMmU0ZWM1ZDc0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTc0LDYgKzc0LDcgQEAg
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya0Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzazsKK2NsYXNzIFdlYklEQlNlcnZlcjsKIGNsYXNzIFdlYlBhZ2VOZXR3b3Jr
UGFyYW1ldGVyczsKIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGNsYXNz
IFdlYlNvY2tldFRhc2s7CkBAIC05MSw3ICs5Miw3IEBAIGNsYXNzIENhY2hlOwogY2xhc3MgTmV0
d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpOwpAQCAtMjAzLDYgKzIwNCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihib29sIHByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYK
IAorICAgIFdlYklEQlNlcnZlciogd2ViSURCU2VydmVyKCkgeyByZXR1cm4gbV93ZWJJREJTZXJ2
ZXIuZ2V0KCk7IH0KKyAgICBXZWJJREJTZXJ2ZXImIGVuc3VyZVdlYklEQlNlcnZlcigpOworICAg
IHZvaWQgY2xvc2VJREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oY29uc3QgU3RyaW5nJiBpbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIGJvb2wgaGFzSURC
RGF0YWJhc2VQYXRoKCkgY29uc3QgeyByZXR1cm4gIW1faWRiRGF0YWJhc2VQYXRoLmlzRW1wdHko
KTsgfQorCiAgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7
CiAgICAgUENNOjpNYW5hZ2VySW50ZXJmYWNlJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsg
cmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKGJvb2wpOwpAQCAtMjk1LDYgKzMwMiw5IEBA
IHByb3RlY3RlZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc3dT
ZXJ2ZXI7CiAjZW5kaWYKIAorICAgIFN0cmluZyBtX2lkYkRhdGFiYXNlUGF0aDsKKyAgICBSZWZQ
dHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGU0YjhjYzhlYTdkMmU1NDc5NWQwZTBhZGM1
MjY5MDg0MzE2YjY3ODUuLmIwNTZmNGY2ZWI2MDdiNGQ3OWNlYjgyYTVmM2I5NDRkNjNmNGRhOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogY2xhc3MgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQgewogcHVibGljOgogICAg
IC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZS4KLSAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5kZXggZjdlNjQzYTJhZDNjN2FhN2Y2
NjMwOWVmZDMxODBmMDllZTNmYjRiMC4uYjA5MjJiMDNkYzk3NWZmZTgxN2M1MTY3YTdhY2RiMGEx
M2ZlNDVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIAot
ICAgIE5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB+TmV0
d29ya1Nlc3Npb25Db2NvYSgpOwogCiAgICAgU2Vzc2lvbldyYXBwZXImIGluaXRpYWxpemVFcGhl
bWVyYWxTdGF0ZWxlc3NTZXNzaW9uSWZOZWVkZWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGVhZTAwNWIz
N2FhMmU2MTMwZGQwZGQ0YjU3ODBmMTcxNzM1MjY4YzQuLjUzOWE5Mjg1NGU3ZmEwNzhiNzlhZGUz
NzdlYjNhYmJhMThjMDEzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTExNjksOSArMTE2OSw5
IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNz
aW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycyk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwcm94
eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkK
QEAgLTEyMzMsNyArMTIzMyw3IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlU2Vzc2lvbkNsZWFudXAo
TmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgY29uc3QgTmV0d29ya1NlCiB9CiAjZW5kaWYK
IAotTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK05ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNz
LCBwYXJhbWV0ZXJzKQogICAgICwgbV9kZWZhdWx0U2Vzc2lvblNldChTZXNzaW9uU2V0OjpjcmVh
dGUoKSkKICAgICAsIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKHBhcmFtZXRlcnMuYm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyKQpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgTmV0d29ya1Nlc3Npb25D
b2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzICYmICFwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0QXBwQm91bmREb21haW5zKFdURk1vdmUocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5hcHBCb3VuZERvbWFpbnMpLCBbXSB7IH0pOwor
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB7IHBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zIH0sIFtdIHsgfSk7CiAjZW5kaWYK
IAogI2lmIEhBVkUoU0VTU0lPTl9DTEVBTlVQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAppbmRleCA1NmQ1NWQ2
NmU2YjZhMDZkZTg2ZTgwMmY5NWQ4ODgzYTJkYzZlYmVhLi4wMDEyMWVhYjhjZjBiYWJjMmIzYzJk
MDI3MTY0YzM3YTIzYzczZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29y
a1Nlc3Npb25DdXJsOjpOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitO
ZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMp
CiB7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZS5pc0Vt
cHR5KCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRDb29raWVEYXRhYmFz
ZShtYWtlVW5pcXVlUmVmPENvb2tpZUphckRCPihwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlRmlsZSkpOwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5zZXRQcm94eVNldHRp
bmdzKFdURk1vdmUocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKSk7CisgICAgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCktPnNldFByb3h5U2V0dGluZ3MocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKTsK
IAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogICAgIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuZGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCmluZGV4IGUxOGE0MzkwYjE4
OGEyN2U5MzE4YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUuLmZlMTY3NTYwMjM4ZThkNzVmYTExMDkxYzYx
ZDQ1ZmFiYzc1ZTFjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKQEAgLTMzLDExICszMywxMSBAQCBzdHJ1Y3Qg
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9u
Q3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJz
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29y
a1Byb2Nlc3MsIHBhcmFtZXRlcnMpOwogICAgIH0KLSAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0
d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBO
ZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkN1cmwoKTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dEN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKaW5kZXggYTc3M2MzY2MxMzZjZTU3NjA2YmYy
ZDdhZWU5M2IwYzQxYjU3MGJmOC4uY2YwNDkwYjZhNWU4NTJiNGM2Mjk0M2Q5NzlkMDcwZjk3NDJl
MDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAKQEAgLTM1LDE0ICszNSwx
NCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZv
aWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9u
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25z
dCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNl
c3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsK
ICAgICBpZiAobmV0d29ya1Byb2Nlc3Muc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbmV0d29ya1Byb2Nlc3MuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQs
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbiwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnRvVUludDY0KCkpKTsKLSAgICBu
ZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0
ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycykpKTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29y
a1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBmOGRjZjE1MWNjODhjMDM5MmM4
ZjNjZGJlMjQ1M2I1Mjg3ZTAzYTQwLi5hODdhZDgwNWI1ZGYxNTA3ODNiNTM5MWU4ZTAzZjk4ZTc2
NGRmM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiUHJvY2Vzc0Fz
c2VydGlvbi5oIgogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgog
I2ltcG9ydCAiU2VjSXRlbVNoaW0uaCIKKyNpbXBvcnQgIldlYklEQlNlcnZlci5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5o
PgpAQCAtMTE2LDggKzExNywxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdM
b2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgICAgICBpZiAoIW1fc2hv
dWxkU3VzcGVuZElEQlNlcnZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9y
IChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBz
ZXJ2ZXItPnN1c3BlbmQoKTsKKyAgICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8m
IHNlc3Npb24pIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklE
QlNlcnZlcigpKQorICAgICAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOworICAgICAgICB9
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCAxZTE4NDg5Zjk0NjIw
ZjAyYTdkOWU5ZTg2OWVjODY0OTFiN2JiZDRmLi4wZGUyZjBmYzZiNWZhODY4ZDhkMWY2MGNhNzE2
YWQ2NWFmNDUyMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNDEsNyArNDEsNyBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNz
LCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzcy5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYg
bmV0dwogCiAgICAgbmV0d29ya1Byb2Nlc3MuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vz
c2lvbiwgbWFrZVN0cmluZyhiYXNlLCAnLicsIHNlc3Npb25JRC50b1VJbnQ2NCgpKSwgV1RGTW92
ZSh1aVByb2Nlc3NDb29raWVTdG9yYWdlKSk7CiAKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZXRTZXNz
aW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RG
TW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKKyAgICBuZXR3b3Jr
UHJvY2Vzcy5zZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShuZXR3
b3JrUHJvY2VzcywgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtT
ZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Nlc3Npb25Tb3VwLmNwcAppbmRleCA5ODczMDI2YTA5MWZkZjI5NzRiZTFhMWU3MzRlNmY1YjMw
YTdkN2M1Li5iNWY2MzM0OGE5MDYzYjA0M2E3MDA0ZWY1MmM0NTQ1NGQ5M2VlNDVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Np
b25Tb3VwLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNv
dXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNz
aW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Npb24o
bmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCiAgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VV
bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCiAgICAgLCBtX3BlcnNpc3Rl
bnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQocGFyYW1ldGVycy5wZXJzaXN0ZW50Q3JlZGVudGlh
bFN0b3JhZ2VFbmFibGVkKQpAQCAtNTIsNyArNTIsNyBAQCBOZXR3b3JrU2Vzc2lvblNvdXA6Ok5l
dHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtT
ZQogICAgIHNldElnbm9yZVRMU0Vycm9ycyhwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyk7CiAK
ICAgICBpZiAocGFyYW1ldGVycy5wcm94eVNldHRpbmdzLm1vZGUgIT0gU291cE5ldHdvcmtQcm94
eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KQotICAgICAgICBzZXRQcm94eVNldHRpbmdzKFdURk1v
dmUocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKSk7CisgICAgICAgIHNldFByb3h5U2V0dGluZ3Mo
U291cE5ldHdvcmtQcm94eVNldHRpbmdzIHsgcGFyYW1ldGVycy5wcm94eVNldHRpbmdzIH0pOwog
CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKHBhcmFtZXRlcnMuY29va2ll
UGVyc2lzdGVudFN0b3JhZ2VQYXRoLCBwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggYjAxN2NlZmZjMGM4MTlmNzcxMWVmY2JkMzZhNTE2OGU2
NGU0MDljMC4uZGM2MGJkNTgxNzQ2MzhkOGNiMWY1MDY2ZDZiMjA1Mzc2MDg0OTg4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuaApAQCAtNDQsMTEgKzQ0LDExIEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZpbmFsIDogcHVibGljIE5l
dHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+
KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycyk7
CiAgICAgfQotICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3
b3JrUHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAg
ICAgfk5ldHdvcmtTZXNzaW9uU291cCgpOwogCiAgICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNz
aW9uJiBzb3VwTmV0d29ya1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9uZXR3b3JrU2Vzc2lv
bjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAppbmRleCBhZTk0NzJmMDA2ZmFk
ZjBjYzBjOTk3ZTQyYzk5YjE3YzE2NjQxNjQ0Li43NmM4MmJmOGEzMDA4MTg0ZjJiNGM4ZGMzYWZl
NTM5ZmQ3NTMyMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcApAQCAtMzYs
MTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3Jl
U2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAg
YXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNz
aW9uSUQ7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG5ldHdvcmtQcm9jZXNzLmVuc3VyZVNlc3Npb24oc2Vz
c2lvbklELCBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRVc2VUZXN0
aW5nTmV0d29ya1Nlc3Npb24sIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC50b1VJbnQ2NCgpKSk7
Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9u
OjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2V0U2Vzc2lvbihzZXNzaW9uSUQs
IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggMTA4NjAwNzQzM2VlMTk1YmMyNzhlN2I4OTA1
NDUwZGJkOGFlYTg2ZC4uMjY2ZjZkYjdmMTNjMzIzZmZmZjUxMzhjMDJkODQ2MDdjMzA4ZWNlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFT
dG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJikKK3ZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggNDY3MmI3OTUyMjAxNDAzNGY3MjYzYjMyMGVk
MzA3OGFiZGVkOWQyMy4uYTE1OThiMjE4N2JlZjZmMWY2MzgxMGQ4ZjE0NGY4YjQ3MzU3NzNmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBlbnN1
cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsK
KyAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihjb25zdCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdl
YkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgKaW5kZXggOWJmNTg3ZmUwNmQxNjUzMmY3YjQ3ZjhmY2EzMjk1ZWIz
MWQ3MzQ1Mi4uN2I5YjI4NDZiNTMxY2ZhODlmYmNjMzE2YTYwODhkNzBhYWM5MjM5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQwLDcgKzQwLDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEZJWE1FOiByZW1vdmUgcGxhdGZvcm0tc3BlY2lm
aWMgY29kZS4KLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbihjb25zdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwog
CiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5k
ZXggMjk1OTVjN2FkM2JkNzdiYzMyZmM4MjNkM2QzZWVmZDlmZmMxZTU4Zi4uMTQxYWE3YWFlNThj
NmNlNDUwMGIxMjY5YmQ1MmUyMTYxZWE0YjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJikKK3ZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5k
ZXggOWNjOGFlNDY4OTI5OWI2NjE0NDA4Mzk2MjJkOTA3NDhmN2M1YWRlMy4uZGFmYzBiODliZDA0
MTViMjZkZTU0OTM0YWMxODdmZGIzOGU0ZWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyYmKTsKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0
b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihjb25zdCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYpOwogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50KCkgY29uc3Q7CiAK
</data>
<flag name="commit-queue"
          id="472998"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447384</attachid>
            <date>2021-12-16 12:28:24 -0800</date>
            <delta_ts>2021-12-16 14:39:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234366-20211216122823.patch</filename>
            <type>text/plain</type>
            <size>115281</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljYmUxZGI4YzBjYjlhMzY1
ZGFjYWYwODRjZWJlMWM2Mjg5OWY2ZTQuLmIwMWQ3OTBhNWM2MWJiZjY1ODQwNzhhY2YxODlmNmZj
NzZiNDAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMjEtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYklEQlNlcnZlcnMgZnJv
bSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92ZSBXZWJJREJTZXJ2ZXJzIGZyb20gTmV0
d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24gY2xhc3MsIHNpbmNlIHRoZXkgYXJlIHBlciBz
ZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXNGb3JJbmRleGVkREIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNX
aXRoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3VzcGVu
ZElEQlNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToK
KyAgICAgICAgKFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYWNoZVN0b3JhZ2VSb290UGF0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNTZWN1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkSW5kZXhlZERhdGFi
YXNlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRRdW90YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclN0b3JhZ2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRi
b3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zmx1c2hDb29r
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
Rmx1c2hDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnN0b3JlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZHVtcFByaXZhdGVDbGlja01lYXN1cmVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW11bGF0ZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXNzaW9uUmVzdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFcGhlbWVyYWxNZWFzdXJlbWVudEZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVS
THNGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
Om1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkS2VwdEFsaXZlTG9h
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0
QWxpdmVMb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91
dEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyYW5kb21DbG9zZWRQb3J0RGVsYXkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFy
QXBwQm91bmRTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJCdW5kbGVJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNob3VsZERpc2FibGVDT1JTRm9y
UmVxdWVzdFRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVsdFNl
c3Npb25TZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5j
ZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNsb3NlSURCU2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp3ZWJJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aGFzSURCRGF0YWJhc2VQYXRoIGNvbnN0KToKKwogMjAyMS0xMi0xNiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1Nd
IEFkanVzdCBzYW5kYm94IG1lc3NhZ2UgZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCAzY2JlM2Y5
NDczZDRlZjM1YjA1Nzc4NDdiY2I5ZjBjNzAzNTVmYzI3Li4zMWJjMTU3NDM2ODQzMDk4MjJmZGQ4
Y2UzODczZDc0NzU3YjJjNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVEYXRhYmFzZShVbmlxdWVS
ZWY8Q29va2llSmFyREI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21IVFRQUmVzcG9uc2UoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZUFjY2VwdFBv
bGljeShDb29raWVBY2NlcHRQb2xpY3kpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UHJveHlTZXR0aW5ncyhDdXJsUHJveHlTZXR0aW5ncyYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFByb3h5U2V0dGluZ3MoY29uc3QgQ3VybFByb3h5U2V0dGluZ3MmKTsKICNlbHNl
CiAgICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
LCBOZXR3b3JraW5nQ29udGV4dCopOwogICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgK
aW5kZXggOWJkMWJiNTM0MzkyZjQyZjZkODRhYTJmN2UxNWNiNjY2NzI2YzBlZi4uMzc0YjZjNzdm
ZWQzYjUzYmRhNGY5MTAyMWVjODc3NDViZDY0ZjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAgLTEwOCw3ICsxMDgsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBQcm94eQogICAgIGNvbnN0IEN1cmxQcm94eVNldHRpbmdzJiBw
cm94eVNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9wcm94eVNldHRpbmdzOyB9Ci0gICAgdm9p
ZCBzZXRQcm94eVNldHRpbmdzKEN1cmxQcm94eVNldHRpbmdzJiYgc2V0dGluZ3MpIHsgbV9wcm94
eVNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7IH0KKyAgICB2b2lkIHNldFByb3h5U2V0dGlu
Z3MoY29uc3QgQ3VybFByb3h5U2V0dGluZ3MmIHNldHRpbmdzKSB7IG1fcHJveHlTZXR0aW5ncyA9
IHNldHRpbmdzOyB9CiAgICAgdm9pZCBzZXRQcm94eVVzZXJQYXNzKGNvbnN0IFN0cmluZyYgdXNl
ciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCkgeyBtX3Byb3h5U2V0dGluZ3Muc2V0VXNlclBhc3Mo
dXNlciwgcGFzc3dvcmQpOyB9CiAgICAgdm9pZCBzZXREZWZhdWx0UHJveHlBdXRoTWV0aG9kKCkg
eyBtX3Byb3h5U2V0dGluZ3Muc2V0RGVmYXVsdEF1dGhNZXRob2QoKTsgfQogICAgIHZvaWQgc2V0
UHJveHlBdXRoTWV0aG9kKGxvbmcgYXV0aE1ldGhvZCkgeyBtX3Byb3h5U2V0dGluZ3Muc2V0QXV0
aE1ldGhvZChhdXRoTWV0aG9kKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CmluZGV4IGY1ZWZlZTNjOTFjMDVkZTY5YTUzNGE2NDMyZGE2ZTdmNmNjMTcwNGIuLmU3YjhlYmNl
MDczNTM2YzE0OGVhZmFjYTlkNzUxZWM4ZmIyNDQyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKQEAgLTIzMiw5ICsyMzIsOSBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bgogICAgIHJldHVybiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFBy
b3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVs
ZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBh
Z2VJRCwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
OjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyk7CiB9CiAKLXZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94eVNldHRpbmdzKEN1cmxQcm94eVNldHRp
bmdzJiYgcHJveHlTZXR0aW5ncykKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKGNvbnN0IEN1cmxQcm94eVNldHRpbmdzJiBwcm94eVNldHRpbmdzKQogewotICAg
IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zZXRQcm94eVNldHRpbmdzKFdURk1vdmUocHJveHlT
ZXR0aW5ncykpOworICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zZXRQcm94eVNldHRpbmdz
KHByb3h5U2V0dGluZ3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCmluZGV4IDViOTExZDc0MjBlNmU4NWVjOGVhY2I3MTZmZTg0ZmQyYWE3MjQ2N2Qu
LjllYjMxNmQyYTBmYmFkZjU0N2U3OTQ1NzVjNzAxY2M0MWQ5YWQ3MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC0yNzQsOSArMjc0LDkgQEAgdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OmNs
ZWFyT2xkU291cENhY2hlKGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkpCiAgICAgfQogfQog
Ci12b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0UHJveHlTZXR0aW5ncyhTb3VwTmV0d29ya1By
b3h5U2V0dGluZ3MmJiBzZXR0aW5ncykKK3ZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKGNvbnN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0g
ICAgbV9wcm94eVNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7CisgICAgbV9wcm94eVNldHRp
bmdzID0gc2V0dGluZ3M7CiAKICAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsK
ICAgICBzd2l0Y2ggKG1fcHJveHlTZXR0aW5ncy5tb2RlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKaW5k
ZXggOGMzMzIyYTYzZGNkNGMzYWU1OWY0MGVmOWY5ODhhNGJmNTY5NWEzYy4uNTNiNTJkOGQwNzg4
N2I2Y2YxZWJhOTlkM2I1MDY0OTRmOTA1NDg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBjbGVhck9sZFNvdXBDYWNoZShj
b25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5KTsKIAotICAgIHZvaWQgc2V0UHJveHlTZXR0aW5n
cyhTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MmJik7CisgICAgdm9pZCBzZXRQcm94eVNldHRpbmdz
KGNvbnN0IFNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0
SW5pdGlhbEFjY2VwdExhbmd1YWdlcyhjb25zdCBDU3RyaW5nJik7CiAgICAgdm9pZCBzZXRBY2Nl
cHRMYW5ndWFnZXMoY29uc3QgQ1N0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCA0ZDdlYTY0OTY3ZmUzNDNiNjg3NzkzMTUwZDQxYjhkNDY1ODkyYzAyLi45YzZkZDhjZTRk
OGYwNmEyMDNiNjQwYWEyMmEwMjVlOTk3ZjMxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYkVycm9ycy5oIgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTk0MCw3ICs5NDEs
OCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1w
b3JhcnlGaWxlc0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICBmb3IgKGF1dG8mIGZpbGUgOiBm
aWxlUmVmZXJlbmNlcykKICAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKIAot
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJJREJTZXJ2ZXIobV9zZXNzaW9uSUQpLnJlZ2lz
dGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CisgICAg
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkKKyAgICAgICAgICAgIHNl
c3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRo
cyhtX2Nvbm5lY3Rpb24sIGZpbGVQYXRocyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoZmlsZVBhdGhzKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFkNjM2NjJkZjg1NGUyODZjZDhjZWQy
MGJhNDFhYjZjZTZiZWEwOTEuLmM2YzI2NDVkOTUzMzIxOWExNThlNzc4OGIxN2NkZjBiMTBlNTNk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
ci5oIgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlB1c2hNZXNzYWdlLmgiCkBAIC0yNjYsMTQgKzI2NywxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIH0pOwogCiAgICAgLy8gTWFrZSBz
dXJlIHdlIGZsdXNoIGFsbCBjb29raWVzIHRvIGRpc2sgYmVmb3JlIGV4aXRpbmcuCi0gICAgZm9y
RWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAg
cGxhdGZvcm1GbHVzaENvb2tpZXMobmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYg
c2Vzc2lvbikgeworICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25J
RCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICAvLyBNYWtlIHN1cmUgcmVm
ZXJlbmNlIHRvIE5ldHdvcmtQcm9jZXNzIGluIHNwYWNlUmVxdWVzdGVyIGlzIHJlbW92ZWQuCisg
ICAgICAgIHNlc3Npb24uY2xvc2VJREJTZXJ2ZXIoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
ICAgICB9KTsKLQotICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2UgdG8gTmV0d29ya1Byb2Nlc3Mg
aW4gc3BhY2VSZXF1ZXN0ZXIgaXMgcmVtb3ZlZC4KLSAgICBhdXRvIHNlcnZlcnMgPSBzdGQ6OmV4
Y2hhbmdlKG1fd2ViSURCU2VydmVycywgeyB9KTsKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IHNl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+Y2xvc2UoW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpA
QCAtMzAzLDggKzMwMSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omxvd01lbW9yeUhhbmRsZXIo
Q3JpdGljYWwgY3JpdGljYWwpCiAKICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eSgpOwogCi0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtjcml0aWNhbF0oYXV0byYgbmV0d29y
a1Nlc3Npb24pIHsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24ubG93TWVtb3J5SGFuZGxlcihjcml0
aWNhbCk7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtjcml0aWNhbF0oYXV0byYgc2Vzc2lv
bikgeworICAgICAgICBzZXNzaW9uLmxvd01lbW9yeUhhbmRsZXIoY3JpdGljYWwpOwogICAgIH0p
OwogCiAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9zdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkp
CkBAIC0zOTEsMTcgKzM4OSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogCiAgICAgY29u
bmVjdGlvbi5zZXRPbkxpbmVTdGF0ZShOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCku
b25MaW5lKCkpOwogCi0gICAgd2ViSURCU2VydmVyKHNlc3Npb25JRCkuYWRkQ29ubmVjdGlvbihj
b25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgaWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5lbnN1cmVX
ZWJJREJTZXJ2ZXIoKS5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBpZGVu
dGlmaWVyKTsKICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNl
c3Npb25JRCkpCiAgICAgICAgIG1hbmFnZXItPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZUZyb21Db25u
ZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0g
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewotICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IHNlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOwotICAgICAg
ICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJDcmVkZW50aWFscygpOworICAgICAgICBzZXNzaW9uLT5j
bGVhckNyZWRlbnRpYWxzKCk7CiAgICAgfQogfQogCkBAIC00MDksMTcgKzQwOCwxNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycwogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwogCisgICAgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKCp0aGlzLCBwYXJhbWV0ZXJz
KTsKKwogICAgIGFkZFN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQsIHBhcmFtZXRl
cnMuZ2VuZXJhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZ2VuZXJhbFN0b3JhZ2VEaXJl
Y3RvcnlIYW5kbGUsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgYWRkU2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXIoc2Vzc2lvbklELCBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VR
dW90YSwgcGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhLCBwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgYWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihzZXNz
aW9uSUQsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmlu
ZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0KLSAgICBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oKnRoaXMsIFdURk1v
dmUocGFyYW1ldGVycykpOwotCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CisgICAgICAgIHNlc3Npb24tPmFkZEluZGV4ZWREYXRhYmFzZVNlc3Np
b24ocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICBzZXNzaW9uLT5hZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGFyYW1l
dGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSwgcGFyYW1ldGVycy5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgor
ICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1h
bmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVp
bnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBjYWNoZVJvb3RQYXRoSGFuZGxlKQpAQCAtNTU4
LDE2ICs1NTcsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIG1fc2Vzc2lvbnNDb250cm9sbGVkQnlBdXRvbWF0aW9u
LnJlbW92ZShzZXNzaW9uSUQpOwogICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpkZXN0cm95RW5n
aW5lKCp0aGlzLCBzZXNzaW9uSUQpOwogCi0gICAgaWYgKGF1dG8gc2VydmVyID0gbV93ZWJJREJT
ZXJ2ZXJzLnRha2Uoc2Vzc2lvbklEKSkKLSAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogICAgIHJl
bW92ZVN0b3JhZ2VNYW5hZ2VyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCiAjaWYgRU5BQkxF
KElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC01ODYsOCArNTgzLDggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKFBBTDo6U2Vz
c2lvbklEIHNlc3MKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc0dyYW5kZmF0aGVyZWQoZG9tYWluLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAgLTU5OSw4ICs1OTYsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKGRv
bWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC02MTIsOCArNjA5LDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHIKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNWZXJ5UHJldmFsZW50
UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzVmVyeVByZXZh
bGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC02MzIsOCAr
NjI5LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0R3JhbmRmYXRoZXJlZChkb21haW4sIGlzR3JhbmRmYXRoZXJlZCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNjQ1LDggKzY0Miw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291cmNlKGRvbWFpbiwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNjU4LDggKzY1NSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVi
dWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291
cmNlRm9yRGVidWdNb2RlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNjcxLDggKzY2
OCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQor
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNl
dFZlcnlQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTY4
NCw4ICs2ODEsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBA
IC02OTcsOCArNjk0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2kKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0
d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
CiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zY2hlZHVsZUNvb2tpZUJsb2Nr
aW5nVXBkYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTcxMCw5ICs3MDcsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNo
b3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJJc29sYXRl
ZFNlc3Npb25zKCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgeworICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9u
LT5jbGVhcklzb2xhdGVkU2Vzc2lvbnMoKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAgICAg
ICAgICAgIGlmIChtb2RpZmllZFNpbmNlKQogICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5j
ZS52YWx1ZSgpLCBzaG91bGRHcmFuZGZhdGhlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICAgICAgZWxzZQpAQCAtNzI3LDggKzcyNCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklECiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CkBAIC03NDAsOSArNzM3LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlc2V0Q05BTUVEb21haW5E
YXRhKCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+cmVzZXRD
TkFNRURvbWFpbkRhdGEoKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwpAQCAtNzU0LDggKzc1MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
c2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
UHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwpAQCAtNzY3LDggKzc2NCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25J
RCBzCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN0YXRpc3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFibGVzKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwpAQCAtNzgwLDggKzc3Nyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN0YXRpc3RpY3NE
YXRhYmFzZUhhc0FsbFRhYmxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvCiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNzkzLDggKzc5MCw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoUEFMOjpTZXNz
aW9uSUQgc2VzCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElzUnVubmluZ1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldElzUnVubmluZ1Rlc3QodmFsdWUsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKQEAgLTgwNiw4ICs4MDMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihz
dWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTgx
OSw4ICs4MTYsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJh
bWVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjbwogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGRvbWFpblJlZGlyZWN0
ZWRGcm9tLCBkb21haW5SZWRpcmVjdGVkVG8sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAt
ODMyLDggKzgyOSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJl
Y3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJh
bWVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwpAQCAtODQ1LDggKzg0Miw4IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFtZURv
bWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODU4LDggKzg1NSw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJl
ZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RUbyhzdWJyZXNvdXJjZURvbWFpbiwgZG9tYWluUmVkaXJlY3RlZFRvLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CkBAIC04NzEsOCArODY4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY28KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVj
dGVkRnJvbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVkRnJvbSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtODg0LDggKzg4MSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVu
ZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQog
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNSZWdpc3RlcmVkQXNTdWJyZXNv
dXJjZVVuZGVyKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CkBAIC04OTcsOCArODk0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY28K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKHRvcEZy
YW1lRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTkx
MCw4ICs5MDcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdAogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20odG9wRnJhbWVEb21haW4sIGRv
bWFpblJlZGlyZWN0ZWRGcm9tLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC05MjQsOCArOTIxLDgg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KICAgICAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbiwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhp
cy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0TGFzdFNlZW4oZG9tYWluLCBzZWNvbmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC05
MzcsOCArOTM0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWEKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
aW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmRvbWFpbklE
RXhpc3RzSW5EYXRhYmFzZShkb21haW5JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC05
NTAsOCArOTQ3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG9tYWluSURFeGlzdHNJbkRhdGFi
YXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgaW50IGRvbWEKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluMSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
MiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2
YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5tZXJnZVN0YXRpc3RpY0ZvclRlc3Rpbmco
ZG9tYWluLCB0b3BGcmFtZURvbWFpbjEsIHRvcEZyYW1lRG9tYWluMiwgbGFzdFNlZW4sIGhhZFVz
ZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVk
LCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKQEAgLTk2Myw4ICs5NjAsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpt
ZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4sIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9v
bCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGRvbWFpbiwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2Vk
LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGlzUHJldmFsZW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC05ODYsOCArOTgzLDggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDb21wbGUKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRnJhbWVO
YXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3Qs
IGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9h
ZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcikKIHsKLSAgICBpZiAoYXV0byog
bmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dGcmFtZU5hdmlnYXRpb24odGFyZ2V0RG9tYWluLCB0
b3BGcmFtZURvbWFpbiwgc291cmNlRG9tYWluLCBpc1JlZGlyZWN0LCBpc01haW5GcmFtZSwgZGVs
YXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVz
ZXIpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTk5NSw4
ICs5OTIsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojpsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9n
VXNlckludGVyYWN0aW9uKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTAwOCw4ICsx
MDA1LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmEKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKQEAg
LTEwMjEsOCArMTAxOCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmhhZFVzZXJJbnRlcmFjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0
aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5pc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShzdWJEb21haW4sIHRvcERvbWFp
biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0xMDM0LDggKzEwMzEsOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
ICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyVXNlckludGVyYWN0aW9u
KGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA3MCw4ICsxMDY3LDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2kKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJp
bmdUaW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTEwODMsOCArMTA4MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlY29u
ZHMgc2VjCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWF4aW11bUVudHJ5Q291bnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhtYXhpbXVt
RW50cnlDb3VudCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTA5Niw4ICsxMDkzLDggQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWF4U3RhdGlzdGljc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNv
bmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcywgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpA
QCAtMTEwOSw4ICsxMTA2LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0TWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklEIHNlc3MKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0UHJ1bmVFbnRyaWVzRG93blRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcHJ1bmVUYXJnZXRDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPnNldFBydW5lRW50cmllc0Rvd25UbyhwcnVuZVRhcmdldENvdW50LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CkBAIC0xMTIyLDggKzExMTksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcnVu
ZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwcgogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CkBAIC0xMTM1LDggKzExMzIsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjbwog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURh
dGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTE0
OCwyMSArMTE0NSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRDbGFzc2lmeVJl
c291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlcwogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9u
LT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChi
b29sIGVuYWJsZWQpCiB7Ci0gICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtlbmFibGVkXShhdXRv
JiBuZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KGVuYWJsZWQpOworICAgIGZvckVhY2hOZXR3b3Jr
U2Vzc2lvbihbZW5hYmxlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBzZXNzaW9uLnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoZW5hYmxlZCk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGRlYnVnTW9kZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3
b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoZGVi
dWdNb2RlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xMTc0LDggKzExNzEsOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NFcGhlbWVyYWwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lv
bi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc0VwaGVt
ZXJhbCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTIxMCw4ICsxMjA3
LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRh
VHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKICAgICBpZiAobmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5jb250YWlucyhDcm9zc1NpdGVO
YXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnOjpEZXN0aW5hdGlvbkxpbmtEZWNvcmF0aW9uKSkg
ewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihmcm9tRG9tYWluLCB0b0RvbWFp
biwgW10geyB9KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTEyMjAsOCArMTIxNyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1p
dENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24o
ZnJvbURvbWFpbiwgdG9Eb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTEyNDMsMTYgKzEy
NDAsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5r
RGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW8KIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
c0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
LSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKQotICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFzSXNvbGF0ZWRTZXNz
aW9uKGRvbWFpbik7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKQorICAgICAgICByZXN1bHQgPSBzZXNzaW9uLT5oYXNJc29sYXRlZFNlc3Npb24oZG9t
YWluKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QXBwQm91bmREb21haW5z
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgYXBwQm91bmREb21haW5zLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKGFw
cEJvdW5kRG9tYWlucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMTI2NCwxNiArMTI2MSwxNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6
U2Vzc2lvbklECiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNob3VsZERvd25ncmFkZVJlZmVy
cmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW2VuYWJsZWRd
KGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9uLnNldFNob3Vs
ZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkKTsKKyAgICBmb3JFYWNoTmV0d29y
a1Nlc3Npb24oW2VuYWJsZWRdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgc2Vzc2lvbi5zZXRT
aG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoZW5hYmxlZCk7CiAgICAgfSk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0
d29ya1Nlc3Npb24tPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdNb2Rl
KTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgIHNlc3Npb24tPnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoYmxvY2tpbmdN
b2RlKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC0xMjgxLDggKzEyNzgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5zZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQoZW5hYmxl
ZCk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBzZXNzaW9uLT5zZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQo
ZW5hYmxlZCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTI5MCw4ICsxMjg3LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQ
QUw6OlNlc3MKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKG1vZGUsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTEzMTMsMTUgKzEzMTAsMTUgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb24KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiBmaXJzdFBh
cnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFdURk1vdmUo
Zmlyc3RQYXJ0eUhvc3QpLCBXVEZNb3ZlKGNuYW1lRG9tYWluKSk7CisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5zZXRG
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFdURk1vdmUoZmlyc3RQYXJ0eUhvc3QpLCBXVEZNb3Zl
KGNuYW1lRG9tYWluKSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPnNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmco
V1RGTW92ZShkb21haW4pKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPnNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZv
clRlc3RpbmcoV1RGTW92ZShkb21haW4pKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQpAQCAtMTMz
OCw4ICsxMzM1LDggQEAgYm9vbCBOZXR3b3JrUHJvY2Vzczo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRFbmFibGVkKCkgY29uc3QKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJs
ZWQpCiB7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVidWdNb2RlKGVuYWJsZWQpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+c2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z01vZGUoZW5hYmxlZCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQpCkBAIC0xMzUyLDggKzEzNDksOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0
VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaQogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKIAotICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKQorICAgIGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CkBAIC0xMzcyLDEwICsxMzY5LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5l
Y3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpCiAgICAg
cGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25s
eTo6WWVzOwogCi0gICAgbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuc3Rh
cnRlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UodXJsLCB1c2VyQWdlbnQpOwotICAgIGF1dG8g
dGFzayA9IG5ldyBQcmVjb25uZWN0VGFzaygqbmV0d29ya1Nlc3Npb24sIFdURk1vdmUocGFyYW1l
dGVycyksIFt3ZWFrTmV0d29ya1Nlc3Npb24gPSBXZWFrUHRyIHsgKm5ldHdvcmtTZXNzaW9uIH0s
IHVybCwgdXNlckFnZW50XShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgewot
ICAgICAgICBpZiAod2Vha05ldHdvcmtTZXNzaW9uKQotICAgICAgICAgICAgd2Vha05ldHdvcmtT
ZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLmZpbmlzaGVkUHJlY29ubmVjdEZvck1haW5S
ZXNvdXJjZSh1cmwsIHVzZXJBZ2VudCwgZXJyb3IpOworICAgIHNlc3Npb24tPm5ldHdvcmtMb2Fk
U2NoZWR1bGVyKCkuc3RhcnRlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UodXJsLCB1c2VyQWdl
bnQpOworICAgIGF1dG8gdGFzayA9IG5ldyBQcmVjb25uZWN0VGFzaygqc2Vzc2lvbiwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgW3Nlc3Npb24gPSBXZWFrUHRyIHsgKnNlc3Npb24gfSwgdXJsLCB1c2Vy
QWdlbnRdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7CisgICAgICAgIGlm
IChzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5m
aW5pc2hlZFByZWNvbm5lY3RGb3JNYWluUmVzb3VyY2UodXJsLCB1c2VyQWdlbnQsIGVycm9yKTsK
ICAgICB9KTsKICAgICB0YXNrLT5zZXRUaW1lb3V0KDEwX3MpOwogICAgIHRhc2stPnN0YXJ0KCk7
CkBAIC0xNDUxLDcgKzE0NDgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgIH07CiAK
ICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKCpuZXcgQ2FsbGJhY2tBZ2dy
ZWdhdG9yKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7Ci0gICAgYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBpZiAoYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAg
LTE0ODAsMTcgKzE0NzcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXQKICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgPSBo
b3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYKIAotICAgIGF1dG8gcGF0
aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXBhdGguaXNF
bXB0eSgpICYmIHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRl
eGVkREJEYXRhYmFzZXMpKSB7Ci0gICAgICAgIHdlYklEQlNlcnZlcihzZXNzaW9uSUQpLmdldE9y
aWdpbnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byYmIG9yaWdpbnMpIHsKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNl
cykgJiYgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkgeworICAgICAg
ICBzZXNzaW9uLT5lbnN1cmVXZWJJREJTZXJ2ZXIoKS5nZXRPcmlnaW5zKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdpbnMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0
YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGU6Oklu
ZGV4ZWREQkRhdGFiYXNlcywgMCB9KTsKICAgICAgICAgfSk7CiAgICAgfQogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIG5ldHdvcmtTZXNzaW9u
ICYmIG5ldHdvcmtTZXNzaW9uLT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKLSAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdp
c3RyYXRpb25zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmln
aW5EYXRhPiYgc2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25z
KSAmJiBzZXNzaW9uICYmIHNlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkg
eworICAgICAgICBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLmdldE9yaWdpbnNXaXRoUmVnaXN0
cmF0aW9ucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2lu
RGF0YT4mIHNlY3VyaXR5T3JpZ2lucykgbXV0YWJsZSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW4sIFdlYnNpdGVEYXRh
VHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CiAgICAgICAgIH0pOwpAQCAt
MTUwNSwxNSArMTUwMSwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAgIH0KIAogI2lm
IEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCi0gICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSAmJiBu
ZXR3b3JrU2Vzc2lvbikgewotICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG5ldHdvcmtTZXNz
aW9uLT5ob3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVTZXJ2aWNlcygpKQorICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykg
JiYgc2Vzc2lvbikgeworICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlc3Npb24tPmhvc3RO
YW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkpCiAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW4sIFdlYnNpdGVEYXRh
VHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcywgMCB9KTsKICAgICB9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQotICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykg
JiYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKSAmJiBzZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CiAgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZWdpc3RyYWJsZURvbWFpbnMoW2NhbGxi
YWNrQWdncmVnYXRvcl0oYXV0byYmIGRvbWFpbnMpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IHdoaWxlICghZG9tYWlucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5yZWdpc3RyYWJsZURvbWFpbnNXaXRoUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5hZGQoZG9tYWlucy50YWtlTGFzdCgpKTsKQEAgLTE1MzMsNyArMTUyOSw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8qIG5l
dHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCkBAIC0xNTU2LDE4ICsxNTUyLDE4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpET01DYWNoZSkpCiAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5naW5lOjpjbGVh
ckFsbENhY2hlcygqdGhpcywgc2Vzc2lvbklELCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAK
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4
ZWREQkRhdGFiYXNlcykgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICB3ZWJJ
REJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
bW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAm
JiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+
ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNl
KG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBib29sIGNsZWFyU2VydmljZVdvcmtlcnMgPSB3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpIHx8IHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
cyk7Ci0gICAgaWYgKGNsZWFyU2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpICYmIG5ldHdvcmtTZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dT
ZXJ2ZXIoKS5jbGVhckFsbChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgaWYgKGNsZWFy
U2VydmljZVdvcmtlcnMgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb24pCisg
ICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuY2xlYXJBbGwoW2NsZWFyVGFza3NIYW5k
bGVyXSB7IH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJF
VkVOVElPTikKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24gPyBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpIDogbnVsbHB0cikgeworICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24gPyBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkgOiBudWxscHRyKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZGVsZXRpbmcgYWxs
IG9mIHRoZSBkYXRhIHR5cGVzIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdG9y
ZSBtb25pdG9ycwogICAgICAgICAgICAgLy8gd2UgZG8gbm90IG5lZWQgdG8gcmUtZ3JhbmRmYXRo
ZXIgb2xkIGRhdGEuCiAgICAgICAgICAgICBhdXRvIHNob3VsZEdyYW5kZmF0aGVyID0gd2Vic2l0
ZURhdGFUeXBlcy5jb250YWluc0FsbChXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1v
bml0b3JlZERhdGFUeXBlcygpKSA/IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6Tm8gOiBT
aG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllczsKQEAgLTE1NzYsMTggKzE1NzIsMTggQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChuZXR3b3Jr
U2Vzc2lvbikKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0
YShtb2RpZmllZFNpbmNlLCBzdGQ6Om51bGxvcHQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
KyAgICBpZiAoc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVE
YXRhKG1vZGlmaWVkU2luY2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0p
OwogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpE
aXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgY2xlYXJEaXNr
Q2FjaGUobW9kaWZpZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudHMpICYmIG5ldHdvcmtTZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7Cisg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudHMpICYmIHNlc3Npb24pCisgICAgICAgIHNlc3Npb24tPmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAjaWYgSEFW
RShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpICYmIG5ldHdv
cmtTZXNzaW9uKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJBbHRlcm5hdGl2ZVNlcnZp
Y2VzKG1vZGlmaWVkU2luY2UpOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYgc2Vzc2lvbikKKyAgICAgICAg
c2Vzc2lvbi0+Y2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKG1vZGlmaWVkU2luY2UpOwogI2VuZGlm
CiAKICAgICBpZiAoTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjYW5IYW5kbGVUeXBlcyh3ZWJzaXRl
RGF0YVR5cGVzKSkgewpAQCAtMTYyMiw3ICsxNjE4LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJEaXNr
Q2FjaGVFbnRyaWVzKE5ldHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2Vj
dXIKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0
ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llSG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgSFNUU0NhY2hlSG9zdE5hbWVzLCBjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
JiByZWdpc3RyYWJsZURvbWFpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpAQCAtMTYzNSwxNyArMTYzMSwxNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpbwogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19BTFRF
Uk5BVElWRV9TRVJWSUNFKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykgJiYgbmV0d29ya1Nlc3Npb24pIHsKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0
aXZlU2VydmljZXMpICYmIHNlc3Npb24pIHsKICAgICAgICAgYXV0byBob3N0cyA9IG9yaWdpbkRh
dGFzLm1hcChbXShhdXRvJiBvcmlnaW5EYXRhKSB7IHJldHVybiBvcmlnaW5EYXRhLmhvc3Q7IH0p
OwotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhv
c3ROYW1lcyhob3N0cyk7CisgICAgICAgIHNlc3Npb24tPmRlbGV0ZUFsdGVybmF0aXZlU2Vydmlj
ZXNGb3JIb3N0TmFtZXMoaG9zdHMpOwogICAgIH0KICNlbmRpZgogCiAgICAgYXV0byBjbGVhclRh
c2tzSGFuZGxlciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHMpICYmIG5ldHdvcmtTZXNzaW9u
KSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHMpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRv
JiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChvcmlnaW5EYXRhLmhvc3QpLCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgICAgICAgICBzZXNzaW9uLT5jbGVhclByaXZhdGVD
bGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21Ib3N0KG9yaWdpbkRhdGEuaG9zdCksIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKICAgICB9CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewpAQCAtMTY1MywxMyArMTY0OSwxMyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpbwogICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFy
Q2FjaGVzRm9yT3JpZ2luKCp0aGlzLCBzZXNzaW9uSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG9y
aWdpbkRhdGEgfSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAotICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHdlYklEQlNlcnZlcihz
ZXNzaW9uSUQpLmNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5EYXRhcywg
W2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2Vy
dmVyKCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKG9yaWdpbkRhdGFzLCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
Ym9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwotICAgIGlmIChjbGVhclNl
cnZpY2VXb3JrZXJzICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiBuZXR3b3JrU2Vzc2lv
bikgewotICAgICAgICBhdXRvJiBzZXJ2ZXIgPSBuZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2
ZXIoKTsKKyAgICBpZiAoY2xlYXJTZXJ2aWNlV29ya2VycyAmJiAhc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgc2Vzc2lvbikgeworICAgICAgICBhdXRvJiBzZXJ2ZXIgPSBzZXNzaW9uLT5lbnN1
cmVTV1NlcnZlcigpOwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRh
cykKICAgICAgICAgICAgIHNlcnZlci5jbGVhcihvcmlnaW5EYXRhLCBbY2xlYXJUYXNrc0hhbmRs
ZXJdIHsgfSk7CiAgICAgfQpAQCAtMTY4MCw5ICsxNjc2LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW8KICAgICB9CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElP
TikKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MpICYmIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKSAmJiBzZXNzaW9uKSB7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogcmVnaXN0cmFi
bGVEb21haW5zKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZW1vdmVEYXRhRm9yRG9tYWluKGRvbWFpbiwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTY5Myw3ICsxNjg5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW8KICAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGVsZXRlRGF0YSh3ZWJzaXRlRGF0YVR5
cGVzLCBvcmlnaW5EYXRhcywgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAotICAg
IGlmIChuZXR3b3JrU2Vzc2lvbikgeworICAgIGlmIChzZXNzaW9uKSB7CiAgICAgICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0RlbGV0ZU5ldHdvcmtEYXRh
Rm9yOwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKICAgICAg
ICAgICAgIGRvbWFpbnNUb0RlbGV0ZU5ldHdvcmtEYXRhRm9yLmFkZChXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qob3JpZ2luRGF0YS5ob3N0KSk7CkBA
IC0xNzA0LDcgKzE3MDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAgICAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IHJlZ2lzdHJhYmxlRG9tYWlucykKICAgICAgICAgICAgIGRvbWFpbnNU
b0RlbGV0ZU5ldHdvcmtEYXRhRm9yLmFkZChkb21haW4pOwogCi0gICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGRvbWFp
bnNUb0RlbGV0ZU5ldHdvcmtEYXRhRm9yKSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOworICAg
ICAgICBzZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpudWxsb3B0LCBXVEZN
b3ZlKGRvbWFpbnNUb0RlbGV0ZU5ldHdvcmtEYXRhRm9yKSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7
IH0pOwogICAgIH0KIH0KIApAQCAtMTc0Nyw3ICsxNzQzLDcgQEAgc3RhdGljIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhjb25z
dCBIYXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0
YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFJlZ2lzdHJhYmxlRG9tYWluc1Rv
RGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYgZG9tYWlucywgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwogCiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
RmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkRvTm90
Q3JlYXRlUHJvY2Vzc2VzOwogCkBAIC0xODEzLDkgKzE4MDksOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBB
TDo6U2VzcwogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNF
KQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0
ZXJuYXRpdmVTZXJ2aWNlcykgJiYgbmV0d29ya1Nlc3Npb24pIHsKKyAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpICYm
IHNlc3Npb24pIHsKICAgICAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZSA9IGRv
bWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLm1hcChbXShhdXRvJiBkb21h
aW4pIHsgcmV0dXJuIGRvbWFpbi5zdHJpbmcoKTsgfSk7Ci0gICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlKTsKKyAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zv
ckhvc3ROYW1lcyhyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZSk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTE4NDUsMjcgKzE4NDEsMjcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVz
dHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAg
fSk7CiAgICAgfQogCi0gICAgYXV0byBwYXRoID0gbV9pZGJEYXRhYmFzZVBhdGhzLmdldChzZXNz
aW9uSUQpOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkgJiYgd2Vic2l0ZURhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKLSAgICAgICAgd2Vi
SURCU2VydmVyKHNlc3Npb25JRCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBkb21haW5zVG9EZWxl
dGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMpIHsKLSAgICAgICAg
ICAgIGlmICghbV93ZWJJREJTZXJ2ZXJzLmNvbnRhaW5zKHNlc3Npb25JRCkpCisgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFz
ZXMpICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvcl0oYXV0byYmIG9yaWdpbnMp
IHsKKyAgICAgICAgICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgICAgICAgICAgaWYgKCFzZXNzaW9uIHx8ICFzZXNzaW9uLT53ZWJJREJTZXJ2ZXIoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gb3JpZ2luc1RvRGVs
ZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKG9yaWdpbnMsIGRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlu
cyk7Ci0gICAgICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5jbG9zZUFuZERlbGV0ZURh
dGFiYXNlc0Zvck9yaWdpbnMob3JpZ2luc1RvRGVsZXRlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOworICAgICAgICAgICAgc2Vzc2lvbi0+d2ViSURCU2VydmVyKCktPmNsb3NlQW5kRGVsZXRl
RGF0YWJhc2VzRm9yT3JpZ2lucyhvcmlnaW5zVG9EZWxldGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgYm9vbCBjbGVhclNlcnZpY2VXb3JrZXJzID0gd2Vic2l0ZURhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSB8fCB3ZWJzaXRlRGF0YVR5cGVzLmNvbnRh
aW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwotICAgIGlm
IChjbGVhclNlcnZpY2VXb3JrZXJzICYmIG5ldHdvcmtTZXNzaW9uICYmIG5ldHdvcmtTZXNzaW9u
LT5oYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRoKCkpIHsKLSAgICAgICAgbmV0d29ya1Nlc3Np
b24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtkb21haW5z
VG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBu
ZXR3b3JrU2Vzc2lvbiA9IFdlYWtQdHIgeyAqbmV0d29ya1Nlc3Npb24gfV0oY29uc3QgSGFzaFNl
dDxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgIGlm
IChjbGVhclNlcnZpY2VXb3JrZXJzICYmIHNlc3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdv
cmtlckRhdGFiYXNlUGF0aCgpKSB7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCku
Z2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25zKFtkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVX
ZWJzaXRlRGF0YUZvciwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBzZXNzaW9uID0gV2Vha1B0ciB7ICpz
ZXNzaW9uIH1dKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYgc2VjdXJpdHlPcmln
aW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBz
ZWN1cml0eU9yaWdpbnMpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRvbWFpbnNUb0RlbGV0ZUFs
bE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLmNvbnRhaW5zKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KSkpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9k
b21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2Vj
dXJpdHlPcmlnaW4uaG9zdCkpOwotICAgICAgICAgICAgICAgIGlmIChuZXR3b3JrU2Vzc2lvbikK
LSAgICAgICAgICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuY2xl
YXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgICAg
ICAgICAgaWYgKHNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmVuc3VyZVNX
U2VydmVyKCkuY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTE5MjcsNyArMTkyMyw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgUmVnaXN0cmFiCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJh
YmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIGJvb2wgc2hvdWxkTm90aWZ5
UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRo
aXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9w
dGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9Ob3RDcmVhdGVQ
cm9jZXNzZXM7CiAgICAgCkBAIC0xOTkzLDE3ICsxOTg5LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsCiAgICAgICAgIH0pOwogICAgIH0KICAgICAKLSAgICBhdXRvIHBhdGggPSBtX2lkYkRh
dGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgaWYgKCFwYXRoLmlzRW1wdHkoKSAmJiB3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJh
c2VzKSkgewotICAgICAgICB3ZWJJREJTZXJ2ZXIoc2Vzc2lvbklEKS5nZXRPcmlnaW5zKFtjYWxs
YmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7CisgICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpICYmIHNlc3Np
b24gJiYgc2Vzc2lvbi0+aGFzSURCRGF0YWJhc2VQYXRoKCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+
ZW5zdXJlV2ViSURCU2VydmVyKCkuZ2V0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRv
JiYgb3JpZ2lucykgewogICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5h
cHBlbmQoeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMsIDAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFU
eXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucykgJiYgbmV0d29ya1Nlc3Npb24gJiYgbmV0
d29ya1Nlc3Npb24tPmhhc1NlcnZpY2VXb3JrZXJEYXRhYmFzZVBhdGgoKSkgewotICAgICAgICBu
ZXR3b3JrU2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5nZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlv
bnMoW2NhbGxiYWNrQWdncmVnYXRvcl0oY29uc3QgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+
JiBzZWN1cml0eU9yaWdpbnMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpICYmIHNl
c3Npb24gJiYgc2Vzc2lvbi0+aGFzU2VydmljZVdvcmtlckRhdGFiYXNlUGF0aCgpKSB7CisgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkuZ2V0T3JpZ2luc1dpdGhSZWdpc3RyYXRpb25z
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGNvbnN0IEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiYg
c2VjdXJpdHlPcmlnaW5zKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgc2VjdXJp
dHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgc2VjdXJpdHlPcmlnaW4sIFdl
YnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMsIDAgfSk7CiAgICAgICAg
IH0pOwpAQCAtMjA5NSw4ICsyMDkwLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXMKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgaHR0cEJvZHksIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBy
ZXF1ZXN0LnNldEhUVFBCb2R5KGh0dHBCb2R5LnRha2VEYXRhKCkpOwotICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb25zLmdldChzZXNzaW9uSUQpKQotICAgICAg
ICBuZXR3b3JrU2Vzc2lvbi0+cmVxdWVzdFJlc291cmNlKHBhZ2VJRCwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+cmVxdWVzdFJlc291
cmNlKHBhZ2VJRCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0sIHsgfSk7CiB9
CkBAIC0yMTMwLDggKzIxMjUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBbGxvd3NBbnlT
U0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sIGFsbG93cywgQ29tcGxldAogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjphbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW5Gb3JMb2NhbFBDTVRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBtX25l
dHdvcmtTZXNzaW9ucy5nZXQoc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPmFs
bG93VExTQ2VydGlmaWNhdGVDaGFpbkZvckxvY2FsUENNVGVzdGluZyhjZXJ0aWZpY2F0ZUluZm8p
OworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgc2Vzc2lvbi0+YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5n
KGNlcnRpZmljYXRlSW5mbyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0
aWNNZXNzYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKQEAgLTIxNzYsOCArMjE3MSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
dXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQogCiAgICAgYm9vbCBh
bGxTdXNwZW5kZWQgPSB0cnVlOwogICAgIGF1dG8gY29uZGl0aW9uID0gaXNTdXNwZW5zaW9uSW1t
aW5lbnQgPyBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyA6IFdlYklE
QlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6SWZJZGxlOwotICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBhbGxTdXNwZW5kZWQgJj0g
c2VydmVyLT5zdXNwZW5kKGNvbmRpdGlvbik7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsm
XShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndl
YklEQlNlcnZlcigpKQorICAgICAgICAgICAgYWxsU3VzcGVuZGVkICY9IHNlcnZlci0+c3VzcGVu
ZChjb25kaXRpb24pOworICAgIH0pOwogCiAgICAgaWYgKGFsbFN1c3BlbmRlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjE4OSw4ICsyMTg2LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3Bl
bmRJREJTZXJ2ZXJzKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCiAgICAgICAgIGlmICghbV9z
aG91bGRTdXNwZW5kSURCU2VydmVycyB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1c3Bl
bnNpb25JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAoYXV0
byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICAgICAgc2VydmVy
LT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKKyAg
ICAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFtdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLndlYklEQlNlcnZlcigpKQorICAgICAgICAg
ICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246
OkFsd2F5cyk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0yMjE1LDEwICsyMjE0LDEw
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNp
b25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAjZW5kaWYKICAgICBQQ006OlN0b3JlOjpwcmVw
YXJlRm9yUHJvY2Vzc1RvU3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogCi0gICAg
Zm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgbmV0d29ya1Nlc3Npb24pIHsKLSAgICAg
ICAgcGxhdGZvcm1GbHVzaENvb2tpZXMobmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCksIFtjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0
byYgc2Vzc2lvbikgeworICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhzZXNzaW9uLnNlc3Np
b25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICAgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gbmV0d29ya1Nlc3Npb24uc3dTZXJ2
ZXIoKSkKKyAgICAgICAgaWYgKGF1dG8qIHN3U2VydmVyID0gc2Vzc2lvbi5zd1NlcnZlcigpKQog
ICAgICAgICAgICAgc3dTZXJ2ZXItPnN0YXJ0U3VzcGVuc2lvbihbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOwogI2VuZGlmCiAgICAgfSk7CkBAIC0yMjU3LDE0ICsyMjU2LDE2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAgICAgUENNOjpTdG9yZTo6cHJvY2Vzc0RpZFJlc3VtZSgp
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3U2VydmVy
ID0gbmV0d29ya1Nlc3Npb24uc3dTZXJ2ZXIoKSkKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24o
W10gKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8gc3dTZXJ2ZXIgPSBzZXNzaW9u
LnN3U2VydmVyKCkpCiAgICAgICAgICAgICBzd1NlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwogICAg
IH0pOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBmb3IgKGF1dG8mIHNl
cnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5yZXN1bWUo
KTsKKyAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAg
ICBpZiAoYXV0byogc2VydmVyID0gc2Vzc2lvbi53ZWJJREJTZXJ2ZXIoKSkKKyAgICAgICAgICAg
IHNlcnZlci0+cmVzdW1lKCk7CisgICAgfSk7CiAgICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVy
cyA9IGZhbHNlOwogI2VuZGlmCiAKQEAgLTIzMTgsNDMgKzIzMTksNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUp
IGNvbnN0CiAgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0Fj
Y2VzcyhzY2hlbWUpOwogfQogCi1SZWY8V2ViSURCU2VydmVyPiBOZXR3b3JrUHJvY2Vzczo6Y3Jl
YXRlV2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBTdHJpbmcg
cGF0aDsKLSAgICBpZiAoIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIEFTU0VS
VChtX2lkYkRhdGFiYXNlUGF0aHMuY29udGFpbnMoc2Vzc2lvbklEKSk7Ci0gICAgICAgIHBhdGgg
PSBtX2lkYkRhdGFiYXNlUGF0aHMuZ2V0KHNlc3Npb25JRCk7Ci0gICAgfQotCi0gICAgYXV0byBz
cGFjZVJlcXVlc3RlciA9IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklE
XShjb25zdCBhdXRvJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkKSB7Ci0gICAgICAg
IHJldHVybiBwcm90ZWN0ZWRUaGlzLT5zdG9yYWdlUXVvdGFNYW5hZ2VyKHNlc3Npb25JRCwgb3Jp
Z2luKS0+cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFkKHNwYWNlUmVxdWVzdGVkKTsKLSAg
ICB9OwotCi0gICAgYXV0byByZXN1bHQgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQs
IHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5k
SURCU2VydmVycykKLSAgICAgICAgcmVzdWx0LT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVu
c2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1XZWJJREJT
ZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjp3ZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQotewotICAgIHJldHVybiAqbV93ZWJJREJTZXJ2ZXJzLmVuc3VyZShzZXNzaW9uSUQsIFt0
aGlzLCBzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIHRoaXMtPmNyZWF0ZVdlYklEQlNlcnZl
cihzZXNzaW9uSUQpOwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKLX0KLQotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIGhhbmRsZSkKLXsKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRBTlQ6IERv
IG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2Vz
IG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAo
PHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1faWRiRGF0YWJhc2VQYXRocy5hZGQoc2Vzc2lvbklELCBpbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkpOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKLSAgICAgICAgc2V0
U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChzZXNzaW9uSUQsIGluZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgfQotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRT
ZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBpZGJSb290UGF0aCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07CkBAIC0yNDAxLDkgKzIzNjUsOCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAgICAgICBpdGVyYXRvci0+dmFsdWUtPm1vdmVE
YXRhKG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKIAogICAgIGlmIChk
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7
Ci0gICAgICAgIGF1dG8gcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRocy5nZXQoc2Vzc2lvbklEKTsK
LSAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHdlYklEQlNlcnZlcihz
ZXNzaW9uSUQpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3Jd
IHsgfSk7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKTsgc2Vzc2lvbiAmJiBzZXNzaW9uLT5oYXNJREJEYXRhYmFzZVBhdGgoKSkKKyAgICAgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVdlYklEQlNlcnZlcigpLnJlbmFtZU9yaWdpbihvbGRPcmlnaW4s
IG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQogCkBAIC0yNjI2LDggKzI1
ODksMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlv
blRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAoYXV0byogc2VydmVyID0gbV93ZWJJREJTZXJ2
ZXJzLmdldChzZXNzaW9uSUQpKQotICAgICAgICBzZXJ2ZXItPnJlbW92ZUNvbm5lY3Rpb24oY29u
bmVjdGlvbik7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBzZXNzaW9uLT53ZWJJREJTZXJ2ZXIo
KSkKKyAgICAgICAgICAgIHNlcnZlci0+cmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKKyAg
ICB9CiAKICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Np
b25JRCkpCiAgICAgICAgIG1hbmFnZXItPnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rp
b24oY29ubmVjdGlvbik7CkBAIC0yNjYyLDE1ICsyNjI3LDE1IEBAIFNlY29uZHMgTmV0d29ya1By
b2Nlc3M6OnJhbmRvbUNsb3NlZFBvcnREZWxheSgpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNB
cHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgcmVzdWx0ID0gbmV0d29ya1Nlc3Npb24tPmhh
c0FwcEJvdW5kU2Vzc2lvbigpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgcmVzdWx0ID0gc2Vzc2lvbi0+aGFzQXBwQm91bmRTZXNz
aW9uKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
ewotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKKyAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAg
c2Vzc2lvbi0+Y2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3
MzEsOCArMjY5Niw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQYXR0
ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1Nlc3Npb24tPmFwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSgpKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2Vzc2lvbi0+YXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CkBAIC0yNzQwLDggKzI3MDUsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBuZXR3b3Jr
U2Vzc2lvbi0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkuY2xlYXJBcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGEoKTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIHNlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YSgpLmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCk7CiAKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQpAQCAtMjc1OSwyOSArMjcyNCwyMCBAQCBSVENEYXRhQ2hhbm5lbFJlbW90
ZU1hbmFnZXJQcm94eSYgTmV0d29ya1Byb2Nlc3M6OnJ0Y0RhdGFDaGFubmVsUHJveHkoKQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZU5l
dHdvcmtQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGlmICghc2Vzc2lvbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgc2Vzc2lvbi0+YWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKHBhZ2VJRCwgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKQorICAgICAgICBzZXNzaW9uLT5hZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRl
cnMocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBpZiAoIXNlc3Npb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHNlc3Npb24tPnJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhwYWdl
SUQpOworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkK
KyAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKHBhZ2VJRCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCk7Ci0gICAgaWYgKCFzZXNzaW9uKQotICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoMCk7Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uLT5jb3VudE5vbkRl
ZmF1bHRTZXNzaW9uU2V0cygpKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzZXNzaW9uID8gc2Vzc2lvbi0+Y291
bnROb25EZWZhdWx0U2Vzc2lvblNldHMoKSA6IDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBjZGIwMzk4OWRmNmFkNWFjY2MxNGIzNGM1MzU3MDQ4ODkyNzM5Yzc4Li40YjUyOTk3NzBiMjAw
ZWIyNjZhNTNiYjFhYjVlZTUzZWVkMmE0YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNs
dWRlICJXZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGEuaCIKQEAgLTQ0LDEzICs0MywxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jv
c3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
VHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VRdW90YU1hbmFnZXIuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgpAQCAtODIsNyArODEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDdXJsUHJveHlTZXR0aW5nczsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKLWNsYXNzIFN0b3JhZ2VRdW90YU1hbmFnZXI7CiBjbGFzcyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOwpAQCAtMjkzLDcgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBOZXR3b3JrQ29udGVu
dFJ1bGVMaXN0TWFuYWdlciYgbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKSB7IHJldHVy
biBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOyB9CiAjZW5kaWYKIAotICAgIFdlYklE
QlNlcnZlciYgd2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBib29sIHNob3VsZFN1
c3BlbmRJREJTZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdXNwZW5kSURCU2VydmVy
czsgfQogCiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKQEAgLTM4Niw2ICszODQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVQdXNo
QW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYpOwogCisgICAgdm9pZCBzZXRTZXNz
aW9uU3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGlkYlJvb3RQYXRoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CiAKQEAgLTQ3OCwxMCArNDc4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJM
U2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVy
VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQg
YWRkSW5kZXhlZERhdGFiYXNlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgU3RyaW5nJiwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7Ci0gICAgUmVmPFdlYklEQlNlcnZlcj4gY3JlYXRlV2ViSURC
U2VydmVyKFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHNldFNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBh
dGgpOwotICAgIHZvaWQgcmVtb3ZlV2ViSURCU2VydmVySWZQb3NzaWJsZShQQUw6OlNlc3Npb25J
RCk7CiAgICAgdm9pZCBzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50
KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01NjUsOCArNTYxLDYgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2Vy
dGlvbjsKICNlbmRpZgogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX2lk
YkRhdGFiYXNlUGF0aHM7Ci0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYklE
QlNlcnZlcj4+IG1fd2ViSURCU2VydmVyczsKICAgICBib29sIG1fc2hvdWxkU3VzcGVuZElEQlNl
cnZlcnMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lvbklkZW50aWZpZXIgeyAw
IH07CiAgICAgCkBAIC01ODksNyArNTgzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRFbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9mdHBFbmFibGVk
IHsgZmFsc2UgfTsKIAotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZjxOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBSZWY8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPj4gbV9zdG9yYWdlTWFuYWdlcnM7IC8vIEZJ
WE1FOiBTaG91bGQgbW92ZSB0byBOZXR3b3JrU2Vzc2lvbi4KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcAppbmRleCBjNTNhMGE4NDBjZmNhOWQ5ZTkxODQ4MjFjZmY0ZDZlMmFkNzdjOWFiLi40MDU3
ZjQzOTg1Y2Y0MTdiZTZlZjY4ZTdiZTMzMThmZTBkZDAwZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAog
I2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckZldGNoVGFzay5oIgorI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC02NSwxNiArNjYsMTYgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIGNvbnN0ZXhwciBTZWNvbmRzIGNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRl
ckxpZmV0aW1lIHsgMzBfcyB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5l
dHdvcmtTZXNzaW9uOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gTmV0d29ya1Nl
c3Npb25Db2NvYTo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBw
YXJhbWV0ZXJzKTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQotICAgIHJldHVybiBOZXR3b3JrU2Vz
c2lvblNvdXA6OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Cisg
ICAgcmV0dXJuIE5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBwYXJh
bWV0ZXJzKTsKICNlbmRpZgogI2lmIFVTRShDVVJMKQotICAgIHJldHVybiBOZXR3b3JrU2Vzc2lv
bkN1cmw6OmNyZWF0ZShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAg
cmV0dXJuIE5ldHdvcmtTZXNzaW9uQ3VybDo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0
ZXJzKTsKICNlbmRpZgogfQogCkBAIC0xOTcsNiArMTk4LDggQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bjo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cykKICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnZhbGlkYXRlQW5kQ2FuY2Vs
KCk7CiAjZW5kaWYKKyAgICBpZiAoYXV0byBzZXJ2ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURC
U2VydmVyLCBudWxscHRyKSkKKyAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgbV9pc0ludmFsaWRhdGVkID0gdHJ1ZTsKICNlbmRpZgpAQCAtNjM5LDQgKzY0
Miw0NSBAQCBib29sIE5ldHdvcmtTZXNzaW9uOjpoYXNTZXJ2aWNlV29ya2VyRGF0YWJhc2VQYXRo
KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorV2ViSURCU2Vy
dmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlV2ViSURCU2VydmVyKCkKK3sKKyAgICBpZiAoIW1f
d2ViSURCU2VydmVyKSB7CisgICAgICAgIFN0cmluZyBwYXRoOworICAgICAgICBpZiAoIXNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9pZGJEYXRhYmFz
ZVBhdGguaXNOdWxsKCkpOworICAgICAgICAgICAgcGF0aCA9IG1faWRiRGF0YWJhc2VQYXRoOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byBzcGFjZVJlcXVlc3RlciA9IFtuZXR3b3JrUHJvY2Vz
cyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNzKCkgfSwgc2Vzc2lvbklEID0gc2Vzc2lvbklEKCldKGNv
bnN0IGF1dG8mIG9yaWdpbiwgdWludDY0X3Qgc3BhY2VSZXF1ZXN0ZWQpIHsKKyAgICAgICAgICAg
IHJldHVybiBuZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9y
aWdpbiktPnJlcXVlc3RTcGFjZU9uQmFja2dyb3VuZFRocmVhZChzcGFjZVJlcXVlc3RlZCk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgbV93ZWJJREJTZXJ2ZXIgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0
ZShzZXNzaW9uSUQoKSwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOworICAgICAgICBp
ZiAobmV0d29ya1Byb2Nlc3MoKS5zaG91bGRTdXNwZW5kSURCU2VydmVycygpKQorICAgICAgICAg
ICAgbV93ZWJJREJTZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0
aW9uOjpBbHdheXMpOworICAgIH0KKyAgICByZXR1cm4gKm1fd2ViSURCU2VydmVyOworfQorCit2
b2lkIE5ldHdvcmtTZXNzaW9uOjpjbG9zZUlEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3dlYklEQlNlcnZlcikKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICBzdGQ6OmV4Y2hhbmdlKG1f
d2ViSURCU2VydmVyLCBudWxscHRyKS0+Y2xvc2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uOjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIGhhbmRsZSkKK3sKKyAgICAvLyAqKioqKioqKioKKyAgICAvLyBJTVBPUlRBTlQ6IERv
IG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2Vz
IG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAo
PHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKKyAgICAvLyAqKioqKioqKioKKyAgICBhdXRvIGlz
TmV3ID0gbV9pZGJEYXRhYmFzZVBhdGguaXNOdWxsKCk7CisgICAgbV9pZGJEYXRhYmFzZVBhdGgg
PSBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgaWYgKGlzTmV3KSB7CisgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOworICAgICAgICBuZXR3
b3JrUHJvY2VzcygpLnNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBhdGgoc2Vz
c2lvbklEKCksIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7CisgICAgfQorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAppbmRleCBjMTNjMDVlZDY3NDg2MTg4YTM0MzAzMTNhMDQwODhlZWVkMWJmYjJjLi41
MWE3ZWQzZmM5MDljODg4NTE4ZDhhYmZlNDc2ZTJlNGVjNWQ3NDExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC03NCw2ICs3NCw3IEBAIGNs
YXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CitjbGFzcyBXZWJJREJTZXJ2ZXI7CiBjbGFzcyBXZWJQYWdlTmV0d29ya1Bh
cmFtZXRlcnM7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBjbGFzcyBX
ZWJTb2NrZXRUYXNrOwpAQCAtOTEsNyArOTIsNyBAQCBjbGFzcyBDYWNoZTsKIGNsYXNzIE5ldHdv
cmtTZXNzaW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2aXJ0dWFsIH5OZXR3b3JrU2Vzc2lvbigpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKTsKQEAgLTIwMyw2ICsyMDQsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclNlc3Npb24oYm9vbCBwcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAK
KyAgICBXZWJJREJTZXJ2ZXIqIHdlYklEQlNlcnZlcigpIHsgcmV0dXJuIG1fd2ViSURCU2VydmVy
LmdldCgpOyB9CisgICAgV2ViSURCU2VydmVyJiBlbnN1cmVXZWJJREJTZXJ2ZXIoKTsKKyAgICB2
b2lkIGNsb3NlSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBhZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgaW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIGhhc0lEQkRh
dGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2lkYkRhdGFiYXNlUGF0aC5pc0VtcHR5KCk7
IH0KKwogICAgIE5ldHdvcmtMb2FkU2NoZWR1bGVyJiBuZXR3b3JrTG9hZFNjaGVkdWxlcigpOwog
ICAgIFBDTTo6TWFuYWdlckludGVyZmFjZSYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSB7IHJl
dHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50LmdldCgpOyB9CiAgICAgdm9pZCBzZXRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZShib29sKTsKQEAgLTI5NSw2ICszMDIsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3N3U2Vy
dmVyOwogI2VuZGlmCiAKKyAgICBTdHJpbmcgbV9pZGJEYXRhYmFzZVBhdGg7CisgICAgUmVmUHRy
PFdlYklEQlNlcnZlcj4gbV93ZWJJREJTZXJ2ZXI7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgbV9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCBlNGI4Y2M4ZWE3ZDJlNTQ3OTVkMGUwYWRjNTI2
OTA4NDMxNmI2Nzg1Li5iMDU2ZjRmNmViNjA3YjRkNzljZWI4MmE1ZjNiOTQ0ZDYzZjRkYTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oCkBAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczsKIGNsYXNzIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogUmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUuCi0gICAgc3RhdGljIHZvaWQg
ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0
b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IGY3ZTY0M2EyYWQzYzdhYTdmNjYz
MDllZmQzMTgwZjA5ZWUzZmI0YjAuLmIwOTIyYjAzZGM5NzVmZmU4MTdjNTE2N2E3YWNkYjBhMTNm
ZTQ1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC05Nyw5ICs5Nyw5IEBAIHByaXZhdGU6CiAKIGNs
YXNzIE5ldHdvcmtTZXNzaW9uQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3Jr
UHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKLSAg
ICBOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMmJik7CisgICAgTmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2Vz
cyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgfk5ldHdv
cmtTZXNzaW9uQ29jb2EoKTsKIAogICAgIFNlc3Npb25XcmFwcGVyJiBpbml0aWFsaXplRXBoZW1l
cmFsU3RhdGVsZXNzU2Vzc2lvbklmTmVlZGVkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBlYWUwMDViMzdh
YTJlNjEzMGRkMGRkNGI1NzgwZjE3MTczNTI2OGM0Li41MzlhOTI4NTRlN2ZhMDc4Yjc5YWRlMzc3
ZWIzYWJiYTE4YzAxMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMTY5LDkgKzExNjksOSBA
QCBjb25zdCBTdHJpbmcmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUoKSBjb25zdAogfQogI2VuZGlmCiAKLXN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lv
bj4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3
b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcHJveHlE
aWN0aW9uYXJ5KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkpCkBA
IC0xMjMzLDcgKzEyMzMsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZVNlc3Npb25DbGVhbnVwKE5l
dHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24sIGNvbnN0IE5ldHdvcmtTZQogfQogI2VuZGlmCiAK
LU5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCitOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2Vzcywg
cGFyYW1ldGVycykKICAgICAsIG1fZGVmYXVsdFNlc3Npb25TZXQoU2Vzc2lvblNldDo6Y3JlYXRl
KCkpCiAgICAgLCBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihwYXJhbWV0ZXJzLmJvdW5kSW50
ZXJmYWNlSWRlbnRpZmllcikKQEAgLTEzNTEsNyArMTM1MSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29j
b2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrCiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyAmJiAhcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5hcHBCb3VuZERvbWFpbnMuaXNFbXB0eSgpKQotICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNldEFwcEJvdW5kRG9tYWlucyhXVEZNb3ZlKHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuYXBwQm91bmREb21haW5zKSwgW10geyB9KTsKKyAg
ICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRBcHBCb3VuZERvbWFpbnMoSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmFwcEJvdW5kRG9tYWlucyB9LCBbXSB7IH0pOwogI2VuZGlmCiAK
ICNpZiBIQVZFKFNFU1NJT05fQ0xFQU5VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggYjM1NGQ0Nzhm
OTY5MzNmMGVhZjkwN2NlOGMzMGUyN2VkYzRlOGVhMy4uZjgzZjk1MWI0ZmU1OTkzNjI5Y2VlYjUx
ZjdmN2QyMzljNTcwODdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpDdXJsUHJveHlTZXR0aW5ncyYmIHNldHRpbmdzKQogewogICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByb3h5U2V0dGluZ3MoV1RGTW92ZShzZXR0aW5ncykp
OworICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldFByb3h5U2V0dGluZ3Moc2V0dGlu
Z3MpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1
cmwuY3BwCmluZGV4IDU2ZDU1ZDY2ZTZiNmEwNmRlODZlODAyZjk1ZDg4ODNhMmRjNmViZWEuLjAw
MTIxZWFiOGNmMGJhYmMyYjNjMmQwMjcxNjRjMzdhMjNjNzNmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuY3Bw
CkBAIC0zNywxMiArMzcsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1OZXR3b3JrU2Vzc2lvbkN1cmw6Ok5ldHdvcmtTZXNzaW9uQ3VybChOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKK05ldHdvcmtTZXNzaW9uQ3VybDo6TmV0d29ya1Nlc3Npb25DdXJs
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3Jr
UHJvY2VzcywgcGFyYW1ldGVycykKIHsKICAgICBpZiAoIXBhcmFtZXRlcnMuY29va2llUGVyc2lz
dGVudFN0b3JhZ2VGaWxlLmlzRW1wdHkoKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCktPnNldENvb2tpZURhdGFiYXNlKG1ha2VVbmlxdWVSZWY8Q29va2llSmFyREI+KHBhcmFtZXRl
cnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlKSk7Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCktPnNldFByb3h5U2V0dGluZ3MoV1RGTW92ZShwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3Mp
KTsKKyAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2V0UHJveHlTZXR0aW5ncyhwYXJhbWV0
ZXJzLnByb3h5U2V0dGluZ3MpOwogCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BS
RVZFTlRJT04pCiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3Rvcnk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJs
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJs
LmgKaW5kZXggZTE4YTQzOTBiMTg4YTI3ZTkzMThjNTI0MDQ1NWYwNjRjZjZiZDY2NS4uZmUxNjc1
NjAyMzhlOGQ3NWZhMTEwOTFjNjFkNDVmYWJjNzVlMWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaApAQCAtMzMs
MTEgKzMzLDExIEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczsKIAog
Y2xhc3MgTmV0d29ya1Nlc3Npb25DdXJsIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVh
dGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3Qg
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgewotICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdvcmtQcm9jZXNz
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29y
a1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycyk7CiAgICAgfQotICAgIE5l
dHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworICAgIE5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYsIGNv
bnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgfk5ldHdvcmtTZXNz
aW9uQ3VybCgpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Q3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJsLmNwcAppbmRleCBh
NzczYzNjYzEzNmNlNTc2MDZiZjJkN2FlZTkzYjBjNDFiNTcwYmY4Li5jZjA0OTBiNmE1ZTg1MmI0
YzYyOTQzZDk3OWQwNzBmOTc0MmUwM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRDdXJs
LmNwcApAQCAtMzUsMTQgKzM1LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIGNvbnN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMuc2Vzc2lvbklEOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzcy5zdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKICAgICBuZXR3b3JrUHJvY2Vzcy5lbnN1
cmVTZXNzaW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
c2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uLCBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQu
dG9VSW50NjQoKSkpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklELCBO
ZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOworICAgIG5ldHdvcmtQcm9jZXNzLnNldFNlc3Np
b24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBwYXJh
bWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCmluZGV4
IGY4ZGNmMTUxY2M4OGMwMzkyYzhmM2NkYmUyNDUzYjUyODdlMDNhNDAuLmE4N2FkODA1YjVkZjE1
MDc4M2I1MzkxZThlMDNmOThlNzY0ZGYzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJTZWNJdGVtU2hpbS5oIgorI2ltcG9ydCAiV2Vi
SURCU2VydmVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhy
ZWFkU3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMTYsOCArMTE3LDEwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMp
CiAgICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1
ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgpOworICAgICAgICBmb3JFYWNoTmV0
d29ya1Nlc3Npb24oW10oYXV0byYgc2Vzc2lvbikgeworICAgICAgICAgICAgaWYgKGF1dG8qIHNl
cnZlciA9IHNlc3Npb24ud2ViSURCU2VydmVyKCkpCisgICAgICAgICAgICAgICAgc2VydmVyLT5z
dXNwZW5kKCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CmluZGV4IDFlMTg0ODlmOTQ2MjBmMDJhN2Q5ZTllODY5ZWM4NjQ5MWI3YmJkNGYuLjBkZTJmMGZj
NmI1ZmE4NjhkOGQxZjYwY2E3MTZhZDY1YWY0NTIyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKK3ZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CiAgICAgaWYgKG5l
dHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC02MCw3ICs2MCw3IEBA
IHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNz
aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3CiAKICAgICBuZXR3b3JrUHJvY2Vzcy5lbnN1cmVTZXNz
aW9uKHNlc3Npb25JRCwgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxk
VXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uLCBtYWtlU3RyaW5nKGJhc2UsICcuJywgc2Vzc2lvbklE
LnRvVUludDY0KCkpLCBXVEZNb3ZlKHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UpKTsKIAotICAgIG5l
dHdvcmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRl
KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzKSkpOworICAgIG5ldHdvcmtQcm9jZXNzLnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3Jr
U2Vzc2lvbjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycykpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDc5NTdkYmQxYmU4ZDA4
ZDE1ZThjZTVlMTE3YTRkZmU5NmYzMWQ1MzkuLmVkNGY5NTVkZjg3NDQ2MGQ0MzA2ZjJlODI5YzY1
N2YwZjQwNGQ0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1UZXJtaW5hdGUoKQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0TmV0d29ya1Byb3h5U2V0dGluZ3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTb3VwTmV0
d29ya1Byb3h5U2V0dGluZ3MmJiBzZXR0aW5ncykKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHN0YXRpY19jYXN0PE5ldHdvcmtT
ZXNzaW9uU291cCY+KCpzZXNzaW9uKS5zZXRQcm94eVNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3Mp
KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKnNlc3Npb24pLnNl
dFByb3h5U2V0dGluZ3Moc2V0dGluZ3MpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQ
ZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCA5ODczMDI2YTA5MWZkZjI5NzRi
ZTFhMWU3MzRlNmY1YjMwYTdkN2M1Li4yYmM3NGI5NDFiMjNlMGRmMGE2ZWZjODQyNTdhYzFiYjg4
MGJjM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya1Nlc3Npb25Tb3VwOjpO
ZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitOZXR3b3JrU2Vzc2lvblNv
dXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNv
bnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDog
TmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCiAgICAgLCBtX25ldHdv
cmtTZXNzaW9uKG1ha2VVbmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCiAg
ICAgLCBtX3BlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQocGFyYW1ldGVycy5wZXJz
aXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkKQpAQCAtNTIsNyArNTIsNyBAQCBOZXR3b3Jr
U2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIE5ldHdvcmtTZQogICAgIHNldElnbm9yZVRMU0Vycm9ycyhwYXJhbWV0ZXJzLmlnbm9y
ZVRMU0Vycm9ycyk7CiAKICAgICBpZiAocGFyYW1ldGVycy5wcm94eVNldHRpbmdzLm1vZGUgIT0g
U291cE5ldHdvcmtQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KQotICAgICAgICBzZXRQcm94
eVNldHRpbmdzKFdURk1vdmUocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKSk7CisgICAgICAgIHNl
dFByb3h5U2V0dGluZ3MocGFyYW1ldGVycy5wcm94eVNldHRpbmdzKTsKIAogICAgIGlmICghcGFy
YW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGguaXNFbXB0eSgpKQogICAgICAgICBz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlUGF0aCwgcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwpAQCAtMTQ1
LDkgKzE0NSw5IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Tb3VwOjpzZXRJZ25vcmVUTFNFcnJvcnMo
Ym9vbCBpZ25vcmVUTFNFcnJvcnMpCiAgICAgbV9uZXR3b3JrU2Vzc2lvbi0+c2V0SWdub3JlVExT
RXJyb3JzKGlnbm9yZVRMU0Vycm9ycyk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb25Tb3VwOjpz
ZXRQcm94eVNldHRpbmdzKFNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYmIHNldHRpbmdzKQordm9p
ZCBOZXR3b3JrU2Vzc2lvblNvdXA6OnNldFByb3h5U2V0dGluZ3MoY29uc3QgU291cE5ldHdvcmtQ
cm94eVNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBtX25ldHdvcmtTZXNzaW9uLT5zZXRQcm94
eVNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKKyAgICBtX25ldHdvcmtTZXNzaW9uLT5zZXRQ
cm94eVNldHRpbmdzKHNldHRpbmdzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmgKaW5kZXggYjAxN2NlZmZjMGM4MTlmNzcxMWVmY2JkMzZhNTE2OGU2NGU0MDljMC4uNmIw
Mzc1MmI0YmY4ZWYwZTEyNTE5MTIwNGNjNjdlNzQ4MGMwM2E3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAt
NDQsMTEgKzQ0LDExIEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczsK
IAogY2xhc3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9u
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBj
cmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29u
c3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgewot
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9j
ZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0
d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycyk7CiAgICAgfQotICAg
IE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiYpOworICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYs
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgfk5ldHdvcmtT
ZXNzaW9uU291cCgpOwogCiAgICAgV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uJiBzb3VwTmV0
d29ya1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiAqbV9uZXR3b3JrU2Vzc2lvbjsgfQpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFi
bGVkOyB9CiAKICAgICB2b2lkIHNldElnbm9yZVRMU0Vycm9ycyhib29sKTsKLSAgICB2b2lkIHNl
dFByb3h5U2V0dGluZ3MoV2ViQ29yZTo6U291cE5ldHdvcmtQcm94eVNldHRpbmdzJiYpOworICAg
IHZvaWQgc2V0UHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0
dGluZ3MmKTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4g
Y3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0
Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAppbmRleCBh
ZTk0NzJmMDA2ZmFkZjBjYzBjOTk3ZTQyYzk5YjE3YzE2NjQxNjQ0Li43NmM4MmJmOGEzMDA4MTg0
ZjJiNGM4ZGMzYWZlNTM5ZmQ3NTMyMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3Vw
LmNwcApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zZXNzaW9uSUQ7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzLnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG5ldHdvcmtQcm9jZXNzLmVuc3Vy
ZVNlc3Npb24oc2Vzc2lvbklELCBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5z
aG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24sIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC50
b1VJbnQ2NCgpKSk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5l
dHdvcmtTZXNzaW9uOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycy5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2V0U2Vzc2lv
bihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggMTA4NjAwNzQzM2VlMTk1
YmMyNzhlN2I4OTA1NDUwZGJkOGFlYTg2ZC4uMjY2ZjZkYjdmMTNjMzIzZmZmZjUxMzhjMDJkODQ2
MDdjMzA4ZWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
V2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJikKK3Zv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Np
b24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggNDY3MmI3OTUyMjAxNDAz
NGY3MjYzYjMyMGVkMzA3OGFiZGVkOWQyMy4uYTE1OThiMjE4N2JlZjZmMWY2MzgxMGQ4ZjE0NGY4
YjQ3MzU3NzNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmKTsKKyAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lv
bihjb25zdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogCiAgICAgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggOWJmNTg3ZmUwNmQxNjUzMmY3YjQ3
ZjhmY2EzMjk1ZWIzMWQ3MzQ1Mi4uN2I5YjI4NDZiNTMxY2ZhODlmYmNjMzE2YTYwODhkNzBhYWM5
MjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAg
LTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEZJWE1FOiByZW1vdmUgcGxh
dGZvcm0tc3BlY2lmaWMgY29kZS4KLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0
b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihjb25zdCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYpOwogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAKaW5kZXggMjk1OTVjN2FkM2JkNzdiYzMyZmM4MjNkM2QzZWVmZDlmZmMxZTU4Zi4u
MTQxYWE3YWFlNThjNmNlNDUwMGIxMjY5YmQ1MmUyMTYxZWE0YjM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJikKK3ZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgKaW5kZXggOWNjOGFlNDY4OTI5OWI2NjE0NDA4Mzk2MjJkOTA3NDhmN2M1YWRlMy4u
ZGFmYzBiODliZDA0MTViMjZkZTU0OTM0YWMxODdmZGIzOGU0ZWUyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVX
ZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihjb25zdCBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYpOwogCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZy
YW1lTG9hZGVyQ2xpZW50KCkgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>