<?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>176120</bug_id>
          
          <creation_ts>2017-08-30 13:13:38 -0700</creation_ts>
          <short_desc>Add &quot;Identified&quot; base class to replace a whole bunch of custom identifier generators</short_desc>
          <delta_ts>2017-08-30 14:51:50 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>alecflett</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343666</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-30 13:13:38 -0700</bug_when>
    <thetext>Add &quot;Identified&quot; base class to replace a whole bunch of custom identifier generators

A common pattern in WebCore and WebKit is:
uint64_t identifier() const { return m_identifier; }
...
Along with a static function/generator to increment the next identifier for the next instance of the class.

We repeat this code, a lot. And that&apos;s silly.

Let&apos;s do it as a template base class instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343680</commentid>
    <comment_count>1</comment_count>
      <attachid>319394</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-30 13:51:34 -0700</bug_when>
    <thetext>Created attachment 319394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343714</commentid>
    <comment_count>2</comment_count>
      <attachid>319394</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-30 14:50:31 -0700</bug_when>
    <thetext>Comment on attachment 319394
Patch

Clearing flags on attachment: 319394

Committed r221399: &lt;http://trac.webkit.org/changeset/221399&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343715</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-30 14:50:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343716</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-30 14:51:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/34172937&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319394</attachid>
            <date>2017-08-30 13:51:34 -0700</date>
            <delta_ts>2017-08-30 14:50:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>61319</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggN2U2ZGY5MmIwOGUuLmRjODM2NjRjNTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3
LTA4LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
IklkZW50aWZpZWQiIGJhc2UgY2xhc3MgdG8gcmVwbGFjZSBhIHdob2xlIGJ1bmNoIG9mIGN1c3Rv
bSBpZGVudGlmaWVyIGdlbmVyYXRvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHd0Zi9JZGVudGlmaWVkLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpJZGVudGlmaWVkQmFz
ZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXVEY6OklkZW50aWZpZWRCYXNlOjpJZGVu
dGlmaWVkQmFzZSk6CisgICAgICAgIChXVEY6OklkZW50aWZpZWQ6OklkZW50aWZpZWQpOgorICAg
ICAgICAoV1RGOjpUaHJlYWRTYWZlSWRlbnRpZmllZDo6VGhyZWFkU2FmZUlkZW50aWZpZWQpOgor
CiAyMDE3LTA4LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtKU0NdIFVzZSB0YWJsZSBiYXNlZCBhcHByb2FjaCBmb3IgSlNPTi5zdHJpbmdpZnkn
cyBRdW90ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzky
MThmNTA2YWEuLmQ5Y2Q1MTVhMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTMwNSw2ICszMDUsNyBAQAogCQk1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMg
LyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3Jvc3NUaHJlYWRDb3BpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5
NEQxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE1Rjc5NTUxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRRdWV1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdBNTM1NzFGNTczNEI3MDBEQ0RDMEEgLyogSWRl
bnRpZmllZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZGVudGlmaWVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODJDMjJDMUYyQkM3RTYwMDU5QkE3QyAv
KiBJbnN0YW5jZUNvdW50ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zdGFuY2VDb3VudGVkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjE3NTI0MUYzRDQ4NjAwMEM3NDk1MCAvKiBQ
ZXJzaXN0ZW50Q29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lz
dGVudENvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjE3NTI1MUYzRDQ4
NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50Q29kZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBlcnNpc3RlbnRDb2RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgyOSw2ICs4MzAsNyBAQAogCQkJCUE4QTQ3MkI5MTUxQTgyNUEwMDQxMjNGRiAvKiBIYXNo
VGFibGUuaCAqLywKIAkJCQlBOEE0NzJCQTE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaFRyYWl0cy5o
ICovLAogCQkJCUE4QTQ3MkJCMTUxQTgyNUEwMDQxMjNGRiAvKiBIZXhOdW1iZXIuaCAqLywKKwkJ
CQk1MTdBNTM1NzFGNTczNEI3MDBEQ0RDMEEgLyogSWRlbnRpZmllZC5oICovLAogCQkJCUZFODky
NUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovLAogCQkJCTlDNjdDNTQyNTg5MzQ4
RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCAqLywKIAkJCQkwRjJBQzU2
MjFFOEEwMTQ5MDAwMUVFM0YgLyogSW5kZXhLZXlUeXBlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9JZGVudGlmaWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNiNmFjOTVkYjZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCkBAIC0wLDAgKzEsODggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBJZGVudGlmaWVyVHlwZSwgdHlwZW5hbWUgU3RhdGljVHlwZSwgdHlwZW5hbWUg
Q2xhc3NUeXBlPgorY2xhc3MgSWRlbnRpZmllZEJhc2UgeworcHVibGljOgorICAgIElkZW50aWZp
ZXJUeXBlIGlkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcjsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBJZGVudGlmaWVkQmFzZSgpCisgICAgICAg
IDogbV9pZGVudGlmaWVyKCsrc19jdXJyZW50SWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCisg
ICAgSWRlbnRpZmllZEJhc2UoY29uc3QgSWRlbnRpZmllZEJhc2UmIG90aGVyKQorICAgICAgICA6
IG1faWRlbnRpZmllcihvdGhlci5tX2lkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIGV4
cGxpY2l0IElkZW50aWZpZWRCYXNlKElkZW50aWZpZXJUeXBlIGlkZW50aWZpZXIpCisgICAgICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBJZGVudGlmaWVyVHlwZSBtX2lkZW50aWZpZXI7CisgICAgc3RhdGljIFN0YXRpY1R5cGUgc19j
dXJyZW50SWRlbnRpZmllcjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIElkZW50aWZpZXJUeXBl
LCB0eXBlbmFtZSBTdGF0aWNUeXBlLCB0eXBlbmFtZSBDbGFzc1R5cGU+IFN0YXRpY1R5cGUgSWRl
bnRpZmllZEJhc2U8SWRlbnRpZmllclR5cGUsIFN0YXRpY1R5cGUsIENsYXNzVHlwZT46OnNfY3Vy
cmVudElkZW50aWZpZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgSWRlbnRpZmll
ZCA6IHB1YmxpYyBJZGVudGlmaWVkQmFzZTx1aW50NjRfdCwgdWludDY0X3QsIFQ+IHsKK3Byb3Rl
Y3RlZDoKKyAgICBJZGVudGlmaWVkKCkgPSBkZWZhdWx0OworICAgIElkZW50aWZpZWQoY29uc3Qg
SWRlbnRpZmllZCYpID0gZGVmYXVsdDsKKworICAgIGV4cGxpY2l0IElkZW50aWZpZWQodWludDY0
X3QgaWRlbnRpZmllcikKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTx1aW50NjRfdCwgdWludDY0
X3QsIFQ+KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgVGhyZWFkU2FmZUlkZW50aWZpZWQgOiBwdWJsaWMgSWRlbnRpZmllZEJhc2U8
dWludDY0X3QsIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiwgVD4geworcHJvdGVjdGVkOgorICAgIFRo
cmVhZFNhZmVJZGVudGlmaWVkKCkgPSBkZWZhdWx0OworICAgIFRocmVhZFNhZmVJZGVudGlmaWVk
KGNvbnN0IFRocmVhZFNhZmVJZGVudGlmaWVkJikgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQg
VGhyZWFkU2FmZUlkZW50aWZpZWQodWludDY0X3QgaWRlbnRpZmllcikKKyAgICAgICAgOiBJZGVu
dGlmaWVkQmFzZTx1aW50NjRfdCwgc3RkOjphdG9taWM8dWludDY0X3Q+LCBUPihpZGVudGlmaWVy
KQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpJ
ZGVudGlmaWVkOwordXNpbmcgV1RGOjpUaHJlYWRTYWZlSWRlbnRpZmllZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAxZmYyNTZlMmM4ZS4uYzFkZjIyOWIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAor
MjAxNy0wOC0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkICJJZGVudGlmaWVkIiBiYXNlIGNsYXNzIHRvIHJlcGxhY2UgYSB3aG9sZSBidW5jaCBvZiBj
dXN0b20gaWRlbnRpZmllciBnZW5lcmF0b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UpLgor
CisgICAgICAgIEluc3RlYWQgb2YgcmVwZWF0aW5nIHRoZSBjb21tb24gcGF0dGVybiBvZiBhIGNs
YXNzIHdpdGggYW4gaW50ZWdlciBpZGVudGlmaWVyIGtlZXBpbmcgaXRzCisgICAgICAgIG93biBz
dGF0aWMgY291bnRlciBvZiB0aGUgbmV4dCBpZGVudGlmaWVyIGFuZCBnZW5lcmF0aW5nIGl0IGZv
ciBlYWNoIGluc3RhbmNlLCB0aGlzCisgICAgICAgIHVzZXMgYSBjb21tb24gdGVtcGxhdGUgaW4g
V1RGIHRoYXQgZG9lcyB0aGF0IGF1dG9tYXRpY2FsbHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNvbm5lY3Rpb25QZW5kaW5nQ2xvc2VGcm9tQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uOjpjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y29uZmlybURpZENsb3NlRnJvbVNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkRmluaXNoSGFuZGxpbmdW
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmVzdGFi
bGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uOjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRDb21taXRUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Om5leHREYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6aWRlbnRpZmllciBjb25zdCk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OlNlcnZpY2VX
b3JrZXJKb2JEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppZGVudGlmaWVy
IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OkNvbm5l
Y3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjppZGVudGlmaWVyIGNvbnN0KTog
RGVsZXRlZC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNX
U2VydmVyUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0
aW9uOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTctMDgtMjkgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjEwMjg3
KSBPbiBkcm9wLCBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dCIpIHJldHVybnMgYW4g
ZW1wdHkgc3RyaW5nIHdoZW4gZHJhZ2dpbmcgYW4gaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKaW5kZXggNjk0YjcxNzFkM2YuLjg0MDE1ZDg2YzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcApAQCAtMzgsMjAg
KzM4LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAot
c3RhdGljIHVpbnQ2NF90IG5leHREYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkKLXsKLSAg
ICBzdGF0aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgPSAwOwotICAgIHJldHVybiArK25leHRJ
ZGVudGlmaWVyOwotfQotCiBSZWY8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPiBVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZShVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2Us
IFNlcnZlck9wZW5EQlJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKGRhdGFiYXNlLCByZXF1ZXN0KSk7CiB9CiAK
IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSwgU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVz
dCkKLSAgICA6IG1faWRlbnRpZmllcihuZXh0RGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcigp
KQotICAgICwgbV9kYXRhYmFzZShkYXRhYmFzZSkKKyAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2Up
CiAgICAgLCBtX2Nvbm5lY3Rpb25Ub0NsaWVudChyZXF1ZXN0LmNvbm5lY3Rpb24oKSkKICAgICAs
IG1fb3BlblJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3QucmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRl
bnRpZmllcigpKQogewpAQCAtODUsMzUgKzc4LDM1IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uOjphYm9ydFRyYW5zYWN0aW9uV2l0aG91dENhbGxiYWNrKFVuaXF1ZUlEQkRhdGFi
CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpjb25uZWN0aW9uUGVuZGluZ0Ns
b3NlRnJvbUNsaWVudCgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbjo6Y29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQgLSAlcyAtICUiIFBS
SXU2NCwgbV9vcGVuUmVxdWVzdElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIG1faWRlbnRpZmllcik7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbjo6Y29ubmVjdGlvblBlbmRpbmdDbG9zZUZyb21DbGllbnQgLSAlcyAtICUiIFBS
SXU2NCwgbV9vcGVuUmVxdWVzdElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX2Nsb3NlUGVuZGluZyA9IHRydWU7CiB9CiAKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVu
dCgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6
Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQgLSAlcyAtICUiIFBSSXU2NCwgbV9vcGVuUmVxdWVz
dElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1faWRlbnRpZmllcik7
CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y29ubmVj
dGlvbkNsb3NlZEZyb21DbGllbnQgLSAlcyAtICUiIFBSSXU2NCwgbV9vcGVuUmVxdWVzdElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGlkZW50aWZpZXIoKSk7CiAKICAg
ICBtX2RhdGFiYXNlLmNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KCp0aGlzKTsKIH0KIAogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIo
KQogewotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNv
bmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIgLSAlcyAtICUiIFBSSXU2NCwgbV9vcGVuUmVxdWVzdElk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1faWRlbnRpZmllcik7Cisg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y29uZmlybURp
ZENsb3NlRnJvbVNlcnZlciAtICVzIC0gJSIgUFJJdTY0LCBtX29wZW5SZXF1ZXN0SWRlbnRpZmll
ci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1f
ZGF0YWJhc2UuY29uZmlybURpZENsb3NlRnJvbVNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpCiB7Ci0gICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkRmlyZVZlcnNpb25DaGFu
Z2VFdmVudCAtICVzIC0gJSIgUFJJdTY0LCBtX29wZW5SZXF1ZXN0SWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBMT0coSW5kZXhlZERC
LCAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
IC0gJXMgLSAlIiBQUkl1NjQsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV9kYXRhYmFzZS5kaWRGaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KCp0aGlzLCByZXF1ZXN0SWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFu
Z2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7
Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkRmlu
aXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlIC0gJXMgLSAlIiBQUkl1NjQsIHRyYW5zYWN0aW9uSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRGaW5pc2hI
YW5kbGluZ1ZlcnNpb25DaGFuZ2UgLSAlcyAtICUiIFBSSXU2NCwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
bV9kYXRhYmFzZS5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2UoKnRoaXMsIHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7CiB9CkBAIC0xMjYsNyArMTE5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb246OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGkKIAogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uOjpjcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgbmV3VmVy
c2lvbikKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
OjpjcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gLSAlcyAtICUiIFBSSXU2NCwgbV9vcGVu
UmVxdWVzdElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1faWRlbnRp
Zmllcik7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6
Y3JlYXRlVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIC0gJXMgLSAlIiBQUkl1NjQsIG1fb3BlblJl
cXVlc3RJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpZGVudGlmaWVy
KCkpOwogICAgIEFTU0VSVCghbV9jbG9zZVBlbmRpbmcpOwogCiAgICAgSURCVHJhbnNhY3Rpb25J
bmZvIGluZm8gPSBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UobV9jb25uZWN0aW9u
VG9DbGllbnQsIG1fZGF0YWJhc2UuaW5mbygpLCBuZXdWZXJzaW9uKTsKQEAgLTEzOSw3ICsxMzIs
NyBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiBVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZVZlcnNpb25DaGFuZ2VUcgogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBp
bmZvKQogewotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246
OmVzdGFibGlzaFRyYW5zYWN0aW9uIC0gJXMgLSAlIiBQUkl1NjQsIG1fb3BlblJlcXVlc3RJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2lkZW50aWZpZXIpOworICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmVzdGFibGlzaFRy
YW5zYWN0aW9uIC0gJXMgLSAlIiBQUkl1NjQsIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgQVNTRVJUKGlu
Zm8ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSk7CiAKQEAgLTE1
NCw3ICsxNDcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZXN0YWJsaXNo
VHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJgogCiB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbjo6ZGlkQWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIExP
RyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmRpZEFib3J0VHJhbnNh
Y3Rpb24gLSAlcyAtICUiIFBSSXU2NCwgbV9vcGVuUmVxdWVzdElkZW50aWZpZXIubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIG1faWRlbnRpZmllcik7CisgICAgTE9HKEluZGV4ZWREQiwg
IlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkQWJvcnRUcmFuc2FjdGlvbiAtICVzIC0g
JSIgUFJJdTY0LCBtX29wZW5SZXF1ZXN0SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgaWRlbnRpZmllcigpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVudGlmaWVy
ID0gdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKTsKICAgICBhdXRvIHRha2VuVHJhbnNh
Y3Rpb24gPSBtX3RyYW5zYWN0aW9uTWFwLnRha2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKQEAg
LTE2Niw3ICsxNTksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkQWJv
cnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aQogCiB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRDb21taXRU
cmFuc2FjdGlvbiAtICVzIC0gJSIgUFJJdTY0LCBtX29wZW5SZXF1ZXN0SWRlbnRpZmllci5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBMT0coSW5kZXhl
ZERCLCAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRDb21taXRUcmFuc2FjdGlvbiAt
ICVzIC0gJSIgUFJJdTY0LCBtX29wZW5SZXF1ZXN0SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgaWRlbnRpZmllcigpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVu
dGlmaWVyID0gdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCmluZGV4IDI3ZDU4ODRiM2E2Li4yZjFhMjlhMmU4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDQsMTMg
KzQ1LDEyIEBAIGNsYXNzIFNlcnZlck9wZW5EQlJlcXVlc3Q7CiBjbGFzcyBVbmlxdWVJREJEYXRh
YmFzZTsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247CiAKLWNsYXNzIFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbj4geworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPiwgcHVibGljIElkZW50
aWZpZWQ8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IGNyZWF0ZShVbmlxdWVJREJEYXRhYmFz
ZSYsIFNlcnZlck9wZW5EQlJlcXVlc3QmKTsKIAogICAgIH5VbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24oKTsKIAotICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KICAgICBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG9wZW5SZXF1ZXN0
SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fb3BlblJlcXVlc3RJZGVudGlmaWVyOyB9CiAgICAgVW5p
cXVlSURCRGF0YWJhc2UmIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZTsgfQogICAgIElE
QkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvblRvQ2xpZW50KCkgeyByZXR1cm4gbV9jb25u
ZWN0aW9uVG9DbGllbnQ7IH0KQEAgLTg2LDcgKzg2LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2UmLCBTZXJ2ZXJP
cGVuREJSZXF1ZXN0Jik7CiAKLSAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CiAgICAg
VW5pcXVlSURCRGF0YWJhc2UmIG1fZGF0YWJhc2U7CiAgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50
JiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9vcGVu
UmVxdWVzdElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA4ZmJhNjdjZTYzYS4uODZhM2Jk
NzU2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JEYXRhLmNwcApAQCAtMzAsMjQgKzMwLDE1IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50Sm9iSWRlbnRp
ZmllcjsKLQotU2VydmljZVdvcmtlckpvYkRhdGE6OlNlcnZpY2VXb3JrZXJKb2JEYXRhKHVpbnQ2
NF90IGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgIDogbV9qb2JJZGVudGlmaWVyKCsrY3VycmVu
dEpvYklkZW50aWZpZXIpCitTZXJ2aWNlV29ya2VySm9iRGF0YTo6U2VydmljZVdvcmtlckpvYkRh
dGEodWludDY0X3Qgam9iSWRlbnRpZmllciwgdWludDY0X3QgY29ubmVjdGlvbklkZW50aWZpZXIp
CisgICAgOiBUaHJlYWRTYWZlSWRlbnRpZmllZChqb2JJZGVudGlmaWVyKQogICAgICwgbV9jb25u
ZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKIH0KIAotU2VydmljZVdv
cmtlckpvYkRhdGE6OlNlcnZpY2VXb3JrZXJKb2JEYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiBvdGhlcikKK1NlcnZpY2VXb3JrZXJKb2JEYXRhOjpTZXJ2aWNlV29ya2VySm9iRGF0YSh1
aW50NjRfdCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbklkZW50aWZp
ZXIoY29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgbV9qb2JJZGVudGlmaWVyID0gb3RoZXIu
bV9qb2JJZGVudGlmaWVyOwotICAgIG1fY29ubmVjdGlvbklkZW50aWZpZXIgPSBvdGhlci5tX2Nv
bm5lY3Rpb25JZGVudGlmaWVyOwotICAgIHNjcmlwdFVSTCA9IG90aGVyLnNjcmlwdFVSTDsKLSAg
ICBjbGllbnRDcmVhdGlvblVSTCA9IG90aGVyLmNsaWVudENyZWF0aW9uVVJMOwotICAgIHRvcE9y
aWdpbiA9IG90aGVyLnRvcE9yaWdpbjsKLSAgICBzY29wZVVSTCA9IG90aGVyLnNjb3BlVVJMOwot
ICAgIHR5cGUgPSBvdGhlci50eXBlOwotICAgIHJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvdGhlci5y
ZWdpc3RyYXRpb25PcHRpb25zOwogfQogCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IFNl
cnZpY2VXb3JrZXJKb2JEYXRhOjpyZWdpc3RyYXRpb25LZXkoKSBjb25zdApAQCAtNTcsOSArNDgs
NyBAQCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpy
ZWdpc3RyYXRpb25LZXkoKSBjb25zdAogCiBTZXJ2aWNlV29ya2VySm9iRGF0YSBTZXJ2aWNlV29y
a2VySm9iRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICBTZXJ2aWNlV29ya2VySm9i
RGF0YSByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1fam9iSWRlbnRpZmllciA9IG1fam9iSWRlbnRpZmll
cjsKLSAgICByZXN1bHQubV9jb25uZWN0aW9uSWRlbnRpZmllciA9IG1fY29ubmVjdGlvbklkZW50
aWZpZXI7CisgICAgU2VydmljZVdvcmtlckpvYkRhdGEgcmVzdWx0IHsgaWRlbnRpZmllcigpLCBt
X2Nvbm5lY3Rpb25JZGVudGlmaWVyIH07CiAgICAgcmVzdWx0LnR5cGUgPSB0eXBlOwogCiAgICAg
cmVzdWx0LnNjcmlwdFVSTCA9IHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5k
ZXggY2Y0ZWFhMDIzNjMuLjcwNjUyNjEzYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaApAQCAtMzIsMTYgKzMyLDE2
IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgiCiAjaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1
Y3QgU2VydmljZVdvcmtlckpvYkRhdGEgeworc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIDog
cHVibGljIFRocmVhZFNhZmVJZGVudGlmaWVkPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckpvYkRhdGEodWludDY0X3QgY29ubmVjdGlv
bklkZW50aWZpZXIpOwotICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJik7CisgICAgU2VydmljZVdvcmtlckpvYkRhdGEoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmKSA9IGRlZmF1bHQ7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEoKSA9IGRlZmF1
bHQ7CiAKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9qb2JJZGVu
dGlmaWVyOyB9CiAgICAgdWludDY0X3QgY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOyB9CiAKICAgICBVUkwgc2NyaXB0VVJMOwpAQCAt
NTYsMTcgKzU2LDE4IEBAIHB1YmxpYzoKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBpc29sYXRl
ZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgdWludDY0X3QgbV9qb2JJZGVudGlm
aWVyIHsgMCB9OworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJKb2JEYXRhKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIsIHVpbnQ2NF90IGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKwogICAg
IHVpbnQ2NF90IG1fY29ubmVjdGlvbklkZW50aWZpZXIgeyAwIH07CiB9OwogCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBtX2pvYklkZW50aWZpZXIgPDwgbV9j
b25uZWN0aW9uSWRlbnRpZmllciA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwg
dG9wT3JpZ2luIDw8IHNjb3BlVVJMOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigpIDw8IG1f
Y29ubmVjdGlvbklkZW50aWZpZXIgPDwgc2NyaXB0VVJMIDw8IGNsaWVudENyZWF0aW9uVVJMIDw8
IHRvcE9yaWdpbiA8PCBzY29wZVVSTDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0odHlwZSk7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0
ZXI6CkBAIC03NiwzMSArNzcsMzcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1i
b29sIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLm1fam9iSWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEubV9jb25uZWN0
aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGpvYkRhdGEuc2NyaXB0VVJMKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEudG9wT3JpZ2luKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5z
Y29wZVVSTCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShqb2JEYXRhLnR5cGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2gg
KGpvYkRhdGEudHlwZSkgeworICAgIHVpbnQ2NF90IGpvYklkZW50aWZpZXI7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShqb2JJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHVpbnQ2NF90IGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gam9iRGF0YSA9
IHsgeyBqb2JJZGVudGlmaWVyLCBjb25uZWN0aW9uSWRlbnRpZmllciB9IH07CisKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGpvYkRhdGEtPnNjcmlwdFVSTCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLT5jbGllbnRDcmVhdGlv
blVSTCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShqb2JEYXRhLT50b3BPcmlnaW4pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS0+c2NvcGVVUkwpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGpvYkRhdGEtPnR5
cGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3dpdGNoIChqb2JEYXRh
LT50eXBlKSB7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JE
YXRhLT5yZWdpc3RyYXRpb25PcHRpb25zKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBqb2JEYXRhOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDU0MjdhNDVj
ZGViLi40MDE5MzQwYjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTM4LDggKzM4LDggQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZl
ciwgdWludDY0X3QgaWRlbnRpZmllcikKLSAgICA6IG1fc2VydmVyKHNlcnZlcikKLSAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIDogSWRlbnRpZmllZChpZGVudGlmaWVyKQorICAg
ICwgbV9zZXJ2ZXIoc2VydmVyKQogewogICAgIG1fc2VydmVyLnJlZ2lzdGVyQ29ubmVjdGlvbigq
dGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKaW5kZXggZDNmYzBjNDgxYzQuLjliZDQwZjc0NjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSWRlbnRpZmll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNDYsMTMgKzQ3LDEx
IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKIAogY2xhc3MgU1dTZXJ2
ZXIgewogcHVibGljOgotICAgIGNsYXNzIENvbm5lY3Rpb24geworICAgIGNsYXNzIENvbm5lY3Rp
b24gOiBwdWJsaWMgSWRlbnRpZmllZDxDb25uZWN0aW9uPiB7CiAgICAgZnJpZW5kIGNsYXNzIFNX
U2VydmVyOwogICAgIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Q29u
bmVjdGlvbigpOwogCi0gICAgICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH07Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIENvbm5lY3Rpb24oU1dTZXJ2ZXImLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICAgICAg
U1dTZXJ2ZXImIHNlcnZlcigpIHsgcmV0dXJuIG1fc2VydmVyOyB9CkBAIC02NCw3ICs2Myw2IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVKb2JJbkNsaWVudCh1aW50NjRf
dCBqb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYpID0g
MDsKIAogICAgICAgICBTV1NlcnZlciYgbV9zZXJ2ZXI7Ci0gICAgICAgIHVpbnQ2NF90IG1faWRl
bnRpZmllcjsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYWI3OTI3MGEyOTIuLjEwNTJiOWJhZGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzcsMTIgKzM3LDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRJZGVudGlm
aWVyOwotCiBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2
ZXImIHNlcnZlciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogICAg
IDogbV9qb2JUaW1lcigqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzdGFydE5leHRKb2Ip
CiAgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCi0gICAgLCBtX2lkZW50aWZpZXIoKytjdXJyZW50SWRl
bnRpZmllcikKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKIHsKIH0KQEAgLTIwMyw3ICsy
MDAsNyBAQCB2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpmaW5pc2hDdXJyZW50Sm9iKCkKIAog
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmRhdGEo
KSBjb25zdAogewotICAgIHJldHVybiB7IG1fcmVnaXN0cmF0aW9uS2V5LCBtX2lkZW50aWZpZXIg
fTsKKyAgICByZXR1cm4geyBtX3JlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllcigpIH07CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IGM4MDAwNjhkMzRkLi45YjZlYWJmMmZhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgU1dTZXJ2ZXI7CiBjbGFzcyBT
V1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogCi1jbGFzcyBTV1NlcnZlclJl
Z2lzdHJhdGlvbiB7CitjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbiA6IHB1YmxpYyBUaHJlYWRT
YWZlSWRlbnRpZmllZDxTV1NlcnZlclJlZ2lzdHJhdGlvbj4gewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYpOwogICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKGNvbnN0IFNXU2VydmVy
UmVnaXN0cmF0aW9uJikgPSBkZWxldGU7CkBAIC00Niw3ICs0Nyw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZW5xdWV1ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCi0gICAgdWlu
dDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIGRhdGEoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAg
LTc2LDcgKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyIG1fam9iVGltZXI7CiAgICAgU1dT
ZXJ2ZXImIG1fc2VydmVyOwotICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA0M2E0MjM2N2U5ZS4uMjA0Mzg4YWQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIw
MTctMDgtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCAiSWRlbnRpZmllZCIgYmFzZSBjbGFzcyB0byByZXBsYWNlIGEgd2hvbGUgYnVuY2ggb2YgY3Vz
dG9tIGlkZW50aWZpZXIgZ2VuZXJhdG9ycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcDoKKyAg
ICAgICAgKEFQSTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgIChBUEk6OmdlbmVy
YXRlSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKEFQSTo6VXNlclN0eWxlU2hlZXQ6OlVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKEFQSTo6Z2VuZXJhdGVJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcjo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIpOgorICAgICAgICAo
V2ViS2l0OjpnZW5lcmF0ZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3Jp
cHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxl
ckZvck5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUlkZW50
aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6aWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0
ZWRMaW5rU3RvcmU6On5WaXNpdGVkTGlua1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRl
ZExpbmtTdG9yZTo6VmlzaXRlZExpbmtTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRM
aW5rU3RvcmU6OmFkZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3Jl
OjpyZW1vdmVQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZTo6cmVt
b3ZlQWxsKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZTo6cGVuZGluZ1Zpc2l0
ZWRMaW5rc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpz
ZW5kVGFibGUpOgorICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUlkZW50aWZpZXIpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmg6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpnZW5lcmF0ZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tl
dFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3Ry
ZWFtOjp+V2ViU29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFt
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldFN0cmVhbS5oOgorCiAyMDE3LTA4LTMwICBDYXJsb3MgQWxiZXJ0byBMb3Bl
eiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEVuYWJsZSBNRU1P
UllfU0FNUExFUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTY3JpcHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
Y3BwCmluZGV4IDg0NWFiNTdlYTc3Li43NTg0ZTYzMTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcApAQCAtMzAsMTMgKzMwLDYgQEAKIAogbmFt
ZXNwYWNlIEFQSSB7CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQotewot
ICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOwotCi0gICAgcmV0dXJuICsraWRlbnRpZmll
cjsKLX0KLQogV2ViQ29yZTo6VVJMIFVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKIHsK
ICAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsKQEAgLTQ4LDggKzQxLDcgQEAgV2ViQ29y
ZTo6VVJMIFVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKIH0KIAogVXNlclNjcmlwdDo6
VXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd29ybGQpCi0gICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkp
Ci0gICAgLCBtX3VzZXJTY3JpcHQodXNlclNjcmlwdCkKKyAgICA6IG1fdXNlclNjcmlwdCh1c2Vy
U2NyaXB0KQogICAgICwgbV93b3JsZCh3b3JsZCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCmluZGV4IDc1ODM1MGI5YjMwLi4xN2E0MDkwOTg5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCkBAIC0yOSwx
MCArMjksMTEgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElVc2VyQ29u
dGVudFdvcmxkLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU2NyaXB0Lmg+CisjaW5jbHVkZSA8
d3RmL0lkZW50aWZpZWQuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFVzZXJTY3JpcHQg
ZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJTY3JpcHQ+IHsKK2Ns
YXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVz
ZXJTY3JpcHQ+LCBwdWJsaWMgSWRlbnRpZmllZDxVc2VyU2NyaXB0PiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFdlYkNvcmU6OlVSTCBnZW5lcmF0ZVVuaXF1ZVVSTCgpOwogCkBAIC00MywxNSArNDQs
MTIgQEAgcHVibGljOgogCiAgICAgVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0LCBBUEk6
OlVzZXJDb250ZW50V29ybGQmKTsKIAotICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLQogICAgIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQm
IHVzZXJTY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KICAgICAKICAgICBV
c2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQog
ICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJDb250ZW50V29ybGQoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmxkOyB9CiAgICAgCiBwcml2YXRlOgotICAgIHVpbnQ2NF90IG1faWRlbnRpZmll
cjsKICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IG1fdXNlclNjcmlwdDsKICAgICBSZWY8VXNlckNv
bnRlbnRXb3JsZD4gbV93b3JsZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAppbmRleCAyOGU4MDA5NTU1Zi4uMWQ1OTViYjE1ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0
LmNwcApAQCAtMzAsMTMgKzMwLDYgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLXN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlm
aWVyOwotCi0gICAgcmV0dXJuICsraWRlbnRpZmllcjsKLX0KLQogV2ViQ29yZTo6VVJMIFVzZXJT
dHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGlk
ZW50aWZpZXI7CkBAIC00OCw4ICs0MSw3IEBAIFdlYkNvcmU6OlVSTCBVc2VyU3R5bGVTaGVldDo6
Z2VuZXJhdGVVbmlxdWVVUkwoKQogfQogCiBVc2VyU3R5bGVTaGVldDo6VXNlclN0eWxlU2hlZXQo
V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCi0gICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCi0g
ICAgLCBtX3VzZXJTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0KQorICAgIDogbV91c2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oCmluZGV4IGZlNGY0
OWJiM2M2Li5kODU2ZjdhNTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTI5LDEwICsyOSwxMSBAQAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJTdHlsZVNoZWV0Lmg+CisjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KIAogbmFt
ZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFVzZXJTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIE9iamVj
dEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU3R5bGVTaGVldD4geworY2xhc3MgVXNlclN0eWxlU2hl
ZXQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJTdHlsZVNoZWV0
PiwgcHVibGljIElkZW50aWZpZWQ8VXNlclN0eWxlU2hlZXQ+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKQEAgLTQzLDE1ICs0NCwxMiBA
QCBwdWJsaWM6CiAKICAgICBVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCwg
QVBJOjpVc2VyQ29udGVudFdvcmxkJik7CiAKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KICAgICBjb25zdCBXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0
OyB9CiAKICAgICBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxkKCkgeyByZXR1cm4g
bV93b3JsZDsgfQogICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJDb250ZW50V29ybGQo
KSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6Ci0gICAgdWludDY0X3QgbV9p
ZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IG1fdXNlclN0eWxlU2hlZXQ7
CiAgICAgUmVmPFVzZXJDb250ZW50V29ybGQ+IG1fd29ybGQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIuY3BwCmluZGV4IDkxZTVjZWFmM2E1Li4wNTE1YjBiMzk0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMzAsMjEgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0
aWMgdWludDY0X3QgaWRlbnRpZmllcjsKLQotICAgIHJldHVybiArK2lkZW50aWZpZXI7Ci19Ci0K
IFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNy
ZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
QVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihXVEZNb3ZlKGNsaWVudCksIG5hbWUsIHdvcmxkKSk7
CiB9CiAKIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihz
dGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpV
c2VyQ29udGVudFdvcmxkJiB3b3JsZCkKLSAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50
aWZpZXIoKSkKLSAgICAsIG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKKyAgICA6IG1fY2xpZW50
KFdURk1vdmUoY2xpZW50KSkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV93b3JsZCh3b3Js
ZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCmluZGV4IDFjMTFhMGE2YWQ3Li45ZTAxMmRj
Mjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyX2gKIAogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIAotY2xhc3Mg
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcj4geworY2xhc3MgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyPiAgewogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAg
cHVibGljOgpAQCAtNTcsNyArNTgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogICAgIHZpcnR1YWwgfldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyKCk7CiAKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX25hbWU7IH0KIAogICAgIGNvbnN0IEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgdXNlckNvbnRl
bnRXb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ybGQ7IH0KQEAgLTY3LDggKzY3LDYgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVl
X3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmLCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKLSAg
ICAKLSAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2xp
ZW50PiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCmluZGV4IDk4Y2UyNGUzMWMwLi40MjMzYzhlNWNmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtNDYsMTYgKzQ2LDggQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZp
ZXIoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOwotCi0gICAgcmV0dXJuICsr
aWRlbnRpZmllcjsKLX0KLQogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KCkKLSAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50
aWZpZXIoKSkKLSAgICAsIG1fdXNlclNjcmlwdHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkpCisgICAg
OiBtX3VzZXJTY3JpcHRzKEFQSTo6QXJyYXk6OmNyZWF0ZSgpKQogICAgICwgbV91c2VyU3R5bGVT
aGVldHMoQVBJOjpBcnJheTo6Y3JlYXRlKCkpCiB7CiB9CkBAIC02Myw3ICs1NSw3IEBAIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgp
CiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyKCkpOwogICAgICAgICBwcm9jZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KIH0KQEAgLTczLDcgKzY1LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm94eSwKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vz
c1Byb3h5KS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQcm9jZXNzUHJv
eHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKKyAgICB3
ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0
aGlzKTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHko
KSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBA
IC0xMDMsNyArOTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1BybwogICAgIEFTU0VSVChtX3By
b2Nlc3Nlcy5jb250YWlucygmd2ViUHJvY2Vzc1Byb3h5KSk7CiAKICAgICBtX3Byb2Nlc3Nlcy5y
ZW1vdmUoJndlYlByb2Nlc3NQcm94eSk7Ci0gICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNl
ckNvbnRlbnRXb3JsZCYgd29ybGQpCkBAIC0xMTQsNyArMTA2LDcgQEAgdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250
ZW50V29ybGQKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXNlckNvbnRlbnRXb3JsZHMuYWRkKCZ3
b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50
V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkp
IH0pLCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFr
ZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigp
KTsKICAgICB9CiB9CiAKQEAgLTEzOCw3ICsxMzAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50
VwogewogICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKHdv
cmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsKICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMo
eyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJD
b250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogICAg
IH0KIH0KIApAQCAtMTUxLDcgKzE0Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlCiAgICAg
fQogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIG1faWRlbnRpZmllcik7Cisg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkpOwog
fQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQ
STo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKQEAgLTE2Myw3ICsxNTUsNyBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdCkKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclNj
cmlwdCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlk
ZW50aWZpZXIoKSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgbV9pZGVudGlmaWVyKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CiB9
CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQo
QVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpAQCAtMTcxLDcgKzE2Myw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2Ny
aXB0JiB1c2VyU2NyaXB0CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1
c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRp
ZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIG1faWRlbnRpZmllcik7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
VXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSks
IGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJlbW92ZUFs
bCgmdXNlclNjcmlwdCk7CiAKQEAgLTE4MSw3ICsxNzMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNj
cmlwdAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNj
cmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsg
d29ybGQuaWRlbnRpZmllcigpIH0pLCBtX2lkZW50aWZpZXIpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3Jp
cHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWdu
ZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0
Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAg
ICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBA
IC0yMDIsNyArMTk0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlQWxsVXNlclNjcmlwdHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFw
cGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRz
KHdvcmxkSWRlbnRpZmllcnMpLCBtX2lkZW50aWZpZXIpOworICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRz
KHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+
ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yMTgsNyArMjEwLDcgQEAgdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVl
dCYgdXNlclMKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJT
dHlsZVNoZWV0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9j
ZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVy
KCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkg
fSB9KSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNo
ZWV0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNl
clN0eWxlU2hlZXQoKSB9IH0pLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNo
ZWV0JiB1c2VyU3R5bGVTaGVldCkKQEAgLTIyNiw3ICsyMTgsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNo
ZWV0JiB1cwogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxl
U2hlZXQudXNlckNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRp
ZmllcigpLCB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCkpLCBtX2lkZW50aWZpZXIpOworICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJl
bW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0Lmlk
ZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxl
bWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAtMjM2LDcgKzIyOCw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0
KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3Js
ZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQot
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgbV9pZGVu
dGlmaWVyKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkg
fSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU3R5bGVTaGVldHNSZW1vdmVk
ID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclN0
eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCkgewogICAgICAgICByZXR1
cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAtMjU3
LDcgKzI0OSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cygpCiAgICAgICAgIHdvcmxkSWRlbnRpZmllcnMudW5jaGVja2VkQXBw
ZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hl
ZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBtX2lkZW50aWZpZXIpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0
eWxlU2hlZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI3OCw3ICsyNzAsNyBAQCBib29s
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoV2ViU2NyaXB0TWVzc2FnZQogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmFkZChoYW5k
bGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsg
eyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgaGFuZGxlci5uYW1l
KCkgfSB9KSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsg
eyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgaGFuZGxlci5uYW1l
KCkgfSB9KSwgaWRlbnRpZmllcigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI4
OCw3ICsyODAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogICAgIGZvciAoYXV0byBpdCA9
IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhh
bmRsZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+
bmFtZSgpID09IG5hbWUgJiYgJml0LT52YWx1ZS0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3Js
ZCkgewogICAgICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVu
dGlmaWVyKCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgbV9pZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0
LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlKGl0KTsKIApAQCAtMzAxLDcgKzI5Myw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxl
ckZvck5hbWUoY29uc3QgU3RyaW5nCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29y
bGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigp
IH0pLCBtX2lkZW50aWZpZXIpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMo
eyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCBu
dW1iZXJSZW1vdmVkID0gMDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihb
Jl0oYXV0byYgZW50cnkpIHsKQEAgLTMzOSw3ICszMzEsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QoQVBJOjpDb250ZW50UnVsZUxpc3Qm
IGNvbgogICAgIGF1dG8gcGFpciA9IHN0ZDo6bWFrZV9wYWlyKGNvbnRlbnRSdWxlTGlzdC5uYW1l
KCksIGNvbnRlbnRSdWxlTGlzdC5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsKIAogICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1
bGVMaXN0cyh7IHBhaXIgfSksIG1faWRlbnRpZmllcik7CisgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyh7
IHBhaXIgfSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0z
NDcsNyArMzM5LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBtX2NvbnRlbnRSdWxlTGlz
dHMucmVtb3ZlKG5hbWUpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIG1faWRlbnRpZmllcik7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KCkKQEAgLTM1NSw3ICszNDcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMuY2xl
YXIoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBtX2lkZW50aWZpZXIpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCA0NjkzMDZhZmJhOC4uMjMwZjYyM2Q5
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSWRlbnRpZmll
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTU4LDcgKzU5LDcgQEAgY2xhc3Mg
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI7CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJD
b250ZW50Q29udHJvbGxlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3Mg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXI+LCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyLCBwdWJsaWMgSWRlbnRpZmllZDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk+IGNyZWF0ZSgpCiAgICAgeyAKQEAgLTY3LDggKzY4LDYgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCk7CiAgICAgfldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KCk7CiAKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0KICAgICB2b2lkIGFkZFByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcmVtb3ZlUHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApAQCAtMTA4LDcgKzEwNyw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8
QVBJOjpVc2VyQ29udGVudFdvcmxkPj4mKTsKICAgICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2Vy
Q29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVt
YmVyT2ZVc2VzVG9SZW1vdmUpOwogCi0gICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIEhh
c2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gbV9wcm9jZXNzZXM7ICAgIAogICAgIFJlZjxBUEk6OkFy
cmF5PiBtX3VzZXJTY3JpcHRzOwogICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTdHlsZVNoZWV0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKaW5kZXgg
Mjk1OWQ1OTFmNmUuLmJkMDAyYzA2ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLmNwcApAQCAtNDAsMTMgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHN0YXRpYyBjb25zdCBpbnQgdmlzaXRlZExpbmtUYWJsZU1heExvYWQgPSAyOwogCi1zdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3Qg
aWRlbnRpZmllcjsKLQotICAgIHJldHVybiArK2lkZW50aWZpZXI7Ci19Ci0KIFJlZjxWaXNpdGVk
TGlua1N0b3JlPiBWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFZpc2l0ZWRMaW5rU3RvcmUpOwpAQCAtNTUsMTQgKzQ4LDEzIEBAIFJlZjxWaXNp
dGVkTGlua1N0b3JlPiBWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKQogVmlzaXRlZExpbmtTdG9y
ZTo6flZpc2l0ZWRMaW5rU3RvcmUoKQogewogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpWaXNpdGVkTGlua1N0b3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aWRlbnRpZmllcik7CisgICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6VmlzaXRlZExpbmtTdG9yZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVy
KCkpOwogICAgICAgICBwcm9jZXNzLT5kaWREZXN0cm95VmlzaXRlZExpbmtTdG9yZSgqdGhpcyk7
CiAgICAgfQogfQogCiBWaXNpdGVkTGlua1N0b3JlOjpWaXNpdGVkTGlua1N0b3JlKCkKLSAgICA6
IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fa2V5Q291bnQoMCkK
KyAgICA6IG1fa2V5Q291bnQoMCkKICAgICAsIG1fdGFibGVTaXplKDApCiAgICAgLCBtX3BlbmRp
bmdWaXNpdGVkTGlua3NUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaXNpdGVkTGlua1N0
b3JlOjpwZW5kaW5nVmlzaXRlZExpbmtzVGltZXJGaXJlZCkKIHsKQEAgLTc1LDcgKzY3LDcgQEAg
dm9pZCBWaXNpdGVkTGlua1N0b3JlOjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cykKICAgICBpZiAoIW1fcHJvY2Vzc2VzLmFkZCgmcHJvY2VzcykuaXNOZXdFbnRyeSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZp
c2l0ZWRMaW5rU3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhp
cyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpc2l0ZWRMaW5r
U3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CiAKICAg
ICBpZiAoIW1fa2V5Q291bnQpCiAgICAgICAgIHJldHVybjsKQEAgLTkwLDcgKzgyLDcgQEAgdm9p
ZCBWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cykKICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJnByb2Nlc3MpKTsKIAogICAgIG1f
cHJvY2Vzc2VzLnJlbW92ZSgmcHJvY2Vzcyk7Ci0gICAgcHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlZpc2l0ZWRMaW5rU3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyKTsKKyAgICBwcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6VmlzaXRlZExpbmtTdG9yZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkp
OwogfQogCiB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5rSGFz
aCBsaW5rSGFzaCkKQEAgLTExMSw3ICsxMDMsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJl
bW92ZUFsbCgpCiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKSB7CiAgICAgICAgIEFTU0VSVChwcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3Nlcygp
LmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6Vmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OlJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpLCBtX2lkZW50
aWZpZXIpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpWaXNpdGVkTGlua1RhYmxl
Q29udHJvbGxlcjo6UmVtb3ZlQWxsVmlzaXRlZExpbmtzKCksIGlkZW50aWZpZXIoKSk7CiAgICAg
fQogfQogCkBAIC0xOTQsOSArMTg2LDkgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpwZW5kaW5n
VmlzaXRlZExpbmtzVGltZXJGaXJlZCgpCiAgICAgICAgIEFTU0VSVChwcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLnByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKIAogICAgICAgICBpZiAoYWRk
ZWRWaXNpdGVkTGlua3Muc2l6ZSgpID4gMjApCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6QWxsVmlzaXRlZExpbmtTdGF0ZUNo
YW5nZWQoKSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpBbGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdl
ZCgpLCBpZGVudGlmaWVyKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6VmlzaXRlZExpbmtTdGF0
ZUNoYW5nZWQoYWRkZWRWaXNpdGVkTGlua3MpLCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OlZpc2l0
ZWRMaW5rU3RhdGVDaGFuZ2VkKGFkZGVkVmlzaXRlZExpbmtzKSwgaWRlbnRpZmllcigpKTsKICAg
ICB9CiB9CiAKQEAgLTI1Myw3ICsyNDUsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnNlbmRU
YWJsZShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgaWYgKCFtX3RhYmxlLnNoYXJlZE1l
bW9yeSgpLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpW
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6U2V0VmlzaXRlZExpbmtUYWJsZShoYW5kbGUpLCBt
X2lkZW50aWZpZXIpOworICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6VmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXI6OlNldFZpc2l0ZWRMaW5rVGFibGUoaGFuZGxlKSwgaWRlbnRpZmllcigpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNp
dGVkTGlua1N0b3JlLmgKaW5kZXggMDAwMzJmM2FiZmEuLjVjNmFkOGRkMmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAt
NDIsMTUgKzQzLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5Owog
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogICAgIAotY2xhc3MgVmlzaXRlZExpbmtTdG9yZSBmaW5h
bCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlZpc2l0ZWRMaW5r
U3RvcmU+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViUHJvY2Vzc0xp
ZmV0aW1lT2JzZXJ2ZXIgeworY2xhc3MgVmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlZpc2l0ZWRMaW5rU3RvcmU+LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2
ZXIsIHB1YmxpYyBJZGVudGlmaWVkPFZpc2l0ZWRMaW5rU3RvcmU+ICB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxWaXNpdGVkTGlua1N0b3JlPiBjcmVhdGUoKTsKIAogICAgIGV4cGxpY2l0IFZp
c2l0ZWRMaW5rU3RvcmUoKTsKICAgICB2aXJ0dWFsIH5WaXNpdGVkTGlua1N0b3JlKCk7CiAKLSAg
ICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0K
ICAgICB2b2lkIGFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCByZW1vdmVQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogCkBAIC03NCw4ICs3Myw2IEBAIHByaXZhdGU6CiAK
ICAgICBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+IG1fcHJvY2Vzc2VzOwogCi0gICAgdWludDY0
X3QgbV9pZGVudGlmaWVyOwotCiAgICAgdW5zaWduZWQgbV9rZXlDb3VudDsKICAgICB1bnNpZ25l
ZCBtX3RhYmxlU2l6ZTsKICAgICBWaXNpdGVkTGlua1RhYmxlIG1fdGFibGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IGRiNTRjMjRkOWUwLi40N2I3NTExYjQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTU0LDEzICs1NCw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVJZGVudGlmaWVyKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllcjsK
LQotICAgIHJldHVybiArK2lkZW50aWZpZXI7Ci19Ci0KIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBX
ZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVt
ZXJhbFNlc3Npb25JRCgpKSk7CkBAIC03Miw4ICs2NSw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBQ
QUw6CiB9CiAKIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBtX2lkZW50
aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCi0gICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkKICAgICAs
IG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURhdGFT
dG9yZSIpKQpAQCAtODIsOCArNzQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0
b3JlKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgcwogfQogCiBX
ZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKLSAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1f
Y29uZmlndXJhdGlvbigpCiAgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LldlYnNpdGVEYXRhU3RvcmUiKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBlNjQyOWE3
ZmIxZC4uM2FmMTE2NzBjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTY0LDcgKzY1LDcgQEAgc3RydWN0IFBsdWdpbk1vZHVsZUluZm87
CiAKIGVudW0gY2xhc3MgU2hvdWxkQ2xlYXJGaXJzdCB7IE5vLCBZZXMgfTsKIAotY2xhc3MgV2Vi
c2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJs
aWMgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgV2ViUHJvY2Vzc0xp
ZmV0aW1lT2JzZXJ2ZXIsIHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+ICB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IENvbmZpZ3VyYXRpb24gewogICAgICAgICBTdHJpbmcgY2FjaGVT
dG9yYWdlRGlyZWN0b3J5OwpAQCAtODUsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQp
OwogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKIAotICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLQogICAgIGJvb2wgaXNQZXJz
aXN0ZW50KCkgY29uc3QgeyByZXR1cm4gIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCk7IH0KICAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQogCkBAIC0xNTksNyArMTU4LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZW1vdmVN
ZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwogICAgIHN0YXRp
YyB2b2lkIHJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnksIGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpOwogCi0g
ICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogCiAgICAgY29uc3QgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRT
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcAppbmRleCBhMjg1N2RjNTdmNy4uYmRjNjJhZDAwODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtNDEs
OCArNDEsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXN0YXRpYyB1aW50NjRfdCBuZXh0QXZhaWxhYmxlSWRlbnRpZmllciA9IDE7Ci0KIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBXZWJTb2NrZXRTdHJlYW0qPiYgZ2xvYmFsV2ViU29ja2V0U3Ry
ZWFtTWFwKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwg
V2ViU29ja2V0U3RyZWFtKj4+IGdsb2JhbE1hcDsKQEAgLTcyLDE5ICs3MCwxOCBAQCBSZWY8V2Vi
U29ja2V0U3RyZWFtPiBXZWJTb2NrZXRTdHJlYW06OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQwogCiBXZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbShjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBj
bGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRp
dGlvbikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkKLSAgICAsIG1faWRl
bnRpZmllcihuZXh0QXZhaWxhYmxlSWRlbnRpZmllcisrKQogICAgICwgbV9jbGllbnQoY2xpZW50
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
cmVhdGVTb2NrZXRTdHJlYW0odXJsLCBzZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBtX2lkZW50
aWZpZXIpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q3JlYXRlU29ja2V0U3RyZWFtKHVybCwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwg
aWRlbnRpZmllcigpKSwgMCk7CiAKLSAgICBBU1NFUlQoIWdsb2JhbFdlYlNvY2tldFN0cmVhbU1h
cCgpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwotICAgIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1h
cCgpLnNldChtX2lkZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VSVCghZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwKCkuY29udGFpbnMoaWRlbnRpZmllcigpKSk7CisgICAgZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwKCkuc2V0KGlkZW50aWZpZXIoKSwgdGhpcyk7CiB9CiAKIFdlYlNvY2tldFN0cmVh
bTo6fldlYlNvY2tldFN0cmVhbSgpCiB7Ci0gICAgQVNTRVJUKGdsb2JhbFdlYlNvY2tldFN0cmVh
bU1hcCgpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwotICAgIGdsb2JhbFdlYlNvY2tldFN0cmVh
bU1hcCgpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIEFTU0VSVChnbG9iYWxXZWJTb2NrZXRT
dHJlYW1NYXAoKS5jb250YWlucyhpZGVudGlmaWVyKCkpKTsKKyAgICBnbG9iYWxXZWJTb2NrZXRT
dHJlYW1NYXAoKS5yZW1vdmUoaWRlbnRpZmllcigpKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBX
ZWJTb2NrZXRTdHJlYW06Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKQEAgLTk0LDcgKzkxLDcg
QEAgSVBDOjpDb25uZWN0aW9uKiBXZWJTb2NrZXRTdHJlYW06Om1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkKIAogdWludDY0X3QgV2ViU29ja2V0U3RyZWFtOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpCiB7Ci0gICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICByZXR1cm4gaWRlbnRpZmll
cigpOwogfQogCiB2b2lkIFdlYlNvY2tldFN0cmVhbTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFN0cmVhbS5oCmluZGV4IGQ1MGNhZDI0NWE0Li45ZTliODM0ZGQ2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
b2NrZXRTdHJlYW1IYW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVk
ZSA8d3RmL0lkZW50aWZpZWQuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwpAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFdlYlNvY2tldFN0cmVhbSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZSB7CitjbGFzcyBXZWJTb2NrZXRTdHJlYW0gOiBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGUsIHB1YmxpYyBJZGVudGlmaWVkPFdlYlNvY2tldFN0cmVhbT4gewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0U3RyZWFtPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CiAgICAgc3RhdGljIHZv
aWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CkBAIC03NCw3ICs3NSw2IEBAIHByaXZhdGU6CiAg
ICAgfldlYlNvY2tldFN0cmVhbSgpOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWRBbW91bnQgeyAw
IH07Ci0gICAgdWludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OwogICAgIFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgbV9jbGllbnQ7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVu
Y3Rpb248dm9pZChib29sKT4+IG1fc2VuZERhdGFDYWxsYmFja3M7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>