<?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>234448</bug_id>
          
          <creation_ts>2021-12-17 15:26:55 -0800</creation_ts>
          <short_desc>Move CacheStorage engines from NetworkProcess to NetworkSession</short_desc>
          <delta_ts>2021-12-18 12:32:19 -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=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>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825217</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-17 15:26:55 -0800</bug_when>
    <thetext>Move CacheStorage engines from NetworkProcess to NetworkSession class, since they are per session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825220</commentid>
    <comment_count>1</comment_count>
      <attachid>447485</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-17 15:31:28 -0800</bug_when>
    <thetext>Created attachment 447485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825267</commentid>
    <comment_count>2</comment_count>
      <attachid>447497</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-12-17 17:42:12 -0800</bug_when>
    <thetext>Created attachment 447497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825366</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-18 12:31:41 -0800</bug_when>
    <thetext>Committed r287229 (245390@main): &lt;https://commits.webkit.org/245390@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447497.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825367</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-18 12:32:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/86674194&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447485</attachid>
            <date>2021-12-17 15:31:28 -0800</date>
            <delta_ts>2021-12-17 17:42:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234448-20211217153127.patch</filename>
            <type>text/plain</type>
            <size>48200</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkNzU5NWY2OTBmZWZhYjQz
YmM0MDMxZWUwYzhjMTU2YzdkZGY5MDcuLjNkMWQ1ZDNlNDM5YmRjNTBmZTg2NTI3YzYzOWE1NzQ3
ZmNjNTQyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjEtMTItMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENhY2hlU3RvcmFnZSBlbmdp
bmVzIGZyb20gTmV0d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDQ0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgQ2FjaGVTdG9yYWdlIGVuZ2lu
ZXMgZnJvbSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiwgYXMgdGhleSBhcmUgcGVy
LXNlc3Npb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjp+TmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZmluZENhY2hlRW5naW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZUNhY2hlRW5naW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNhY2hlRW5naW5lKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZVJvb3RQYXRoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldENhY2hlU3RvcmFn
ZVBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjplbnN1cmVDYWNoZUVuZ2luZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhckNhY2hlRW5naW5lKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6Y2FjaGVFbmdpbmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0
Y2hFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Om9wZW4p
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpwdXRSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpsb2NrKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OkVuZ2luZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpmcm9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lFbmdpbmUpOiBEZWxldGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjp+Q2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpjYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpwdXRSZWNvcmRzKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVmZXJlbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVyZWZlcmVuY2Up
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6ZW5naW5lUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCiAyMDIxLTEy
LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlR3JvdXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMjgyZGM3NmVi
OWIyODBiZTZjNGZjMmQxOGRjMDgyMjQ0OGM0MjE5ZC4uZjI3YWU3ZGIxNDAwOWM5YzdjZGQwNzRk
YmE5ODNhOTI5OGJhM2UxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE4NSwxMyArMTg1LDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5l
dHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWUKICAgICBpbml0aWFsaXplKFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCi1OZXR3b3Jr
UHJvY2Vzczo6fk5ldHdvcmtQcm9jZXNzKCkKLXsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrcyA6
IG1fY2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy52YWx1ZXMoKSkgewotICAgICAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQotICAgICAgICAgICAgY2FsbGJhY2soU3Ry
aW5nIHsgfSk7Ci0gICAgfQotfQorTmV0d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpID0g
ZGVmYXVsdDsKIAogQXV0aGVudGljYXRpb25NYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6YXV0aGVu
dGljYXRpb25NYW5hZ2VyKCkKIHsKQEAgLTUzOCw3ICs1MzIsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIHNl
c3Npb24tPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICAgICBtX25ldHdvcmtTdG9yYWdlU2Vzc2lv
bnMucmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24ucmVtb3ZlKHNlc3Npb25JRCk7Ci0gICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lF
bmdpbmUoKnRoaXMsIHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJB
Q0tJTkdfUFJFVkVOVElPTikKQEAgLTE0NDcsOCArMTQ0MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFs
cywgMCB9KTsKICAgICB9CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewotICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
ZmV0Y2hFbnRyaWVzKCp0aGlzLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJz
aXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShh
dXRvIGVudHJpZXMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpICYmIHNlc3Npb24pIHsKKyAgICAgICAgQ2FjaGVT
dG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygqc2Vzc2lvbiwgZmV0Y2hPcHRpb25zLmNvbnRh
aW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTE1MjgsOCArMTUyMSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpCiAKICAgICBhdXRvIGNsZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKLSAgICAgICAg
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQorICAgICAgICBDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYg
c2Vzc2lvbikKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKQEAgLTE2MjEsOSArMTYxNCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
CiAgICAgICAgICAgICBzZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVn
aXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0
KG9yaWdpbkRhdGEuaG9zdCksIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKLSAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hl
KSkgeworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
RE9NQ2FjaGUpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDog
b3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNo
ZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2lu
RGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgICAgICAgICBDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnNlc3Npb24sIFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IG9yaWdpbkRhdGEgfSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKQEAg
LTE4MDMsMTYgKzE3OTYsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJp
Y3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAgV2Vi
Q29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OnJlbW92ZVNlc3Npb25DcmVkZW50aWFsc1dpdGhPcmln
aW5zKG9yaWdpbnNUb0RlbGV0ZSk7CiAgICAgfQogICAgIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIENhY2hl
U3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRp
b25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFt0aGlz
LCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgc2Vzc2lvbklELCBj
YWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vzc2lv
bikgeworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCpzZXNzaW9u
LCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNp
emVzKSwgW2RvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBzZXNzaW9u
ID0gV2Vha1B0ciB7IHNlc3Npb24gfSwgY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJpZXMp
IG11dGFibGUgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIGVudHJpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvciwgZW50cmllcyk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgZW50cnkgOiBlbnRyaWVzVG9EZWxldGUpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkpOwogCi0gICAgICAgICAgICBmb3IgKGF1dG8mIGVu
dHJ5IDogZW50cmllc1RvRGVsZXRlKQotICAgICAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5n
aW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqdGhpcywgc2Vzc2lvbklELCBTZWN1cml0eU9yaWdp
bkRhdGEgeyBlbnRyeS5vcmlnaW4gfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAg
ICAgICAgIGlmIChzZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IGVudHJpZXNUb0RlbGV0ZSkKKyAgICAgICAgICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9uLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBl
bnRyeS5vcmlnaW4gfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xOTU2LDggKzE5NTEsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIENhY2hl
U3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRp
b25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxs
YmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vzc2lvbikg
eworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCpzZXNzaW9uLCBm
ZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVz
KSwgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3Rv
cihlbnRyaWVzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTk5NCwyMSArMTk4OSw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsCiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RS
QUNLSU5HX1BSRVZFTlRJT04pCiAKLUNhY2hlU3RvcmFnZTo6RW5naW5lKiBOZXR3b3JrUHJvY2Vz
czo6ZmluZENhY2hlRW5naW5lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICByZXR1
cm4gbV9jYWNoZUVuZ2luZXMuZ2V0KHNlc3Npb25JRCk7Ci19Ci0KLUNhY2hlU3RvcmFnZTo6RW5n
aW5lJiBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlQ2FjaGVFbmdpbmUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBGdW5jdGlvbjxSZWY8Q2FjaGVTdG9yYWdlOjpFbmdpbmU+KCk+JiYgZnVuY3RvcikK
LXsKLSAgICByZXR1cm4gbV9jYWNoZUVuZ2luZXMuZW5zdXJlKHNlc3Npb25JRCwgV1RGTW92ZShm
dW5jdG9yKSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1v
dmVDYWNoZUVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgbV9jYWNoZUVu
Z2luZXMucmVtb3ZlKHNlc3Npb25JRCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25s
b2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0
RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC0yMjUwLDI3ICsyMjMwLDYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
ICAgICBXZWJDb3JlOjpwcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmNhY2hlU3RvcmFnZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2Fj
aGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIG1fY2FjaGVTdG9y
YWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5lbnN1cmUoc2Vzc2lvbklELCBbJl0gewotICAgICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpSZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQgfSwgMCk7Ci0g
ICAgICAgIHJldHVybiBWZWN0b3I8Q2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjaz4geyB9Owot
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU3RyaW5nJiYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiBoYW5kbGUpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fY2FjaGVT
dG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5maW5kKHNlc3Npb25JRCk7Ci0gICAgaWYgKGl0ZXJh
dG9yID09IG1fY2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRs
ZSk7Ci0gICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKGl0ZXJhdG9yLT52YWx1ZSk7Ci0gICAg
bV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLnJlbW92ZShpdGVyYXRvcik7Ci0gICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soU3RyaW5n
IHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0pOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAogewog
ICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKHNjaGVt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggODI4MWU1YzkxNmUwMGE5Y2ZjNmZkMDBkZTlhYWNiMGJmOTc0MDI5YS4uM2M5NjhiNWVmN2Qy
NjUyNzYwMzgxOTcyNGMyMjRiMDllM2M3NTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjc2LDkgKzI3Niw2IEBAIHB1YmxpYzoKICAg
ICBib29sIHByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wp
OwogCi0gICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKLSAgICB2b2lkIGNhY2hlU3RvcmFnZVJvb3RQYXRoKFBB
TDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrJiYpOwotCiAgICAgdm9p
ZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogICAgIHZvaWQg
c2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7
CkBAIC0zMTEsOSArMzA4LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgY29uc3Qgb3ZlcnJp
ZGUgeyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzcz46OnJlZigpOyB9CiAgICAg
dm9pZCBkZXJlZigpIGNvbnN0IG92ZXJyaWRlIHsgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TmV0d29y
a1Byb2Nlc3M+OjpkZXJlZigpOyB9CiAKLSAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSogZmluZENh
Y2hlRW5naW5lKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSYgZW5z
dXJlQ2FjaGVFbmdpbmUoUEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPFJlZjxDYWNoZVN0b3JhZ2U6
OkVuZ2luZT4oKT4mJik7Ci0gICAgdm9pZCByZW1vdmVDYWNoZUVuZ2luZShQQUw6OlNlc3Npb25J
RCk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNp
emUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4pPiYmKTsKIAogICAgIHZvaWQgc3RvcmVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQm
Jik7CkBAIC00MjUsNyArNDE5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJDYWNoZWRD
cmVkZW50aWFscyhQQUw6OlNlc3Npb25JRCk7CiAKLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZVBh
cmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQsIFN0cmluZyYmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNl
cnMoV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtl
IGEgc2Vzc2lvbiBJRCBzbyB3ZSBjYW4gaWRlbnRpZnkgd2hpY2ggZGlzayBjYWNoZSB0byBkZWxl
dGUuCkBAIC01MjgsMTMgKzUyMSwxMCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VpUHJvY2Vz
c0J1bmRsZUlkZW50aWZpZXI7CiAgICAgRG93bmxvYWRNYW5hZ2VyIG1fZG93bmxvYWRNYW5hZ2Vy
OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPENhY2hlU3RvcmFnZTo6RW5naW5l
Pj4gbV9jYWNoZUVuZ2luZXM7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNo
YXIqPj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogCiAgICAgSGFzaFNldDxQQUw6OlNlc3Npb25JRD4g
bV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRpb247Ci0gICAgSGFzaE1hcDxQQUw6OlNlc3Np
b25JRCwgVmVjdG9yPENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2s+PiBtX2NhY2hlU3RvcmFn
ZVBhcmFtZXRlcnNDYWxsYmFja3M7CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+PiBtX25ldHdvcmtTZXNzaW9uczsKICAgICBIYXNo
TWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPj4gbV9uZXR3b3JrU3RvcmFnZVNlc3Npb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
MmVhNjQ1Yjc4MWFlNzNmZGYyMjAzZjFlOTRkNDA1ZTM2MWZkOTZiYi4uYmVmNDNhMDA1YzcxN2M4
YTg0MjFlZTZmZTA1MTY4NzAzMGE3NTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNTYsOCArMTU2
LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJl
Z2lzdGVyVVJMU2NoZW1lQXNMb2NhbChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2VzcyhTdHJpbmcgc2NoZW1lKQogCi0gICAgU2V0Q2FjaGVTdG9yYWdlUGFyYW1l
dGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSk7Ci0KICAgICBTeW5j
TG9jYWxTdG9yYWdlKCkgLT4gKCkgQXN5bmMKIAogICAgIFN0b3JlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggYTVhMjRlMzU5MmYxZWRiM2FhYmI1
MGQ2NjQ3ODVkOTE3ZTM2MmJmOS4uNjdlOTZkNGRkODk1MTg4ODJiMDMzOWU4YmJiNTg3ZmMzMGRi
ODQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU2Vzc2lvbi5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFNjaGVkdWxlci5oIgpAQCAtMjA0LDYgKzIwNSw3
IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgICAgICBz
ZXJ2ZXItPmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IHN0ZDo6ZXhjaGFuZ2UobV9z
dG9yYWdlTWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFnZXItPmNsb3NlKCk7CisgICAg
bV9jYWNoZUVuZ2luZSA9IG51bGxwdHI7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzSW52
YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02OTksNCArNzAxLDMwIEBAIHZvaWQgTmV0d29y
a1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxT
dG9yYWdlUGF0aCwKICAgICBtX3N0b3JhZ2VNYW5hZ2VyID0gTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGUoc2Vzc2lvbklEKCksIGdlbmVyYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0
aCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmVuc3VyZUNhY2hlRW5naW5lKEZ1bmN0aW9u
PHZvaWQoQ2FjaGVTdG9yYWdlOjpFbmdpbmUmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9j
YWNoZUVuZ2luZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCptX2NhY2hlRW5naW5lKTsKKwor
ICAgIG1fY2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxs
YmFjaykpOworICAgIGlmIChtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3Muc2l6ZSgp
ID4gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpSZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQoKSB9
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oU3RyaW5nJiYgY2FjaGVTdG9y
YWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlIYW5kbGUpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNhY2hlU3RvcmFnZURpcmVjdG9yeUhhbmRsZSk7
CisgICAgICAgIEFTU0VSVCghbV9jYWNoZUVuZ2luZSk7CisgICAgICAgIG1fY2FjaGVFbmdpbmUg
PSBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNhY2hlU3RvcmFn
ZURpcmVjdG9yeSkpOworICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3RkOjpleGNoYW5n
ZShtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3MsIHsgfSkpCisgICAgICAgICAgICBj
YWxsYmFjaygqbV9jYWNoZUVuZ2luZSk7CisgICAgfSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Nl
c3Npb246OmNsZWFyQ2FjaGVFbmdpbmUoKQoreworICAgIG1fY2FjaGVFbmdpbmUgPSBudWxscHRy
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBiOTYyZjM5YzNlNWRjZmJlNjA1YjhiMTI4YzIx
ZjhhYzBkZDNjZDI5Li4zNmI1M2IxYTQwZGExOWRmN2MyNGMyNDk4ZDkyYzBhNjI5ZDZjZGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC04
Niw2ICs4NiwxMCBAQCBzdHJ1Y3QgU2Vzc2lvblNldDsKIAogZW51bSBjbGFzcyBXZWJzaXRlRGF0
YVR5cGUgOiB1aW50MzJfdDsKIAorbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CitjbGFzcyBFbmdp
bmU7Cit9CisKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgQ2FjaGU7CiB9CkBAIC0y
MTQsNiArMjE4LDEwIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIqIHN0b3Jh
Z2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQogICAgIHZvaWQg
YWRkU3RvcmFnZU1hbmFnZXJTZXNzaW9uKGNvbnN0IFN0cmluZyYgZ2VuZXJhbFN0b3JhZ2VQYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGdlbmVyYWxTdG9yYWdlUGF0aEhhbmRsZSwgY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGxv
Y2FsU3RvcmFnZVBhdGhIYW5kbGUpOwogCisgICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmUqIGNhY2hl
RW5naW5lKCkgeyByZXR1cm4gbV9jYWNoZUVuZ2luZS5nZXQoKTsgfQorICAgIHZvaWQgZW5zdXJl
Q2FjaGVFbmdpbmUoRnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYpPiYmKTsKKyAg
ICB2b2lkIGNsZWFyQ2FjaGVFbmdpbmUoKTsKKwogICAgIE5ldHdvcmtMb2FkU2NoZWR1bGVyJiBu
ZXR3b3JrTG9hZFNjaGVkdWxlcigpOwogICAgIFBDTTo6TWFuYWdlckludGVyZmFjZSYgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoKSB7IHJldHVybiBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZShib29s
KTsKQEAgLTMxMCw2ICszMTgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFdlYklEQlNlcnZl
cj4gbV93ZWJJREJTZXJ2ZXI7CiAKICAgICBSZWZQdHI8TmV0d29ya1N0b3JhZ2VNYW5hZ2VyPiBt
X3N0b3JhZ2VNYW5hZ2VyOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2U6OkVuZ2luZT4gbV9jYWNo
ZUVuZ2luZTsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChDYWNoZVN0b3JhZ2U6OkVuZ2luZSYp
Pj4gbV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIG1fYXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDE5OGMyNTVlMjVkZjVhNjg2YTcwZThk
NTkyMWJhMjQ3ZWU1MDJhYzkuLmMyMDBjZThiNWViNGMzYTAzNjU3ZTgyMjY4OTkwMmI0NmRiZjhh
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlSU9DaGFubmVsLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVR
dWVyeU9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMu
aD4KQEAgLTU5LDYgKzYwLDExIEBAIFN0cmluZyBFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5Lmhhc2hBc1N0cmluZygpKTsK
IH0KIAorUmVmPEVuZ2luZT4gRW5naW5lOjpjcmVhdGUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtT
ZXNzaW9uLCBTdHJpbmcmJiByb290UGF0aCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBF
bmdpbmUobmV0d29ya1Nlc3Npb24sIFdURk1vdmUocm9vdFBhdGgpKSk7Cit9CisKIEVuZ2luZTo6
fkVuZ2luZSgpCiB7CiAgICAgZm9yIChhdXRvJiBjYWNoZXMgOiBtX2NhY2hlcy52YWx1ZXMoKSkK
QEAgLTgxLDExOSArODcsOTQgQEAgRW5naW5lOjp+RW5naW5lKCkKICAgICAgICAgY2FsbGJhY2so
RGF0YSB7IH0sIDEpOwogfQogCi12b2lkIEVuZ2luZTo6ZnJvbShOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChFbmdp
bmUmKT4mJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoYXV0byogZW5naW5lID0gbmV0d29ya1Byb2Nl
c3MuZmluZENhY2hlRW5naW5lKHNlc3Npb25JRCkpIHsKLSAgICAgICAgY2FsbGJhY2soKmVuZ2lu
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBuZXR3b3JrUHJvY2Vzcy5jYWNoZVN0
b3JhZ2VSb290UGF0aChzZXNzaW9uSUQsIFtuZXR3b3JrUHJvY2VzcyA9IFJlZiB7IG5ldHdvcmtQ
cm9jZXNzIH0sIHNlc3Npb25JRCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGF1dG8m
JiByb290UGF0aCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKG5ldHdvcmtQcm9jZXNzLT5l
bnN1cmVDYWNoZUVuZ2luZShzZXNzaW9uSUQsIFsmXSB7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBFbmdpbmUgeyBzZXNzaW9uSUQsIG5ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZN
b3ZlKHJvb3RQYXRoKSB9KTsKLSAgICAgICAgfSkpOwotICAgIH0pOwotfQotCi12b2lkIEVuZ2lu
ZTo6ZGVzdHJveUVuZ2luZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiAhVVNFKFNPVVApICYmICFVU0UoQ1VSTCkKLSAgICAv
LyBjVVJMIGFuZCBTb3VwIGJhc2VkIHBvcnRzIGRlc3Ryb3kgdGhlIGRlZmF1bHQgc2Vzc2lvbiBy
aWdodCBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMgdG8gYXZvaWQgbGVha2luZwotICAgIC8vIG5l
dHdvcmsgcmVzb3VyY2VzIGxpa2UgdGhlIGNvb2tpZXMgZGF0YWJhc2UuCi0gICAgQVNTRVJUKHNl
c3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKLSNlbmRpZgot
Ci0gICAgbmV0d29ya1Byb2Nlc3MucmVtb3ZlQ2FjaGVFbmdpbmUoc2Vzc2lvbklEKTsKLX0KLQot
dm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKE5ldHdvcmtTZXNzaW9uJiBuZXR3
b3JrU2Vzc2lvbiwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbc2hvdWxkQ29tcHV0ZVNpemUsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBlbmdp
bmUpIG11dGFibGUgeworICAgIG5ldHdvcmtTZXNzaW9uLmVuc3VyZUNhY2hlRW5naW5lKFtzaG91
bGRDb21wdXRlU2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5mZXRjaEVudHJp
ZXMoc2hvdWxkQ29tcHV0ZVNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
KTsKIH0KIAotdm9pZCBFbmdpbmU6Om9wZW4oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNz
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgU3RyaW5nJiYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVu
dGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpvcGVuKE5ldHdvcmtTZXNz
aW9uJiBuZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBTdHJp
bmcmJiBjYWNoZU5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25J
RCwgW29yaWdpbiA9IFdURk1vdmUob3JpZ2luKSwgY2FjaGVOYW1lID0gV1RGTW92ZShjYWNoZU5h
bWUpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUg
eworICAgIG5ldHdvcmtTZXNzaW9uLmVuc3VyZUNhY2hlRW5naW5lKFtvcmlnaW4gPSBXVEZNb3Zl
KG9yaWdpbiksIGNhY2hlTmFtZSA9IFdURk1vdmUoY2FjaGVOYW1lKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLm9w
ZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAot
dm9pZCBFbmdpbmU6OnJlbW92ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
RW5naW5lOjpyZW1vdmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25J
RCwgW2NhY2hlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYg
ZW5naW5lKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrU2Vzc2lvbi5lbnN1cmVDYWNoZUVuZ2luZShb
Y2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdp
bmUpIG11dGFibGUgewogICAgICAgICBlbmdpbmUucmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgV1RG
TW92ZShjYWxsYmFjaykpOwogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNo
ZXMoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRl
ciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vz
c2lvbiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3Vu
dGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbb3JpZ2luID0gV1RG
TW92ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgIG5ldHdvcmtTZXNzaW9uLmVuc3VyZUNhY2hl
RW5naW5lKFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVu
Z2luZS5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIHVwZGF0ZUNvdW50ZXIsIFdURk1vdmUoY2FsbGJh
Y2spKTsKICAgICB9KTsKIH0KIAogCi12b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJldHJpZXZlUmVjb3Jkc09wdGlvbnMmJiBv
cHRpb25zLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2Vzc2lvbiwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXRyaWV2ZVJlY29y
ZHNPcHRpb25zJiYgb3B0aW9ucywgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxs
YmFjayYmIGNhbGxiYWNrKQogewotICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwg
W2NhY2hlSWRlbnRpZmllciwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nl
c3Npb24uZW5zdXJlQ2FjaGVFbmdpbmUoW2NhY2hlSWRlbnRpZmllciwgb3B0aW9ucyA9IFdURk1v
dmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkg
bXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVy
LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgRW5naW5lOjpwdXRSZWNvcmRzKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmIHJlY29yZHMsIFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVu
Z2luZTo6cHV0UmVjb3JkcyhOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
JiYgcmVjb3JkcywgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQs
IFtjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgIG5ldHdvcmtT
ZXNzaW9uLmVuc3VyZUNhY2hlRW5naW5lKFtjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMgPSBXVEZN
b3ZlKHJlY29yZHMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUp
IG11dGFibGUgewogICAgICAgICBlbmdpbmUucHV0UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdU
Rk1vdmUocmVjb3JkcyksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAotdm9pZCBF
bmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0
aW9ucyYmIG9wdGlvbnMsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVy
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5
T3B0aW9ucyYmIG9wdGlvbnMsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vz
c2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0
aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1
dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2FjaGVFbmdp
bmUoW2NhY2hlSWRlbnRpZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMg
PSBXVEZNb3ZlKG9wdGlvbnMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBl
bmdpbmUpIG11dGFibGUgewogICAgICAgICBlbmdpbmUuZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKGNh
Y2hlSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92
ZShjYWxsYmFjaykpOwogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6bG9jayhOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyKQordm9pZCBFbmdpbmU6OmxvY2soTmV0d29ya1Nlc3Npb24mIG5ldHdv
cmtTZXNzaW9uLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7Ci0gICAgZnJvbShuZXR3b3Jr
UHJvY2Vzcywgc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyXShhdXRvJiBlbmdpbmUpIG11dGFi
bGUgeworICAgIG5ldHdvcmtTZXNzaW9uLmVuc3VyZUNhY2hlRW5naW5lKFtjYWNoZUlkZW50aWZp
ZXJdKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5sb2NrKGNhY2hlSWRl
bnRpZmllcik7CiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjp1bmxvY2soTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcikKK3ZvaWQgRW5naW5lOjp1bmxvY2soTmV0d29ya1Nlc3Npb24mIG5ldHdv
cmtTZXNzaW9uLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7Ci0gICAgZnJvbShuZXR3b3Jr
UHJvY2Vzcywgc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyXShhdXRvJiBlbmdpbmUpIG11dGFi
bGUgeworICAgIG5ldHdvcmtTZXNzaW9uLmVuc3VyZUNhY2hlRW5naW5lKFtjYWNoZUlkZW50aWZp
ZXJdKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS51bmxvY2soY2FjaGVJ
ZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVz
ZW50YXRpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OmNs
ZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpD
b21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBmcm9tKG5ldHdvcmtQcm9jZXNz
LCBzZXNzaW9uSUQsIFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24u
ZW5zdXJlQ2FjaGVFbmdpbmUoW29yaWdpbiA9IFdURk1vdmUob3JpZ2luKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5l
LmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24ob3JpZ2luLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZXByZXNlbnRhdGlvbihOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmVwcmVzZW50YXRp
b24oTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNz
aW9uSUQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFi
bGUgeworICAgIG5ldHdvcmtTZXNzaW9uLmVuc3VyZUNhY2hlRW5naW5lKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewogICAgICAgICBjYWxsYmFj
ayhlbmdpbmUucmVwcmVzZW50YXRpb24oKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpj
bGVhckFsbENhY2hlcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2Vzc2lvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7Cisg
ICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2FjaGVFbmdpbmUoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAg
ICAgIGVuZ2luZS5jbGVhckFsbENhY2hlcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2lu
KE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgb3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW29yaWdpbkRh
dGEgPSBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgIG5ldHdvcmtTZXNz
aW9uLmVuc3VyZUNhY2hlRW5naW5lKFtvcmlnaW5EYXRhID0gV1RGTW92ZShvcmlnaW5EYXRhKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgZW5n
aW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLmNsZWFyQ2FjaGVzRm9yT3JpZ2luKG9yaWdp
bkRhdGEsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KQEAgLTI1OCw5
ICsyMzksOSBAQCB2b2lkIEVuZ2luZTo6cmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBzcGFjZVJlcQogICAgIHN0b3JhZ2VRdW90YU1hbmFn
ZXItPnJlcXVlc3RTcGFjZU9uTWFpblRocmVhZChzcGFjZVJlcXVlc3RlZCwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQogCi1FbmdpbmU6OkVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE5l
dHdvcmtQcm9jZXNzJiBwcm9jZXNzLCBTdHJpbmcmJiByb290UGF0aCkKLSAgICA6IG1fc2Vzc2lv
bklEKHNlc3Npb25JRCkKLSAgICAsIG1fbmV0d29ya1Byb2Nlc3MocHJvY2VzcykKK0VuZ2luZTo6
RW5naW5lKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgU3RyaW5nJiYgcm9vdFBhdGgp
CisgICAgOiBtX3Nlc3Npb25JRChuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKSkKKyAgICAsIG1f
bmV0d29ya1Byb2Nlc3MobmV0d29ya1Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKSkKICAgICAsIG1f
cm9vdFBhdGgoV1RGTW92ZShyb290UGF0aCkpCiB7CiAgICAgaWYgKCFtX3Jvb3RQYXRoLmlzTnVs
bCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmgKaW5kZXggNmQ0NDg4MTI3OWQxYjk2MjdhOWE5ZTdhOTliMDVmM2Rm
NmNhZDA3OC4uMTQ3ZmJhY2UxNjc3YTYwODU5MThhYjc3MmE5ZTEwYTIwNmM2ODgxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZS5oCkBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCBSZXRyaWV2ZVJlY29yZHNPcHRpb25z
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgTmV0
d29ya1Nlc3Npb247CiAKIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgewogCkBAIC01OSwzMCArNjAs
MjkgQEAgdXNpbmcgTG9ja0NvdW50ID0gdWludDY0X3Q7CiAKIGNsYXNzIEVuZ2luZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEVuZ2luZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxFbmdpbmU+IHsKIHB1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPEVuZ2luZT4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiwgU3Ry
aW5nJiYgcm9vdFBhdGgpOwogICAgIH5FbmdpbmUoKTsKIAotICAgIHN0YXRpYyB2b2lkIGZyb20o
TmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChFbmdpbmUmKT4m
Jik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveUVuZ2luZShOZXR3b3JrUHJvY2VzcyYsIFBBTDo6
U2Vzc2lvbklEKTsKLSAgICBzdGF0aWMgdm9pZCBmZXRjaEVudHJpZXMoTmV0d29ya1Byb2Nlc3Mm
LCBQQUw6OlNlc3Npb25JRCwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5Pik+JiYpOworICAgIHN0YXRpYyB2b2lk
IGZldGNoRW50cmllcyhOZXR3b3JrU2Vzc2lvbiYsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4pPiYmKTsKIAot
ICAgIHN0YXRpYyB2b2lkIG9wZW4oTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHN0YXRpYyB2b2lkIHJl
bW92ZShOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYm
KTsKLSAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZUNhY2hlcyhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRl
ciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKKyAgICBz
dGF0aWMgdm9pZCBvcGVuKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYs
IFN0cmluZyYmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRp
ZmllckNhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZShOZXR3b3JrU2Vzc2lvbiYs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlQ2FjaGVzKE5l
dHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAK
LSAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZVJlY29yZHMoTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXRyaWV2ZVJlY29y
ZHNPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7
Ci0gICAgc3RhdGljIHZvaWQgcHV0UmVjb3JkcyhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkPiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmll
cnNDYWxsYmFjayYmKTsKLSAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoTmV0
d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7Cisg
ICAgc3RhdGljIHZvaWQgcmV0cmlldmVSZWNvcmRzKE5ldHdvcmtTZXNzaW9uJiwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXRyaWV2ZVJlY29yZHNPcHRpb25zJiYsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJik7CisgICAgc3RhdGljIHZvaWQg
cHV0UmVjb3JkcyhOZXR3b3JrU2Vzc2lvbiYsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVj
dG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZU1hdGNoaW5nUmVjb3JkcyhOZXR3b3JrU2Vzc2lvbiYsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRp
b25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNr
JiYpOwogCi0gICAgc3RhdGljIHZvaWQgbG9jayhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHVubG9jayhO
ZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIp
OworICAgIHN0YXRpYyB2b2lkIGxvY2soTmV0d29ya1Nlc3Npb24mLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIHVubG9jayhOZXR3b3JrU2Vzc2lvbiYsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lbW9yeVJlcHJl
c2VudGF0aW9uKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYp
OwotICAgIHN0YXRpYyB2b2lkIHJlcHJlc2VudGF0aW9uKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2Fs
bGJhY2smJik7CisgICAgc3RhdGljIHZvaWQgcmVwcmVzZW50YXRpb24oTmV0d29ya1Nlc3Npb24m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAKLSAgICBzdGF0aWMgdm9p
ZCBjbGVhckFsbENhY2hlcyhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyQ2FjaGVzRm9yT3Jp
Z2luKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyB2b2lk
IGNsZWFyQWxsQ2FjaGVzKE5ldHdvcmtTZXNzaW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbihOZXR3b3JrU2Vzc2lv
biYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihOZXR3b3JrUHJv
Y2VzcyYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVRdW90
YVVzZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgc3RhdGljIHVpbnQ2NF90IGRpc2tVc2Fn
ZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsK
ICAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50
NjRfdCBzcGFjZVJlcXVlc3RlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9y
YWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICB1aW50NjRfdCBuZXh0Q2FjaGVJZGVudGlmaWVyKCkgeyByZXR1cm4gKyttX25leHRD
YWNoZUlkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICBFbmdpbmUoUEFMOjpTZXNzaW9uSUQs
IE5ldHdvcmtQcm9jZXNzJiwgU3RyaW5nJiYgcm9vdFBhdGgpOworICAgIEVuZ2luZShOZXR3b3Jr
U2Vzc2lvbiYsIFN0cmluZyYmIHJvb3RQYXRoKTsKIAogICAgIHZvaWQgb3Blbihjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwogICAgIHZvaWQgcmVtb3Zl
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllckNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5j
cHAKaW5kZXggZjkzNGQ2ZDQ2ZWRjZDIwNWJmZWY0ZDY4YTgwNDlhZDRhNGRlYTc2Yi4uNjNlN2E4
MjNlZTU4N2Q3ZGVkYTRjMWMxNGNlY2VhYzY3ZDNhMDU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24uY3BwCkBAIC01MiwxNiArNTIsMjIgQEAgQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2UKIAogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6fkNhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24oKQogewotICAgIGZvciAoYXV0byYgcmVmZXJlbmNlcyA6IG1fY2FjaGVzTG9j
a3MpIHsKLSAgICAgICAgQVNTRVJUKHJlZmVyZW5jZXMudmFsdWUpOwotICAgICAgICBFbmdpbmU6
OnVubG9jayhtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIHJlZmVy
ZW5jZXMua2V5KTsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi5uZXR3b3Jr
U2Vzc2lvbigpKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVmZXJlbmNlcyA6IG1fY2FjaGVzTG9j
a3MpIHsKKyAgICAgICAgICAgIEFTU0VSVChyZWZlcmVuY2VzLnZhbHVlKTsKKyAgICAgICAgICAg
IEVuZ2luZTo6dW5sb2NrKCpzZXNzaW9uLCByZWZlcmVuY2VzLmtleSk7CisgICAgICAgIH0KICAg
ICB9CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIGNhY2hlTmFtZSwgQ2FjaGVJZGVudGlm
aWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBDQUNIRV9TVE9SQUdFX1JFTEVBU0VfTE9H
KCJvcGVuIGNhY2hlIik7Ci0gICAgRW5naW5lOjpvcGVuKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJv
Y2VzcygpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNhY2hlTmFtZSks
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzZXNzaW9uSUQgPSB0aGlzLT5zZXNzaW9u
SUQoKV0oYXV0byYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9jb25u
ZWN0aW9uLm5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1
cm4gY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9y
OjpJbnRlcm5hbCkpOworCisgICAgRW5naW5lOjpvcGVuKCpzZXNzaW9uLCBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoY2FjaGVOYW1lKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNl
c3Npb25JRCA9IHRoaXMtPnNlc3Npb25JRCgpXShhdXRvJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBDQUNIRV9TVE9SQUdFX1JFTEVBU0VfTE9HX0ZVTkNUSU9OX0lOX0NBTExCQUNLKCJvcGVu
IiwgImNhY2hlIGlkZW50aWZpZXIgaXMgJSIgUFJJdTY0LCBbXShjb25zdCBhdXRvJiB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUuaWRlbnRpZmllcjsgfSk7CiAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CiAgICAgfSk7CkBAIC03MCw3ICs3NiwxMSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246Om9wZW4oV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBTdHJpbmcmJgogdm9p
ZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIENBQ0hF
X1NUT1JBR0VfUkVMRUFTRV9MT0coInJlbW92ZSBjYWNoZSAlIiBQUkl1NjQsIGNhY2hlSWRlbnRp
Zmllcik7Ci0gICAgRW5naW5lOjpyZW1vdmUobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCks
IHNlc3Npb25JRCgpLCBjYWNoZUlkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBzZXNzaW9uSUQgPSB0aGlzLT5zZXNzaW9uSUQoKV0oYXV0byYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLm5ldHdvcmtTZXNzaW9uKCk7Cisg
ICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4gY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpJbnRlcm5hbCkpOworCisgICAgRW5naW5l
OjpyZW1vdmUoKnNlc3Npb24sIGNhY2hlSWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHNlc3Npb25JRCA9IHRoaXMtPnNlc3Npb25JRCgpXShhdXRvJiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICBDQUNIRV9TVE9SQUdFX1JFTEVBU0VfTE9HX0ZVTkNUSU9OX0lOX0NB
TExCQUNLKCJyZW1vdmUiLCAicmVtb3ZlZCBjYWNoZSAlIiBQUkl1NjQsIFtdKGNvbnN0IGF1dG8m
IHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pZGVudGlmaWVyOyB9KTsKICAgICAgICAgY2FsbGJhY2so
cmVzdWx0KTsKICAgICB9KTsKQEAgLTc5LDcgKzg5LDExIEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVu
dGlmCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3ND
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIENBQ0hFX1NUT1JBR0VfUkVMRUFTRV9MT0coImNh
Y2hlcyIpOwotICAgIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMobV9jb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIsIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvcmlnaW4sIHNlc3Npb25JRCA9IHRoaXMtPnNl
c3Npb25JRCgpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvKiBzZXNzaW9uID0g
bV9jb25uZWN0aW9uLm5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAg
ICByZXR1cm4gY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkVycm9yOjpJbnRlcm5hbCkpOworCisgICAgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcygqc2Vzc2lv
biwgV1RGTW92ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgb3JpZ2luLCBzZXNzaW9uSUQgPSB0aGlzLT5zZXNzaW9uSUQoKV0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIENBQ0hFX1NUT1JBR0VfUkVMRUFTRV9MT0dfRlVOQ1RJ
T05fSU5fQ0FMTEJBQ0soImNhY2hlcyIsICJjYWNoZXMgc2l6ZSBpcyAlbHUiLCBbXShjb25zdCBh
dXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaW5mb3Muc2l6ZSgpOyB9KTsKICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKQEAgLTg4LDcgKzEwMiwxMSBAQCB2b2lk
IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBvcmlnaW4sIHVpbnQ2NAogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpy
ZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXRyaWV2
ZVJlY29yZHNPcHRpb25zJiYgb3B0aW9ucywgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgQ0FDSEVfU1RPUkFHRV9SRUxFQVNFX0xPRygicmV0cmlldmVSZWNvcmRzIGluIGNhY2hl
ICUiIFBSSXU2NCwgY2FjaGVJZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6OnJldHJpZXZlUmVjb3Jk
cyhtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIGNhY2hlSWRlbnRp
ZmllciwgV1RGTW92ZShvcHRpb25zKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNl
c3Npb25JRCA9IHRoaXMtPnNlc3Npb25JRCgpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICBhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLm5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYg
KCFzZXNzaW9uKQorICAgICAgICByZXR1cm4gY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoV2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpJbnRlcm5hbCkpOworCisgICAgRW5naW5lOjpyZXRy
aWV2ZVJlY29yZHMoKnNlc3Npb24sIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShvcHRpb25zKSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25JRCA9IHRoaXMtPnNlc3Npb25J
RCgpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQ0FDSEVfU1RPUkFHRV9SRUxF
QVNFX0xPR19GVU5DVElPTl9JTl9DQUxMQkFDSygicmV0cmlldmVSZWNvcmRzIiwgInJlY29yZHMg
c2l6ZSBpcyAlbHUiLCBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuc2l6ZSgp
OyB9KTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKQEAgLTk3
LDcgKzExNSwxMSBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYgogdm9pZCBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBDQUNIRV9TVE9SQUdFX1JFTEVBU0VfTE9HKCJkZWxldGVNYXRjaGluZ1Jl
Y29yZHMgaW4gY2FjaGUgJSIgUFJJdTY0LCBjYWNoZUlkZW50aWZpZXIpOwotICAgIEVuZ2luZTo6
ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQoKSwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlv
bnMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEID0gdGhpcy0+c2Vz
c2lvbklEKCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8qIHNlc3Npb24gPSBt
X2Nvbm5lY3Rpb24ubmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAg
IHJldHVybiBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
RXJyb3I6OkludGVybmFsKSk7CisKKyAgICBFbmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcygq
c2Vzc2lvbiwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlv
bnMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEID0gdGhpcy0+c2Vz
c2lvbklEKCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBDQUNIRV9TVE9SQUdF
X1JFTEVBU0VfTE9HX0ZVTkNUSU9OX0lOX0NBTExCQUNLKCJkZWxldGVNYXRjaGluZ1JlY29yZHMi
LCAiZGVsZXRlZCAlbHUgcmVjb3JkcyIsICBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUuc2l6ZSgpOyB9KTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAg
ICB9KTsKQEAgLTEwNiw3ICsxMjgsMTEgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWUKIHZvaWQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIENBQ0hFX1NUT1JBR0VfUkVMRUFTRV9MT0coInB1dFJl
Y29yZHMgaW4gY2FjaGUgJSIgUFJJdTY0ICIsICVsdSByZWNvcmRzIiwgY2FjaGVJZGVudGlmaWVy
LCByZWNvcmRzLnNpemUoKSk7Ci0gICAgRW5naW5lOjpwdXRSZWNvcmRzKG1fY29ubmVjdGlvbi5u
ZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQoKSwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJl
Y29yZHMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEID0gdGhpcy0+
c2Vzc2lvbklEKCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8qIHNlc3Npb24g
PSBtX2Nvbm5lY3Rpb24ubmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAg
ICAgIHJldHVybiBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6RXJyb3I6OkludGVybmFsKSk7CisKKyAgICBFbmdpbmU6OnB1dFJlY29yZHMoKnNlc3Npb24s
IGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHNlc3Npb25JRCA9IHRoaXMtPnNlc3Npb25JRCgpXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgQ0FDSEVfU1RPUkFHRV9SRUxFQVNFX0xPR19GVU5DVElPTl9JTl9D
QUxMQkFDSygicHV0UmVjb3JkcyIsICJwdXQgJWx1IHJlY29yZHMiLCAgW10oY29uc3QgYXV0byYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsgfSk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUocmVzdWx0KSk7CiAgICAgfSk7CkBAIC0xMTUsNiArMTQxLDEwIEBAIHZvaWQgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFZlY3RvcjxSCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlZmVyZW5jZSh1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgQ0FDSEVfU1RPUkFHRV9SRUxFQVNFX0xP
RygicmVmZXJlbmNlIGNhY2hlICUiIFBSSXU2NCwgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBhdXRv
KiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLm5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNz
aW9uKQorICAgICAgICByZXR1cm47CisKICAgICBBU1NFUlQobV9jYWNoZXNMb2Nrcy5pc1ZhbGlk
S2V5KGNhY2hlSWRlbnRpZmllcikpOwogICAgIGlmICghbV9jYWNoZXNMb2Nrcy5pc1ZhbGlkS2V5
KGNhY2hlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMywxMiArMTUzLDE2IEBA
IHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVmZXJlbmNlKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmICghY291bnRlcisrKQotICAgICAgICBFbmdpbmU6OmxvY2sobV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBjYWNoZUlkZW50aWZpZXIpOworICAgICAg
ICBFbmdpbmU6OmxvY2soKnNlc3Npb24sIGNhY2hlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKQogewogICAgIENBQ0hFX1NUT1JBR0VfUkVMRUFTRV9MT0coImRlcmVmZXJlbmNlIGNh
Y2hlICUiIFBSSXU2NCwgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9j
b25uZWN0aW9uLm5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICBy
ZXR1cm47CisKICAgICBBU1NFUlQobV9jYWNoZXNMb2Nrcy5pc1ZhbGlkS2V5KGNhY2hlSWRlbnRp
ZmllcikpOwogICAgIGlmICghbV9jYWNoZXNMb2Nrcy5pc1ZhbGlkS2V5KGNhY2hlSWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MSwxOCArMTc1LDI2IEBAIHZvaWQgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KQogICAgIGlmICgtLXJlZmVyZW5jZVJlc3VsdC0+dmFsdWUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEVuZ2luZTo6dW5sb2NrKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9u
SUQoKSwgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBFbmdpbmU6OnVubG9jaygqc2Vzc2lvbiwgY2Fj
aGVJZGVudGlmaWVyKTsKICAgICBtX2NhY2hlc0xvY2tzLnJlbW92ZShyZWZlcmVuY2VSZXN1bHQp
OwogfQogCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihtX2Nvbm5lY3Rpb24ubmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24ubmV0d29y
a1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFsKTsKKworICAg
IEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigqc2Vzc2lvbiwgV1RGTW92ZShvcmln
aW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6ZW5naW5lUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgRW5naW5lOjpyZXBy
ZXNlbnRhdGlvbihtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0
aW9uLm5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKworICAgIEVuZ2luZTo6cmVwcmVzZW50YXRpb24oKnNl
c3Npb24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogUEFMOjpTZXNzaW9uSUQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGIxMWYyZDUzY2ZmYTg1Zjk2ZjI3NDExZDlkMmRiMDdkOTZhMDdjMzYuLmI3ZWFh
ZDQyNTA1Y2U3NGI3NzZmNDVjN2VhOGY2ZWIyOWY2MTA1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MTM3MCwxMyArMTM3MCwxMiBAQCBXZWJzaXRlRGF0YVN0b3JlKiBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChQQUw6OlNlc3NpbwogICAgIHJldHVybiBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFy
YW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnksIGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHN0b3JlID0gd2Vic2l0ZURhdGFTdG9y
ZUZyb21TZXNzaW9uSUQoc2Vzc2lvbklEKTsKLQogICAgIGlmICghc3RvcmUpIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5
IGlzIHVuYWJsZSB0byByZXRyaWV2ZSBDYWNoZVN0b3JhZ2UgcGFyYW1ldGVycyBmcm9tIHRoZSBn
aXZlbiBzZXNzaW9uIElEICUiIFBSSXU2NCwgdGhpcywgc2Vzc2lvbklELnRvVUludDY0KCkpOwot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFy
YW1ldGVycyB7IHNlc3Npb25JRCwgeyB9LCB7IH0gfSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4Nyw3ICsx
Mzg2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBh
cmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgICAgIGNhY2hlU3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogCi0g
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlU3RvcmFnZVBhcmFtZXRl
cnMgeyBzZXNzaW9uSUQsIGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgY2FjaGVTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlIH0sIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhY2hlU3Rv
cmFnZURpcmVjdG9yeSwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIH0K
IAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGFmNmNlZDll
NzFkOTZlMWZkYzgwMjA3OGNhMWEzMjYxMWZmOWIyZTIuLjVjOWM0NTNkY2M0ZDU4NjE4Zjg1Njkx
YTA0YjE1NTc1YjVhM2JjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMTksNyArMzE5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bnNGaW5pc2hlZCgpOwogICAgIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFi
bGVEb21haW5zRmluaXNoZWQoKTsKICNlbmRpZgotICAgIHZvaWQgcmV0cmlldmVDYWNoZVN0b3Jh
Z2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHJldHJpZXZlQ2FjaGVTdG9y
YWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgY29uc3QgV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSk+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICB2b2lkIGNvbnRlbnRFeHRlbnNpb25SdWxlcyhVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwMjIzYzYw
NWMzNTJiNWJjN2JiMzc3M2NmZTViYTIzNmI0OTIxOWZiLi5hOTk3NmIyMmU3M2ZlNTA0NTU2NjU4
NWI1NzA5NTQ1NWEwOGIwNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00
OCw3ICs0OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIENvbnRlbnRFeHRlbnNpb25SdWxlcyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICNlbmRpZgogCi0gICAgUmV0cmlldmVDYWNoZVN0
b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBSZXRyaWV2ZUNh
Y2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoU3RyaW5n
IGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
aGFuZGxlKSBBc3luYwogCiAgICAgVGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447497</attachid>
            <date>2021-12-17 17:42:12 -0800</date>
            <delta_ts>2021-12-18 12:31:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234448-20211217174211.patch</filename>
            <type>text/plain</type>
            <size>48166</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkNzU5NWY2OTBmZWZhYjQz
YmM0MDMxZWUwYzhjMTU2YzdkZGY5MDcuLjNkMWQ1ZDNlNDM5YmRjNTBmZTg2NTI3YzYzOWE1NzQ3
ZmNjNTQyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMjEtMTItMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIENhY2hlU3RvcmFnZSBlbmdp
bmVzIGZyb20gTmV0d29ya1Byb2Nlc3MgdG8gTmV0d29ya1Nlc3Npb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDQ0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgQ2FjaGVTdG9yYWdlIGVuZ2lu
ZXMgZnJvbSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vzc2lvbiwgYXMgdGhleSBhcmUgcGVy
LXNlc3Npb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRh
Rm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjp+TmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZmluZENhY2hlRW5naW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZUNhY2hlRW5naW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZUNhY2hlRW5naW5lKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZVJvb3RQYXRoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldENhY2hlU3RvcmFn
ZVBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjplbnN1cmVDYWNoZUVuZ2luZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbGVhckNhY2hlRW5naW5lKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6Y2FjaGVFbmdpbmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0
Y2hFbnRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Om9wZW4p
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcyk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpwdXRSZWNvcmRzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpsb2NrKToKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6RW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OnJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKToKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OkVuZ2luZSk6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpmcm9tKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lFbmdpbmUpOiBEZWxldGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjp+Q2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpjYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRjaGluZ1JlY29yZHMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpwdXRSZWNvcmRzKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVmZXJlbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVyZWZlcmVuY2Up
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjbGVhck1l
bW9yeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6ZW5naW5lUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCiAyMDIxLTEy
LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlR3JvdXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMjgyZGM3NmVi
OWIyODBiZTZjNGZjMmQxOGRjMDgyMjQ0OGM0MjE5ZC4uZjI3YWU3ZGIxNDAwOWM5YzdjZGQwNzRk
YmE5ODNhOTI5OGJhM2UxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE4NSwxMyArMTg1LDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5l
dHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWUKICAgICBpbml0aWFsaXplKFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCi1OZXR3b3Jr
UHJvY2Vzczo6fk5ldHdvcmtQcm9jZXNzKCkKLXsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrcyA6
IG1fY2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy52YWx1ZXMoKSkgewotICAgICAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQotICAgICAgICAgICAgY2FsbGJhY2soU3Ry
aW5nIHsgfSk7Ci0gICAgfQotfQorTmV0d29ya1Byb2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpID0g
ZGVmYXVsdDsKIAogQXV0aGVudGljYXRpb25NYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6YXV0aGVu
dGljYXRpb25NYW5hZ2VyKCkKIHsKQEAgLTUzOCw3ICs1MzIsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIHNl
c3Npb24tPmludmFsaWRhdGVBbmRDYW5jZWwoKTsKICAgICBtX25ldHdvcmtTdG9yYWdlU2Vzc2lv
bnMucmVtb3ZlKHNlc3Npb25JRCk7CiAgICAgbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24ucmVtb3ZlKHNlc3Npb25JRCk7Ci0gICAgQ2FjaGVTdG9yYWdlOjpFbmdpbmU6OmRlc3Ryb3lF
bmdpbmUoKnRoaXMsIHNlc3Npb25JRCk7CiB9CiAKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJB
Q0tJTkdfUFJFVkVOVElPTikKQEAgLTE0NDcsOCArMTQ0MCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoeyBzZWN1cml0eU9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFs
cywgMCB9KTsKICAgICB9CiAKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkgewotICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
ZmV0Y2hFbnRyaWVzKCp0aGlzLCBzZXNzaW9uSUQsIGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJz
aXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXShh
dXRvIGVudHJpZXMpIG11dGFibGUgeworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpICYmIHNlc3Npb24pIHsKKyAgICAgICAgQ2FjaGVT
dG9yYWdlOjpFbmdpbmU6OmZldGNoRW50cmllcygqc2Vzc2lvbiwgZmV0Y2hPcHRpb25zLmNvbnRh
aW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmRWZWN0b3IoZW50cmllcyk7CiAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTE1MjgsOCArMTUyMSw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpCiAKICAgICBhdXRvIGNsZWFyVGFza3NIYW5kbGVyID0gV1RGOjpDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSkKLSAgICAgICAg
Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKCp0aGlzLCBzZXNzaW9uSUQsIFtj
bGVhclRhc2tzSGFuZGxlcl0geyB9KTsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlKSAmJiBzZXNzaW9uKQorICAgICAgICBDYWNoZVN0
b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoKnNlc3Npb24sIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYg
c2Vzc2lvbikKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlV2ViSURCU2VydmVyKCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFu
ZGxlcl0geyB9KTsKQEAgLTE2MjEsOSArMTYxNCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
CiAgICAgICAgICAgICBzZXNzaW9uLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVn
aXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0
KG9yaWdpbkRhdGEuaG9zdCksIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiAKLSAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hl
KSkgeworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
RE9NQ2FjaGUpICYmIHNlc3Npb24pIHsKICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDog
b3JpZ2luRGF0YXMpCi0gICAgICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJDYWNo
ZXNGb3JPcmlnaW4oKnRoaXMsIHNlc3Npb25JRCwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgb3JpZ2lu
RGF0YSB9LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgICAgICAgICBDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oKnNlc3Npb24sIFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IG9yaWdpbkRhdGEgfSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAgIH0KIAog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgc2Vzc2lvbikKQEAg
LTE4MDMsMTYgKzE3OTYsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJp
Y3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAgV2Vi
Q29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OnJlbW92ZVNlc3Npb25DcmVkZW50aWFsc1dpdGhPcmln
aW5zKG9yaWdpbnNUb0RlbGV0ZSk7CiAgICAgfQogICAgIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIENhY2hl
U3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRp
b25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFt0aGlz
LCBkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgc2Vzc2lvbklELCBj
YWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vzc2lv
bikgeworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCpzZXNzaW9u
LCBmZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNp
emVzKSwgW2RvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBzZXNzaW9u
ID0gV2Vha1B0ciB7IHNlc3Npb24gfSwgY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvIGVudHJpZXMp
IG11dGFibGUgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBhdXRvIGVudHJpZXNUb0RlbGV0
ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxOb25Db29r
aWVXZWJzaXRlRGF0YUZvciwgZW50cmllcyk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgZW50cnkgOiBlbnRyaWVzVG9EZWxldGUpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tSG9zdChlbnRyeS5vcmlnaW4uaG9zdCkpOwogCi0gICAgICAgICAgICBmb3IgKGF1dG8mIGVu
dHJ5IDogZW50cmllc1RvRGVsZXRlKQotICAgICAgICAgICAgICAgIENhY2hlU3RvcmFnZTo6RW5n
aW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbigqdGhpcywgc2Vzc2lvbklELCBTZWN1cml0eU9yaWdp
bkRhdGEgeyBlbnRyeS5vcmlnaW4gfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAg
ICAgICAgIGlmIChzZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IGVudHJpZXNUb0RlbGV0ZSkKKyAgICAgICAgICAgICAgICAgICAgQ2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luKCpzZXNzaW9uLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBl
bnRyeS5vcmlnaW4gfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0xOTU2LDggKzE5NTEsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUpKSB7Ci0gICAgICAgIENhY2hl
U3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMoKnRoaXMsIHNlc3Npb25JRCwgZmV0Y2hPcHRp
b25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcyksIFtjYWxs
YmFja0FnZ3JlZ2F0b3JdKGF1dG8gZW50cmllcykgbXV0YWJsZSB7CisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSkgJiYgc2Vzc2lvbikg
eworICAgICAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6ZmV0Y2hFbnRyaWVzKCpzZXNzaW9uLCBm
ZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVz
KSwgW2NhbGxiYWNrQWdncmVnYXRvcl0oYXV0byBlbnRyaWVzKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZFZlY3Rv
cihlbnRyaWVzKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTk5NCwyMSArMTk4OSw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsCiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOVEVMTElHRU5UX1RS
QUNLSU5HX1BSRVZFTlRJT04pCiAKLUNhY2hlU3RvcmFnZTo6RW5naW5lKiBOZXR3b3JrUHJvY2Vz
czo6ZmluZENhY2hlRW5naW5lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICByZXR1
cm4gbV9jYWNoZUVuZ2luZXMuZ2V0KHNlc3Npb25JRCk7Ci19Ci0KLUNhY2hlU3RvcmFnZTo6RW5n
aW5lJiBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlQ2FjaGVFbmdpbmUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBGdW5jdGlvbjxSZWY8Q2FjaGVTdG9yYWdlOjpFbmdpbmU+KCk+JiYgZnVuY3RvcikK
LXsKLSAgICByZXR1cm4gbV9jYWNoZUVuZ2luZXMuZW5zdXJlKHNlc3Npb25JRCwgV1RGTW92ZShm
dW5jdG9yKSkuaXRlcmF0b3ItPnZhbHVlOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1v
dmVDYWNoZUVuZ2luZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgbV9jYWNoZUVu
Z2luZXMucmVtb3ZlKHNlc3Npb25JRCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25s
b2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0
RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC0yMjUwLDI3ICsyMjMwLDYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
ICAgICBXZWJDb3JlOjpwcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmNhY2hlU3RvcmFnZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2Fj
aGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIG1fY2FjaGVTdG9y
YWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5lbnN1cmUoc2Vzc2lvbklELCBbJl0gewotICAgICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpSZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQgfSwgMCk7Ci0g
ICAgICAgIHJldHVybiBWZWN0b3I8Q2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjaz4geyB9Owot
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwotfQotCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU3RyaW5nJiYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiBoYW5kbGUpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fY2FjaGVT
dG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5maW5kKHNlc3Npb25JRCk7Ci0gICAgaWYgKGl0ZXJh
dG9yID09IG1fY2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRs
ZSk7Ci0gICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKGl0ZXJhdG9yLT52YWx1ZSk7Ci0gICAg
bV9jYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzQ2FsbGJhY2tzLnJlbW92ZShpdGVyYXRvcik7Ci0gICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soU3RyaW5n
IHsgY2FjaGVTdG9yYWdlRGlyZWN0b3J5IH0pOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAogewog
ICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKHNjaGVt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggODI4MWU1YzkxNmUwMGE5Y2ZjNmZkMDBkZTlhYWNiMGJmOTc0MDI5YS4uM2M5NjhiNWVmN2Qy
NjUyNzYwMzgxOTcyNGMyMjRiMDllM2M3NTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjc2LDkgKzI3Niw2IEBAIHB1YmxpYzoKICAg
ICBib29sIHByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wp
OwogCi0gICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKLSAgICB2b2lkIGNhY2hlU3RvcmFnZVJvb3RQYXRoKFBB
TDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrJiYpOwotCiAgICAgdm9p
ZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogICAgIHZvaWQg
c2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7
CkBAIC0zMTEsOSArMzA4LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgY29uc3Qgb3ZlcnJp
ZGUgeyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzcz46OnJlZigpOyB9CiAgICAg
dm9pZCBkZXJlZigpIGNvbnN0IG92ZXJyaWRlIHsgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TmV0d29y
a1Byb2Nlc3M+OjpkZXJlZigpOyB9CiAKLSAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSogZmluZENh
Y2hlRW5naW5lKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBDYWNoZVN0b3JhZ2U6OkVuZ2luZSYgZW5z
dXJlQ2FjaGVFbmdpbmUoUEFMOjpTZXNzaW9uSUQsIEZ1bmN0aW9uPFJlZjxDYWNoZVN0b3JhZ2U6
OkVuZ2luZT4oKT4mJik7Ci0gICAgdm9pZCByZW1vdmVDYWNoZUVuZ2luZShQQUw6OlNlc3Npb25J
RCk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNp
emUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4pPiYmKTsKIAogICAgIHZvaWQgc3RvcmVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQm
Jik7CkBAIC00MjUsNyArNDE5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJDYWNoZWRD
cmVkZW50aWFscyhQQUw6OlNlc3Npb25JRCk7CiAKLSAgICB2b2lkIHNldENhY2hlU3RvcmFnZVBh
cmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQsIFN0cmluZyYmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNl
cnMoV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlciYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtl
IGEgc2Vzc2lvbiBJRCBzbyB3ZSBjYW4gaWRlbnRpZnkgd2hpY2ggZGlzayBjYWNoZSB0byBkZWxl
dGUuCkBAIC01MjgsMTMgKzUyMSwxMCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VpUHJvY2Vz
c0J1bmRsZUlkZW50aWZpZXI7CiAgICAgRG93bmxvYWRNYW5hZ2VyIG1fZG93bmxvYWRNYW5hZ2Vy
OwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPENhY2hlU3RvcmFnZTo6RW5naW5l
Pj4gbV9jYWNoZUVuZ2luZXM7Ci0KICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNo
YXIqPj4gTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogCiAgICAgSGFzaFNldDxQQUw6OlNlc3Npb25JRD4g
bV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRpb247Ci0gICAgSGFzaE1hcDxQQUw6OlNlc3Np
b25JRCwgVmVjdG9yPENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2s+PiBtX2NhY2hlU3RvcmFn
ZVBhcmFtZXRlcnNDYWxsYmFja3M7CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+PiBtX25ldHdvcmtTZXNzaW9uczsKICAgICBIYXNo
TWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPj4gbV9uZXR3b3JrU3RvcmFnZVNlc3Npb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
MmVhNjQ1Yjc4MWFlNzNmZGYyMjAzZjFlOTRkNDA1ZTM2MWZkOTZiYi4uYmVmNDNhMDA1YzcxN2M4
YTg0MjFlZTZmZTA1MTY4NzAzMGE3NTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNTYsOCArMTU2
LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJl
Z2lzdGVyVVJMU2NoZW1lQXNMb2NhbChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2VzcyhTdHJpbmcgc2NoZW1lKQogCi0gICAgU2V0Q2FjaGVTdG9yYWdlUGFyYW1l
dGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSk7Ci0KICAgICBTeW5j
TG9jYWxTdG9yYWdlKCkgLT4gKCkgQXN5bmMKIAogICAgIFN0b3JlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggYTVhMjRlMzU5MmYxZWRiM2FhYmI1
MGQ2NjQ3ODVkOTE3ZTM2MmJmOS4uNTliMTY3YTc3M2U4MWY1YzRhZmU4NTBlMWRmNDM1NmIxZjk2
NmViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU2Vzc2lvbi5oIgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFNjaGVkdWxlci5oIgpAQCAtMjA0LDYgKzIwNSw3
IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgICAgICBz
ZXJ2ZXItPmNsb3NlKCk7CiAgICAgaWYgKGF1dG8gbWFuYWdlciA9IHN0ZDo6ZXhjaGFuZ2UobV9z
dG9yYWdlTWFuYWdlciwgbnVsbHB0cikpCiAgICAgICAgIG1hbmFnZXItPmNsb3NlKCk7CisgICAg
bV9jYWNoZUVuZ2luZSA9IG51bGxwdHI7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzSW52
YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCkBAIC02OTksNCArNzAxLDMwIEBAIHZvaWQgTmV0d29y
a1Nlc3Npb246OmFkZFN0b3JhZ2VNYW5hZ2VyU2Vzc2lvbihjb25zdCBTdHJpbmcmIGdlbmVyYWxT
dG9yYWdlUGF0aCwKICAgICBtX3N0b3JhZ2VNYW5hZ2VyID0gTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGUoc2Vzc2lvbklEKCksIGdlbmVyYWxTdG9yYWdlUGF0aCwgbG9jYWxTdG9yYWdlUGF0
aCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmVuc3VyZUNhY2hlRW5naW5lKEZ1bmN0aW9u
PHZvaWQoQ2FjaGVTdG9yYWdlOjpFbmdpbmUmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9j
YWNoZUVuZ2luZSkKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCptX2NhY2hlRW5naW5lKTsKKwor
ICAgIG1fY2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxs
YmFjaykpOworICAgIGlmIChtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFja3Muc2l6ZSgp
ID4gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpSZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQoKSB9
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oU3RyaW5nJiYgY2FjaGVTdG9y
YWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlIYW5kbGUpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY2FjaGVT
dG9yYWdlRGlyZWN0b3J5SGFuZGxlKTsKKyAgICAgICAgQVNTRVJUKCFtX2NhY2hlRW5naW5lKTsK
KyAgICAgICAgbV9jYWNoZUVuZ2luZSA9IENhY2hlU3RvcmFnZTo6RW5naW5lOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUoY2FjaGVTdG9yYWdlRGlyZWN0b3J5KSk7CisgICAgICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBzdGQ6OmV4Y2hhbmdlKG1fY2FjaGVTdG9yYWdlUGFyYW1ldGVyc0NhbGxiYWNr
cywgeyB9KSkKKyAgICAgICAgICAgIGNhbGxiYWNrKCptX2NhY2hlRW5naW5lKTsKKyAgICB9LCAw
KTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJDYWNoZUVuZ2luZSgpCit7CisgICAg
bV9jYWNoZUVuZ2luZSA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGI5NjJm
MzljM2U1ZGNmYmU2MDViOGIxMjhjMjFmOGFjMGRkM2NkMjkuLjM2YjUzYjFhNDBkYTE5ZGY3YzI0
YzI0OThkOTJjMGE2MjlkNmNkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTg2LDYgKzg2LDEwIEBAIHN0cnVjdCBTZXNzaW9uU2V0Owog
CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90OwogCituYW1lc3BhY2UgQ2Fj
aGVTdG9yYWdlIHsKK2NsYXNzIEVuZ2luZTsKK30KKwogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7
CiBjbGFzcyBDYWNoZTsKIH0KQEAgLTIxNCw2ICsyMTgsMTAgQEAgcHVibGljOgogICAgIE5ldHdv
cmtTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VNYW5h
Z2VyLmdldCgpOyB9CiAgICAgdm9pZCBhZGRTdG9yYWdlTWFuYWdlclNlc3Npb24oY29uc3QgU3Ry
aW5nJiBnZW5lcmFsU3RvcmFnZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgZ2VuZXJh
bFN0b3JhZ2VQYXRoSGFuZGxlLCBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgbG9jYWxTdG9yYWdlUGF0aEhhbmRsZSk7CiAKKyAgICBDYWNo
ZVN0b3JhZ2U6OkVuZ2luZSogY2FjaGVFbmdpbmUoKSB7IHJldHVybiBtX2NhY2hlRW5naW5lLmdl
dCgpOyB9CisgICAgdm9pZCBlbnN1cmVDYWNoZUVuZ2luZShGdW5jdGlvbjx2b2lkKENhY2hlU3Rv
cmFnZTo6RW5naW5lJik+JiYpOworICAgIHZvaWQgY2xlYXJDYWNoZUVuZ2luZSgpOworCiAgICAg
TmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CiAgICAgUENNOjpN
YW5hZ2VySW50ZXJmYWNlJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuIG1fcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVidWdNb2RlKGJvb2wpOwpAQCAtMzEwLDYgKzMxOCw4IEBAIHByb3RlY3RlZDoK
ICAgICBSZWZQdHI8V2ViSURCU2VydmVyPiBtX3dlYklEQlNlcnZlcjsKIAogICAgIFJlZlB0cjxO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CisgICAgUmVmUHRyPENhY2hl
U3RvcmFnZTo6RW5naW5lPiBtX2NhY2hlRW5naW5lOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lk
KENhY2hlU3RvcmFnZTo6RW5naW5lJik+PiBtX2NhY2hlU3RvcmFnZVBhcmFtZXRlcnNDYWxsYmFj
a3M7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEgbV9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXgg
MTk4YzI1NWUyNWRmNWE2ODZhNzBlOGQ1OTIxYmEyNDdlZTUwMmFjOS4uYzIwMGNlOGI1ZWI0YzNh
MDM2NTdlODIyNjg5OTAyYjQ2ZGJmOGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oPgpAQCAtNTksNiArNjAsMTEgQEAgU3RyaW5nIEVuZ2lu
ZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiAg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgp
LCBrZXkuaGFzaEFzU3RyaW5nKCkpOwogfQogCitSZWY8RW5naW5lPiBFbmdpbmU6OmNyZWF0ZShO
ZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIFN0cmluZyYmIHJvb3RQYXRoKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEVuZ2luZShuZXR3b3JrU2Vzc2lvbiwgV1RGTW92ZShyb290
UGF0aCkpKTsKK30KKwogRW5naW5lOjp+RW5naW5lKCkKIHsKICAgICBmb3IgKGF1dG8mIGNhY2hl
cyA6IG1fY2FjaGVzLnZhbHVlcygpKQpAQCAtODEsMTE5ICs4Nyw5NCBAQCBFbmdpbmU6On5Fbmdp
bmUoKQogICAgICAgICBjYWxsYmFjayhEYXRhIHsgfSwgMSk7CiB9CiAKLXZvaWQgRW5naW5lOjpm
cm9tKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBGdW5jdGlvbjx2b2lkKEVuZ2luZSYpPiYmIGNhbGxiYWNrKQotewotICAgIGlmIChhdXRv
KiBlbmdpbmUgPSBuZXR3b3JrUHJvY2Vzcy5maW5kQ2FjaGVFbmdpbmUoc2Vzc2lvbklEKSkgewot
ICAgICAgICBjYWxsYmFjaygqZW5naW5lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG5ldHdvcmtQcm9jZXNzLmNhY2hlU3RvcmFnZVJvb3RQYXRoKHNlc3Npb25JRCwgW25ldHdvcmtQ
cm9jZXNzID0gUmVmIHsgbmV0d29ya1Byb2Nlc3MgfSwgc2Vzc2lvbklELCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoYXV0byYmIHJvb3RQYXRoKSBtdXRhYmxlIHsKLSAgICAgICAgY2Fs
bGJhY2sobmV0d29ya1Byb2Nlc3MtPmVuc3VyZUNhY2hlRW5naW5lKHNlc3Npb25JRCwgWyZdIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVuZ2luZSB7IHNlc3Npb25JRCwgbmV0
d29ya1Byb2Nlc3MuZ2V0KCksIFdURk1vdmUocm9vdFBhdGgpIH0pOwotICAgICAgICB9KSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgRW5naW5lOjpkZXN0cm95RW5naW5lKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotI2lmICFVU0UoU09V
UCkgJiYgIVVTRShDVVJMKQotICAgIC8vIGNVUkwgYW5kIFNvdXAgYmFzZWQgcG9ydHMgZGVzdHJv
eSB0aGUgZGVmYXVsdCBzZXNzaW9uIHJpZ2h0IGJlZm9yZSB0aGUgcHJvY2VzcyBleGl0cyB0byBh
dm9pZCBsZWFraW5nCi0gICAgLy8gbmV0d29yayByZXNvdXJjZXMgbGlrZSB0aGUgY29va2llcyBk
YXRhYmFzZS4KLSAgICBBU1NFUlQoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpOwotI2VuZGlmCi0KLSAgICBuZXR3b3JrUHJvY2Vzcy5yZW1vdmVDYWNoZUVu
Z2luZShzZXNzaW9uSUQpOwotfQotCi12b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHNo
b3VsZENvbXB1dGVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0
YTo6RW50cnk+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpmZXRjaEVudHJp
ZXMoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBib29sIHNob3VsZENvbXB1dGVTaXpl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQs
IFtzaG91bGRDb21wdXRlU2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24u
ZW5zdXJlQ2FjaGVFbmdpbmUoW3Nob3VsZENvbXB1dGVTaXplLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAg
ICAgICAgZW5naW5lLmZldGNoRW50cmllcyhzaG91bGRDb21wdXRlU2l6ZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6b3BlbihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBTdHJpbmcmJiBjYWNoZU5hbWUsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBF
bmdpbmU6Om9wZW4oTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBvcmlnaW4sIFN0cmluZyYmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgZnJvbShu
ZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pLCBjYWNo
ZU5hbWUgPSBXVEZNb3ZlKGNhY2hlTmFtZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2FjaGVF
bmdpbmUoW29yaWdpbiA9IFdURk1vdmUob3JpZ2luKSwgY2FjaGVOYW1lID0gV1RGTW92ZShjYWNo
ZU5hbWUpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFi
bGUgewogICAgICAgICBlbmdpbmUub3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmVtb3ZlKE5ldHdvcmtQcm9jZXNz
JiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBFbmdpbmU6OnJlbW92ZShOZXR3b3JrU2Vzc2lvbiYgbmV0
d29ya1Nlc3Npb24sIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgZnJvbShu
ZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11dGFibGUgeworICAgIG5ldHdvcmtTZXNz
aW9uLmVuc3VyZUNhY2hlRW5naW5lKFtjYWNoZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5yZW1v
dmUoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJ
bmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMoTmV0
d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmln
aW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBz
ZXNzaW9uSUQsIFtvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0
d29ya1Nlc3Npb24uZW5zdXJlQ2FjaGVFbmdpbmUoW29yaWdpbiA9IFdURk1vdmUob3JpZ2luKSwg
dXBkYXRlQ291bnRlciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5l
KSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwgdXBkYXRl
Q291bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0pOwogfQogCiAKLXZvaWQgRW5naW5l
OjpyZXRyaWV2ZVJlY29yZHMoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmV0
cmlldmVSZWNvcmRzT3B0aW9ucyYmIG9wdGlvbnMsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpS
ZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpyZXRyaWV2ZVJlY29yZHMo
TmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlJldHJpZXZlUmVjb3Jkc09wdGlvbnMmJiBvcHRpb25zLCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgZnJvbShuZXR3
b3JrUHJvY2Vzcywgc2Vzc2lvbklELCBbY2FjaGVJZGVudGlmaWVyLCBvcHRpb25zID0gV1RGTW92
ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBt
dXRhYmxlIHsKKyAgICBuZXR3b3JrU2Vzc2lvbi5lbnN1cmVDYWNoZUVuZ2luZShbY2FjaGVJZGVu
dGlmaWVyLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLnJldHJpZXZl
UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoY2FsbGJh
Y2spKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnB1dFJlY29yZHMoTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYg
cmVjb3JkcywgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjpwdXRSZWNvcmRzKE5ldHdvcmtTZXNzaW9uJiBu
ZXR3b3JrU2Vzc2lvbiwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiByZWNvcmRzLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGZyb20obmV0
d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW2NhY2hlSWRlbnRpZmllciwgcmVjb3JkcyA9IFdURk1v
dmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkg
bXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2FjaGVFbmdpbmUoW2NhY2hlSWRl
bnRpZmllciwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5wdXRSZWNv
cmRzKGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5l
OjpkZWxldGVNYXRjaGluZ1JlY29yZHMoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBm
cm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICBuZXR3b3Jr
U2Vzc2lvbi5lbnN1cmVDYWNoZUVuZ2luZShbY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CiAgICAgICAgIGVuZ2luZS5k
ZWxldGVNYXRjaGluZ1JlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
RW5naW5lOjpsb2NrKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit2b2lkIEVuZ2luZTo6bG9j
ayhOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikKIHsKLSAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZp
ZXJdKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2Fj
aGVFbmdpbmUoW2NhY2hlSWRlbnRpZmllcl0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAgICAg
ICAgZW5naW5lLmxvY2soY2FjaGVJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdp
bmU6OnVubG9jayhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBFbmdpbmU6OnVubG9j
ayhOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikKIHsKLSAgICBmcm9tKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQsIFtjYWNoZUlkZW50aWZp
ZXJdKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2Fj
aGVFbmdpbmUoW2NhY2hlSWRlbnRpZmllcl0oYXV0byYgZW5naW5lKSBtdXRhYmxlIHsKICAgICAg
ICAgZW5naW5lLnVubG9jayhjYWNoZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCi12b2lkIEVu
Z2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
b3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihOZXR3b3JrU2Vz
c2lvbiYgbmV0d29ya1Nlc3Npb24sIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewot
ICAgIGZyb20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW29yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYgZW5naW5lKSBtdXRhYmxl
IHsKKyAgICBuZXR3b3JrU2Vzc2lvbi5lbnN1cmVDYWNoZUVuZ2luZShbb3JpZ2luID0gV1RGTW92
ZShvcmlnaW4pLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiBlbmdpbmUpIG11
dGFibGUgewogICAgICAgICBlbmdpbmUuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihvcmlnaW4s
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnJlcHJlc2Vu
dGF0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjYWxsYmFjaykKK3Zv
aWQgRW5naW5lOjpyZXByZXNlbnRhdGlvbihOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNhbGxiYWNrKQogewotICAgIGZy
b20obmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGF1dG8mIGVuZ2luZSkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2Fj
aGVFbmdpbmUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mIGVuZ2luZSkgbXV0
YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrKGVuZ2luZS5yZXByZXNlbnRhdGlvbigpKTsKICAgICB9
KTsKIH0KIAotdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMo
TmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgZnJvbShuZXR3b3JrUHJvY2Vzcywgc2Vzc2lv
bklELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYgZW5naW5lKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrU2Vzc2lvbi5lbnN1cmVDYWNoZUVuZ2lu
ZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYg
ZW5naW5lKSBtdXRhYmxlIHsKICAgICAgICAgZW5naW5lLmNsZWFyQWxsQ2FjaGVzKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OmNsZWFyQ2Fj
aGVzRm9yT3JpZ2luKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2lu
ZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW4oTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgZnJvbShuZXR3b3JrUHJvY2Vz
cywgc2Vzc2lvbklELCBbb3JpZ2luRGF0YSA9IFdURk1vdmUob3JpZ2luRGF0YSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIGVuZ2luZSkgbXV0
YWJsZSB7CisgICAgbmV0d29ya1Nlc3Npb24uZW5zdXJlQ2FjaGVFbmdpbmUoW29yaWdpbkRhdGEg
PSBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiBlbmdpbmUpIG11dGFibGUgewogICAgICAgICBlbmdpbmUuY2xl
YXJDYWNoZXNGb3JPcmlnaW4ob3JpZ2luRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pOwogfQpAQCAtMjU4LDkgKzIzOSw5IEBAIHZvaWQgRW5naW5lOjpyZXF1ZXN0U3Bh
Y2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHNwYWNlUmVx
CiAgICAgc3RvcmFnZVF1b3RhTWFuYWdlci0+cmVxdWVzdFNwYWNlT25NYWluVGhyZWFkKHNwYWNl
UmVxdWVzdGVkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLUVuZ2luZTo6RW5naW5lKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgTmV0d29ya1Byb2Nlc3MmIHByb2Nlc3MsIFN0cmluZyYmIHJv
b3RQYXRoKQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9uZXR3b3JrUHJv
Y2Vzcyhwcm9jZXNzKQorRW5naW5lOjpFbmdpbmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNz
aW9uLCBTdHJpbmcmJiByb290UGF0aCkKKyAgICA6IG1fc2Vzc2lvbklEKG5ldHdvcmtTZXNzaW9u
LnNlc3Npb25JRCgpKQorICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrU2Vzc2lvbi5uZXR3
b3JrUHJvY2VzcygpKQogICAgICwgbV9yb290UGF0aChXVEZNb3ZlKHJvb3RQYXRoKSkKIHsKICAg
ICBpZiAoIW1fcm9vdFBhdGguaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCA2ZDQ0ODgxMjc5
ZDFiOTYyN2E5YTllN2E5OWIwNWYzZGY2Y2FkMDc4Li4xNDdmYmFjZTE2NzdhNjA4NTkxOGFiNzcy
YTllMTBhMjA2YzY4ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTUxLDYgKzUxLDcgQEAgc3RydWN0
IFJldHJpZXZlUmVjb3Jkc09wdGlvbnM7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIAogbmFtZXNwYWNlIENhY2hlU3Rv
cmFnZSB7CiAKQEAgLTU5LDMwICs2MCwyOSBAQCB1c2luZyBMb2NrQ291bnQgPSB1aW50NjRfdDsK
IAogY2xhc3MgRW5naW5lIDogcHVibGljIFJlZkNvdW50ZWQ8RW5naW5lPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPEVuZ2luZT4gewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8RW5naW5lPiBjcmVh
dGUoTmV0d29ya1Nlc3Npb24mLCBTdHJpbmcmJiByb290UGF0aCk7CiAgICAgfkVuZ2luZSgpOwog
Ci0gICAgc3RhdGljIHZvaWQgZnJvbShOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBG
dW5jdGlvbjx2b2lkKEVuZ2luZSYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95RW5naW5l
KE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHN0YXRpYyB2b2lkIGZldGNo
RW50cmllcyhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZENvbXB1
dGVTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YTo6RW50cnk+
KT4mJik7CisgICAgc3RhdGljIHZvaWQgZmV0Y2hFbnRyaWVzKE5ldHdvcmtTZXNzaW9uJiwgYm9v
bCBzaG91bGRDb21wdXRlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0
ZURhdGE6OkVudHJ5Pik+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgb3BlbihOZXR3b3JrUHJvY2Vz
cyYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgU3RyaW5nJiYgY2Fj
aGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2sm
Jik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlQ2FjaGVz
KE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
LCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJ
bmZvc0NhbGxiYWNrJiYpOworICAgIHN0YXRpYyB2b2lkIG9wZW4oTmV0d29ya1Nlc3Npb24mLCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgU3RyaW5nJiYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgc3RhdGljIHZvaWQg
cmVtb3ZlKE5ldHdvcmtTZXNzaW9uJiwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgc3RhdGlj
IHZvaWQgcmV0cmlldmVDYWNoZXMoTmV0d29ya1Nlc3Npb24mLCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mb3NDYWxsYmFjayYmKTsKIAotICAgIHN0YXRpYyB2b2lkIHJldHJpZXZlUmVjb3JkcyhO
ZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlJldHJpZXZlUmVjb3Jkc09wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNDYWxsYmFjayYmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXRSZWNvcmRzKE5ldHdv
cmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVj
dG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwotICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZU1hdGNoaW5nUmVjb3JkcyhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXRyaWV2ZVJlY29yZHMoTmV0
d29ya1Nlc3Npb24mLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJldHJpZXZl
UmVjb3Jkc09wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFj
ayYmKTsKKyAgICBzdGF0aWMgdm9pZCBwdXRSZWNvcmRzKE5ldHdvcmtTZXNzaW9uJiwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2sm
Jik7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKE5ldHdvcmtTZXNzaW9u
JiwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKLSAgICBzdGF0aWMgdm9pZCBsb2NrKE5ldHdv
cmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Ci0g
ICAgc3RhdGljIHZvaWQgdW5sb2NrKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9jayhOZXR3b3JrU2Vz
c2lvbiYsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgdW5sb2Nr
KE5ldHdvcmtTZXNzaW9uJiwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKIAotICAgIHN0YXRp
YyB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDb21wbGV0aW9uQ2FsbGJhY2smJik7Ci0gICAgc3RhdGljIHZvaWQgcmVwcmVzZW50YXRpb24o
TmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24o
TmV0d29ya1Nlc3Npb24mLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXByZXNl
bnRhdGlvbihOZXR3b3JrU2Vzc2lvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmKTsKIAotICAgIHN0YXRpYyB2b2lkIGNsZWFyQWxsQ2FjaGVzKE5ldHdvcmtQcm9jZXNzJiwg
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgc3RhdGlj
IHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgc3RhdGljIHZvaWQgY2xlYXJBbGxDYWNoZXMoTmV0d29ya1Nlc3Npb24mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyQ2FjaGVz
Rm9yT3JpZ2luKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplUXVvdGFVc2VyKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBz
dGF0aWMgdWludDY0X3QgZGlza1VzYWdlKGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYpOwogICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNwYWNlUmVxdWVzdGVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uKT4mJik7CkBA
IC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IG5leHRDYWNoZUlkZW50aWZp
ZXIoKSB7IHJldHVybiArK21fbmV4dENhY2hlSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAg
IEVuZ2luZShQQUw6OlNlc3Npb25JRCwgTmV0d29ya1Byb2Nlc3MmLCBTdHJpbmcmJiByb290UGF0
aCk7CisgICAgRW5naW5lKE5ldHdvcmtTZXNzaW9uJiwgU3RyaW5nJiYgcm9vdFBhdGgpOwogCiAg
ICAgdm9pZCBvcGVuKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYg
Y2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJik7CiAgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBmOTM0ZDZkNDZlZGNkMjA1YmZlZjRkNjhh
ODA0OWFkNGE0ZGVhNzZiLi42M2U3YTgyM2VlNTg3ZDdkZWRhNGMxYzE0Y2VjZWFjNjdkM2EwNTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKQEAgLTUyLDE2ICs1Miwy
MiBAQCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZQogCiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjp+Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbigpCiB7Ci0gICAgZm9yIChhdXRvJiBy
ZWZlcmVuY2VzIDogbV9jYWNoZXNMb2NrcykgewotICAgICAgICBBU1NFUlQocmVmZXJlbmNlcy52
YWx1ZSk7Ci0gICAgICAgIEVuZ2luZTo6dW5sb2NrKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vz
cygpLCBzZXNzaW9uSUQoKSwgcmVmZXJlbmNlcy5rZXkpOworICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbV9jb25uZWN0aW9uLm5ldHdvcmtTZXNzaW9uKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBy
ZWZlcmVuY2VzIDogbV9jYWNoZXNMb2NrcykgeworICAgICAgICAgICAgQVNTRVJUKHJlZmVyZW5j
ZXMudmFsdWUpOworICAgICAgICAgICAgRW5naW5lOjp1bmxvY2soKnNlc3Npb24sIHJlZmVyZW5j
ZXMua2V5KTsKKyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uOjpvcGVuKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3RyaW5nJiYg
Y2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIENB
Q0hFX1NUT1JBR0VfUkVMRUFTRV9MT0coIm9wZW4gY2FjaGUiKTsKLSAgICBFbmdpbmU6Om9wZW4o
bV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoY2FjaGVOYW1lKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNl
c3Npb25JRCA9IHRoaXMtPnNlc3Npb25JRCgpXShhdXRvJiByZXN1bHQpIG11dGFibGUgeworICAg
IGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24ubmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAo
IXNlc3Npb24pCisgICAgICAgIHJldHVybiBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFsKSk7CisKKyAgICBFbmdpbmU6Om9wZW4o
KnNlc3Npb24sIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjYWNoZU5hbWUpLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEID0gdGhpcy0+c2Vzc2lvbklEKCldKGF1dG8m
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIENBQ0hFX1NUT1JBR0VfUkVMRUFTRV9MT0dfRlVO
Q1RJT05fSU5fQ0FMTEJBQ0soIm9wZW4iLCAiY2FjaGUgaWRlbnRpZmllciBpcyAlIiBQUkl1NjQs
IFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pZGVudGlmaWVyOyB9KTsKICAg
ICAgICAgY2FsbGJhY2socmVzdWx0KTsKICAgICB9KTsKQEAgLTcwLDcgKzc2LDExIEBAIHZvaWQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiBvcmlnaW4sIFN0cmluZyYmCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJl
bW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgQ0FDSEVfU1RPUkFHRV9SRUxFQVNFX0xPRygicmVtb3ZlIGNhY2hl
ICUiIFBSSXU2NCwgY2FjaGVJZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6OnJlbW92ZShtX2Nvbm5l
Y3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIGNhY2hlSWRlbnRpZmllciwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25JRCA9IHRoaXMtPnNlc3Npb25JRCgp
XShhdXRvJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rp
b24ubmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I6Oklu
dGVybmFsKSk7CisKKyAgICBFbmdpbmU6OnJlbW92ZSgqc2Vzc2lvbiwgY2FjaGVJZGVudGlmaWVy
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEID0gdGhpcy0+c2Vzc2lv
bklEKCldKGF1dG8mIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIENBQ0hFX1NUT1JBR0VfUkVM
RUFTRV9MT0dfRlVOQ1RJT05fSU5fQ0FMTEJBQ0soInJlbW92ZSIsICJyZW1vdmVkIGNhY2hlICUi
IFBSSXU2NCwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlkZW50aWZpZXI7
IH0pOwogICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwogICAgIH0pOwpAQCAtNzksNyArODksMTEg
QEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZW1vdmUodWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWYKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6Y2FjaGVzKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0X3QgdXBk
YXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQ0FDSEVf
U1RPUkFHRV9SRUxFQVNFX0xPRygiY2FjaGVzIik7Ci0gICAgRW5naW5lOjpyZXRyaWV2ZUNhY2hl
cyhtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIFdURk1vdmUob3Jp
Z2luKSwgdXBkYXRlQ291bnRlciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIG9yaWdp
biwgc2Vzc2lvbklEID0gdGhpcy0+c2Vzc2lvbklEKCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUg
eworICAgIGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24ubmV0d29ya1Nlc3Npb24oKTsKKyAg
ICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFsKSk7CisKKyAgICBFbmdpbmU6
OnJldHJpZXZlQ2FjaGVzKCpzZXNzaW9uLCBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBvcmlnaW4sIHNlc3Npb25JRCA9IHRoaXMt
PnNlc3Npb25JRCgpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgQ0FDSEVfU1RP
UkFHRV9SRUxFQVNFX0xPR19GVU5DVElPTl9JTl9DQUxMQkFDSygiY2FjaGVzIiwgImNhY2hlcyBz
aXplIGlzICVsdSIsIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pbmZvcy5z
aXplKCk7IH0pOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwpA
QCAtODgsNyArMTAyLDExIEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2Fj
aGVzKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0CiB2b2lkIENhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlJldHJpZXZlUmVjb3Jkc09wdGlvbnMmJiBvcHRpb25zLCBSZWNvcmRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBDQUNIRV9TVE9SQUdFX1JFTEVBU0VfTE9HKCJy
ZXRyaWV2ZVJlY29yZHMgaW4gY2FjaGUgJSIgUFJJdTY0LCBjYWNoZUlkZW50aWZpZXIpOwotICAg
IEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBz
ZXNzaW9uSUQoKSwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKG9wdGlvbnMpLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEID0gdGhpcy0+c2Vzc2lvbklEKCldKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24ubmV0
d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjYWxsYmFj
ayhtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFs
KSk7CisKKyAgICBFbmdpbmU6OnJldHJpZXZlUmVjb3Jkcygqc2Vzc2lvbiwgY2FjaGVJZGVudGlm
aWVyLCBXVEZNb3ZlKG9wdGlvbnMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vz
c2lvbklEID0gdGhpcy0+c2Vzc2lvbklEKCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBDQUNIRV9TVE9SQUdFX1JFTEVBU0VfTE9HX0ZVTkNUSU9OX0lOX0NBTExCQUNLKCJyZXRy
aWV2ZVJlY29yZHMiLCAicmVjb3JkcyBzaXplIGlzICVsdSIsIFtdKGNvbnN0IGF1dG8mIHZhbHVl
KSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJl
c3VsdCkpOwogICAgIH0pOwpAQCAtOTcsNyArMTE1LDExIEBAIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
V2ViCiB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlbGV0ZU1hdGNoaW5nUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIENBQ0hFX1NUT1JBR0VfUkVMRUFT
RV9MT0coImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyBpbiBjYWNoZSAlIiBQUkl1NjQsIGNhY2hlSWRl
bnRpZmllcik7Ci0gICAgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMobV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBzZXNzaW9uSUQgPSB0aGlzLT5zZXNzaW9uSUQoKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi5uZXR3b3JrU2Vzc2lvbigpOworICAg
IGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcjo6SW50ZXJuYWwpKTsKKworICAgIEVuZ2luZTo6
ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKCpzZXNzaW9uLCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUo
cmVxdWVzdCksIFdURk1vdmUob3B0aW9ucyksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBzZXNzaW9uSUQgPSB0aGlzLT5zZXNzaW9uSUQoKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIENBQ0hFX1NUT1JBR0VfUkVMRUFTRV9MT0dfRlVOQ1RJT05fSU5fQ0FMTEJBQ0so
ImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyIsICJkZWxldGVkICVsdSByZWNvcmRzIiwgIFtdKGNvbnN0
IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwogICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwpAQCAtMTA2LDcgKzEyOCwxMSBAQCB2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZQogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpwdXRS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRz
LCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQ0FDSEVfU1RP
UkFHRV9SRUxFQVNFX0xPRygicHV0UmVjb3JkcyBpbiBjYWNoZSAlIiBQUkl1NjQgIiwgJWx1IHJl
Y29yZHMiLCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMuc2l6ZSgpKTsKLSAgICBFbmdpbmU6OnB1
dFJlY29yZHMobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBjYWNo
ZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBzZXNzaW9uSUQgPSB0aGlzLT5zZXNzaW9uSUQoKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi5uZXR3b3JrU2Vzc2lvbigpOwor
ICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVk
KFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcjo6SW50ZXJuYWwpKTsKKworICAgIEVuZ2lu
ZTo6cHV0UmVjb3Jkcygqc2Vzc2lvbiwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMp
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEID0gdGhpcy0+c2Vzc2lv
bklEKCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBDQUNIRV9TVE9SQUdFX1JF
TEVBU0VfTE9HX0ZVTkNUSU9OX0lOX0NBTExCQUNLKCJwdXRSZWNvcmRzIiwgInB1dCAlbHUgcmVj
b3JkcyIsICBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuc2l6ZSgpOyB9KTsK
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKQEAgLTExNSw2ICsx
NDEsMTAgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpwdXRSZWNvcmRzKHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFIKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6cmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKICAgICBD
QUNIRV9TVE9SQUdFX1JFTEVBU0VfTE9HKCJyZWZlcmVuY2UgY2FjaGUgJSIgUFJJdTY0LCBjYWNo
ZUlkZW50aWZpZXIpOworICAgIGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24ubmV0d29ya1Nl
c3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKwogICAgIEFTU0VS
VChtX2NhY2hlc0xvY2tzLmlzVmFsaWRLZXkoY2FjaGVJZGVudGlmaWVyKSk7CiAgICAgaWYgKCFt
X2NhY2hlc0xvY2tzLmlzVmFsaWRLZXkoY2FjaGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTIzLDEyICsxNTMsMTYgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gMDsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb3VudGVyKyspCi0gICAgICAgIEVu
Z2luZTo6bG9jayhtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIGNh
Y2hlSWRlbnRpZmllcik7CisgICAgICAgIEVuZ2luZTo6bG9jaygqc2Vzc2lvbiwgY2FjaGVJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZXJlZmVy
ZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAgQ0FDSEVfU1RPUkFHRV9SRUxF
QVNFX0xPRygiZGVyZWZlcmVuY2UgY2FjaGUgJSIgUFJJdTY0LCBjYWNoZUlkZW50aWZpZXIpOwor
ICAgIGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24ubmV0d29ya1Nlc3Npb24oKTsKKyAgICBp
ZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKwogICAgIEFTU0VSVChtX2NhY2hlc0xvY2tz
LmlzVmFsaWRLZXkoY2FjaGVJZGVudGlmaWVyKSk7CiAgICAgaWYgKCFtX2NhY2hlc0xvY2tzLmlz
VmFsaWRLZXkoY2FjaGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQxLDE4ICsx
NzUsMjYgQEAgdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZXJlZmVyZW5jZSh1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiAgICAgaWYgKC0tcmVmZXJlbmNlUmVzdWx0LT52YWx1
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRW5naW5lOjp1bmxvY2sobV9jb25uZWN0aW9uLm5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBjYWNoZUlkZW50aWZpZXIpOworICAgIEVuZ2lu
ZTo6dW5sb2NrKCpzZXNzaW9uLCBjYWNoZUlkZW50aWZpZXIpOwogICAgIG1fY2FjaGVzTG9ja3Mu
cmVtb3ZlKHJlZmVyZW5jZVJlc3VsdCk7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQoKSwgV1RGTW92
ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byogc2Vzc2lv
biA9IG1fY29ubmVjdGlvbi5uZXR3b3JrU2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbikKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpF
cnJvcjo6SW50ZXJuYWwpOworCisgICAgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9u
KCpzZXNzaW9uLCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRh
dGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBFbmdpbmU6OnJlcHJlc2VudGF0aW9uKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJv
Y2VzcygpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1
dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24ubmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNl
c3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAgRW5n
aW5lOjpyZXByZXNlbnRhdGlvbigqc2Vzc2lvbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiBQQUw6OlNlc3Npb25JRCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpzZXNz
aW9uSUQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjExZjJkNTNjZmZhODVmOTZmMjc0MTFk
OWQyZGIwN2Q5NmEwN2MzNi4uYjdlYWFkNDI1MDVjZTc0Yjc3NmY0NWM3ZWE4ZjZlYjI5ZjYxMDU4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMzcwLDEzICsxMzcwLDEyIEBAIFdlYnNpdGVEYXRhU3Rv
cmUqIE5ldHdvcmtQcm9jZXNzUHJveHk6OndlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKFBB
TDo6U2Vzc2lvCiAgICAgcmV0dXJuIFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3Jl
Rm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgY29uc3QgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIGhhbmRsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byog
c3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNlc3Npb25JRChzZXNzaW9uSUQpOwotCiAgICAg
aWYgKCFzdG9yZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdW5hYmxlIHRvIHJldHJpZXZlIENhY2hlU3RvcmFn
ZSBwYXJhbWV0ZXJzIGZyb20gdGhlIGdpdmVuIHNlc3Npb24gSUQgJSIgUFJJdTY0LCB0aGlzLCBz
ZXNzaW9uSUQudG9VSW50NjQoKSk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzIHsgc2Vzc2lvbklELCB7IH0sIHsgfSB9LCAw
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMzg3LDcgKzEzODYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQog
ICAgICAgICAgICAgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqaGFuZGxlKTsKICAgICB9CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25JRCwgY2FjaGVTdG9yYWdlRGlyZWN0
b3J5LCBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgfSwgMCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggYWY2Y2VkOWU3MWQ5NmUxZmRjODAyMDc4Y2ExYTMyNjExZmY5YjJlMi4u
NWM5YzQ1M2RjYzRkNTg2MThmODU2OTFhMDRiMTU1NzViNWEzYmNjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTMxOSw3ICszMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFEZWxl
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CiAgICAgdm9pZCBub3RpZnlXZWJz
aXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogI2VuZGlmCi0gICAg
dm9pZCByZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQpOworICAg
IHZvaWQgcmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBj
b25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgaGFuZGxlKT4mJik7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQgY29udGVudEV4dGVuc2lvblJ1
bGVzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDAyMjNjNjA1YzM1MmI1YmM3YmIzNzczY2ZlNWJhMjM2YjQ5MjE5ZmIu
LmE5OTc2YjIyZTczZmU1MDQ1NTY2NTg1YjU3MDk1NDU1YTA4YjA0ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KQEAgLTQ4LDcgKzQ4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ29udGVudEV4dGVuc2lvblJ1bGVzKFdl
YktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogI2VuZGlm
CiAKLSAgICBSZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQorICAgIFJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+IChTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpIEFzeW5jCiAKICAgICBUZXJtaW5hdGVXZWJQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>