<?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>202060</bug_id>
          
          <creation_ts>2019-09-20 15:39:42 -0700</creation_ts>
          <short_desc>Add random IntegrityAudit checks to help debug memory corruption bugs.</short_desc>
          <delta_ts>2019-09-21 19:44:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202085</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572928</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-20 15:39:42 -0700</bug_when>
    <thetext>Details to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572929</commentid>
    <comment_count>1</comment_count>
      <attachid>379277</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-20 15:42:59 -0700</bug_when>
    <thetext>Created attachment 379277
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573120</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-21 19:38:23 -0700</bug_when>
    <thetext>This patch is getting to be too big.  So, I&apos;m going to break it down into smaller patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379277</attachid>
            <date>2019-09-20 15:42:59 -0700</date>
            <delta_ts>2019-09-20 15:42:59 -0700</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-202060.patch</filename>
            <type>text/plain</type>
            <size>159975</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI1MDEzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTg5LDYg
Kzk4OSw3IEBAIHRvb2xzL0NvbXBpbGVyVGltaW5nU2NvcGUuY3BwCiB0b29scy9GdW5jdGlvbk92
ZXJyaWRlcy5jcHAKIHRvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAogdG9vbHMvSGVhcFZlcmlm
aWVyLmNwcAordG9vbHMvSW50ZWdyaXR5LmNwcAogdG9vbHMvSlNEb2xsYXJWTS5jcHAKIHRvb2xz
L1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCiB0b29scy9WTUluc3BlY3Rvci5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTkxMSw2ICsxOTExLDkgQEAKIAkJRkVBM0JCQUMyMTJDOTdDQjAwRTkz
QUQxIC8qIERGR0NGRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVBM0JCQUIyMTJDOTdDQjAwRTkzQUQxIC8qIERGR0NGRy5oICovOyB9OwogCQlGRUI1
MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAv
KiBSZWdyZXNzMTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyog
RXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVD
NTc5NzMyMzEwNUI1MTAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDNTc5NzIyMzEwNUI0ODAwQkNB
ODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oICovOyB9OworCQlGRUM1Nzk3NjIzMTA1RjRFMDBC
Q0E4M0YgLyogSW50ZWdyaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVDNTc5NzgyMzEw
OTU0QzAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzU3OTc3MjMxMDk1NEIwMEJDQTgzRiAvKiBJbnRl
Z3JpdHlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkVDQjhCMjcxRDI1QkI4NTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJpZGVzVGVz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUNC
OEIyNTFEMjVCQjZFMDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcCAqLzsgfTsK
IAkJRkVEMjg3QjIxNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQyODdCMTE1RUM5QTU3MDBEQTgx
NjEgLyogTExJbnRPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNF
MjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC01MTM1LDYgKzUxMzgsMTAgQEAKIAkJRkVCNTFGNkIxQTk3QjY4
ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBSZWdyZXNzMTQxODA5Lm1tOyBwYXRoID0gQVBJL3Rlc3RzL1JlZ3Jlc3Mx
NDE4MDkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjU4QzEyMTg3QjhCMTYw
MDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRXJyb3JIYW5kbGluZ1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29w
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDNTc5NzIyMzEwNUI0ODAwQkNBODNG
IC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWTUluc3BlY3RvcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVD
NTc5NzQyMzEwNUY0MjAwQkNBODNGIC8qIEludGVncml0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlZ3JpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVncml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRUM1Nzk3NzIzMTA5NTRCMDBCQ0E4M0YgLyogSW50ZWdyaXR5SW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JpdHlJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQ0I4QjI1MUQyNUJCNkUwMDZGMjQ2MyAvKiBG
dW5jdGlvbk92ZXJyaWRlc1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9GdW5jdGlv
bk92ZXJyaWRlc1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUNCOEIy
NjFEMjVCQjZFMDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZ1bmN0aW9uT3ZlcnJpZGVzVGVzdC5oOyBwYXRoID0gQVBJ
L3Rlc3RzL0Z1bmN0aW9uT3ZlcnJpZGVzVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUNCOEIyOTFEMjVDQUJCMDA2RjI0NjMgLyogdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlk
ZXMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSAidGVzdGFwaS1m
dW5jdGlvbi1vdmVycmlkZXMuanMiOyBwYXRoID0gIkFQSS90ZXN0cy90ZXN0YXBpLWZ1bmN0aW9u
LW92ZXJyaWRlcy5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTgzLDYgKzc1
OTAsOSBAQAogCQkJCUZFQTBDNDAxMUNERDdEMEUwMDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlz
dC5oICovLAogCQkJCUZFMUJEMDIyMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuY3Bw
ICovLAogCQkJCUZFMUJEMDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLywK
KwkJCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmNwcCAqLywKKwkJCQlG
RUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi8sCisJCQkJRkVDNTc5Nzcy
MzEwOTU0QjAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCAqLywKIAkJCQlGRTM4NEVFMTFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi8sCiAJCQkJRkUzODRFRTIxQUREQjdB
RDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLywKIAkJCQk4NkI1ODIyQzE0RDIyRjVGMDBBOUMz
MDYgLyogUHJvZmlsZVRyZWVOb2RlLmggKi8sCkBAIC03NTkxLDYgKzc2MDEsNyBAQAogCQkJCTg2
QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBUaWVyZWRNTWFwQXJyYXkuaCAqLywKIAkJCQlGRTMw
MjJENDFFNDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuY3BwICovLAogCQkJCUZFMzAyMkQ1
MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovLAorCQkJCUZFQzU3OTcyMjMxMDVC
NDgwMEJDQTgzRiAvKiBWTUluc3BlY3RvcklubGluZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
dG9vbHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODk5OSw2ICs5MDEwLDcgQEAK
IAkJCQkwRkVDM0M2MDFGMzc5RjUzMDBGNTlCNkMgLyogQ2FnZWRCYXJyaWVyUHRyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzNFRDBFMTZGNUNEMDBCMzQ0NjAgLyogQ2FsbERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNGIC8qIEludGVncml0eUlu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5NkRBQTJCMUU4OUNDRDYwMDVERjI0QSAvKiBD
YWxsZWVCaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDhERTBFRDIyMDVCMDBCODk2MTkg
LyogQ2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUEzQkJBODIxMkI2NTU5MDBFOTNB
RDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDkyLDYgKzk1MDQs
NyBAQAogCQkJCTc5MDVCQjY5MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0OEE3QkYwMUI4Mjk3NUEwMDJEOTE1NyAvKiBJbmxpbmVDYWxsRnJh
bWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTU2MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxp
bmVDYWxsRnJhbWVTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzU3OTc2MjMxMDVGNEUwMEJD
QTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEw
MDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGN0Yx
ODQwMzYyQzAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLApAQCAtOTkyNCw2ICs5OTM3LDcgQEAKIAkJCQkwRkY3MjlCRTE2NkFEMzYw
MDAwRjVCQTMgLyogUHJvZmlsZXJFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjE5MENBRDE4OUQ4MkY2MDAwQUU1RjAgLyogUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5QkYxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyT3Jp
Z2luLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1J
bnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlDMDE2NkFEMzYwMDAw
RjVCQTMgLyogUHJvZmlsZXJPcmlnaW5TdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTA1
OEMxNjc1NDgzMzAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCMTA1OEUxNjc1NDgzQTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsOSArMTE2LDkgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCBwdXRCeVZhbEludGVybgogewogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKLSAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHZtLCBlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRl
Y29kZSh2bSwgZW5jb2RlZFByb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHZtLCBlbmNvZGVkVmFsdWUpOwogCiAgICAgaWYgKExJS0VMWShwcm9wZXJ0eS5pc1VJ
bnQzMigpKSkgewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQz
MiB3aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0
aG9zZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMuCkBAIC0yMDksOSArMjA5LDEwIEBA
IGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqIGUKIHRlbXBsYXRlIDxib29s
IHN0cmljdD4KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0V2l0aFRoaXMoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCiB7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpOwotICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVGhpcyk7
Ci0gICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRUaGlzKTsKKyAgICBKU1ZhbHVlIHB1dFZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVmFsdWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRo
aXNWYWwsIHN0cmljdCk7CiAgICAgYmFzZVZhbHVlLnB1dElubGluZShleGVjLCBpZGVudCwgcHV0
VmFsdWUsIHNsb3QpOwogfQpAQCAtMjIzLDggKzIyNCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIGJpbmEKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVl
IG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKKyAgICBKU1ZhbHVlIG9wMSA9IEpT
VmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMSk7CisgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRPcDIpOwogCiAgICAgYXV0byBsZWZ0TnVtZXJpYyA9IG9wMS50
b051bWVyaWMoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0yNTAsOCArMjUxLDggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2Rl
ZEpTVmFsdWUgYml0dwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFs
dWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOworICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6
ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsKKyAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIGxlZnROdW1lcmljID0gb3AxLnRvQmlnSW50
T3JJbnQzMihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTI5NSw3ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRvCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9w
KS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcCkKQEAgLTMwMyw3ICszMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2bSwgZW5j
b2RlZE9wKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkpOwogfQogCiBKU0FycmF5KiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT2JqZWN0KQpAQCAtMzEyLDcgKzMxMyw3IEBAIEpTQXJyYXkqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uT2JqZWN0S2UKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2Jq
ZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVu
Y29kZWRPYmplY3QpLnRvT2JqZWN0KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gb3duUHJvcGVy
dHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSk7CkBAIC0zMzEsNyArMzMyLDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm90
b3R5cGUpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNv
ZGVkUHJvdG90eXBlKTsKIAogICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgIXByb3Rv
dHlwZS5pc051bGwoKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
T2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iX3MpOwpAQCAt
NDEzLDcgKzQxNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsT2JqZWMK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVGFyZ2V0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNv
ZGVkVGFyZ2V0KTsKICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwogCiAgICAgaWYgKHZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCkBAIC00MjcsNyArNDI4LDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRhcmdldCk7
CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFRhcmdldCk7
CiAgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsKIAogICAgIGlmIChVTkxJS0VMWSh2YWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSkgewpAQCAtNDU5LDcgKzQ2MCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKKyAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMSk7CiAKICAgICBh
dXRvIG9wZXJhbmROdW1lcmljID0gb3AxLnRvQmlnSW50T3JJbnQzMihleGVjKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTUyOCw4ICs1Mjks
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
Mik7CisgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDEpOwor
ICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AyKTsKIAogICAg
IGludDMyX3QgYSA9IG9wMS50b0ludDMyKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNTQ0LDggKzU0NSw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAg
ICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKKyAgICBKU1ZhbHVl
IG9wMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMSk7CisgICAgSlNWYWx1ZSBvcDIg
PSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDIpOwogCiAgICAgdWludDMyX3QgYSA9IG9w
MS50b1VJbnQzMihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKQEAgLTU1OSw4ICs1NjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBKU1ZhbHVlIG9wMSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKTsKKyAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwg
ZW5jb2RlZE9wMSk7CisgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29k
ZWRPcDIpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGROb25OdW1iZXIo
ZXhlYywgb3AxLCBvcDIpKTsKIH0KQEAgLTU5Nyw3ICs1OTgsNyBAQCBkb3VibGUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Bcml0aEFicyhFCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CisgICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDEpOwogICAgIGRvdWJsZSBh
ID0gb3AxLnRvTnVtYmVyKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFBO
YU4pOwogICAgIHJldHVybiBmYWJzKGEpOwpAQCAtNjA5LDcgKzYxMCw3IEBAIHVpbnQzMl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDbHoKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKKyAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMSk7CiAgICAgdWlu
dDMyX3QgdmFsdWUgPSBvcDEudG9VSW50MzIoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgMCk7CiAgICAgcmV0dXJuIGNseih2YWx1ZSk7CkBAIC02MjEsNyArNjIyLDcgQEAg
ZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhGUm91bgogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOworICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3Ax
KTsKICAgICBkb3VibGUgYSA9IG9wMS50b051bWJlcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBQTmFOKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGEpOwpA
QCAtNjMzLDcgKzYzNCw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoIyNj
YXAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOyBcCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7IFwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7IFwKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsg
XAorICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsgXAog
ICAgIGRvdWJsZSByZXN1bHQgPSBvcDEudG9OdW1iZXIoZXhlYyk7IFwKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBQTmFOKTsgXAogICAgIHJldHVybiBKU0M6Ok1hdGg6Omxvd2VyTmFt
ZShyZXN1bHQpOyBcCkBAIC02NDcsNyArNjQ4LDcgQEAgZG91YmxlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJpdGhTcXJ0KAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
VmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOworICAgIEpTVmFsdWUgb3Ax
ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsKICAgICBkb3VibGUgYSA9IG9wMS50
b051bWJlcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBQTmFOKTsKICAg
ICByZXR1cm4gc3FydChhKTsKQEAgLTY1OSw3ICs2NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFyCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJndW1lbnQpOwor
ICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRBcmd1bWVu
dCk7CiAgICAgZG91YmxlIHZhbHVlT2ZBcmd1bWVudCA9IGFyZ3VtZW50LnRvTnVtYmVyKGV4ZWMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoanNSb3VuZCh2YWx1ZU9mQXJndW1lbnQp
KSk7CkBAIC02NzEsNyArNjcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25BcgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKKyAgICBKU1ZhbHVlIGFy
Z3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkQXJndW1lbnQpOwogICAgIGRvdWJs
ZSB2YWx1ZU9mQXJndW1lbnQgPSBhcmd1bWVudC50b051bWJlcihleGVjKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGZsb29yKHZhbHVlT2ZBcmd1bWVudCkpKTsKQEAgLTY4Myw3ICs2
ODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyCiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQXJndW1lbnQpOworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRBcmd1bWVudCk7CiAgICAgZG91YmxlIHZhbHVlT2ZBcmd1bWVu
dCA9IGFyZ3VtZW50LnRvTnVtYmVyKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoY2VpbCh2YWx1ZU9mQXJndW1lbnQpKSk7CkBAIC02OTUsNyArNjk2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFy
Z3VtZW50KTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNv
ZGVkQXJndW1lbnQpOwogICAgIGRvdWJsZSB0cnVuY2F0ZWRWYWx1ZU9mQXJndW1lbnQgPSBhcmd1
bWVudC50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHRydW5jYXRlZFZhbHVlT2ZBcmd1bWVudCkpOwpAQCAtNzI0LDggKzcyNSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSk7Ci0gICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkUHJvcGVydHkpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZSh2
bSwgZW5jb2RlZFByb3BlcnR5KTsKIAogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgp
KSkgewogICAgICAgICBKU0NlbGwqIGJhc2UgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CkBAIC03NjUs
NyArNzY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgcHJvcGVydHkgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNW
YWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkUHJvcGVydHkpOwogCiAgICAgaWYgKHByb3BlcnR5Lmlz
VUludDMyKCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWwoZXhl
YywgYmFzZSwgcHJvcGVydHkuYXNVSW50MzIoKSkpOwpAQCAtODc2LDcgKzg3Nyw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGwKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAg
cHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8dHJ1ZSwgZmFsc2U+KGV4ZWMsIHZtLCBjZWxsLCBh
c1N0cmluZyhzdHJpbmcpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisgICAgcHV0
QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8dHJ1ZSwgZmFsc2U+KGV4ZWMsIHZtLCBjZWxsLCBhc1N0
cmluZyhzdHJpbmcpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSkpOwogfQogCiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxsLCBKU0NlbGwqIHN0cmluZywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQpAQCAtODg0LDcgKzg4NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbENlbGwKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgcHV0QnlWYWxDZWxsU3Ry
aW5nSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihleGVjLCB2bSwgY2VsbCwgYXNTdHJpbmcoc3RyaW5n
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworICAgIHB1dEJ5VmFsQ2VsbFN0cmlu
Z0ludGVybmFsPGZhbHNlLCBmYWxzZT4oZXhlYywgdm0sIGNlbGwsIGFzU3RyaW5nKHN0cmluZyks
IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKSk7CiB9CiAKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBK
U0NlbGwqIGNlbGwsIEpTQ2VsbCogc3ltYm9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CkBAIC04OTMsNyArODk0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpOwotICAg
IHB1dEJ5VmFsQ2VsbEludGVybmFsPHRydWUsIGZhbHNlPihleGVjLCB2bSwgY2VsbCwgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisgICAgcHV0QnlWYWxDZWxs
SW50ZXJuYWw8dHJ1ZSwgZmFsc2U+KGV4ZWMsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIGNlbGwsIEpTQ2VsbCogc3ltYm9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkBA
IC05MDIsNyArOTAzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2Vs
bAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpOwotICAgIHB1
dEJ5VmFsQ2VsbEludGVybmFsPGZhbHNlLCBmYWxzZT4oZXhlYywgdm0sIGNlbGwsIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworICAgIHB1dEJ5VmFsQ2VsbElu
dGVybmFsPGZhbHNlLCBmYWxzZT4oZXhlYywgdm0sIGNlbGwsIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVmFsdWUpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogb2JqZWN0LCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCkBAIC05MTEsMTMgKzkxMiwxMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlWYWxCZXlvCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAg
ICAgCiAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgb2JqZWN0LT5wdXRCeUluZGV4SW5s
aW5lKGV4ZWMsIGluZGV4LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgdHJ1ZSk7Cisg
ICAgICAgIG9iamVjdC0+cHV0QnlJbmRleElubGluZShleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVj
b2RlKHZtLCBlbmNvZGVkVmFsdWUpLCB0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIHRydWUpOwogICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5wdXQoCi0gICAgICAgIG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbSh2bSwgaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7Cisg
ICAgICAgIG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaW5kZXgpLCBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSksIHNsb3QpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKQEAgLTkyNiwxMyArOTI3LDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbEJleW8KICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICAKICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICBvYmplY3QtPnB1dEJ5
SW5kZXhJbmxpbmUoZXhlYywgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBm
YWxzZSk7CisgICAgICAgIG9iamVjdC0+cHV0QnlJbmRleElubGluZShleGVjLCBpbmRleCwgSlNW
YWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVmFsdWUpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBmYWxzZSk7CiAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCgKLSAgICAgICAgb2JqZWN0LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBzbG90KTsKKyAgICAgICAgb2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRl
eCksIEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CiAKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3Ry
aWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgaW50MzJfdCBpbmRleCwgZG91
YmxlIHZhbHVlKQpAQCAtMTAzOCw3ICsxMDM5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsRGlyZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbDx0cnVlLCB0cnVlPihleGVjLCB2bSwgY2VsbCwgYXNTdHJpbmcoc3RyaW5nKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworICAgIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVy
bmFsPHRydWUsIHRydWU+KGV4ZWMsIHZtLCBjZWxsLCBhc1N0cmluZyhzdHJpbmcpLCBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSkpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBjZWxsLCBKU0NlbGwqIHN0cmluZywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQpAQCAtMTA0Niw3ICsxMDQ3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsRGlyZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbDxm
YWxzZSwgdHJ1ZT4oZXhlYywgdm0sIGNlbGwsIGFzU3RyaW5nKHN0cmluZyksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKKyAgICBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbDxmYWxz
ZSwgdHJ1ZT4oZXhlYywgdm0sIGNlbGwsIGFzU3RyaW5nKHN0cmluZyksIEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZFZhbHVlKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdENlbGxTeW1ib2xTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGNl
bGwsIEpTQ2VsbCogc3ltYm9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkBAIC0xMDU1
LDcgKzEwNTYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlCiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1lKCk7Ci0gICAgcHV0QnlW
YWxDZWxsSW50ZXJuYWw8dHJ1ZSwgdHJ1ZT4oZXhlYywgdm0sIGNlbGwsIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworICAgIHB1dEJ5VmFsQ2VsbEludGVybmFs
PHRydWUsIHRydWU+KGV4ZWMsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZFZhbHVlKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdENlbGxTeW1ib2xOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwq
IGNlbGwsIEpTQ2VsbCogc3ltYm9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkBAIC0x
MDY0LDcgKzEwNjUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1lKCk7Ci0gICAgcHV0
QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIHRydWU+KGV4ZWMsIHZtLCBjZWxsLCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKKyAgICBwdXRCeVZhbENlbGxJbnRl
cm5hbDxmYWxzZSwgdHJ1ZT4oZXhlYywgdm0sIGNlbGwsIHByb3BlcnR5TmFtZSwgSlNWYWx1ZTo6
ZGVjb2RlKHZtLCBlbmNvZGVkVmFsdWUpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCkBAIC0xMDcyLDEyICsxMDczLDEyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbERpcmUKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAg
ICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCAwLCBQdXREaXJlY3RJbmRleFNob3VsZFRocm93KTsKKyAgICAgICAgb2Jq
ZWN0LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNv
ZGVkVmFsdWUpLCAwLCBQdXREaXJlY3RJbmRleFNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIHRydWUpOwot
ICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBleGVjLCBvYmplY3Qs
IElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSksIHNsb3QpOworICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBl
eGVjLCBvYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHZtLCBlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogb2JqZWN0LCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCkBAIC0xMDg2LDEyICsxMDg3LDEyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbERpcmUKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAogICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0
SW5kZXgoZXhlYywgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKKyAgICAg
ICAgb2JqZWN0LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBlbmNvZGVkVmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIGZhbHNlKTsKLSAgICBDb21tb25TbG93UGF0aHM6OnB1
dERpcmVjdFdpdGhSZWlmeSh2bSwgZXhlYywgb2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBp
bmRleCksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKKyAgICBDb21tb25T
bG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZXhlYywgb2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tKHZtLCBpbmRleCksIEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKSwgc2xv
dCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNo
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0FycmF5KiBh
cnJheSkKQEAgLTEwOTksNyArMTEwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXIKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAotICAgIGFycmF5LT5wdXNoSW5saW5lKGV4
ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKKyAgICBhcnJheS0+cHVzaElubGlu
ZShleGVjLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgpKSk7CiB9CiAKQEAgLTExMzAs
NyArMTEzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXIKIAog
ICAgIEVuY29kZWRKU1ZhbHVlKiB2YWx1ZXMgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+
KGJ1ZmZlcik7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyArK2kp
IHsKLSAgICAgICAgYXJyYXktPnB1c2hJbmxpbmUoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVl
c1tpXSkpOworICAgICAgICBhcnJheS0+cHVzaElubGluZShleGVjLCBKU1ZhbHVlOjpkZWNvZGUo
dm0sIHZhbHVlc1tpXSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihhcnJheS0+bGVuZ3RoKCkpKTsKQEAgLTExOTIsNyArMTE5Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmUKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgCi0gICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJn
dW1lbnQpOworICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29k
ZWRBcmd1bWVudCk7CiAKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVudC50b1N0cmluZ09y
TnVsbChleGVjKTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IWlucHV0KTsKQEAgLTEyMDksOCArMTIxMCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmUKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIGJhc2UgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwotICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKKyAgICBKU1ZhbHVlIGJh
c2UgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkQXJndW1lbnQpOwogICAgIAogICAgIGF1
dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIGJhc2UpOwogICAg
IGlmIChVTkxJS0VMWSghcmVnZXhwKSkKQEAgLTEyOTUsNyArMTI5Niw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGEKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgcmV0dXJu
IHRvU3RyaW5nVmlldyhleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgeworICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoZXhlYywgSlNWYWx1ZTo6ZGVjb2Rl
KHZtLCB2YWx1ZSksIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CiAgICAgICAgIC8vIFRoaXMgdmVy
c2lvbiBpcyBhcyBpZiByYWRpeCB3YXMgdW5kZWZpbmVkLiBIZW5jZSwgdW5kZWZpbmVkLnRvTnVt
YmVyKCkgPT09IDAuCiAgICAgICAgIHJldHVybiBwYXJzZUludFJlc3VsdChwYXJzZUludCh2aWV3
LCAwKSk7CiAgICAgfSk7CkBAIC0xMzMxLDcgKzEzMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblBhCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiB0b1N0cmlu
Z1ZpZXcoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcp
IHsKKyAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2bSwgdmFs
dWUpLCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICByZXR1cm4gcGFyc2VJbnRSZXN1
bHQocGFyc2VJbnQodmlldywgcmFkaXgpKTsKICAgICB9KTsKIH0KQEAgLTEzNTMsNyArMTM1NCw3
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAKLSAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRBcmd1bWVudCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZSh2bSwg
ZW5jb2RlZEFyZ3VtZW50KTsKIAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRvU3Ry
aW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghaW5wdXQpCkBAIC0xMzY5LDggKzEzNzAsOCBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRB
cmd1bWVudCk7CisgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVk
QmFzZSk7CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2Rl
ZEFyZ3VtZW50KTsKIAogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2Jq
ZWN0Kj4odm0sIGJhc2UpOwogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewpAQCAtMTUxOCw3
ICsxNTE5LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2FtZVZhbHVlKAogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gc2FtZVZhbHVlKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShh
cmcxKSwgSlNWYWx1ZTo6ZGVjb2RlKGFyZzIpKTsKKyAgICByZXR1cm4gc2FtZVZhbHVlKGV4ZWMs
IEpTVmFsdWU6OmRlY29kZSh2bSwgYXJnMSksIEpTVmFsdWU6OmRlY29kZSh2bSwgYXJnMikpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCkBAIC0xNTI2LDcgKzE1MjcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvCiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSku
dG9QcmltaXRpdmUoZXhlYykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6
ZGVjb2RlKHZtLCB2YWx1ZSkudG9QcmltaXRpdmUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgdmFsdWUpCkBAIC0xNTM0LDcgKzE1MzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b051bWJlcihleGVjKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoSlNWYWx1ZTo6ZGVjb2RlKHZt
LCB2YWx1ZSkudG9OdW1iZXIoZXhlYykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQpAQCAtMTU0Myw5ICsxNTQ0LDkgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KTsKLSAgICBKU1ZhbHVlIHRoaXNWYWwgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRoaXMpOwot
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkQmFz
ZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVGhp
cyk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRT
dWJzY3JpcHQpOwogCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2Ny
aXB0LmlzU3RyaW5nKCkpKSB7CiAgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJhc2VW
YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKQEAgLTE1OTgsNyArMTU5OSw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGgKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgSWRlbnRpZmllciBwcm9w
ZXJ0eSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFN1YnNjcmlwdCkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICBwdXRXaXRoVGhpczx0cnVlPihleGVjLCBlbmNvZGVkQmFzZSwg
ZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgcHJvcGVydHkpOwpAQCAtMTYxMCw3ICsxNjExLDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aAogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBJZGVudGlm
aWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkU3Vic2NyaXB0KS50b1By
b3BlcnR5S2V5KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNv
ZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgcHJvcGVydHkpOwpAQCAtMTYzMiwx
MCArMTYzMywxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByCiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNv
ZGVkUHJvcGVydHkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgZGVmaW5lRGF0YVBy
b3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0s
IGJhc2UsIHByb3BlcnR5TmFtZSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVmFsdWUpLCBh
dHRyaWJ1dGVzKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQ
cm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyog
cHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVz
KQpAQCAtMTY0NywyMSArMTY0OCwyMSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
aW5lRGF0YVByCiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVu
dGlmaWVyKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFz
ZSwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRl
cyk7CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7CiB9CiAKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVy
dHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7Ci0gICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpLCBhdHRyaWJ1dGVzKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2Us
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5KSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBl
bmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBi
YXNlLCBTeW1ib2wqIHByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMy
X3QgYXR0cmlidXRlcykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIGRlZmluZURhdGFQcm9wZXJ0eShl
eGVjLCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChwcm9wZXJ0eS0+cHJpdmF0ZU5hbWUo
KSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKKyAgICBkZWZp
bmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVy
dHktPnByaXZhdGVOYW1lKCkpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSksIGF0
dHJpYnV0ZXMpOwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZUFjY2Vzc29y
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0
ZXIsIGludDMyX3QgYXR0cmlidXRlcykKQEAgLTE2ODAsNyArMTY4MSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3MKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkUHJvcGVydHkpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGRl
ZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
LCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOwogfQpAQCAtMjE2Myw3ICsyMTY0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBl
bmNvZGVkQmFzZVZhbHVlKTsKICAgICBpZiAoYmFzZVZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKQEAg
LTIxOTQsNyArMjE5NSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9w
ZXIKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIGJhc2UgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6
OmRlY29kZSh2bSwgZW5jb2RlZEJhc2UpOwogICAgIGlmIChiYXNlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCiAgICAgICAgIHJldHVybiB2bS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKTsKIApA
QCAtMjIzMCw3ICsyMjMxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Jl
Z2V4cAogCiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQ
dHIpOwogICAgIEFTU0VSVChyZWdleHAtPmlzVmFsaWQoKSk7Ci0gICAgcmV0dXJuIFJlZ0V4cE9i
amVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVj
dHVyZSgpLCByZWdleHAsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkTGFzdEluZGV4KSk7CisgICAg
cmV0dXJuIFJlZ0V4cE9iamVjdDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdleHAsIEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2Rl
ZExhc3RJbmRleCkpOwogfQogCiBTdHJpbmdJbXBsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJl
c29sdmVSb3BlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKQEAgLTIyNDcsNyAr
MjI0OCw3IEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1YKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFs
dWU6OmRlY29kZSh2bSwgZW5jb2RlZEFyZ3VtZW50KTsKIAogICAgIGlmIChhcmd1bWVudC5pc1N0
cmluZygpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoYXJndW1lbnQpOwpAQCAtMjQxMyw3ICsy
NDE0LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9TdHJpbgogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhleGVj
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZSkudG9TdHJpbmcoZXhlYyk7
CiB9CiAKIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3Rvck9uQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKQEAgLTI0MjksNyArMjQz
MCw3IEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxTdHIKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogCi0gICAgcmV0dXJuIHN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkpOworICAgIHJldHVybiBzdHJpbmdDb25zdHJ1Y3RvcihleGVjLCBKU1ZhbHVlOjpk
ZWNvZGUodm0sIHZhbHVlKSk7CiB9CiAKIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk1ha2VSb3BlMihFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBsZWZ0LCBKU1N0cmluZyogcmln
aHQpCkBAIC0yNDU2LDkgKzI0NTcsOSBAQCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdHJDYXQyCiAKICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29kZShhKS5pc1N5bWJvbCgpKTsK
ICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29kZShiKS5pc1N5bWJvbCgpKTsKLSAgICBKU1N0cmlu
Zyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0cmlu
Zyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgYSkudG9TdHJpbmcoZXhlYyk7CiAgICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ugd2UgbXVzdCBoYXZl
IGJlZW4gZ2l2ZW4gbm9uLVN5bWJvbCBwcmltaXRpdmVzLgotICAgIEpTU3RyaW5nKiBzdHIyID0g
SlNWYWx1ZTo6ZGVjb2RlKGIpLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHIyID0g
SlNWYWx1ZTo6ZGVjb2RlKHZtLCBiKS50b1N0cmluZyhleGVjKTsKICAgICBzY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhl
eGVjLCBzdHIxLCBzdHIyKSk7CkBAIC0yNDczLDExICsyNDc0LDExIEBAIEpTU3RyaW5nKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblN0ckNhdDMKICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29kZShh
KS5pc1N5bWJvbCgpKTsKICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29kZShiKS5pc1N5bWJvbCgp
KTsKICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29kZShjKS5pc1N5bWJvbCgpKTsKLSAgICBKU1N0
cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhleGVjKTsKKyAgICBKU1N0
cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgYSkudG9TdHJpbmcoZXhlYyk7CiAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ugd2UgbXVzdCBo
YXZlIGJlZW4gZ2l2ZW4gbm9uLVN5bWJvbCBwcmltaXRpdmVzLgotICAgIEpTU3RyaW5nKiBzdHIy
ID0gSlNWYWx1ZTo6ZGVjb2RlKGIpLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHIy
ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBiKS50b1N0cmluZyhleGVjKTsKICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwotICAgIEpTU3RyaW5nKiBzdHIzID0gSlNWYWx1ZTo6ZGVjb2RlKGMp
LnRvU3RyaW5nKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHIzID0gSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBjKS50b1N0cmluZyhleGVjKTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBzdHIxLCBzdHIyLCBz
dHIzKSk7CkBAIC0yNDkwLDcgKzI0OTEsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkZpbmRTd2l0Y2hJCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBTaW1w
bGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRl
eCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSk7CiAg
ICAgQVNTRVJUKHZhbHVlLmlzRG91YmxlKCkpOwogICAgIGRvdWJsZSBhc0RvdWJsZSA9IHZhbHVl
LmFzRG91YmxlKCk7CiAgICAgaW50MzJfdCBhc0ludDMyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
YXNEb3VibGUpOwpAQCAtMjU5Nyw4ICsyNTk4LDggQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblNpemVPZlZhcgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudHMg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7Ci0gICAgCisgICAgSlNWYWx1ZSBh
cmd1bWVudHMgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRBcmd1bWVudHMpOworCiAgICAg
cmV0dXJuIHNpemVPZlZhcmFyZ3MoZXhlYywgYXJndW1lbnRzLCBmaXJzdFZhckFyZ09mZnNldCk7
CiB9CiAKQEAgLTI2MDgsNyArMjYwOSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25IYXNPd25Qcm8KICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVl
IGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKKyAgICBKU1ZhbHVlIGtleSA9IEpT
VmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZEtleSk7CiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUgPSBrZXkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAKQEAgLTI2MjYsNyArMjYyNyw3IEBAIGludDMyX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OdW1iZXJJc0kKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIHJldHVybiBOdW1iZXJD
b25zdHJ1Y3Rvcjo6aXNJbnRlZ2VySW1wbChKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKKyAgICBy
ZXR1cm4gTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlckltcGwoSlNWYWx1ZTo6ZGVjb2RlKHZt
LCB2YWx1ZSkpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlJbmRl
eE9mU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgQnV0dGVyZmx5KiBidXR0ZXJmbHksIEpTU3RyaW5n
KiBzZWFyY2hFbGVtZW50LCBpbnQzMl90IGluZGV4KQpAQCAtMjY1OSw3ICsyNjYwLDcgQEAgaW50
MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5SW5kZQogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IEpTVmFsdWU6OmRl
Y29kZSh2bSwgZW5jb2RlZFZhbHVlKTsKIAogICAgIGludDMyX3QgbGVuZ3RoID0gYnV0dGVyZmx5
LT5wdWJsaWNMZW5ndGgoKTsKICAgICBhdXRvIGRhdGEgPSBidXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KS5kYXRhKCk7CkBAIC0yNjgwLDcgKzI2ODEsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJyYXlJbmRlCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVu
dCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgc2VhcmNoRWxl
bWVudCA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKTsKIAogICAgIGlmICghc2Vh
cmNoRWxlbWVudC5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0yNzAwLDggKzI3
MDEsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9hZFZhcmFyZ3MoCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QXJndW1lbnRzKTsKLSAgICAKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZEFyZ3VtZW50cyk7CisKICAgICBsb2FkVmFyYXJncyhleGVjLCBWaXJ0dWFs
UmVnaXN0ZXIoZmlyc3RFbGVtZW50RGVzdCksIGFyZ3VtZW50cywgb2Zmc2V0LCBsZW5ndGgpOwog
ICAgIAogICAgIGZvciAodWludDMyX3QgaSA9IGxlbmd0aDsgaSA8IG1hbmRhdG9yeU1pbmltdW07
ICsraSkKQEAgLTI3MzEsNyArMjczMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU3QKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIEpTVmFsdWUgY2hhclZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBjaGFyVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSk7CiAgICAgaW50MzJfdCBjaEludCA9IGNoYXJW
YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQzo6c3Ry
aW5nRnJvbUNoYXJDb2RlKGV4ZWMsIGNoSW50KSk7CiB9CkBAIC0yODE0LDcgKzI4MTUsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXCiAgICAgRW5jb2RlZEpTVmFs
dWUqIHZhbHVlcyA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oYnVmZmVyKTsKICAgICBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZExlbmd0aCA9IDA7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUl0ZW1zOyBpKyspIHsKLSAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pOworICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZXNbaV0pOwogICAgICAgICBpZiAoSlNGaXhl
ZEFycmF5KiBhcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNGaXhlZEFycmF5Kj4odm0sIHZhbHVlKSkK
ICAgICAgICAgICAgIGNoZWNrZWRMZW5ndGggKz0gYXJyYXktPnNpemUoKTsKICAgICAgICAgZWxz
ZQpAQCAtMjg0NCw3ICsyODQ1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0FycmF5VwogCiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1JdGVtczsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodmFsdWVzW2ldKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh2bSwgdmFsdWVzW2ldKTsKICAgICAgICAgaWYgKEpTRml4ZWRBcnJheSogYXJyYXkgPSBq
c0R5bmFtaWNDYXN0PEpTRml4ZWRBcnJheSo+KHZtLCB2YWx1ZSkpIHsKICAgICAgICAgICAgIC8v
IFdlIGFyZSBzcHJlYWRpbmcuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YXJyYXktPnNpemUoKTsgaSsrKSB7CkBAIC0zMDA1LDcgKzMwMDYsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyB2b2lkIHB1dER5bmFtaWNWYXIoCiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChz
Y29wZSwgaXNTdHJpY3RNb2RlLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0lu
aXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICB0aHJv
d1Njb3BlLnJlbGVhc2UoKTsKLSAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUs
IGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBzbG90KTsKKyAgICBzY29wZS0+
bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUo
dm0sIHZhbHVlKSwgc2xvdCk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRE
eW5hbWljVmFyU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNjb3BlLCBFbmNvZGVk
SlNWYWx1ZSB2YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGdldFB1dElu
Zm9CaXRzKQpAQCAtMzAyOSwxNCArMzAzMCwxNCBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTWFwSGFzaChFCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBqc01hcEhhc2goZXhl
Yywgdm0sIEpTVmFsdWU6OmRlY29kZShpbnB1dCkpOworICAgIHJldHVybiBqc01hcEhhc2goZXhl
Yywgdm0sIEpTVmFsdWU6OmRlY29kZSh2bSwgaW5wdXQpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
bWFwLCBFbmNvZGVkSlNWYWx1ZSBrZXksIGludDMyX3QgaGFzaCkKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwot
ICAgIEpTTWFwOjpCdWNrZXRUeXBlKiogYnVja2V0ID0ganNDYXN0PEpTTWFwKj4obWFwKS0+Zmlu
ZEJ1Y2tldChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgaGFzaCk7CisgICAgSlNNYXA6OkJ1
Y2tldFR5cGUqKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXAqPihtYXApLT5maW5kQnVja2V0KGV4ZWMs
IEpTVmFsdWU6OmRlY29kZSh2bSwga2V5KSwgaGFzaCk7CiAgICAgaWYgKCFidWNrZXQpCiAgICAg
ICAgIHJldHVybiB2bS5zZW50aW5lbE1hcEJ1Y2tldCgpOwogICAgIHJldHVybiAqYnVja2V0OwpA
QCAtMzA0Niw3ICszMDQ3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTU2V0
RmluZAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNTZXQ6OkJ1Y2tldFR5cGUqKiBidWNrZXQgPSBq
c0Nhc3Q8SlNTZXQqPihtYXApLT5maW5kQnVja2V0KGV4ZWMsIEpTVmFsdWU6OmRlY29kZShrZXkp
LCBoYXNoKTsKKyAgICBKU1NldDo6QnVja2V0VHlwZSoqIGJ1Y2tldCA9IGpzQ2FzdDxKU1NldCo+
KG1hcCktPmZpbmRCdWNrZXQoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBrZXkpLCBoYXNoKTsK
ICAgICBpZiAoIWJ1Y2tldCkKICAgICAgICAgcmV0dXJuIHZtLnNlbnRpbmVsU2V0QnVja2V0KCk7
CiAgICAgcmV0dXJuICpidWNrZXQ7CkBAIC0zMDU2LDcgKzMwNTcsNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU2V0QWRkKEV4CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBhdXRvKiBi
dWNrZXQgPSBqc0Nhc3Q8SlNTZXQqPihzZXQpLT5hZGROb3JtYWxpemVkKGV4ZWMsIEpTVmFsdWU6
OmRlY29kZShrZXkpLCBKU1ZhbHVlKCksIGhhc2gpOworICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2Fz
dDxKU1NldCo+KHNldCktPmFkZE5vcm1hbGl6ZWQoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBr
ZXkpLCBKU1ZhbHVlKCksIGhhc2gpOwogICAgIGlmICghYnVja2V0KQogICAgICAgICByZXR1cm4g
dm0uc2VudGluZWxTZXRCdWNrZXQoKTsKICAgICByZXR1cm4gYnVja2V0OwpAQCAtMzA2Niw3ICsz
MDY3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hcFNldChFeAogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7Ci0gICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTTWFwKj4obWFwKS0+YWRkTm9y
bWFsaXplZChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVl
KSwgaGFzaCk7CisgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTTWFwKj4obWFwKS0+YWRkTm9y
bWFsaXplZChleGVjLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGtleSksIEpTVmFsdWU6OmRlY29kZSh2
bSwgdmFsdWUpLCBoYXNoKTsKICAgICBpZiAoIWJ1Y2tldCkKICAgICAgICAgcmV0dXJuIHZtLnNl
bnRpbmVsTWFwQnVja2V0KCk7CiAgICAgcmV0dXJuIGJ1Y2tldDsKQEAgLTMwODMsNyArMzA4NCw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25XZWFrTWFwU2V0KEUKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwotICAgIGpzQ2FzdDxKU1dlYWtNYXAqPihtYXApLT5hZGQodm0sIGFzT2JqZWN0KGtleSks
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIGhhc2gpOworICAgIGpzQ2FzdDxKU1dlYWtNYXAqPiht
YXApLT5hZGQodm0sIGFzT2JqZWN0KGtleSksIEpTVmFsdWU6OmRlY29kZSh2bSwgdmFsdWUpLCBo
YXNoKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90
b3R5cGVPZk9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQpAQCAt
MzA5OSw3ICszMTAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUp
OworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVmFs
dWUpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNy
ZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgdGhpc1ZhbHVlKSk7CiAKQEAgLTMxMjAsNyArMzEy
MSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0RGRyhFeGUKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBzY29w
ZS50aHJvd0V4Y2VwdGlvbihleGVjLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWVUb1Rocm93KSk7Cisg
ICAgc2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZVRv
VGhyb3cpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhdGljRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogbWVzc2FnZSwgdWludDMyX3QgZXJyb3JUeXBl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcxLDcgKzE4NzEsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVERkdFeGNlcHRpb25IYW5kbGluZygpICYmIChtYXlF
eGl0KG1faml0LmdyYXBoKCksIG1fY3VycmVudE5vZGUpICE9IERvZXNOb3RFeGl0IHx8IG1fY3Vy
cmVudE5vZGUtPmlzVGVybWluYWwoKSkpCi0gICAgICAgICAgICBtX2ppdC5qaXRSZWxlYXNlQXNz
ZXJ0Tm9FeGNlcHRpb24obV9qaXQudm0oKSk7CisgICAgICAgICAgICBtX2ppdC5qaXRSZWxlYXNl
QXNzZXJ0Tm9FeGNlcHRpb24odm0oKSk7CiAKICAgICAgICAgbV9qaXQucGNUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyKCkuYXBwZW5kSXRlbShtX2ppdC5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwg
bV9vcmlnaW4uc2VtYW50aWMpOwogCkBAIC0yMDUxLDcgKzIwNTEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2hlY2tUcmFwcyhOCiAgICAgR1BSUmVnIHVudXNlZEdQUiA9IHVudXNl
ZC5ncHIoKTsKIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG5lZWRUcmFwSGFuZGxpbmcgPSBtX2pp
dC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywKLSAgICAgICAgSklUQ29tcGlsZXI6
OkFic29sdXRlQWRkcmVzcyhtX2ppdC52bSgpLm5lZWRUcmFwSGFuZGxpbmdBZGRyZXNzKCkpKTsK
KyAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyh2bSgpLm5lZWRUcmFwSGFuZGxp
bmdBZGRyZXNzKCkpKTsKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChu
ZWVkVHJhcEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRpb25IYW5kbGVUcmFwcywgdW51c2VkR1BSKSk7
CiAgICAgbm9SZXN1bHQobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3
ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXImKTsKICAg
ICB+U3BlY3VsYXRpdmVKSVQoKTsKIAotICAgIFZNJiB2bSgpCisgICAgQUxXQVlTX0lOTElORSBW
TSYgdm0oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faml0LnZtKCk7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
NTAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblAKIAogICAgIHN3aXRjaCAobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkpIHsK
ICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6IHsKLSAgICAgICAgSlNGaW5hbE9iamVjdCogb2Jq
ZWN0ID0ganNDYXN0PEpTRmluYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUoKmVuY29kZWRWYWx1
ZSkpOworICAgICAgICBKU0ZpbmFsT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNGaW5hbE9iamVj
dCo+KEpTVmFsdWU6OmRlY29kZSh2bSwgKmVuY29kZWRWYWx1ZSkpOwogICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKIAogICAgICAgICAvLyBGaWd1
cmUgb3V0IHdoYXQgdGhlIGhlY2sgdG8gcG9wdWxhdGUgdGhlIG9iamVjdCB3aXRoLiBVc2UKQEAg
LTgwLDcgKzgwLDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUAog
ICAgICAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkubG9jYXRp
b24oKS5pbmZvKCkpLmltcGwoKSAhPSBlbnRyeS5rZXkpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIGVudHJ5Lm9m
ZnNldCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICAgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0KHZtLCBlbnRyeS5vZmZzZXQsIEpTVmFsdWU6OmRlY29kZSh2bSwgdmFsdWVz
W2ldKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xMDAs
NyArMTAwLDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUAogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246IHsKLSAgICAg
ICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGFjdGl2YXRpb24gPSBqc0Nhc3Q8SlNMZXhpY2FsRW52
aXJvbm1lbnQqPihKU1ZhbHVlOjpkZWNvZGUoKmVuY29kZWRWYWx1ZSkpOworICAgICAgICBKU0xl
eGljYWxFbnZpcm9ubWVudCogYWN0aXZhdGlvbiA9IGpzQ2FzdDxKU0xleGljYWxFbnZpcm9ubWVu
dCo+KEpTVmFsdWU6OmRlY29kZSh2bSwgKmVuY29kZWRWYWx1ZSkpOwogCiAgICAgICAgIC8vIEZp
Z3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0ZSB0aGUgYWN0aXZhdGlvbiB3aXRoCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0t
OykgewpAQCAtMTA4LDIxICsxMDgsMjEgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUAogICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9
IENsb3N1cmVWYXJQTG9jKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBhY3RpdmF0aW9uLT52YXJpYWJsZUF0KFNjb3BlT2Zmc2V0KHByb3BlcnR5LmxvY2F0aW9uKCku
aW5mbygpKSkuc2V0KHZtLCBhY3RpdmF0aW9uLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7
CisgICAgICAgICAgICBhY3RpdmF0aW9uLT52YXJpYWJsZUF0KFNjb3BlT2Zmc2V0KHByb3BlcnR5
LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0KHZtLCBhY3RpdmF0aW9uLCBKU1ZhbHVlOjpkZWNvZGUo
dm0sIHZhbHVlc1tpXSkpOwogICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOiB7Ci0gICAgICAgIFJlZ0V4cE9iamVjdCogcmVnRXhw
T2JqZWN0ID0ganNDYXN0PFJlZ0V4cE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSgqZW5jb2RlZFZh
bHVlKSk7CisgICAgICAgIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0ID0ganNDYXN0PFJlZ0V4
cE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh2bSwgKmVuY29kZWRWYWx1ZSkpOwogCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsg
aS0tOykgewogICAgICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0g
bWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CiAgICAgICAgICAgICBpZiAocHJvcGVy
dHkubG9jYXRpb24oKS5raW5kKCkgIT0gUmVnRXhwT2JqZWN0TGFzdEluZGV4UExvYykKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0
SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSksIGZhbHNlIC8qIHNob3VsZFRo
cm93ICovKTsKKyAgICAgICAgICAgIHJlZ0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMsIEpT
VmFsdWU6OmRlY29kZSh2bSwgdmFsdWVzW2ldKSwgZmFsc2UgLyogc2hvdWxkVGhyb3cgKi8pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0xNTMsOCAr
MTUzLDggQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgIT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0
b3IoU3RydWN0dXJlUExvYykpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pLmFzQ2VsbCgpLT5p
bmhlcml0czxTdHJ1Y3R1cmU+KHZtKSk7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBqc0Nhc3Q8
U3RydWN0dXJlKj4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZXNbaV0pLmFzQ2VsbCgpLT5pbmhl
cml0czxTdHJ1Y3R1cmU+KHZtKSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBqc0Nhc3Q8U3Ry
dWN0dXJlKj4oSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZXNbaV0pKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZSk7CkBAIC0x
ODgsMTEgKzE4OCwxMSBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
CiAgICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlh
bGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2Nh
dGlvbigpID09IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEZ1bmN0aW9uRXhlY3V0YWJsZVBM
b2MpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHZh
bHVlc1tpXSkuYXNDZWxsKCktPmluaGVyaXRzPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0pKTsKLSAg
ICAgICAgICAgICAgICBleGVjdXRhYmxlID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KEpT
VmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KEpTVmFsdWU6OmRlY29kZSh2bSwgdmFsdWVzW2ld
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9
PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihGdW5jdGlvbkFjdGl2YXRpb25QTG9jKSkgewog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0p
LmFzQ2VsbCgpLT5pbmhlcml0czxKU1Njb3BlPih2bSkpOwotICAgICAgICAgICAgICAgIGFjdGl2
YXRpb24gPSBqc0Nhc3Q8SlNTY29wZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAg
ICAgICAgICAgICAgICBhY3RpdmF0aW9uID0ganNDYXN0PEpTU2NvcGUqPihKU1ZhbHVlOjpkZWNv
ZGUodm0sIHZhbHVlc1tpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGV4ZWN1dGFibGUgJiYgYWN0aXZhdGlvbik7CkBAIC0yMTUsMTAgKzIxNSwx
MCBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAg
ICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnBy
b3BlcnRpZXMoKVtpXTsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpID09IFBy
b21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEFjdGl2YXRpb25TY29wZVBMb2MpKSB7CiAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkuYXNDZWxs
KCktPmluaGVyaXRzPEpTU2NvcGU+KHZtKSk7Ci0gICAgICAgICAgICAgICAgc2NvcGUgPSBqc0Nh
c3Q8SlNTY29wZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgICAg
ICBzY29wZSA9IGpzQ2FzdDxKU1Njb3BlKj4oSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZXNbaV0p
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3Rl
ZExvY2F0aW9uRGVzY3JpcHRvcihBY3RpdmF0aW9uU3ltYm9sVGFibGVQTG9jKSkgewogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pLmFzQ2Vs
bCgpLT5pbmhlcml0czxTeW1ib2xUYWJsZT4odm0pKTsKLSAgICAgICAgICAgICAgICB0YWJsZSA9
IGpzQ2FzdDxTeW1ib2xUYWJsZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAg
ICAgICAgICAgICB0YWJsZSA9IGpzQ2FzdDxTeW1ib2xUYWJsZSo+KEpTVmFsdWU6OmRlY29kZSh2
bSwgdmFsdWVzW2ldKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc2NvcGUpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlW
YWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKICAgICAg
ICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSAhPSBQcm9tb3RlZExvY2F0aW9uRGVz
Y3JpcHRvcihBcmd1bWVudENvdW50UExvYykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWVz
W2ldKS5hc1VJbnQzMigpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIHZhbHVlc1tpXSkuYXNVSW50MzIoKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCkBAIC0zMjIsNyArMzIyLDcgQEAgZXh0
ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgICAgIGlm
IChwcm9wZXJ0eS5sb2NhdGlvbigpICE9IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKEFyZ3Vt
ZW50c0NhbGxlZVBMb2MpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KEpT
VmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgICAgICBjYWxsZWUgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KEpTVmFsdWU6OmRlY29kZSh2bSwgdmFsdWVzW2ldKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQpAQCAtMzU5LDcg
KzM1OSw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAg
ICAgICAgICAgICAvLyBzZXRJbmRleFF1aWNrbHkoKSB3b3VsZCBmYWlsIGZvciBpbmRpY2VzIDAs
IDEsIDIgLSBidXQgd2UgbmVlZCB0byByZWNvdmVyCiAgICAgICAgICAgICAgICAgLy8gdGhvc2Ug
aGVyZS4KICAgICAgICAgICAgICAgICByZXN1bHQtPmFyZ3VtZW50KERpcmVjdEFyZ3VtZW50c09m
ZnNldChpbmRleCkpLnNldCgKLSAgICAgICAgICAgICAgICAgICAgdm0sIHJlc3VsdCwgSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICAgICAgICAgICAgICB2bSwgcmVzdWx0LCBK
U1ZhbHVlOjpkZWNvZGUodm0sIHZhbHVlc1tpXSkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzc2LDcgKzM3Niw3IEBAIGV4dGVybiAi
QyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpOwogICAgICAgICAgICAgICAgIGlm
IChpbmRleCA+PSBsZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIEpTVmFsdWU6OmRl
Y29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIGluZGV4LCBKU1ZhbHVlOjpkZWNvZGUodm0sIHZhbHVlc1tpXSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDA0LDcg
KzQwNCw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBhcnJheUluZGV4ID0gYXJnSW5kZXggLSBudW1iZXJPZkFyZ3Vt
ZW50c1RvU2tpcDsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXlJbmRleCA+PSBhcnJheVNpemUp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGFycmF5LT5w
dXREaXJlY3RJbmRleChleGVjLCBhcnJheUluZGV4LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ld
KSk7CisgICAgICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGFycmF5SW5k
ZXgsIEpTVmFsdWU6OmRlY29kZSh2bSwgdmFsdWVzW2ldKSk7CiAgICAgICAgICAgICB9CiAKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECkBAIC00NDUsNyArNDQ1LDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlh
bGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0
IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGll
cygpW2ldOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpID09IFNw
cmVhZFBMb2MpIHsKLSAgICAgICAgICAgICAgICBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICAgICAgICAgIGFycmF5ID0ganNDYXN0
PEpTQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodm0sIHZhbHVlc1tpXSkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NjUsNyArNDY1LDcgQEAg
ZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsK
ICAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFs
aXphdGlvbi0+cHJvcGVydGllcygpW2ldOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0
aW9uKCkua2luZCgpID09IE5ld0FycmF5QnVmZmVyUExvYykgewotICAgICAgICAgICAgICAgIGlt
bXV0YWJsZUJ1dHRlcmZseSA9IGpzQ2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KEpTVmFsdWU6
OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgICAgICBpbW11dGFibGVCdXR0ZXJmbHkg
PSBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihKU1ZhbHVlOjpkZWNvZGUodm0sIHZhbHVl
c1tpXSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC01MjIsNyArNTIyLDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aQogICAgICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0
ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CiAgICAgICAgICAgICBpZiAocHJvcGVydHku
bG9jYXRpb24oKS5raW5kKCkgPT0gTmV3QXJyYXlXaXRoU3ByZWFkQXJndW1lbnRQTG9jKSB7CiAg
ICAgICAgICAgICAgICAgKytudW1Qcm9wZXJ0aWVzOwotICAgICAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZXNbaV0pOwogICAgICAgICAgICAg
ICAgIGlmIChKU0ZpeGVkQXJyYXkqIGZpeGVkQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTRml4ZWRB
cnJheSo+KHZtLCB2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWRBcnJheVNpemUg
Kz0gZml4ZWRBcnJheS0+c2l6ZSgpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTU1Nyw3ICs1
NTcsNyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsg
aS0tOykgewogICAgICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0g
bWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CiAgICAgICAgICAgICBpZiAocHJvcGVy
dHkubG9jYXRpb24oKS5raW5kKCkgPT0gTmV3QXJyYXlXaXRoU3ByZWFkQXJndW1lbnRQTG9jKSB7
Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNb
aV0pOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0s
IHZhbHVlc1tpXSk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvcGVydHkubG9j
YXRpb24oKS5pbmZvKCkgPCBudW1Qcm9wZXJ0aWVzKTsKICAgICAgICAgICAgICAgICBhcmd1bWVu
dHNbcHJvcGVydHkubG9jYXRpb24oKS5pbmZvKCldID0gdmFsdWU7CiAgICAgICAgICAgICB9CkBA
IC01ODcsNyArNTg3LDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aQogICAgICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJp
YWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CiAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9j
YXRpb24oKSA9PSBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcihSZWdFeHBPYmplY3RSZWdFeHBQ
TG9jKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZSh2
YWx1ZXNbaV0pLmFzQ2VsbCgpLT5pbmhlcml0czxSZWdFeHA+KHZtKSk7Ci0gICAgICAgICAgICAg
ICAgcmVnRXhwID0ganNDYXN0PFJlZ0V4cCo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsK
KyAgICAgICAgICAgICAgICByZWdFeHAgPSBqc0Nhc3Q8UmVnRXhwKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHZtLCB2YWx1ZXNbaV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBSRUxF
QVNFX0FTU0VSVChyZWdFeHApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHJldmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAiV2Vha01hcEltcGxJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldElubGluZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5j
bHVkZSA8d3RmL0xpc3REdW1wLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUGFyYWxsZWxWZWN0b3JJdGVyYXRvci5oPgpAQCAtMTI2OCw2ICsxMjY5LDkgQEAg
TkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuQmVnaW5QaGFzZShHQwogCiAgICAgbV9iZWZvcmVH
QyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCisgICAgLy8gUGlnZ3kgYmFjayBvbiB0aGUgR0Mg
dG8gcmFuZG9taXplIGEgYml0LgorICAgIHZtKCkucmFuZG9tKCkuc2V0U2VlZChjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpKTsKKwogICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSkgewog
ICAgICAgICBkYXRhTG9nKCJDb2xsZWN0aW9uIHNjb3BlIGFscmVhZHkgc2V0IGR1cmluZyBHQzog
IiwgKm1fY29sbGVjdGlvblNjb3BlLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRv
ci5jcHAJKHJldmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkhlYXBBbmFseXplci5oIgogI2luY2x1ZGUgIkhlYXBDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUg
IkhlYXBQcm9maWxlci5oIgorI2luY2x1ZGUgIkludGVncml0eS5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCkBAIC0yMjEsNiArMjIyLDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxs
T3JBdXhpbGlhcgogICAgIAogICAgICAgICBKU0NlbGwqIGpzQ2VsbCA9IHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGhlYXBDZWxsKTsKICAgICAgICAgdmFsaWRhdGVDZWxsKGpzQ2VsbCk7CisgICAgICAg
IEludGVncml0eTo6ZmFzdEF1ZGl0Q2VsbCh2bSgpLCBqc0NlbGwpOwogICAgICAgICAKICAgICAg
ICAganNDZWxsLT5zZXRDZWxsU3RhdGUoQ2VsbFN0YXRlOjpQb3NzaWJseUdyZXkpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwMyw3ICs5MDMsNyBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgICAgICAgICB0aHJvd1Nj
b3BlLnJlbGVhc2UoKTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9u
RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZwcm90
b0NhbGxGcmFtZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBKU1Zh
bHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbi5yYXdQ
b2ludGVyKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICByZXN1bHQgPSBK
U1ZhbHVlOjpkZWNvZGU8SlNWYWx1ZTo6U2tpcElmRXhjZXB0aW9uUGVuZGluZz4odm0sIHZtRW50
cnlUb05hdGl2ZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24ucmF3UG9pbnRlcigpLCAmdm0sICZw
cm90b0NhbGxGcmFtZSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtOTczLDcgKzk3Myw3IEBAIEpT
T2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgaWYgKGlzSlND
b25zdHJ1Y3QpCiAgICAgICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9u
RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLT5leGVjdXRlKCZ2bSwg
JnByb3RvQ2FsbEZyYW1lKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBK
U1ZhbHVlOjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0
aW9uLnJhd1BvaW50ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IEpTVmFsdWU6OmRlY29kZTxKU1ZhbHVlOjpTa2lwSWZFeGNlcHRpb25QZW5kaW5nPih2
bSwgdm1FbnRyeVRvTmF0aXZlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uLnJhd1BvaW50
ZXIoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKIAogICAgICAgICAgICAgaWYgKExJS0VMWSgh
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LmlzT2JqZWN0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZUlubGluZXMuaAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBKSVRDb2RlOjpleGVjdXRlKFYKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogICAgIHZvaWQqIGVudHJ5QWRkcmVzczsKICAgICBl
bnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9K
YXZhU2NyaXB0KGVudHJ5QWRkcmVzcywgdm0sIHByb3RvQ2FsbEZyYW1lKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGU8SlNWYWx1ZTo6U2tpcElmRXhjZXB0aW9uUGVuZGlu
Zz4oKnZtLCB2bUVudHJ5VG9KYXZhU2NyaXB0KGVudHJ5QWRkcmVzcywgdm0sIHByb3RvQ2FsbEZy
YW1lKSk7CiAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpID8ganNOdWxsKCkgOiByZXN1bHQ7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0g
dHJ1ZTsKIAotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBiYXNlKTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRl
bnQsIHNsb3QpOwogCkBAIC0xNzMsNyArMTczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UcgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQp
OwogCi0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSk7CiAgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwg
c2xvdCk7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRyCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCi0g
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpOwogICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSk7CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90
KTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdlCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCk7CiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKLSAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh2bSwgYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwog
CiAgICAgYm9vbCBmb3VuZCA9IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgaWRl
bnQsIHNsb3QpOwpAQCAtMjIzLDcgKzIyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2UKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAK
LSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgYmFzZSk7CiAgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
T3duUHJvcGVydHkpOwogCiAgICAgYm9vbCBmb3VuZCA9IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHVpZCk7CiAKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShi
YXNlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgYmFzZSk7
CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwogCiAgICAgYm9vbCBmb3VuZCA9IGJhc2VWYWx1
ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwpAQCAtMjYwLDcgKzI2MCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAKICAgICBz
dHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh2bSwgYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICBJZGVudGlmaWVyIGlk
ZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAg
IAotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBiYXNlKTsKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7
CkBAIC0yOTUsNyArMjk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCi0gICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBbJl0gKGJvb2wg
Zm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIApAQCAtMzE3
LDggKzMxNyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIAog
ICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCi0gICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc0VuY29kZWQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHZtLCBiYXNlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh2bSwgdGhpc0VuY29kZWQpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKQEAgLTMzMiw4
ICszMzIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKLSAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzRW5jb2RlZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodm0sIGJhc2UpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHZtLCB0aGlzRW5jb2RlZCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVl
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOwpAQCAtMzQ3
LDkgKzM0Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIAotICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNFbmNvZGVkKTsKLQorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHZtLCBiYXNlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh2bSwgdGhpc0VuY29kZWQpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNW
YWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBz
bG90LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CiAg
ICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwodm0pLCBpZGVudCwgYmFzZVZhbHVlID09IHNsb3Qu
c2xvdEJhc2UoKSkpOwpAQCAtMzcyLDcgKzM3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW4KIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwogCi0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoYmFzZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGJh
c2UpOwogICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJh
c2VWYWx1ZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMzk2LDcgKzM5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW4KIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogCi0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Cisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpOwogICAgIGlm
ICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1ZSkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDIwLDcg
KzQxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KIAogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCi0gICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpOwogICAgIGlmICghYmFzZVZhbHVl
LmlzT2JqZWN0KCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0
ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2VWYWx1ZSkpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQ0LDcgKzQ0Myw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
QnlWYWwoZXhlYywgYmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZXhlYywg
YmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBrZXkpKSkpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTQ1NiwxMCArNDU1LDEw
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKICAgICAKICAgICBz
dHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRCYXNlKTsKICAgICBJZGVudGlmaWVyIGlkZW50
ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUsIHRydWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsK
LSAgICBiYXNlVmFsdWUucHV0SW5saW5lKGV4ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSwgc2xvdCk7CisgICAgYmFzZVZhbHVlLnB1dElubGluZShleGVjLCBpZGVudCwg
SlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVmFsdWUpLCBzbG90KTsKICAgICAKICAgICBMT0df
SUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWRTdHJpY3QsIGJhc2VWYWx1ZS5jbGFzc0luZm9P
ck51bGwodm0pLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7CiB9CkBAIC00NzMs
MTAgKzQ3MiwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiAg
ICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgCi0gICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkQmFzZSk7CiAgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRD
b250ZXh0KCkpOwotICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRlbnQsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKKyAgICBiYXNlVmFsdWUucHV0SW5saW5lKGV4
ZWMsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSksIHNsb3QpOwogCiAg
ICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0LCBiYXNlVmFsdWUu
Y2xhc3NJbmZvT3JOdWxsKHZtKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSkpOwog
fQpAQCAtNDkwLDEwICs0ODksMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlYwogICAgIAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgIAot
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZEJhc2UpOwog
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgdHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCkt
PnB1dEJ5SWRDb250ZXh0KCkpOwotICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJl
aWZ5KHZtLCBleGVjLCBhc09iamVjdChiYXNlVmFsdWUpLCBpZGVudCwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSksIHNsb3QpOworICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0
aFJlaWZ5KHZtLCBleGVjLCBhc09iamVjdChiYXNlVmFsdWUpLCBpZGVudCwgSlNWYWx1ZTo6ZGVj
b2RlKHZtLCBlbmNvZGVkVmFsdWUpLCBzbG90KTsKIAogICAgIExPR19JQygoSUNFdmVudDo6T3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCh2bSks
IGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKIH0KQEAgLTUwNywxMCArNTA2LDEw
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICAKICAgICBz
dHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRCYXNlKTsKICAgICBJZGVudGlmaWVyIGlkZW50
ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUsIGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7
Ci0gICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGV4ZWMsIGFzT2Jq
ZWN0KGJhc2VWYWx1ZSksIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xv
dCk7CisgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGV4ZWMsIGFz
T2JqZWN0KGJhc2VWYWx1ZSksIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1
ZSksIHNsb3QpOwogCiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKHZtKSwgaWRlbnQsIHNsb3QuYmFz
ZSgpID09IGJhc2VWYWx1ZSkpOwogfQpAQCAtNTI2LDggKzUyNSw4IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRCYXNlKTsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKIApAQCAtNTU2LDgg
KzU1NSw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2UpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1
ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRC
YXNlKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgZmFsc2UsIGNvZGVCbG9jay0+cHV0QnlJ
ZENvbnRleHQoKSk7CiAKQEAgLTU4Niw4ICs1ODUsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZEJhc2UpKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRl
eHQoKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOwpAQCAtNjE1LDggKzYx
NCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKICAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBl
bmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1
ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkQmFzZSkpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
ZmFsc2UsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBudWxscHRyOwpAQCAtODI2LDkgKzgyNSw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbE9wdGkKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsK
LSAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0
KTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRCYXNlVmFs
dWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVk
U3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNv
ZGVkVmFsdWUpOwogICAgIE9wdGltaXphdGlvblJlc3VsdCByZXN1bHQgPSB0cnlQdXRCeVZhbE9w
dGltaXplKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBieVZhbEluZm8sIFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
KSB7CkBAIC05MTMsOSArOTEyLDkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VgogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwotICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRTdWJzY3JpcHQpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIE9wdGltaXphdGlvblJlc3VsdCByZXN1
bHQgPSB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKGV4ZWMsIG9iamVjdCwgc3Vic2NyaXB0LCBi
eVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSk7CkBAIC05MzQs
OSArOTMzLDkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZQogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CiAgICAgCi0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2VWYWx1ZSk7Ci0gICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFN1YnNjcmlwdCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHZtLCBlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6
OmRlY29kZSh2bSwgZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKTsKIAogICAgIHB1dEJ5VmFsKGV4ZWMsIGJhc2VW
YWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKIH0KQEAgLTk0Nyw5ICs5NDYsOSBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWCiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
ICAgICAKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZVZhbHVlKTsKLSAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29k
ZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHZtLCBlbmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVj
dCgpKTsKICAgICBkaXJlY3RQdXRCeVZhbChleGVjLCBhc09iamVjdChiYXNlVmFsdWUpLCBzdWJz
Y3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOwogfQpAQCAtOTg3LDcgKzk4Niw3IEBAIHN0YXRpYyBT
bG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlOjpIb3N0KSB7CiAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShh
c09iamVjdChjYWxsZWUpKTsKLSAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAg
ICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGU8SlNWYWx1
ZTo6U2tpcElmRXhjZXB0aW9uUGVuZGluZz4odm0sIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihl
eGVjQ2FsbGVlKSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAg
ICAgICAgdm0uZ2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCkBA
IC0xMDE2LDcgKzEwMTUsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RD
YWxsCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCkgewogICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjQ2FsbGVlKTsKICAgICAg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwotICAgICAgICB2bS5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZTxKU1ZhbHVlOjpTa2lwSWZFeGNlcHRpb25QZW5kaW5nPih2bSwgY29u
c3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KAogICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2Fs
bFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRh
YmxlQWRkcmVzcygpLApAQCAtMTIyNyw3ICsxMjI2LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZUxlcwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCi0gICAgcmV0dXJuIGpzTGVz
czx0cnVlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AyKSk7CisgICAgcmV0dXJuIGpzTGVzczx0cnVlPihleGVjLCBKU1ZhbHVlOjpk
ZWNvZGUodm0sIGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDIpKTsK
IH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpCkBAIC0xMjM1LDcgKzEyMzQsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlTGVzCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBqc0xlc3NFcTx0cnVlPihl
eGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKSk7CisgICAgcmV0dXJuIGpzTGVzc0VxPHRydWU+KGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2
bSwgZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMikpOwogfQogCiBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CkBAIC0xMjQzLDcgKzEyNDIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlR3JlCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBqc0xlc3M8ZmFsc2U+KGV4ZWMsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpKTsK
KyAgICByZXR1cm4ganNMZXNzPGZhbHNlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29k
ZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDEpKTsKIH0KIAogc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXJFcShFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC0x
MjUxLDcgKzEyNTAsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3Jl
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKIAotICAgIHJldHVybiBqc0xlc3NFcTxmYWxzZT4oZXhlYywgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSkpOworICAg
IHJldHVybiBqc0xlc3NFcTxmYWxzZT4oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVk
T3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKSk7CiB9CiAKIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVFcShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkBAIC0xMjU5LDcgKzEy
NTgsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoCiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKGV4ZWMsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShleGVjLCBKU1ZhbHVlOjpk
ZWNvZGUodm0sIGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDIpKTsK
IH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMjg0LDggKzEyODMsOCBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAotICAgIEpTVmFs
dWUgc3JjMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIHNyYzIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CisgICAgSlNWYWx1ZSBzcmMxID0gSlNWYWx1
ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsKKyAgICBKU1ZhbHVlIHNyYzIgPSBKU1ZhbHVlOjpk
ZWNvZGUodm0sIGVuY29kZWRPcDIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFs
KGV4ZWMsIHNyYzEsIHNyYzIpOwogfQpAQCAtMTMwMSw3ICsxMzAwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1
ZSBzaXplVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoc2l6ZSk7CisgICAgSlNWYWx1ZSBzaXplVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIHNpemUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CiAKQEAgLTEzNjYsNyArMTM2NSw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk4KICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmNDZWxsKTsKLSAgICBKU1ZhbHVlIG5hbWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE5hbWUpOworICAgIEpTVmFsdWUgbmFtZSA9IEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZE5hbWUpOwogICAgIGZ1bmMtPnNldEZ1bmN0aW9uTmFtZShleGVjLCBuYW1l
KTsKIH0KIApAQCAtMTc0NCw5ICsxNzQzLDkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SW5kZXgoRQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBKU1ZhbHVlIGFycmF5VmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFycmF5VmFsdWUpOworICAgIEpTVmFsdWUgYXJyYXlWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZEFycmF5VmFsdWUpOwogICAgIEFTU0VSVChp
c0pTQXJyYXkoYXJyYXlWYWx1ZSkpOwotICAgIGFzQXJyYXkoYXJyYXlWYWx1ZSktPnB1dERpcmVj
dEluZGV4KGV4ZWMsIGluZGV4LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisgICAg
YXNBcnJheShhcnJheVZhbHVlKS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIEpTVmFsdWU6
OmRlY29kZSh2bSwgZW5jb2RlZFZhbHVlKSk7CiB9CiAKIGVudW0gY2xhc3MgQWNjZXNzb3JUeXBl
IHsKQEAgLTE3OTcsNyArMTc5Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRH
ZXR0ZXJCeVYKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCi0gICAgcHV0QWNjZXNzb3JCeVZhbChleGVjLCBhc09i
amVjdChiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLCBhdHRyaWJ1dGUs
IGFzT2JqZWN0KGdldHRlciksIEFjY2Vzc29yVHlwZTo6R2V0dGVyKTsKKyAgICBwdXRBY2Nlc3Nv
ckJ5VmFsKGV4ZWMsIGFzT2JqZWN0KGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRT
dWJzY3JpcHQpLCBhdHRyaWJ1dGUsIGFzT2JqZWN0KGdldHRlciksIEFjY2Vzc29yVHlwZTo6R2V0
dGVyKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFNldHRlckJ5VmFsKEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2Ny
aXB0LCBpbnQzMl90IGF0dHJpYnV0ZSwgSlNDZWxsKiBzZXR0ZXIpCkBAIC0xODA1LDcgKzE4MDQs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0U2V0dGVyQnlWCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKIAotICAgIHB1dEFjY2Vzc29yQnlWYWwoZXhlYywgYXNPYmplY3QoYmFzZSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KSwgYXR0cmlidXRlLCBhc09iamVjdChzZXR0ZXIpLCBB
Y2Nlc3NvclR5cGU6OlNldHRlcik7CisgICAgcHV0QWNjZXNzb3JCeVZhbChleGVjLCBhc09iamVj
dChiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkU3Vic2NyaXB0KSwgYXR0cmlidXRl
LCBhc09iamVjdChzZXR0ZXIpLCBBY2Nlc3NvclR5cGU6OlNldHRlcik7CiB9CiAKICNpZiBVU0Uo
SlNWQUxVRTY0KQpAQCAtMTgxNyw4ICsxODE2LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEdldHRlclNldAogICAgIEFTU0VSVChvYmplY3QgJiYgb2JqZWN0LT5pc09iamVjdCgp
KTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KG9iamVjdCk7CiAKLSAgICBK
U1ZhbHVlIGdldHRlciA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkR2V0dGVyVmFsdWUpOwotICAg
IEpTVmFsdWUgc2V0dGVyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTZXR0ZXJWYWx1ZSk7Cisg
ICAgSlNWYWx1ZSBnZXR0ZXIgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRHZXR0ZXJWYWx1
ZSk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRTZXR0
ZXJWYWx1ZSk7CiAgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IHNldHRlci5pc09iamVj
dCgpKTsKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0dGVyLCBzZXR0ZXIpOwogICAgIENv
bW1vblNsb3dQYXRoczo6cHV0RGlyZWN0QWNjZXNzb3JXaXRoUmVpZnkodm0sIGV4ZWMsIGJhc2VP
YmplY3QsIHVpZCwgYWNjZXNzb3IsIGF0dHJpYnV0ZSk7CkBAIC0xODU1LDggKzE4NTQsOCBAQCBp
bnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBK
U1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEhhc0luc3Rh
bmNlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkVmFs
dWUpOworICAgIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwg
ZW5jb2RlZEhhc0luc3RhbmNlKTsKIAogICAgIGlmIChjb25zdHJ1Y3Rvci0+aGFzSW5zdGFuY2Uo
ZXhlYywgdmFsdWUsIGhhc0luc3RhbmNlVmFsdWUpKQogICAgICAgICByZXR1cm4gMTsKQEAgLTIw
MTUsOCArMjAxNCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKLSAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVj
b2RlKHZtLCBlbmNvZGVkU3Vic2NyaXB0KTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gZ2V0QnlW
YWwoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
cihPVVJfUkVUVVJOX0FERFJFU1MpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0yMDI4LDggKzIwMjcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdlCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwotICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1
ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRTdWJzY3JpcHQpOwogICAg
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcyA9IFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKTsKICAgICBPcHRpbWl6YXRpb25SZXN1bHQgcmVzdWx0ID0gdHJ5R2V0QnlW
YWxPcHRpbWl6ZShleGVjLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgYnlWYWxJbmZvLCByZXR1cm5B
ZGRyZXNzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMjA0Niw4
ICsyMDQ1LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpOwotICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
dm0sIGVuY29kZWRTdWJzY3JpcHQpOwogICAgIAogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSk7CiAgICAgQVNTRVJUKHN1YnNjcmlwdC5pc1VJbnQzMkFzQW55SW50KCkpOwpAQCAtMjA5
Myw5ICsyMDkyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpOwotICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRTdWJzY3JpcHQpOwotICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHZtLCBlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRTdWJzY3JpcHQpOworCiAgICAgQVNTRVJUKGJhc2VWYWx1ZS5p
c09iamVjdCgpKTsKICAgICBBU1NFUlQoc3Vic2NyaXB0LmlzVUludDMyQXNBbnlJbnQoKSk7CiAK
QEAgLTIxMTQsOCArMjExMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2UKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7Ci0gICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29k
ZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5j
b2RlZFN1YnNjcmlwdCk7CiAgICAgCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKExJS0VM
WShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKQEAgLTIxNTMsNyArMjE1Miw3IEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU09iamVjdCogYmFzZU9iaiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSkudG9PYmplY3QoZXhlYyk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBKU1ZhbHVlOjpk
ZWNvZGUodm0sIGVuY29kZWRCYXNlKS50b09iamVjdChleGVjKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMTc1LDkgKzIxNzQsOSBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmpl
Y3QqIGJhc2VPYmogPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnRvT2JqZWN0KGV4ZWMp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkQmFz
ZSkudG9PYmplY3QoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwotICAgIEpTVmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpOworICAgIEpT
VmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkS2V5KTsKICAgICBpZiAoIWJh
c2VPYmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjIwMiw3ICsyMjAxLDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoUwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUob2Jq
ZWN0VmFsdWUpLnRvT2JqZWN0KGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIG9iamVjdFZhbHVlKS50b09iamVjdChleGVjKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9
IGpzQ2FzdDxKU1Njb3BlKj4oY3VycmVudFNjb3BlQ2VsbCk7CkBAIC0yMjIyLDkgKzIyMjEsOSBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwotICAgIAor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSk7Cisg
ICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZFByb3RvKTsKKwog
ICAgIGJvb2wgcmVzdWx0ID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1
ZSwgcHJvdG8pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkp
OwogfQpAQCAtMjIzMyw5ICsyMjMyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFByb3RvKTsKLSAgICAKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHZtLCBlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNv
ZGUodm0sIGVuY29kZWRQcm90byk7CisKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKICAgICAKICAgICBib29sIHJlc3VsdCA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uo
ZXhlYywgdmFsdWUsIHByb3RvKTsKQEAgLTIyNDcsOSArMjI0Niw5IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkUHJvdG8pOwotICAgIAorICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodm0sIGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZFByb3RvKTsKKwogICAgIGJvb2wgcmVzdWx0ID0gSlNPYmplY3Q6OmRlZmF1
bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1ZSwgcHJvdG8pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSk7CiAgICAgCkBAIC0yMjcw
LDcgKzIyNjksNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1lCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQXJndW1lbnRzKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIHNpemVGcmFtZUZvclZhcmFyZ3Mo
ZXhlYywgdm0sIGFyZ3VtZW50cywgbnVtVXNlZFN0YWNrU2xvdHMsIGZpcnN0VmFyQXJnT2Zmc2V0
KTsKIH0KIApAQCAtMjI4Niw3ICsyMjg1LDcgQEAgQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblNldHVwVgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMg
PSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRBcmd1bWVudHMpOwogICAgIHNldHVwVmFyYXJn
c0ZyYW1lKGV4ZWMsIG5ld0NhbGxGcmFtZSwgYXJndW1lbnRzLCBmaXJzdFZhckFyZ09mZnNldCwg
bGVuZ3RoKTsKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQpAQCAtMjI5NSw3ICsyMjk0LDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hDaGFyVwogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7Ci0gICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CisgICAg
SlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRLZXkpOwogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAKICAgICBTaW1wbGVKdW1wVGFi
bGUmIGp1bXBUYWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwpA
QCAtMjMxNSw3ICsyMzE0LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hJ
bW1XaQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEtleSk7CisgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29k
ZWRLZXkpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAK
ICAgICBTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKHRhYmxlSW5kZXgpOwpAQCAtMjMzNCw3ICsyMzMzLDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25Td2l0Y2hTdHJpbgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBrZXkg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CisgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVl
OjpkZWNvZGUodm0sIGVuY29kZWRLZXkpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKQEAgLTI0NTQsNyArMjQ1Myw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UaHJvdyhFeGVjU3QKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1Zh
bHVlIGV4Y2VwdGlvblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRFeGNlcHRpb25WYWx1
ZSk7CisgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5j
b2RlZEV4Y2VwdGlvblZhbHVlKTsKICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhj
ZXB0aW9uVmFsdWUpOwogCiAgICAgLy8gUmVzdWx0cyBzdG9yZWQgb3V0LW9mLWJhbmQgaW4gdm0u
dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cgJiB2bS5jYWxsRnJhbWVGb3JDYXRjaApAQCAtMjQ5Myw2
ICsyNDkyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldyaXRlQmFycmllcgogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CisgICAgSW50ZWdyaXR5OjpmYXN0QXVkaXRDZWxsKHZtLCBjZWxsKTsKICAg
ICB2bS5oZWFwLndyaXRlQmFycmllclNsb3dQYXRoKGNlbGwpOwogfQogCkBAIC0yNTQwLDggKzI1
NDAsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByCiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKICAgICAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKKyAgICBK
U1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMSk7CisgICAgSlNWYWx1
ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDIpOwogICAgIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZXhlYywgb3AxLCBvcDIpKTsKIH0KQEAgLTI1NTEsOCAr
MjU1MSw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2YKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOwogICAgIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOworICAg
IEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsKKyAgICBKU1Zh
bHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMik7CiAKICAgICBhcml0aFBy
b2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0FkZChleGVjLCBvcDEsIG9wMik7CkBAIC0yNTc3LDggKzI1NzcsOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBKU1Zh
bHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKKyAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6
OmRlY29kZSh2bSwgZW5jb2RlZE9wMSk7CisgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNv
ZGUodm0sIGVuY29kZWRPcDIpOwogCiAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBh
ZGRJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0yNjEx
LDggKzI2MTEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOworICAg
IEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsKKyAgICBKU1Zh
bHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMik7CiAKICAgICBhdXRvIG5v
bk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlQWRkTm9PcHRpbWl6ZTsKICAgICBpZiAo
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBhZGRJQy0+YXJpdGhQcm9maWxlKCkpCkBAIC0y
NjMwLDEwICsyNjMwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmEKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIAotICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDEpOwotICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDIpOwotICAgIAorCisgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVu
Y29kZWRPcDEpOworICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVk
T3AyKTsKKwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBZGQoZXhlYywgb3AxLCBvcDIpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMjY0MSw4ICsyNjQxLDkgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYQogCiBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkTXVsKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKLSAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKLSAgICBKU1ZhbHVl
IG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsK
KyAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMik7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTXVsKGV4ZWMsIG9wMSwgb3AyKSk7CiB9CkBAIC0y
NjUxLDggKzI2NTIsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9m
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSk7Ci0gICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7Cisg
ICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDEpOworICAgIEpT
VmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AyKTsKIAogICAgIGlmIChz
aG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMpCiAgICAgICAgIGFyaXRoUHJvZmlsZS5vYnNlcnZl
TEhTQW5kUkhTKG9wMSwgb3AyKTsKQEAgLTI2ODYsNyArMjY4Nyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50
ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwogICAgIGlmIChBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKLSAgICAgICAgYXJpdGhQcm9maWxl
LT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpKTsKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5k
UkhTKEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZSh2bSwg
ZW5jb2RlZE9wMikpOwogICAgIG11bElDLT5nZW5lcmF0ZU91dE9mTGluZShleGVjLT5jb2RlQmxv
Y2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKIAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQpA
QCAtMjcxMiw3ICsyNzEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYQogCiAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9m
aWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7Ci0gICAgYXJpdGhQcm9maWxlLT5vYnNl
cnZlTEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKTsKKyAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1
ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3Ay
KSk7CiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZU11bFByb2Zp
bGVkTm9PcHRpbWl6ZTsKICAgICBtdWxJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoZXhlYy0+Y29kZUJs
b2NrKCksIG5vbk9wdGltaXplVmFyaWFudCk7CiAKQEAgLTI3MzgsOSArMjczOSw5IEBAIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHVucHIKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAKLSAgICBKU1ZhbHVlIG9w
ZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwotICAgIAorCisgICAgSlNW
YWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3BlcmFuZCk7CisKICAg
ICBKU1ZhbHVlIHByaW1WYWx1ZSA9IG9wZXJhbmQudG9QcmltaXRpdmUoZXhlYywgUHJlZmVyTnVt
YmVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICAKQEAgLTI3NTgsNyArMjc1OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHByb2YKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICBKU1ZhbHVl
IG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOworICAgIEpTVmFsdWUg
b3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wZXJhbmQpOwogICAgIGFyaXRo
UHJvZmlsZS5vYnNlcnZlTEhTKG9wZXJhbmQpOwogICAgIAogICAgIEpTVmFsdWUgcHJpbVZhbHVl
ID0gb3BlcmFuZC50b1ByaW1pdGl2ZShleGVjKTsKQEAgLTI3OTQsOCArMjc5NSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXIKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAKLSAgICBKU1ZhbHVlIG9w
ZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOworCisgICAgSlNWYWx1ZSBv
cGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3BlcmFuZCk7CiAKICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG5lZ0lDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4MjgsNyArMjgyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXIKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAK
LSAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwor
ICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wZXJhbmQp
OwogCiAgICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbmVnSUMtPmFyaXRoUHJv
ZmlsZSgpKQogICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CkBAIC0y
ODUxLDkgKzI4NTIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cgogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkU3ViKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikKIHsKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKLSAg
ICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6
ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKTsKKyAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29k
ZSh2bSwgZW5jb2RlZE9wMik7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3ViKGV4
ZWMsIG9wMSwgb3AyKSk7CiB9CiAKQEAgLTI4NjEsOCArMjg2Myw4IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2YKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKTsKLSAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsK
KyAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgZW5jb2RlZE9wMSk7CisgICAg
SlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDIpOwogCiAgICAgaWYg
KHNob3VsZE9ic2VydmVMSFNBbmRSSFNUeXBlcykKICAgICAgICAgYXJpdGhQcm9maWxlLm9ic2Vy
dmVMSFNBbmRSSFMob3AxLCBvcDIpOwpAQCAtMjg5Nyw3ICsyODk5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYQogCiAgICAgYXV0byBub25PcHRpbWl6ZVZhcmlh
bnQgPSBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemU7CiAgICAgaWYgKEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpKQotICAgICAgICBhcml0aFByb2Zp
bGUtPm9ic2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOworICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNB
bmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKHZtLCBlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBlbmNvZGVkT3AyKSk7CiAgICAgc3ViSUMtPmdlbmVyYXRlT3V0T2ZMaW5lKGV4ZWMtPmNvZGVC
bG9jaygpLCBub25PcHRpbWl6ZVZhcmlhbnQpOwogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CkBAIC0yOTIyLDcgKzI5MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhCiAKICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFBy
b2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKLSAgICBhcml0aFByb2ZpbGUtPm9i
c2VydmVMSFNBbmRSSFMoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMikpOworICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhKU1Zh
bHVlOjpkZWNvZGUodm0sIGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRP
cDIpKTsKICAgICBhdXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViUHJv
ZmlsZWROb09wdGltaXplOwogICAgIHN1YklDLT5nZW5lcmF0ZU91dE9mTGluZShleGVjLT5jb2Rl
QmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNTAxMzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRs
ZUhvc3RDYWxsCiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6SG9zdCkgewogICAg
ICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlY0NhbGxlZSk7CiAg
ICAgICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7Ci0gICAg
ICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICB2bS5ob3N0Q2FsbFJl
dHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlPEpTVmFsdWU6OlNraXBJZkV4Y2VwdGlvblBlbmRp
bmc+KHZtLCBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwogICAgICAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENv
ZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC0xNDYzLDcgKzE0NjMsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5U
eXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlw
ZTo6SG9zdCkgewogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
Q2FsbGVlKTsKICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkp
OwotICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0
cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgdm0uaG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZTxKU1ZhbHVlOjpTa2lwSWZFeGNlcHRpb25Q
ZW5kaW5nPih2bSwgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwog
ICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBleGVjQ2FsbGVlLCBMTEludDo6
Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsKICAg
ICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9t
aWNzT2JqZWN0LmNwcAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw3ICs0Njks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0CiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKLSAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFs
dWU6OmRlY29kZShpbmRleCksIEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CisgICAgSlNWYWx1
ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKHZtLCBiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBpbmRleCksIEpTVmFsdWU6OmRlY29kZSh2bSwgb3BlcmFuZCl9OwogICAgIHJldHVybiBhdG9t
aWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZXhlYywgYXJncywgQWRkRnVuYygpKTsKIH0KIApAQCAt
NDc3LDcgKzQ3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXQK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwotICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShi
YXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQpfTsK
KyAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpLCBKU1ZhbHVl
OjpkZWNvZGUodm0sIGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBvcGVyYW5kKX07CiAgICAg
cmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBleGVjLCBhcmdzLCBBbmRGdW5jKCkp
OwogfQogCkBAIC00ODUsNyArNDg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BdAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1
ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUo
ZXhwZWN0ZWQpLCBKU1ZhbHVlOjpkZWNvZGUobmV3VmFsdWUpfTsKKyAgICBKU1ZhbHVlIGFyZ3Nb
XSA9IHtKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGluZGV4
KSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBleHBlY3RlZCksIEpTVmFsdWU6OmRlY29kZSh2bSwgbmV3
VmFsdWUpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGV4ZWMsIGFy
Z3MsIENvbXBhcmVFeGNoYW5nZUZ1bmMoKSk7CiB9CiAKQEAgLTQ5Myw3ICs0OTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0CiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAg
ICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29k
ZShpbmRleCksIEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CisgICAgSlNWYWx1ZSBhcmdzW10g
PSB7SlNWYWx1ZTo6ZGVjb2RlKHZtLCBiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBpbmRleCks
IEpTVmFsdWU6OmRlY29kZSh2bSwgb3BlcmFuZCl9OwogICAgIHJldHVybiBhdG9taWNPcGVyYXRp
b25XaXRoQXJncyh2bSwgZXhlYywgYXJncywgRXhjaGFuZ2VGdW5jKCkpOwogfQogCkBAIC01MDEs
MTQgKzUwMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0CiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKLSAgICByZXR1cm4gaXNMb2NrRnJlZShleGVjLCBKU1ZhbHVlOjpkZWNv
ZGUoc2l6ZSkpOworICAgIHJldHVybiBpc0xvY2tGcmVlKGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2
bSwgc2l6ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0
b21pY3NMb2FkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpT
VmFsdWUgaW5kZXgpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1Zh
bHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShpbmRleCl9OworICAgIEpTVmFsdWUg
YXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZSh2bSwgYmFzZSksIEpTVmFsdWU6OmRlY29kZSh2bSwg
aW5kZXgpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGV4ZWMsIGFy
Z3MsIExvYWRGdW5jKCkpOwogfQogCkBAIC01MTYsNyArNTE2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25BdAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgSlNWYWx1ZSBh
cmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBK
U1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OworICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6
OmRlY29kZSh2bSwgYmFzZSksIEpTVmFsdWU6OmRlY29kZSh2bSwgaW5kZXgpLCBKU1ZhbHVlOjpk
ZWNvZGUodm0sIG9wZXJhbmQpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Mo
dm0sIGV4ZWMsIGFyZ3MsIE9yRnVuYygpKTsKIH0KIApAQCAtNTI0LDcgKzUyNCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXQKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwotICAg
IEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQpfTsKKyAgICBKU1ZhbHVlIGFyZ3NbXSA9
IHtKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUodm0sIGluZGV4KSwg
SlNWYWx1ZTo6ZGVjb2RlKHZtLCBvcGVyYW5kKX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlv
bldpdGhBcmdzKHZtLCBleGVjLCBhcmdzLCBTdG9yZUZ1bmMoKSk7CiB9CiAKQEAgLTUzMiw3ICs1
MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0CiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKLSAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpT
VmFsdWU6OmRlY29kZShpbmRleCksIEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CisgICAgSlNW
YWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKHZtLCBiYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KHZtLCBpbmRleCksIEpTVmFsdWU6OmRlY29kZSh2bSwgb3BlcmFuZCl9OwogICAgIHJldHVybiBh
dG9taWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZXhlYywgYXJncywgU3ViRnVuYygpKTsKIH0KIApA
QCAtNTQwLDcgKzU0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXQKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwotICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29k
ZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQp
fTsKKyAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUodm0sIGJhc2UpLCBKU1Zh
bHVlOjpkZWNvZGUodm0sIGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBvcGVyYW5kKX07CiAg
ICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBleGVjLCBhcmdzLCBYb3JGdW5j
KCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsOCBAQCBzdHJ1Y3QgTWV0aG9k
VGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjplc3RpbWF0ZWRTaXplLCBcCiAgICAgICAgICZD
bGFzc05hbWU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMsIFwKICAgICB9LCBcCi0gICAgQ2xhc3NO
YW1lOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUKKyAgICBDbGFzc05hbWU6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSwgXAorICAgIHNpemVvZihDbGFzc05hbWUpCiAKIHN0cnVjdCBDbGFzc0luZm8gewog
ICAgIC8vIEEgc3RyaW5nIGRlbm90aW5nIHRoZSBjbGFzcyBuYW1lLiBFeGFtcGxlOiAiV2luZG93
Ii4KQEAgLTIyMSw2ICsyMjIsNyBAQCBzdHJ1Y3QgQ2xhc3NJbmZvIHsKICAgICBNZXRob2RUYWJs
ZSBtZXRob2RUYWJsZTsKIAogICAgIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlTdG9yYWdlVHlw
ZTsKKyAgICB1bnNpZ25lZCBjcHBTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
cmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHkuaCIKICNpbmNsdWRl
ICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIlNsb3dQYXRoUmV0dXJuVHlwZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgJKHJldmlzaW9uIDI1MDEzNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbXBsZXRlU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
IUNlbGxUeXBlOjpuZWVkc0Rlc3RydWN0aW9uLCAiIik7Ci0gICAgICAgIHJldHVybiAmdm0uanNW
YWx1ZUdpZ2FjYWdlQ2VsbFNwYWNlOworICAgICAgICByZXR1cm4gJnZtLnZhcmlhYmxlU2l6ZWRD
ZWxsU3BhY2U7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlcyBhbiBhcmd1bWVudHMgb2JqZWN0IGJ1
dCBsZWF2ZXMgaXQgdW5pbml0aWFsaXplZC4gVGhpcyBpcyBkYW5nZXJvdXMgaWYgd2UgR0Mgcmln
aHQKQEAgLTE4NCw2ICsxODQsOCBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fbWluQ2FwYWNp
dHk7IC8vIFRoZSBtYXggb2YgdGhpcyBhbmQgbGVuZ3RoIGRldGVybWluZXMgdGhlIGNhcGFjaXR5
IG9mIHRoaXMgb2JqZWN0LiBJdCBtYXkgYmUgdGhlIGFjdHVhbCBjYXBhY2l0eSwgb3IgbWF5YmUg
c29tZXRoaW5nIHNtYWxsZXIuIFdlIGFycmFuZ2UgaXQgdGhpcyB3YXkgdG8gYmUga2luZCB0byB0
aGUgSklUcy4KICAgICB1c2luZyBNYXBwZWRBcmd1bWVudHMgPSBDYWdlZEJhcnJpZXJQdHI8R2ln
YWNhZ2U6OlByaW1pdGl2ZSwgYm9vbD47CiAgICAgTWFwcGVkQXJndW1lbnRzIG1fbWFwcGVkQXJn
dW1lbnRzOyAvLyBJZiBub24tbnVsbCwgaXQgbWVhbnMgdGhhdCBsZW5ndGgsIGNhbGxlZSwgYW5k
IGNhbGxlciBhcmUgZnVsbHkgbWF0ZXJpYWxpemVkIHByb3BlcnRpZXMuCisKKyAgICBmcmllbmQg
Y2xhc3MgVk1JbnNwZWN0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAJKHJldmlzaW9uIDI1MDEzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQ2FpbyBMaW1h
IDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODMsMTIgKzgzLDYgQEAgSlNCaWdJbnQqIEpTQmlnSW50OjpjcmVhdGVaZXJvKFZN
JiB2bSkKICAgICByZXR1cm4gemVyb0JpZ0ludDsKIH0KIAotaW5saW5lIHNpemVfdCBKU0JpZ0lu
dDo6YWxsb2NhdGlvblNpemUodW5zaWduZWQgbGVuZ3RoKQotewotICAgIHNpemVfdCBzaXplV2l0
aFBhZGRpbmcgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHNpemVfdCk+KHNpemVv
ZihKU0JpZ0ludCkpOwotICAgIHJldHVybiBzaXplV2l0aFBhZGRpbmcgKyBsZW5ndGggKiBzaXpl
b2YoRGlnaXQpOwotfQotCiBKU0JpZ0ludCogSlNCaWdJbnQ6OnRyeUNyZWF0ZVdpdGhMZW5ndGgo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2
aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0
aWMgT3B0aW9uYWw8RGlnaXQ+IHRvU2hpZnRBbW91bnQoSlNCaWdJbnQqIHgpOwogCi0gICAgc3Rh
dGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIGlubGluZSBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgaW5saW5l
IHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKERpZ2l0KT4oc2l6ZW9mKEpTQmlnSW50KSk7CkBA
IC0yNDksOCArMjQ5LDE2IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCB1bnNpZ25lZCBtX2xlbmd0
aDsKICAgICBib29sIG1fc2lnbiB7IGZhbHNlIH07CisKKyAgICBmcmllbmQgY2xhc3MgVk1JbnNw
ZWN0b3I7CiB9OwogCitpbmxpbmUgc2l6ZV90IEpTQmlnSW50OjphbGxvY2F0aW9uU2l6ZSh1bnNp
Z25lZCBsZW5ndGgpCit7CisgICAgc2l6ZV90IHNpemVXaXRoUGFkZGluZyA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZjxzaXplb2Yoc2l6ZV90KT4oc2l6ZW9mKEpTQmlnSW50KSk7CisgICAgcmV0
dXJuIHNpemVXaXRoUGFkZGluZyArIGxlbmd0aCAqIHNpemVvZihEaWdpdCk7Cit9CisKIGlubGlu
ZSBKU0JpZ0ludCogYXNCaWdJbnQoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUu
YXNDZWxsKCktPmlzQmlnSW50KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZW5jb2RlKEpTVmFsdWUpOwog
ICAgIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFbmNvZGVkSlNWYWx1ZSk7CiAKKworICAgIGVudW0g
QXVkaXRUcmFpdCB7IFNraXBOb25lLCBTa2lwSWZFeGNlcHRpb25QZW5kaW5nIH07CisgICAgdGVt
cGxhdGU8QXVkaXRUcmFpdCA9IFNraXBOb25lPgorICAgIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShW
TSYsIEVuY29kZWRKU1ZhbHVlKTsKKwogICAgIGVudW0gSlNOdWxsVGFnIHsgSlNOdWxsIH07CiAg
ICAgZW51bSBKU1VuZGVmaW5lZFRhZyB7IEpTVW5kZWZpbmVkIH07CiAgICAgZW51bSBKU1RydWVU
YWcgeyBKU1RydWUgfTsKQEAgLTMxNyw2ICszMjIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKTsKICAgICBzdGF0aWMgVHJpU3RhdGUgcHVyZVN0cmljdEVxdWFsKEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpOwogCisgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2VsbE9yT3RoZXIoKSBj
b25zdDsKKwogICAgIGJvb2wgaXNDZWxsKCkgY29uc3Q7CiAgICAgSlNDZWxsKiBhc0NlbGwoKSBj
b25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50
ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCisjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0ltcGwuaD4KIApAQCAtMTg1LDYgKzE4NywyNCBAQCBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpk
ZWNvZGUoRW5jb2RlZEpTCiAgICAgcmV0dXJuIHY7CiB9CiAKKyNpZiBFTkFCTEUoSU5URUdSSVRZ
X0FVRElUUykKK3RlbXBsYXRlPEpTVmFsdWU6OkF1ZGl0VHJhaXQgdHJhaXQ+CitpbmxpbmUgSlNW
YWx1ZSBKU1ZhbHVlOjpkZWNvZGUoVk0mIHZtLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNWYWx1
ZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBkZWNvZGUoZW5jb2RlZEpTVmFsdWUpOworICAgIGlmICh0
cmFpdCA9PSBBdWRpdFRyYWl0OjpTa2lwSWZFeGNlcHRpb25QZW5kaW5nICYmIHZtLmV4Y2VwdGlv
bkZvckluc3BlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHY7CisgICAgSW50ZWdyaXR5OjpmYXN0
QXVkaXRDZWxsKHZtLCB2KTsKKyAgICByZXR1cm4gdjsKK30KKyNlbHNlCit0ZW1wbGF0ZTxKU1Zh
bHVlOjpBdWRpdFRyYWl0PgoraW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6ZGVjb2RlKFZNJiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEpTVmFsdWUpCit7CisgICAgcmV0dXJuIGRlY29kZShlbmNvZGVk
SlNWYWx1ZSk7Cit9CisjZW5kaWYKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiBpbmxpbmUgSlNW
YWx1ZTo6SlNWYWx1ZSgpCiB7CkBAIC0yODEsNiArMzAxLDExIEBAIGlubGluZSBib29sIEpTVmFs
dWU6OmlzQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIHRhZygpID09IENlbGxUYWc7CiB9CiAKK2lu
bGluZSBib29sIEpTVmFsdWU6OmlzQ2VsbE9yT3RoZXIoKSBjb25zdAoreworICAgIHJldHVybiAo
dGFnKCkgKyAxKSA+IENlbGxUYWc7Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzSW50MzIo
KSBjb25zdAogewogICAgIHJldHVybiB0YWcoKSA9PSBJbnQzMlRhZzsKQEAgLTQ4MCw2ICs1MDUs
MTEgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKICAgICByZXR1cm4gISh1
LmFzSW50NjQgJiBOb3RDZWxsTWFzayk7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVl
Ojppc0NlbGxPck90aGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISh1LmFzSW50NjQgPj4gNDgp
OworfQorCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0ludDMyKCkgY29uc3QKIHsKICAgICByZXR1
cm4gKHUuYXNJbnQ2NCAmIE51bWJlclRhZykgPT0gTnVtYmVyVGFnOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1MDEzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDUsNyArMzA1LDggQEAgc3RhdGljIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVu
dHMoRXhlY1N0YQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNvZGUodm0s
IHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJldHJpZXZlQXJndW1lbnRzKGV4ZWMsIHRoaXNP
YmopKTsKQEAgLTM2Niw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIoCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0
PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNGdW5jdGlv
biogdGhpc09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHZtLCB0aGlz
VmFsdWUpKTsKICAgICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIEpT
VmFsdWUgY2FsbGVyID0gcmV0cmlldmVDYWxsZXJGdW5jdGlvbihleGVjLCB0aGlzT2JqKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCShy
ZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTksNyArMTE5LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGZp
cnN0QXJndW1lbnQpOworICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2
bSwgZmlyc3RBcmd1bWVudCk7CiAKICAgICBpZiAoSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkpIHsKICAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBqc0J1ZmZlci0+aW1wbCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5oCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24s
ICIiKTsKLSAgICAgICAgcmV0dXJuICZ2bS5qc1ZhbHVlR2lnYWNhZ2VDZWxsU3BhY2U7CisgICAg
ICAgIHJldHVybiAmdm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKICAgICB9CiAKICAgICB1c2lu
ZyBCYXNlID0gSlNTeW1ib2xUYWJsZU9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAkocmV2aXNp
b24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
TW9kdWxlTmFtZXNwYWNlT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIAogICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiBt
X21vZHVsZVJlY29yZC5nZXQoKTsgfQpAQCAtMTAzLDYgKzEwMyw4IEBAIHByaXZhdGU6CiAgICAg
RXhwb3J0TWFwIG1fZXhwb3J0czsKICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9uYW1lczsKICAg
ICBXcml0ZUJhcnJpZXI8QWJzdHJhY3RNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworCisg
ICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAJKHJldmlzaW9uIDI1
MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEpTQwogICAgIENBU0UoTW9kdWxlRW52aXJvbm1lbnRUeXBlKQogICAgIENBU0UoU3Ry
aWN0RXZhbEFjdGl2YXRpb25UeXBlKQogICAgIENBU0UoV2l0aFNjb3BlVHlwZSkKKyAgICBDQVNF
KE1vZHVsZU5hbWVzcGFjZU9iamVjdFR5cGUpCiAgICAgQ0FTRShSZWdFeHBPYmplY3RUeXBlKQog
ICAgIENBU0UoUHJveHlPYmplY3RUeXBlKQogICAgIENBU0UoSlNHZW5lcmF0b3JUeXBlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHJldmlzaW9uIDI1MDEzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEw
Niw2ICsxMDYsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFdpdGhTY29wZVR5cGUs
CiAgICAgLy8gRW5kIEpTU2NvcGUgdHlwZXMuCiAKKyAgICBNb2R1bGVOYW1lc3BhY2VPYmplY3RU
eXBlLAogICAgIFJlZ0V4cE9iamVjdFR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLAogICAgIEpT
R2VuZXJhdG9yVHlwZSwKQEAgLTEzOSw2ICsxNDAsMTggQEAgaW5saW5lIGNvbnN0ZXhwciBib29s
IGlzVHlwZWRBcnJheVR5cGUoSgogICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5
cGUpIC0gRmlyc3RUeXBlZEFycmF5VHlwZSkgPCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1
ZGluZ0RhdGFWaWV3OwogfQogCitpbmxpbmUgY29uc3RleHByIGJvb2wgaXNWYXJpYWJsZVNpemVk
VHlwZShKU1R5cGUgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSBCaWdJbnRUeXBlCisgICAgICAg
IHx8IHR5cGUgPT0gRGlyZWN0QXJndW1lbnRzVHlwZQorICAgICAgICB8fCB0eXBlID09IEZpbmFs
T2JqZWN0VHlwZQorICAgICAgICB8fCB0eXBlID09IExleGljYWxFbnZpcm9ubWVudFR5cGUKKyAg
ICAgICAgfHwgdHlwZSA9PSBNb2R1bGVFbnZpcm9ubWVudFR5cGUKKyAgICAgICAgfHwgdHlwZSA9
PSBNb2R1bGVOYW1lc3BhY2VPYmplY3RUeXBlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lv
biAyNTAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTA0LDYgKzUwNCwxMSBAQCBzdGF0aWMgdm9pZCByZWNvbXB1dGVE
ZXBlbmRlbnRPcHRpb25zKCkKIAogICAgIGlmICghT3B0aW9uczo6dXNlQ29kZUNhY2hlKCkpCiAg
ICAgICAgIE9wdGlvbnM6OmRpc2tDYWNoZVBhdGgoKSA9IG51bGxwdHI7CisKKyAgICBpZiAoT3B0
aW9uczo6cHJvYmFiaWxpdHlPZlJhbmRvbUludGVncml0eUNoZWNrcygpIDwgMCkKKyAgICAgICAg
T3B0aW9uczo6cHJvYmFiaWxpdHlPZlJhbmRvbUludGVncml0eUNoZWNrcygpID0gMDsKKyAgICBl
bHNlIGlmIChPcHRpb25zOjpwcm9iYWJpbGl0eU9mUmFuZG9tSW50ZWdyaXR5Q2hlY2tzKCkgPiAx
LjApCisgICAgICAgIE9wdGlvbnM6OnByb2JhYmlsaXR5T2ZSYW5kb21JbnRlZ3JpdHlDaGVja3Mo
KSA9IDEuMDsKIH0KIAogdm9pZCBPcHRpb25zOjppbml0aWFsaXplKCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkocmV2aXNpb24gMjUwMTM1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQ0LDYgKzM0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFwKICAgICB2KEJv
b2wsIGFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAsIGZhbHNlLCBOb3JtYWwsICJUaGlz
IHdpbGwgbWFrZSBzdXJlIHdlIGFsd2F5cyBnZW5lcmF0ZSBhIFBDVG9Db2RlT3JpZ2luTWFwIGZv
ciBKSVRlZCBjb2RlLiIpIFwKICAgICBcCisgICAgdihEb3VibGUsIHByb2JhYmlsaXR5T2ZSYW5k
b21JbnRlZ3JpdHlDaGVja3MsIDAuMDUsIE5vcm1hbCwgIlByb2JhYmlsaXR5IG9mIHJhbmRvbSBp
bnRlZ3JpdHkgY2hlY2tzIGluICUgKDAgLSAxMDApIikgXAogICAgIHYoQm9vbCwgdmVyaWZ5SGVh
cCwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoVW5zaWduZWQsIG51bWJlck9mR0ND
eWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbiwgMywgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
Y3BwCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTQgQEAgSlNWYWx1
ZSBQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcihFeGVjUwogICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBkaWZmZXJlbmNlcyBpbiBjdXN0b20gdmFsdWVzIGFuZCBjdXN0b20gYWNjZXNzb3JzLgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwMTQKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IG1fYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciA/IG1fdGhpc1ZhbHVlIDogSlNWYWx1ZShzbG90QmFzZSgpKTsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRoaXMtPmRv
bUF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbykpIHsKICAg
ICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAg
ICAgIHJldHVybiB0aHJvd0RPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihleGVjLCBzY29wZSwg
ZG9tQXR0cmlidXRlLT5jbGFzc0luZm8sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEuY3VzdG9tLmdldFZhbHVlKGV4ZWMs
IEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZGVjb2RlKHZtLCBtX2RhdGEuY3VzdG9tLmdldFZhbHVlKGV4ZWMsIEpTVmFsdWU6
OmVuY29kZSh0aGlzVmFsdWUpLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogSlNWYWx1ZSBQcm9wZXJ0
eVNsb3Q6OmN1c3RvbUFjY2Vzc29yR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTU1LDE0ICs1NSwxNCBAQCBKU1ZhbHVlIFByb3BlcnR5
U2xvdDo6Y3VzdG9tQWNjZXNzb3JHZXR0CiAgICAgaWYgKCFtX2RhdGEuY3VzdG9tQWNjZXNzb3Iu
Z2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGlmIChhdXRvIGRvbUF0dHJpYnV0ZSA9IHRo
aXMtPmRvbUF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
ICAgIGlmICghbV90aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZv
KSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgICAgICAgICAgcmV0dXJuIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbywgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
fQogICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS5jdXN0b21BY2Nlc3Nv
ci5nZXR0ZXJTZXR0ZXItPmdldHRlcigpKGV4ZWMsIEpTVmFsdWU6OmVuY29kZShtX3RoaXNWYWx1
ZSksIHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodm0sIG1fZGF0
YS5jdXN0b21BY2Nlc3Nvci5nZXR0ZXJTZXR0ZXItPmdldHRlcigpKGV4ZWMsIEpTVmFsdWU6OmVu
Y29kZShtX3RoaXNWYWx1ZSksIHByb3BlcnR5TmFtZSkpOwogfQogCiBKU1ZhbHVlIFByb3BlcnR5
U2xvdDo6Z2V0UHVyZVJlc3VsdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
Niw3ICs0MDYsNyBAQCBwcml2YXRlOgogQUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xv
dDo6Z2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBj
b25zdAogewogICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlVmFsdWUpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZShleGVjLT52bSgpLCBtX2RhdGEudmFsdWUpOwogICAgIGlmIChtX3Byb3BlcnR5
VHlwZSA9PSBUeXBlR2V0dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZXhlYyk7
CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVDdXN0b21BY2Nlc3NvcikKQEAgLTQxOCw3
ICs0MTgsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVZh
bHVlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodm0sIG1fZGF0YS52YWx1ZSk7CiAgICAgaWYgKG1f
cHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbkdldHRl
cihleGVjKTsKICAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUN1c3RvbUFjY2Vzc29yKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNDkgKzEw
MSw0OSBAQCB0ZW1wbGF0ZTxpbnQgTj4KIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodm0s
IHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0QmFja3JlZihleGVjLCBnbG9i
YWxPYmplY3QsIE4pKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1
dChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHZtLCB0aGlz
VmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGds
b2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmlucHV0KCkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25z
dHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVj
dG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHZtLCB0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihnbG9iYWxPYmplY3QtPnJlZ0V4
cEdsb2JhbERhdGEoKS5tdWx0aWxpbmUoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3Rvckxhc3RNYXRjaChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNWYWx1
ZTo6ZGVjb2RlKHZtLCB0aGlzVmFsdWUpKS0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldEJhY2ty
ZWYoZXhlYywgZ2xvYmFsT2JqZWN0LCAwKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yTGFzdFBhcmVuKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVl
OjpkZWNvZGUodm0sIHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0TGFzdFBh
cmVuKGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25z
dHJ1Y3RvckxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1ZhbHVl
OjpkZWNvZGUodm0sIHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0TGVmdENv
bnRleHQoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yUmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PFJlZ0V4cENvbnN0cnVjdG9yKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPihKU1Zh
bHVlOjpkZWNvZGUodm0sIHRoaXNWYWx1ZSkpLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0Umln
aHRDb250ZXh0KGV4ZWMsIGdsb2JhbE9iamVjdCkpOwogfQogCkBAIC0xNTEsOCArMTUxLDggQEAg
Ym9vbCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEV4ZWNTdGF0ZQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIGlmIChhdXRvIGNvbnN0cnVjdG9yID0ganNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rv
cio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpIHsKLSAgICAgICAgYXV0byogc3Ry
aW5nID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhleGVjKTsKKyAgICBpZiAoYXV0
byBjb25zdHJ1Y3RvciA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHZtLCB0aGlzVmFsdWUpKSkgeworICAgICAgICBhdXRvKiBzdHJpbmcgPSBK
U1ZhbHVlOjpkZWNvZGUodm0sIHZhbHVlKS50b1N0cmluZyhleGVjKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9i
amVjdCh2bSk7CkBAIC0xNjYsOCArMTY2LDggQEAgYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11
bHRpbGluZShFeGVjUwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChhdXRvIGNvbnN0cnVjdG9yID0g
anNEeW5hbWljQ2FzdDxSZWdFeHBDb25zdHJ1Y3Rvcio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSkpIHsKLSAgICAgICAgYm9vbCBtdWx0aWxpbmUgPSBKU1ZhbHVlOjpkZWNvZGUodmFs
dWUpLnRvQm9vbGVhbihleGVjKTsKKyAgICBpZiAoYXV0byBjb25zdHJ1Y3RvciA9IGpzRHluYW1p
Y0Nhc3Q8UmVnRXhwQ29uc3RydWN0b3IqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCB0aGlzVmFs
dWUpKSkgeworICAgICAgICBib29sIG11bHRpbGluZSA9IEpTVmFsdWU6OmRlY29kZSh2bSwgdmFs
dWUpLnRvQm9vbGVhbihleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCh2bSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9u
IDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMiArMTM3LDE0IEBAIGJvb2wgUmVnRXhwT2JqZWN0
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU08KIAogc3RhdGljIGJvb2wgcmVnRXhwT2JqZWN0U2V0TGFz
dEluZGV4U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4ganNDYXN0PFJlZ0V4cE9iamVjdCo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGV4ZWMsIEpTVmFsdWU6
OmRlY29kZSh2YWx1ZSksIHRydWUpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgcmV0
dXJuIGpzQ2FzdDxSZWdFeHBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodm0sIHRoaXNWYWx1ZSkp
LT5zZXRMYXN0SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZSksIHRydWUpOwog
fQogCiBzdGF0aWMgYm9vbCByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVl
KQogewotICAgIHJldHVybiBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgZmFs
c2UpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxSZWdFeHBP
YmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodm0sIHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZXhl
YywgSlNWYWx1ZTo6ZGVjb2RlKHZtLCB2YWx1ZSksIGZhbHNlKTsKIH0KIAogYm9vbCBSZWdFeHBP
YmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmgJKHJl
dmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFy
Z3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29tcGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydCghQ2VsbFR5cGU6Om5lZWRzRGVzdHJ1Y3Rpb24sICIiKTsKLSAgICAg
ICAgcmV0dXJuICZ2bS5qc1ZhbHVlR2lnYWNhZ2VDZWxsU3BhY2U7CisgICAgICAgIHJldHVybiAm
dm0udmFyaWFibGVTaXplZENlbGxTcGFjZTsKICAgICB9CiAKICAgICAvLyBDcmVhdGVzIGFuIGFy
Z3VtZW50cyBvYmplY3QgYnV0IGxlYXZlcyBpdCB1bmluaXRpYWxpemVkLiBUaGlzIGlzIGRhbmdl
cm91cyBpZiB3ZSBHQyByaWdodApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MzYsOCArOTM2LDggQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmlu
Z1BybwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIAog
ICAgIHJldHVybiByZXBsYWNlKAotICAgICAgICB2bSwgZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSksIEpTVmFsdWU6OmRlY29kZShzZWFyY2hWYWx1ZSksCi0gICAgICAgIEpTVmFsdWU6
OmRlY29kZShyZXBsYWNlVmFsdWUpKTsKKyAgICAgICAgdm0sIGV4ZWMsIEpTVmFsdWU6OmRlY29k
ZSh2bSwgdGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCBzZWFyY2hWYWx1ZSksCisgICAg
ICAgIEpTVmFsdWU6OmRlY29kZSh2bSwgcmVwbGFjZVZhbHVlKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlz
aW9uIDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03ODYsNiArNzg2LDggQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0
eU9mZnNldCBtX29mZnNldDsKIAogICAgIHVpbnQzMl90IG1fcHJvcGVydHlIYXNoOworCisgICAg
ZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyNTAxMzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
MSw2ICsyNTEsOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAj
aWYgVVNFKENGKQogICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1cnJlbnQoKSkKICNlbmRp
ZiAvLyBVU0UoQ0YpCisjaWYgRU5BQkxFKElOVEVHUklUWV9BVURJVFMpCisgICAgLCBtX2ludGVn
cml0eVJhbmRvbSgqdGhpcykKKyNlbmRpZgogICAgICwgaGVhcCgqdGhpcywgaGVhcFR5cGUpCiAg
ICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1v
cnlBbGxvY2F0b3I+KCkpCiAgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5p
cXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkp
CkBAIC0yNjksNyArMjcyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNh
Z2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVl
R2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CiAgICAgLCBpbW11dGFi
bGVCdXR0ZXJmbHlKU1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSW1tdXRhYmxlQnV0dGVy
Zmx5IEdpZ2FjYWdlIEpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzIiwgaGVhcCwgaW1tdXRhYmxl
QnV0dGVyZmx5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0
KCkpIC8vIEhhc2g6MHg3YTk0NTMwMAogICAgICwgY2VsbFNwYWNlKCJKU0NlbGwiLCBoZWFwLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNo
OjB4YWRmYjVhNzkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUNlbGxTcGFjZSgiSlNWYWx1ZSBHaWdh
Y2FnZSBKU0NlbGwiLCBoZWFwLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNh
Z2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyZjViMTAyYgorICAgICwgdmFyaWFibGVTaXpl
ZENlbGxTcGFjZSgiVmFyaWFibGUgU2l6ZWQgSlNDZWxsIiwgaGVhcCwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDJmNWIxMDJiIEZJ
WE1FIHJlY29tcHV0ZSBoYXNoLgogICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbFNwYWNlKCJEZXN0cnVj
dGlibGUgSlNDZWxsIiwgaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
ZmFzdE1hbGxvY0FsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweGJmZmYzZDczCiAgICAgLCBzdHJp
bmdTcGFjZSgiSlNTdHJpbmciLCBoZWFwLCBzdHJpbmdIZWFwQ2VsbFR5cGUuZ2V0KCksIGZhc3RN
YWxsb2NBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHg5MGNmNzU4ZgogICAgICwgZGVzdHJ1Y3Rp
YmxlT2JqZWN0U3BhY2UoIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0IiwgaGVhcCwgZGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBmYXN0TWFsbG9jQWxsb2NhdG9yLmdldCgpKSAvLyBI
YXNoOjB4NGY1ZWQ3YTkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNp
b24gMjUwMTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZS5oIgogI2luY2x1ZGUgIkZ1enplckFnZW50LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2lu
Y2x1ZGUgIkludGVncml0eS5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIklz
b0NlbGxTZXQuaCIKICNpbmNsdWRlICJJc29TdWJzcGFjZS5oIgpAQCAtMzEwLDYgKzMxMSwxMSBA
QCBwdWJsaWM6CiAgICAgLy8gR2xvYmFsIG9iamVjdCBpbiB3aGljaCBleGVjdXRpb24gYmVnYW4u
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmpl
Y3QoY29uc3QgQ2FsbEZyYW1lKikgY29uc3Q7CiAKKyAgICBXZWFrUmFuZG9tJiByYW5kb20oKSB7
IHJldHVybiBtX3JhbmRvbTsgfQorI2lmIEVOQUJMRShJTlRFR1JJVFlfQVVESVRTKQorICAgIElu
dGVncml0eTo6UmFuZG9tJiBpbnRlZ3JpdHlSYW5kb20oKSB7IHJldHVybiBtX2ludGVncml0eVJh
bmRvbTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbmV4dElEKCk7CiAKQEAg
LTMyMiw2ICszMjgsMTEgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBt
X3J1bkxvb3A7CiAjZW5kaWYKIAorICAgIFdlYWtSYW5kb20gbV9yYW5kb207CisjaWYgRU5BQkxF
KElOVEVHUklUWV9BVURJVFMpCisgICAgSW50ZWdyaXR5OjpSYW5kb20gbV9pbnRlZ3JpdHlSYW5k
b207CisjZW5kaWYKKwogcHVibGljOgogICAgIEhlYXAgaGVhcDsKICAgICAKQEAgLTM2Niw3ICsz
NzcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gV2hlbmV2ZXIgcG9zc2libGUsIHVzZSBzdWJz
cGFjZUZvcjxDZWxsVHlwZT4odm0pIHRvIGdldCBvbmUgb2YgdGhlc2Ugc3Vic3BhY2VzLgogICAg
IENvbXBsZXRlU3Vic3BhY2UgY2VsbFNwYWNlOwotICAgIENvbXBsZXRlU3Vic3BhY2UganNWYWx1
ZUdpZ2FjYWdlQ2VsbFNwYWNlOyAvLyBGSVhNRTogVGhpcyBzcGFjZSBpcyBwcm9ibGVtYXRpYyBi
ZWNhdXNlIHdlIGhhdmUgdGhpbmdzIGluIGhlcmUgbGlrZSBEaXJlY3RBcmd1bWVudHMgYW5kIFNj
b3BlZEFyZ3VtZW50czsgdGhvc2Ugc2hvdWxkIGJlIHNwbGl0IGludG8gSlNWYWx1ZU9PQiBjZWxs
cyBhbmQgSlNWYWx1ZVN0cmljdCBhdXhpbGlhcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mjg1OAorICAgIENvbXBsZXRlU3Vic3BhY2UgdmFyaWFibGVTaXpl
ZENlbGxTcGFjZTsgLy8gRklYTUU6IFRoaXMgc3BhY2UgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB3
ZSBoYXZlIHRoaW5ncyBpbiBoZXJlIGxpa2UgRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1
bWVudHM7IHRob3NlIHNob3VsZCBiZSBzcGxpdCBpbnRvIEpTVmFsdWVPT0IgY2VsbHMgYW5kIEpT
VmFsdWVTdHJpY3QgYXV4aWxpYXJpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI4NTgKICAgICBDb21wbGV0ZVN1YnNwYWNlIGRlc3RydWN0aWJsZUNlbGxTcGFj
ZTsKICAgICBDb21wbGV0ZVN1YnNwYWNlIHN0cmluZ1NwYWNlOwogICAgIENvbXBsZXRlU3Vic3Bh
Y2UgZGVzdHJ1Y3RpYmxlT2JqZWN0U3BhY2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSW50ZWdyaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSW50ZWdyaXR5LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSW50ZWdyaXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKKworI2lmIEVOQUJMRShJTlRF
R1JJVFlfQVVESVRTKQorCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgIlZNSW5zcGVj
dG9ySW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBJbnRlZ3JpdHkgewor
CituYW1lc3BhY2UgeworY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitSYW5k
b206OlJhbmRvbShWTSYgdm0pCit7CisgICAgcmVsb2FkQW5kQ2hlY2tTaG91bGRBdWRpdFNsb3co
dm0pOyAvLyBUaGlzIHdpbGwgaW5pdGlhbGl6ZSB0aGUgYXVkaXQgdHJpZ2dlciBiaXRzLgorfQor
Citib29sIFJhbmRvbTo6cmVsb2FkQW5kQ2hlY2tTaG91bGRBdWRpdFNsb3coVk0mIHZtKQorewor
ICAgIGlmICghT3B0aW9uczo6cHJvYmFiaWxpdHlPZlJhbmRvbUludGVncml0eUNoZWNrcygpKSB7
CisgICAgICAgIG1fdHJpZ2dlckJpdHMgPSAwOyAvLyBOZXZlciB0cmlnZ2VyLCBhbmQgZG9uJ3Qg
Ym90aGVyIHJlbG9hZGluZy4KKyAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICBkYXRh
TG9nTG4oImRpc2FibGVkIEludGVncml0eSBhdWRpdHM6IHRyaWdnZXIgYml0cyAiLCBSYXdQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fdHJpZ2dlckJpdHMpKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBSZWxvYWQgdGhlIHRyaWdnZXIgYml0cy4KKyAg
ICBtX3RyaWdnZXJCaXRzID0gMXVsbCA8PCA2MzsgLy8gU2V0IHRoZSB0ZXJtaW5hdG9yIGJpdCAo
aS5lLiAibmVlZCByZWxvYWQiKSBpbiB0aGUgaGlnaCBiaXQuCisKKyAgICB1aW50MzJfdCB0aHJl
c2hvbGQgPSBVSU5UX01BWCAqIE9wdGlvbnM6OnByb2JhYmlsaXR5T2ZSYW5kb21JbnRlZ3JpdHlD
aGVja3MoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mVHJpZ2dlckJpdHM7ICsr
aSkgeworICAgICAgICBib29sIHRyaWdnZXIgPSAodm0ucmFuZG9tKCkuZ2V0VWludDMyKCkgPD0g
dGhyZXNob2xkKTsKKyAgICAgICAgbV90cmlnZ2VyQml0cyA9IG1fdHJpZ2dlckJpdHMgfCAoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHRyaWdnZXIpIDw8IGkpOworICAgIH0KKyAgICBpZiAodmVyYm9z
ZSkKKyAgICAgICAgZGF0YUxvZ0xuKCJyZWxvYWRlZCBJbnRlZ3JpdHkgdHJpZ2dlciBiaXRzICIs
IFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV90cmlnZ2VyQml0cykpKTsKKyAg
ICBBU1NFUlQobV90cmlnZ2VyQml0cyA+PSAoMXVsbCA8PCA2MykpOworICAgIHJldHVybiB2bS5y
YW5kb20oKS5nZXRVaW50MzIoKSA+PSB0aHJlc2hvbGQ7Cit9CisKK3ZvaWQgYXVkaXRDZWxsU2l6
ZShWTSYgdm0sIEpTQ2VsbCogY2VsbCwgc2l6ZV90IG9wdGlvbmFsQWxsb2NhdG9yQ2VsbFNpemUp
Cit7CisgICAgVk1JbnNwZWN0b3I6OnZlcmlmeUNlbGxTaXplPFZNSW5zcGVjdG9yOjpSZWxlYXNl
QXNzZXJ0Pih2bSwgY2VsbCwgb3B0aW9uYWxBbGxvY2F0b3JDZWxsU2l6ZSk7Cit9CisKK3ZvaWQg
YXVkaXRDZWxsKFZNJiB2bSwgSlNDZWxsKiBjZWxsKQoreworICAgIFZNSW5zcGVjdG9yOjp2ZXJp
ZnlDZWxsPFZNSW5zcGVjdG9yOjpSZWxlYXNlQXNzZXJ0Pih2bSwgY2VsbCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEludGVncml0eQorfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5URUdSSVRZX0FVRElUUykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9J
bnRlZ3JpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50
ZWdyaXR5LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0lu
dGVncml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvR2lnYWNhZ2UuaD4KKworI2lmZGVmIE5ERUJV
RworI2RlZmluZSBFTkFCTEVfSU5URUdSSVRZX0FVRElUUyAwCisjZWxzZQorI2RlZmluZSBFTkFC
TEVfSU5URUdSSVRZX0FVRElUUyAxCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTQ2VsbDsKK2NsYXNzIFZNOworCituYW1lc3BhY2UgSW50ZWdyaXR5IHsKKworI2lmIEVOQUJM
RShJTlRFR1JJVFlfQVVESVRTKQorCitjbGFzcyBSYW5kb20geworcHVibGljOgorICAgIFJhbmRv
bShWTSYpOworCisgICAgQUxXQVlTX0lOTElORSBib29sIHNob3VsZEF1ZGl0KFZNJik7CisKK3By
aXZhdGU6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCByZWxvYWRBbmRDaGVja1Nob3VsZEF1
ZGl0U2xvdyhWTSYpOworCisgICAgdWludDY0X3QgbV90cmlnZ2VyQml0czsKKworICAgIC8vIFRo
ZSB0b3AgYml0IGlzIHJlc2VydmVkIGFzIGEgdGVybWluYXRpb24gYml0LiBIZW5jZSwgdGhlIG51
bWJlciBvZgorICAgIC8vIHRyaWdnZXIgYml0cyBpcyBhbHdheXMgMSBsZXNzIHRoYW4gd2lsbCBm
aXQgaW4gbV90cmlnZ2VyQml0cy4KKyAgICBzdGF0aWMgY29uc3RleHByIGludCBudW1iZXJPZlRy
aWdnZXJCaXRzID0gKHNpemVvZihtX3RyaWdnZXJCaXRzKSAqIDgpIC0gMTsKK307CisKK0FMV0FZ
U19JTkxJTkUgdm9pZCBmYXN0QXVkaXRDZWxsKFZNJiwgSlNDZWxsKik7CitBTFdBWVNfSU5MSU5F
IHZvaWQgZmFzdEF1ZGl0Q2VsbChWTSYsIEpTVmFsdWUpOworCitKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGF1ZGl0Q2VsbChWTSYsIEpTQ2VsbCopOworQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0Q2Vs
bChWTSYsIEpTVmFsdWUpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhdWRpdENlbGxTaXplKFZN
JiwgSlNDZWxsKiwgc2l6ZV90IG9wdGlvbmFsQWxsb2NhdG9yQ2VsbFNpemUgPSAwKTsKKworQUxX
QVlTX0lOTElORSB2b2lkIHJhbmRvbUF1ZGl0Q2VsbChWTSYsIEpTQ2VsbCopOworQUxXQVlTX0lO
TElORSB2b2lkIHJhbmRvbUF1ZGl0Q2VsbChWTSYsIEpTVmFsdWUpOworQUxXQVlTX0lOTElORSB2
b2lkIHJhbmRvbUF1ZGl0Q2VsbFNpemUoVk0mLCBKU0NlbGwqLCBzaXplX3Qgb3B0aW9uYWxBbGxv
Y2F0b3JDZWxsU2l6ZSA9IDApOworCisjZWxzZQorCitBTFdBWVNfSU5MSU5FIHZvaWQgZmFzdEF1
ZGl0Q2VsbChWTSYsIEpTQ2VsbCopIHsgfQorQUxXQVlTX0lOTElORSB2b2lkIGZhc3RBdWRpdENl
bGwoVk0mLCBKU1ZhbHVlKSB7IH0KK0FMV0FZU19JTkxJTkUgdm9pZCBhdWRpdENlbGwoVk0mLCBK
U0NlbGwqKSB7IH0KK0FMV0FZU19JTkxJTkUgdm9pZCBhdWRpdENlbGwoVk0mLCBKU1ZhbHVlKSB7
IH0KK0FMV0FZU19JTkxJTkUgdm9pZCBhdWRpdENlbGxTaXplKFZNJiwgSlNDZWxsKiwgc2l6ZV90
ID0gMCkgeyB9CitBTFdBWVNfSU5MSU5FIHZvaWQgcmFuZG9tQXVkaXRDZWxsKFZNJiwgSlNDZWxs
KikgeyB9CitBTFdBWVNfSU5MSU5FIHZvaWQgcmFuZG9tQXVkaXRDZWxsKFZNJiwgSlNWYWx1ZSkg
eyB9CitBTFdBWVNfSU5MSU5FIHZvaWQgcmFuZG9tQXVkaXRDZWxsU2l6ZShWTSYsIEpTQ2VsbCos
IHNpemVfdCA9IDApIHsgfQorCisjZW5kaWYgLy8gRU5BQkxFKElOVEVHUklUWV9BVURJVFMpCisK
K30gLy8gbmFtZXNwYWNlIEludGVncml0eQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eUlubGluZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5SW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlZ3Jp
dHkuaCIKKyNpbmNsdWRlICJWTS5oIgorCisjaWYgRU5BQkxFKElOVEVHUklUWV9BVURJVFMpCisK
K25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIEludGVncml0eSB7CisKK0FMV0FZU19JTkxJTkUg
Ym9vbCBSYW5kb206OnNob3VsZEF1ZGl0KFZNJiB2bSkKK3sKKyAgICBib29sIHNob3VsZEF1ZGl0
ID0gbV90cmlnZ2VyQml0cyAmIDE7CisgICAgbV90cmlnZ2VyQml0cyA9IG1fdHJpZ2dlckJpdHMg
Pj4gMTsKKyAgICBpZiAoTElLRUxZKCFzaG91bGRBdWRpdCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIElmIGF1ZGl0aW5nIGlzIGVuYWJsZWQsIHRoZW4gdGhlIHRvcCBiaXQgb2Yg
bV90cmlnZ2VyQml0cyBpcyBhbHdheXMgc2V0CisgICAgLy8gdG8gMSBvbiByZWxvYWQuIFdoZW4g
dGhpcyB0b3AgYml0IHJlYWNoZXMgdGhlIGJvdHRvbSwgaXQgZG9lcyBub3QKKyAgICAvLyBpbmRp
Y2F0ZSB0aGF0IHdlIHNob3VsZCB0cmlnZ2VyIGFuIGF1ZGl0IGJ1dCByYXRoZXIgdGhhdCB3ZSd2
ZSBzaGlmdGVkCisgICAgLy8gb3V0IGFsbCB0aGUgYXZhaWxhYmxlIHRyaWdnZXIgYml0cyBhbmQg
aGVuY2UsIG5lZWQgdG8gcmVsb2FkLiBJbnN0ZWFkLAorICAgIC8vIHJlbG9hZEFuZENoZWNrU2hv
dWxkQXVkaXRTbG93KCkgd2lsbCByZXR1cm4gd2hldGhlciB3ZSBhY3R1YWxseSBuZWVkIHRvCisg
ICAgLy8gdHJpZ2dlciBhbiBhdWRpdCB0aGlzIHR1cm4uCisgICAgaWYgKCFtX3RyaWdnZXJCaXRz
KQorICAgICAgICByZXR1cm4gcmVsb2FkQW5kQ2hlY2tTaG91bGRBdWRpdFNsb3codm0pOworICAg
IHJldHVybiB0cnVlOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgZmFzdEF1ZGl0Q2VsbChWTSYs
IEpTQ2VsbCogY2VsbCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmNvbnRhaW5z
KGNlbGwpKTsKK30KKworQUxXQVlTX0lOTElORSB2b2lkIGZhc3RBdWRpdENlbGwoVk0mLCBKU1Zh
bHVlIHZhbHVlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgLy8gV2UgdXNlIHRoZSBpc0Nl
bGxPck90aGVyKCkgY2hlY2sgaGVyZSBiZWNhdXNlIGl0J3MgbXVzdCBmYXN0ZXIgdG8gY29tcHV0
ZQorICAgIC8vIHRoZW4gaXNDZWxsKCkgYW5kIHdlIGRvbid0IG5lZWQgdG8gZmlsdGVyIG91dCB0
aGUgT3RoZXIgY2FzZXMgYXMgd2VsbAorICAgIC8vIGJlY2F1c2UgdGhlaXIgZW5jb2Rpbmcgd2ls
bCBkZWZpbnRlbHkgbm90IGJlIGluIHRoZSBHaWdhY2FnZSBhZGRyZXNzIHJhbmdlLgorICAgIGlm
ICh2YWx1ZS5pc0NlbGxPck90aGVyKCkpIHsKKyAgICAgICAgdm9pZCogbWF5YmVDZWxsID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSk7CisgICAgICAgIGlm
IChVTkxJS0VMWShHaWdhY2FnZTo6Y29udGFpbnMobWF5YmVDZWxsKSkpIHsKKyAgICAgICAgICAg
IC8vIElmIHdlIGdldCBoZXJlLCBPdGhlciB0eXBlcyB3b3VsZCBoYXZlIGJlZW4gZmlsdGVyZWQg
b3V0IGFscmVhZHkuCisgICAgICAgICAgICAvLyBJdCdzIHNhZmUgdG8gYXNzdW1lIHRoaXMgaXMg
YSBjZWxsLiBPdGhlcndpc2UsIGl0J3MgYmFkIG5ld3MgYW5kCisgICAgICAgICAgICAvLyB3ZSdk
IHdhbnQgdG8gY3Jhc2ggYW55d2F5LgorICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdDxKU0NlbGwqPihtYXliZUNlbGwpOworICAgICAgICAgICAgaWYgKGNlbGwtPnR5
cGUoKSAhPSBKU0ltbXV0YWJsZUJ1dHRlcmZseVR5cGUpIHsKKyAgICAgICAgICAgICAgICBkYXRh
TG9nTG4oIkJJTkdPISEhIGNlbGwgIiwgUmF3UG9pbnRlcihtYXliZUNlbGwpLCAiICIsIHZhbHVl
KTsgLy8gbWxhbQorICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKy8vICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmNvbnRhaW5zKG1heWJl
Q2VsbCkpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRpZgor
fQorCitBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRDZWxsKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBpZiAodmFsdWUuaXNDZWxsKCkpCisgICAgICAgIGF1ZGl0Q2VsbCh2bSwgdmFsdWUu
YXNDZWxsKCkpOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgcmFuZG9tQXVkaXRDZWxsU2l6ZShW
TSYgdm0sIEpTQ2VsbCogY2VsbCwgc2l6ZV90IG9wdGlvbmFsQWxsb2NhdG9yQ2VsbFNpemUpCit7
CisgICAgaWYgKFVOTElLRUxZKHZtLmludGVncml0eVJhbmRvbSgpLnNob3VsZEF1ZGl0KHZtKSkp
CisgICAgICAgIGF1ZGl0Q2VsbFNpemUodm0sIGNlbGwsIG9wdGlvbmFsQWxsb2NhdG9yQ2VsbFNp
emUpOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgcmFuZG9tQXVkaXRDZWxsKFZNJiB2bSwgSlND
ZWxsKiBjZWxsKQoreworICAgIGlmIChVTkxJS0VMWSh2bS5pbnRlZ3JpdHlSYW5kb20oKS5zaG91
bGRBdWRpdCh2bSkpKQorICAgICAgICBhdWRpdENlbGwodm0sIGNlbGwpOworfQorCitBTFdBWVNf
SU5MSU5FIHZvaWQgcmFuZG9tQXVkaXRDZWxsKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBpZiAoVU5MSUtFTFkodmFsdWUuaXNDZWxsKCkpKQorICAgICAgICByYW5kb21BdWRpdENlbGwo
dm0sIHZhbHVlLmFzQ2VsbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSW50ZWdyaXR5Cit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRFR1JJVFlfQVVESVRTKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI1
MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw2ICs4MCwyMSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZHVtcENlbGxNZW1vcnlUb1N0cmVhbShKU0NlbGwqLCBQcmludFN0cmVh
bSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBTdWJzcGFjZUhhc2hl
cyhWTSopOwogCisgICAgZW51bSBWZXJpZmllckFjdGlvbiB7IFJlbGVhc2VBc3NlcnQsIEN1c3Rv
bSB9OworCisgICAgdXNpbmcgVmVyaWZ5RnVuY3RvciA9IGJvb2wgKGJvb2wgY29uZGl0aW9uLCBj
b25zdCBjaGFyKiBkZXNjcmlwdGlvbiwgLi4uKTsKKyAgICBzdGF0aWMgYm9vbCB1bnVzZWROdWxs
VmVyaWZpZXIoYm9vbCwgY29uc3QgY2hhciosIC4uLikgeyByZXR1cm4gZmFsc2U7IH0KKworICAg
IHRlbXBsYXRlPFZlcmlmaWVyQWN0aW9uIGFjdGlvbiwgVmVyaWZ5RnVuY3RvciB2ZXJpZnkgPSB1
bnVzZWROdWxsVmVyaWZpZXI+CisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Q2VsbFNpemUoVk0mIHZt
LCBKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICByZXR1cm4gdmVyaWZ5Q2VsbFNpemU8YWN0
aW9uLCB2ZXJpZnk+KHZtLCBjZWxsLCAwKTsKKyAgICB9CisgICAgdGVtcGxhdGU8VmVyaWZpZXJB
Y3Rpb24sIFZlcmlmeUZ1bmN0b3IgPSB1bnVzZWROdWxsVmVyaWZpZXI+CisgICAgc3RhdGljIGJv
b2wgdmVyaWZ5Q2VsbFNpemUoVk0mLCBKU0NlbGwqLCBzaXplX3Qgb3B0aW9uYWxBbGxvY2F0b3JD
ZWxsU2l6ZSk7CisgICAgdGVtcGxhdGU8VmVyaWZpZXJBY3Rpb24sIFZlcmlmeUZ1bmN0b3IgPSB1
bnVzZWROdWxsVmVyaWZpZXI+CisgICAgc3RhdGljIGJvb2wgdmVyaWZ5Q2VsbChWTSYsIEpTQ2Vs
bCopOworCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0
ZXJhdGUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9ySW5saW5lcy5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3RvcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGlyZWN0QXJndW1l
bnRzLmgiCisjaW5jbHVkZSAiSlNCaWdJbnQuaCIKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgX19DT05E
SVRJT04oeCkgKHgpLCAjeAorI2RlZmluZSBfX1ZFUklGWShhY3Rpb24sIHZlcmlmeSwgY29uZCwg
Li4uKSBkbyB7IFwKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBWZXJpZmllckFjdGlvbjo6UmVsZWFz
ZUFzc2VydCkgXAorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uZCwgX19WQV9BUkdTX18p
OyBcCisgICAgICAgIGlmICghdmVyaWZ5KF9fQ09ORElUSU9OKGNvbmQpLCBfX1ZBX0FSR1NfXykp
IFwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCit0
ZW1wbGF0ZTxWTUluc3BlY3Rvcjo6VmVyaWZpZXJBY3Rpb24gYWN0aW9uLCBWTUluc3BlY3Rvcjo6
VmVyaWZ5RnVuY3RvciB2ZXJpZnk+Citib29sIFZNSW5zcGVjdG9yOjp2ZXJpZnlDZWxsU2l6ZShW
TSYgdm0sIEpTQ2VsbCogY2VsbCwgc2l6ZV90IG9wdGlvbmFsQWxsb2NhdG9yQ2VsbFNpemUpCit7
CisgICAgc2l6ZV90IGFsbG9jYXRvckNlbGxTaXplID0gb3B0aW9uYWxBbGxvY2F0b3JDZWxsU2l6
ZSA/IG9wdGlvbmFsQWxsb2NhdG9yQ2VsbFNpemUgOiBjZWxsLT5jZWxsU2l6ZSgpOworCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUodm0pOworICAgIEpTVHlwZSBj
ZWxsVHlwZSA9IGNlbGwtPnR5cGUoKTsKKyAgICBfX1ZFUklGWShhY3Rpb24sIHZlcmlmeSwgY2Vs
bFR5cGUgPT0gc3RydWN0dXJlLT5tX2Jsb2IudHlwZSgpLCBjZWxsLCBjZWxsVHlwZSwgc3RydWN0
dXJlLT5tX2Jsb2IudHlwZSgpKTsKKworICAgIGlmIChpc1ZhcmlhYmxlU2l6ZWRUeXBlKGNlbGxU
eXBlKSkgeworICAgICAgICBzaXplX3QgY2VsbFNpemUgPSAwOworICAgICAgICBpZiAoY2VsbFR5
cGUgPT0gQmlnSW50VHlwZSkgeworICAgICAgICAgICAgYXV0byogYmlnSW50ID0ganNDYXN0PEpT
QmlnSW50Kj4oY2VsbCk7CisgICAgICAgICAgICBjZWxsU2l6ZSA9IEpTQmlnSW50OjphbGxvY2F0
aW9uU2l6ZShiaWdJbnQtPmxlbmd0aCgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChjZWxsVHlwZSA9
PSBEaXJlY3RBcmd1bWVudHNUeXBlKSB7CisgICAgICAgICAgICBhdXRvKiBhcmdzID0ganNDYXN0
PERpcmVjdEFyZ3VtZW50cyo+KGNlbGwpOworICAgICAgICAgICAgY2VsbFNpemUgPSBEaXJlY3RB
cmd1bWVudHM6OmFsbG9jYXRpb25TaXplKGFyZ3MtPm1fbWluQ2FwYWNpdHkpOworICAgICAgICB9
IGVsc2UgaWYgKGNlbGxUeXBlID09IEZpbmFsT2JqZWN0VHlwZSkKKyAgICAgICAgICAgIGNlbGxT
aXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKKyAgICAgICAgZWxzZSBpZiAoY2VsbFR5cGUgPT0gTGV4aWNhbEVudmlyb25tZW50
VHlwZSkgeworICAgICAgICAgICAgYXV0byogZW52ID0ganNDYXN0PEpTTGV4aWNhbEVudmlyb25t
ZW50Kj4oY2VsbCk7CisgICAgICAgICAgICBjZWxsU2l6ZSA9IEpTTGV4aWNhbEVudmlyb25tZW50
OjphbGxvY2F0aW9uU2l6ZShlbnYtPnN5bWJvbFRhYmxlKCkpOworICAgICAgICB9IGVsc2UgaWYg
KGNlbGxUeXBlID09IE1vZHVsZUVudmlyb25tZW50VHlwZSkgeworICAgICAgICAgICAgYXV0byog
ZW52ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAgICAgICAgIGNl
bGxTaXplID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUoZW52LT5zeW1ib2xU
YWJsZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChjZWxsVHlwZSA9PSBNb2R1bGVOYW1lc3BhY2VP
YmplY3RUeXBlKSB7CisgICAgICAgICAgICBhdXRvKiBvYmogPSBqc0Nhc3Q8SlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICAgICAgICAgIGNlbGxTaXplID0gSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OmFsbG9jYXRpb25TaXplKG9iai0+bV9uYW1lcy5jYXBhY2l0eSgpKTsKKyAg
ICAgICAgfQorICAgICAgICBfX1ZFUklGWShhY3Rpb24sIHZlcmlmeSwgY2VsbFNpemUgPD0gYWxs
b2NhdG9yQ2VsbFNpemUsIGNlbGwsIGNlbGxUeXBlLCBjZWxsU2l6ZSwgYWxsb2NhdG9yQ2VsbFNp
emUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvID0g
c3RydWN0dXJlLT5jbGFzc0luZm8oKTsKKyAgICAgICAgX19WRVJJRlkoYWN0aW9uLCB2ZXJpZnks
IGNsYXNzSW5mby0+Y3BwU2l6ZSA8PSBhbGxvY2F0b3JDZWxsU2l6ZSwgY2VsbCwgY2VsbFR5cGUs
IGNsYXNzSW5mby0+Y3BwU2l6ZSwgYWxsb2NhdG9yQ2VsbFNpemUpOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8Vk1JbnNwZWN0b3I6OlZlcmlmaWVyQWN0aW9uIGFjdGlv
biwgVk1JbnNwZWN0b3I6OlZlcmlmeUZ1bmN0b3IgdmVyaWZ5PgorYm9vbCBWTUluc3BlY3Rvcjo6
dmVyaWZ5Q2VsbChWTSYgdm0sIEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzaXplX3QgYWxsb2NhdG9y
Q2VsbFNpemUgPSAwOworICAgIGlmIChjZWxsLT5pc0xhcmdlQWxsb2NhdGlvbigpKSB7CisgICAg
ICAgIExhcmdlQWxsb2NhdGlvbiYgbGFyZ2VBbGxvY2F0aW9uID0gY2VsbC0+bGFyZ2VBbGxvY2F0
aW9uKCk7CisgICAgICAgIF9fVkVSSUZZKGFjdGlvbiwgdmVyaWZ5LCAmbGFyZ2VBbGxvY2F0aW9u
LnZtKCkgPT0gJnZtLCBjZWxsLCBjZWxsLT50eXBlKCksICZsYXJnZUFsbG9jYXRpb24udm0oKSwg
JnZtKTsKKworICAgICAgICBib29sIGlzVmFsaWRMYXJnZUFsbG9jYXRpb24gPSBmYWxzZTsKKyAg
ICAgICAgZm9yIChhdXRvKiBpIDogdm0uaGVhcC5vYmplY3RTcGFjZSgpLmxhcmdlQWxsb2NhdGlv
bnMoKSkgeworICAgICAgICAgICAgaWYgKGkgPT0gJmxhcmdlQWxsb2NhdGlvbikgeworICAgICAg
ICAgICAgICAgIGlzVmFsaWRMYXJnZUFsbG9jYXRpb24gPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF9fVkVSSUZZKGFjdGlv
biwgdmVyaWZ5LCBpc1ZhbGlkTGFyZ2VBbGxvY2F0aW9uLCBjZWxsLCBjZWxsLT50eXBlKCkpOwor
CisgICAgICAgIGFsbG9jYXRvckNlbGxTaXplID0gbGFyZ2VBbGxvY2F0aW9uLmNlbGxTaXplKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2Vk
QmxvY2soKTsKKyAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSYgYmxvY2tIYW5kbGUgPSBibG9j
ay5oYW5kbGUoKTsKKyAgICAgICAgaWYgKCZibG9jay52bSgpICE9ICZ2bSkgeyAvLyBtbGFtIFRF
U1QKKyAgICAgICAgICAgIGRhdGFMb2dMbigiICAgICZ2bSA6ICIsIFJhd1BvaW50ZXIoJnZtKSk7
CisgICAgICAgICAgICBkYXRhTG9nTG4oIiAgICAmYmxvY2sudm0oKSA6ICIsIFJhd1BvaW50ZXIo
JmJsb2NrLnZtKCkpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiICAgICZibG9jay5oYW5kbGUo
KS52bSgpIDogIiwgUmF3UG9pbnRlcigmYmxvY2suaGFuZGxlKCkudm0oKSkpOworICAgICAgICB9
CisgICAgICAgIF9fVkVSSUZZKGFjdGlvbiwgdmVyaWZ5LCAmYmxvY2sudm0oKSA9PSAmdm0sIGNl
bGwsIGNlbGwtPnR5cGUoKSwgJmJsb2NrLnZtKCksICZ2bSk7CisKKyAgICAgICAgdWludHB0cl90
IGJsb2NrU3RhcnRBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGJsb2NrSGFu
ZGxlLnN0YXJ0KCkpOworICAgICAgICBfX1ZFUklGWShhY3Rpb24sIHZlcmlmeSwgYmxvY2tIYW5k
bGUuY29udGFpbnMoY2VsbCksIGNlbGwsIGNlbGwtPnR5cGUoKSwgYmxvY2tTdGFydEFkZHJlc3Ms
IGJsb2NrSGFuZGxlLmVuZCgpKTsKKworICAgICAgICB1aW50cHRyX3QgY2VsbEFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2VsbCk7CisgICAgICAgIHVpbnRwdHJfdCBjZWxs
T2Zmc2V0ID0gY2VsbEFkZHJlc3MgLSBibG9ja1N0YXJ0QWRkcmVzczsKKyAgICAgICAgc2l6ZV90
IGFsbG9jYXRvckNlbGxTaXplID0gYmxvY2suY2VsbFNpemUoKTsKKyAgICAgICAgYm9vbCBjZWxs
SXNQcm9wZXJseUFsaWduZWQgPSAhKGNlbGxPZmZzZXQgJSBhbGxvY2F0b3JDZWxsU2l6ZSk7Cisg
ICAgICAgIF9fVkVSSUZZKGFjdGlvbiwgdmVyaWZ5LCBjZWxsSXNQcm9wZXJseUFsaWduZWQsIGNl
bGwsIGNlbGwtPnR5cGUoKSwgYWxsb2NhdG9yQ2VsbFNpemUpOworICAgIH0KKworICAgIF9fVkVS
SUZZKGFjdGlvbiwgdmVyaWZ5LCAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OkpTVmFsdWUs
IGNlbGwpLCBjZWxsLCBjZWxsLT50eXBlKCkpOworICAgIF9fVkVSSUZZKGFjdGlvbiwgdmVyaWZ5
LCAhR2lnYWNhZ2U6OmlzQ2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgY2VsbCksIGNlbGwsIGNl
bGwtPnR5cGUoKSk7CisKKyAgICBpZiAoIXZlcmlmeUNlbGxTaXplPGFjdGlvbiwgdmVyaWZ5Pih2
bSwgY2VsbCwgYWxsb2NhdG9yQ2VsbFNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6SlNWYWx1ZSkgJiYgY2VsbC0+aXNP
YmplY3QoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoY2VsbCk7Cisg
ICAgICAgIGNvbnN0IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gb2JqZWN0LT5idXR0ZXJmbHkoKTsK
KyAgICAgICAgX19WRVJJRlkoYWN0aW9uLCB2ZXJpZnksICFidXR0ZXJmbHkgfHwgR2lnYWNhZ2U6
OmlzQ2FnZWQoR2lnYWNhZ2U6OkpTVmFsdWUsIGJ1dHRlcmZseSksIGNlbGwsIGNlbGwtPnR5cGUo
KSwgYnV0dGVyZmx5KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI3VuZGVmIFZF
UklGWV9DT05ESVRJT04KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0MywxMiArMjQzLDEyIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50
cnkKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGJ1ZmZlclthcmdOdW1dKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBGdW5jcmVmOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYnVmZmVyW2FyZ051bV0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKHZtLCBidWZmZXJbYXJnTnVtXSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2
bSwgYXJnKSB8fCBhcmcuaXNOdWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSBBbnlyZWY6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYnVmZmVyW2Fy
Z051bV0pOworICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKHZt
LCBidWZmZXJbYXJnTnVtXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBGMzI6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRjY0OgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3
ICs4Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICAg
ICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudChhcmdJbmRleCk7CiAgICAgICAgIHN3aXRj
aCAoc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ0luZGV4KSkgewogICAgICAgICBjYXNlIFdhc206Okkz
MjoKLSAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShhcmcudG9JbnQzMihleGVjKSk7
CisgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGFyZy50b0ludDMyKGV4ZWMp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OkZ1bmNyZWY6IHsKICAg
ICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJnKSAmJiAhYXJn
LmlzTnVsbCgpKQpAQCAtOTYsMTAgKzk2LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGwKICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWUoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OkYzMjoKLSAgICAgICAgICAgIGFyZyA9IEpTVmFs
dWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFyZy50b0Zsb2F0KGV4ZWMpKSk7Cisg
ICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUodm0sIGJpdHdpc2VfY2FzdDx1aW50MzJf
dD4oYXJnLnRvRmxvYXQoZXhlYykpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdhc206OkY2NDoKLSAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nh
c3Q8dWludDY0X3Q+KGFyZy50b051bWJlcihleGVjKSkpOworICAgICAgICAgICAgYXJnID0gSlNW
YWx1ZTo6ZGVjb2RlKHZtLCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGFyZy50b051bWJlcihleGVj
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6Vm9pZDoKICAgICAg
ICAgY2FzZSBXYXNtOjpGdW5jOgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01BdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUF0dHJpYnV0ZS5oCShyZXZpc2lvbiAyNTAxMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwzMSArNDEsMzQg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPFNldHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAg
IHN0YXRpYyBib29sIHNldChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgY29uc3QgY2hh
ciogYXR0cmlidXRlTmFtZSkKICAgICB7Ci0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoc3RhdGUudm0oKSk7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3Qoc3RhdGUsIHRoaXNWYWx1ZSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gKHNo
b3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykgPyB0aHJvd1NldHRl
clR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLT5jbGFzc05hbWUs
IGF0dHJpYnV0ZU5hbWUpIDogZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIHNldHRlcihzdGF0ZSwg
KnRoaXNPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHRocm93U2Nv
cGUpOworICAgICAgICByZXR1cm4gc2V0dGVyKHN0YXRlLCAqdGhpc09iamVjdCwgSlNDOjpKU1Zh
bHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSksIHRocm93U2NvcGUpOwogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTxTdGF0aWNTZXR0ZXIgc2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
ciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0
aWMgYm9vbCBzZXRTdGF0aWMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgY29uc3QgY2hhciopCiAgICAg
ewotICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZt
KCkpOworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICAKLSAgICAgICAgcmV0
dXJuIHNldHRlcihzdGF0ZSwgSlNDOjpKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgdGhy
b3dTY29wZSk7CisgICAgICAgIHJldHVybiBzZXR0ZXIoc3RhdGUsIEpTQzo6SlNWYWx1ZTo6ZGVj
b2RlKHZtLCBlbmNvZGVkVmFsdWUpLCB0aHJvd1Njb3BlKTsKICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8R2V0dGVyIGdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cg
PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CiAgICAgc3RhdGljIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCiAgICAgewotICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOworICAgICAgICBK
U0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgIGlmIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0KSB7CiAgICAgICAgICAgICBBU1NFUlQoY2FzdChzdGF0
ZSwgdGhpc1ZhbHVlKSk7Ci0gICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nh
c3Q8SlNDbGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgICAgICAg
ICAgYXV0byogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTQ2xhc3MqPihKU0M6OkpTVmFsdWU6
OmRlY29kZSh2bSwgdGhpc1ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVl
OjplbmNvZGUoZ2V0dGVyKHN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29wZSkpOwogICAgICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHJldmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBA
QCB2b2lkIEpTRE9NV2luZG93Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUganNET01XaW5kb3dXZWJLaXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIEpTRE9NV2luZG93KiBjYXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyh2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTRE9NV2luZG93KiBjYXN0ZWRUaGlzID0gdG9KU0RP
TVdpbmRvdyh2bSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCB0aGlzVmFsdWUpKTsKICAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLndlYmtpdE5hbWVzcGFjZSgp
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDI1MDEzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQ
cm9wZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNIVE1MRWxlbWVudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNIVE1MRWxl
bWVudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodm0sIHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhp
c09iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgdGhp
c09iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjUwMTM1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ1
MTAsNyArNDUxMCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURMQXR0
cmlidXRlPCR7Y2xhc3NOYW1lfT46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUudm0o
KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh2bSwgdGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGRlY29kZWRUaGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRlY29kZWRUaGlzVmFsdWUg
PSBzdGF0ZS50aGlzVmFsdWUoKS50b1RoaXMoJnN0YXRlLCBOb3RTdHJpY3RNb2RlKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rp
b24odm0sIGRlY29kZWRUaGlzVmFsdWUpOyIpOwpAQCAtNDUxOCw3ICs0NTE4LDggQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFzc05hbWV9KiBJRExBdHRyaWJ1
dGU8JHtjbGFzc05hbWV9Pjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlv
bihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9u
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodm0sIHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0KICAgICB9CkBAIC00NTQyLDcg
KzQ1NDMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHZtLCB0
aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwogCkBA
IC00NTYyLDEzICs0NTYzLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodm0sIHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvclxuIik7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBKU1ZhbHVlOjpkZWNvZGUodm0sIGVuY29kZWRWYWx1ZSkpO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKIAogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>