<?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>155317</bug_id>
          
          <creation_ts>2016-03-10 12:27:54 -0800</creation_ts>
          <short_desc>REGRESSION(r197943): This change broke Windows, WinCairo, GTK and EFL builds (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2016-03-10 12:46:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>155219</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1173247</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 12:27:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197943 broke the build:
This change broke Windows, WinCairo, GTK and EFL builds (Requested by ryanhaddad on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173250</commentid>
    <comment_count>1</comment_count>
      <attachid>273599</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 12:28:32 -0800</bug_when>
    <thetext>Created attachment 273599
ROLLOUT of r197943

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173260</commentid>
    <comment_count>2</comment_count>
      <attachid>273599</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 12:46:46 -0800</bug_when>
    <thetext>Comment on attachment 273599
ROLLOUT of r197943

Clearing flags on attachment: 273599

Committed r197950: &lt;http://trac.webkit.org/changeset/197950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173261</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 12:46:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273599</attachid>
            <date>2016-03-10 12:28:32 -0800</date>
            <delta_ts>2016-03-10 12:46:46 -0800</delta_ts>
            <desc>ROLLOUT of r197943</desc>
            <filename>bug-155317-20160310122819.patch</filename>
            <type>text/plain</type>
            <size>106836</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTliNDNjYWQ5MmM2NGYy
MTQzYmRlOGM1OTBkMDUzZWVkOGU4N2U0NC4uNzZmYzBmMmMxMDAzMTdiNjVlNDk3YjYzYWVlM2Vj
NDg2OTEwNGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTEwICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTk3OTQzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MzE3CisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYnJva2UgV2luZG93
cywgV2luQ2Fpcm8sIEdUSyBhbmQgRUZMIGJ1aWxkcworICAgICAgICAoUmVxdWVzdGVkIGJ5IHJ5
YW5oYWRkYWQgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisg
ICAgICAgICJBZGQgYSBiYXNlVVJMIHBhcmFtZXRlciB0byBfV0tVc2VyU3R5bGVTaGVldCIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTIxOQorICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTc5NDMKKwogMjAxNi0wMy0x
MCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQOiBJbXBs
ZW1lbnQgc3VwcG9ydCBmb3Igc2NyaXB0IGFuZCBzdHlsZSBub25jZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCAzOTAwNGViMzE2NDM0NDY2MDRhZTM1YWMyOTA0YzgzMTg2ZTgwNGQxLi40MDlhYTg3NTY5
NTU2NTcwOWQwNjFkZGQ5ZjgyYWViYmVhNmQ3MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTYtMDMtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTc5NDMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTcKKworICAgICAg
ICBUaGlzIGNoYW5nZSBicm9rZSBXaW5kb3dzLCBXaW5DYWlybywgR1RLIGFuZCBFRkwgYnVpbGRz
CisgICAgICAgIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAgICAg
ICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFkZCBhIGJhc2VVUkwgcGFyYW1ldGVy
IHRvIF9XS1VzZXJTdHlsZVNoZWV0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MjE5CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE5Nzk0MworCiAyMDE2LTAzLTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQWRkIGEgYmFzZVVSTCBwYXJhbWV0ZXIgdG8gX1dLVXNlclN0eWxlU2hlZXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxZDBlZTY1ZDQxZjAwNzFiMGVmMTFjM2NjYTYxZDQ3ZDZmMjg1YWVjLi5l
MDJiOWMxYjBiYzY4YTRlMTUxZGJhYTI4MGIxN2EwOWM1YTdiODMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTYtMDMtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTc5NDMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUzMTcKKworICAg
ICAgICBUaGlzIGNoYW5nZSBicm9rZSBXaW5kb3dzLCBXaW5DYWlybywgR1RLIGFuZCBFRkwgYnVp
bGRzCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRhZCBvbiAjd2Via2l0KS4KKworICAg
ICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFkZCBhIGJhc2VVUkwgcGFyYW1l
dGVyIHRvIF9XS1VzZXJTdHlsZVNoZWV0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MjE5CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzE5Nzk0MworCiAyMDE2LTAzLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gcHVzaCBtZWRpYSBzdHJlYW0g
c3RhdGUgdG8gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMDhkYjIxNzY5ZDZmMGQ5Y2RhMmMxYzg5MzZl
MWFlOTUzZTJkOWMyLi44NWU5NTkwMzRkNDljZjQ5MGM1ZDRkMWYzZDQzNWFjNmFhMTY2MGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yNzQwLDggKzI3NDAsNiBAQAogCQk3QzNCNzk3MjE5MDg3NTdCMDBCNDdBMkQgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzRTUx
MEExOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0U1MTA4MThERjhGMzUwMEMxMTJGNyAvKiBI
VE1MQ29udmVydGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0MzRTUxMEIxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNFNTEwOTE4REY4
RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSAqLzsgfTsKLQkJN0MzRjAxQzExQzhFNUFC
QTAwQUREOTYyIC8qIFVzZXJDb250ZW50UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0YwMUMwMUM4RTVBQjEwMEFERDk2MiAvKiBVc2Vy
Q29udGVudFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJN0MzRjAxQzIxQzhFNUFDMjAwQUREOTYyIC8qIFVzZXJDb250ZW50UHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mz
RjAxQkYxQzhFNUFCMTAwQUREOTYyIC8qIFVzZXJDb250ZW50UHJvdmlkZXIuY3BwICovOyB9Owog
CQk3QzQ4QTZEMDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhBNkNFMTkxQzlENjUw
MDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwICovOyB9OwogCQk3QzQ4QTZEMTE5MUM5RDY1
MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFt
ZXNwYWNlLmggKi87IH07CiAJCTdDNDkwMkEyMThCODI1RjgwMDdEOTI5OCAvKiBET01XaGVlbEV2
ZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1OTg5RENBMEFDQzhCQkQwMEEwQkM1MSAvKiBET01XaGVlbEV2
ZW50SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTEwMzg0LDggKzEwMzgyLDYgQEAKIAkJN0MzQjc5NzAx
OTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzRTUxMDgxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTENvbnZlcnRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNFNTEwOTE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENv
bnZlcnRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhUTUxD
b252ZXJ0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDM0YwMUJGMUM4RTVB
QjEwMEFERDk2MiAvKiBVc2VyQ29udGVudFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJDb250ZW50UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzNGMDFDMDFDOEU1QUIxMDBBREQ5NjIgLyogVXNlckNvbnRlbnRQ
cm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQ29udGVudFBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDE4OUFCMUIwN0MxNzAw
MDBGQTc1NyAvKiBHbG9iYWxFdmVudEhhbmRsZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHbG9iYWxFdmVudEhhbmRs
ZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0MTg5QUMxQjA3Q0JGMjAw
MEZBNzU3IC8qIFdpbmRvd0V2ZW50SGFuZGxlcnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdpbmRvd0V2ZW50SGFuZGxl
cnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZDRTE5MUM5RDY1MDAw
MjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdE5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODEyMyw4ICsxODExOSw2IEBACiAJCQkJMkQ0Rjk2RjIxQTFFQ0MyNDAwOThCRjg4IC8q
IFRleHRJbmRpY2F0b3IuaCAqLywKIAkJCQkxQUU3OUQ0MDE4OERCNjFGMDAyMjM5QzIgLyogVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcCAqLywKIAkJCQkxQUU3OUQ0MTE4OERCNjFGMDAyMjM5QzIg
LyogVXNlckNvbnRlbnRDb250cm9sbGVyLmggKi8sCi0JCQkJN0MzRjAxQkYxQzhFNUFCMTAwQURE
OTYyIC8qIFVzZXJDb250ZW50UHJvdmlkZXIuY3BwICovLAotCQkJCTdDM0YwMUMwMUM4RTVBQjEw
MEFERDk2MiAvKiBVc2VyQ29udGVudFByb3ZpZGVyLmggKi8sCiAJCQkJMDAzRjFGRTkxMUU2QUI0
MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLywKIAkJCQlCQ0FDRjNCQTEwNzI5MjFB
MDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCAqLywKIAkJCQlCQ0FDRjNCQjEw
NzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8sCkBAIC0yODI2NCw3
ICsyODI1OCw2IEBACiAJCQkJMDg4QzJGN0ExMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwOTNEQzEyNTVGMEU3MDBFRDlE
MjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODE2NjhEQTEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91dEVuZ2luZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJN0MzRjAxQzExQzhFNUFCQTAwQUREOTYyIC8qIFVzZXJDb250ZW50UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI2MTI1NUYzQkQwMEVGQ0EyNyAvKiBT
VkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI4
MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMwNDQxLDcgKzMwNDM0LDYgQEAKIAkJCQk1MTFFRjJEMTE3RjBG
REYxMDBFNEZBMTYgLyogSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTFFRjJDODE3RjBGRDM1MDBFNEZBMTYgLyogSlNJREJPcGVuREJSZXF1ZXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxMUVGMkM5MTdGMEZEMzUwMEU0RkExNiAvKiBKU0lEQlJlcXVl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MzRjAxQzIxQzhFNUFDMjAwQUREOTYyIC8qIFVz
ZXJDb250ZW50UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTExRUYyQ0ExN0YwRkQz
NTAwRTRGQTE2IC8qIEpTSURCVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEx
RUYyQ0IxN0YwRkQzNTAwRTRGQTE2IC8qIEpTSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDNkM0OUYzMEQ3REJBMDUwMEZGQTU1OCAvKiBKU0ltYWdlQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0
eWxlU2hlZXRzLmNwcAppbmRleCBlNTY5ZTIwNTU5YTBmMjIzNDg0MGNlNWE3ZmUwMGM0NjUwZTQ0
MWFiLi45YzM4NGRhOTZiMTgyNGMzYzQ3ZDEwNzdhZjlmOWQxYmI0ZmZlZmMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAKQEAgLTExNywyNCArMTE3LDYg
QEAgdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6dXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2Fj
aGUoKSBjb25zdAogICAgIGlmICghb3duaW5nUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
b3duaW5nUGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVhY2hVc2VyU3R5bGVTaGVldChb
Jl0oY29uc3QgVXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KSB7Ci0gICAgICAgIGlmICh1
c2VyU3R5bGVTaGVldC5pbmplY3RlZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYm
IG1fZG9jdW1lbnQub3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhtX2RvY3VtZW50
LnVybCgpLCB1c2VyU3R5bGVTaGVldC53aGl0ZWxpc3QoKSwgdXNlclN0eWxlU2hlZXQuYmxhY2ts
aXN0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiBzaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShjb25zdF9jYXN0PERvY3Vt
ZW50Jj4obV9kb2N1bWVudCksIHVzZXJTdHlsZVNoZWV0LnVybCgpKTsKLSAgICAgICAgYm9vbCBp
c1VzZXJTdHlsZVNoZWV0ID0gdXNlclN0eWxlU2hlZXQubGV2ZWwoKSA9PSBVc2VyU3R5bGVVc2Vy
TGV2ZWw7Ci0gICAgICAgIGlmIChpc1VzZXJTdHlsZVNoZWV0KQotICAgICAgICAgICAgbV9pbmpl
Y3RlZFVzZXJTdHlsZVNoZWV0cy5hcHBlbmQoc2hlZXQpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKHNoZWV0KTsKLQotICAgICAg
ICBzaGVldC0+Y29udGVudHMoKS5zZXRJc1VzZXJTdHlsZVNoZWV0KGlzVXNlclN0eWxlU2hlZXQp
OwotICAgICAgICBzaGVldC0+Y29udGVudHMoKS5wYXJzZVN0cmluZyh1c2VyU3R5bGVTaGVldC5z
b3VyY2UoKSk7Ci0gICAgfSk7Ci0gICAgCiAgICAgaWYgKCFvd25pbmdQYWdlLT5jYXB0aW9uVXNl
clByZWZlcmVuY2VzU3R5bGVTaGVldCgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJZGVudGlm
eSBvdXIgb3ZlcnJpZGUgc3R5bGUgc2hlZXQgd2l0aCBhIHVuaXF1ZSBVUkwgLSBhIG5ldyBzY2hl
bWUgYW5kIGEgVVVJRC4KICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gY2FwdGlv
bnNTdHlsZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6
MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIik7CkBAIC0xNDUsNiArMTI3LDM0
IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZUluamVjdGVkU3R5bGVTaGVldENh
Y2hlKCkgY29uc3QKICAgICAgICAgc2hlZXQtPmNvbnRlbnRzKCkuc2V0SXNVc2VyU3R5bGVTaGVl
dChmYWxzZSk7CiAgICAgICAgIHNoZWV0LT5jb250ZW50cygpLnBhcnNlU3RyaW5nKG93bmluZ1Bh
Z2UtPmNhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KCkpOwogICAgIH0KKworICAgIGNv
bnN0IGF1dG8qIHVzZXJDb250ZW50Q29udHJvbGxlciA9IG93bmluZ1BhZ2UtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpOworICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb25zdCBVc2VyU3R5bGVTaGVldE1hcCogdXNlclN0eWxlU2hlZXRzID0g
dXNlckNvbnRlbnRDb250cm9sbGVyLT51c2VyU3R5bGVTaGVldHMoKTsKKyAgICBpZiAoIXVzZXJT
dHlsZVNoZWV0cykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvJiBzdHlsZVNoZWV0
cyA6IHVzZXJTdHlsZVNoZWV0cy0+dmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBzaGVldCA6ICpzdHlsZVNoZWV0cykgeworICAgICAgICAgICAgaWYgKHNoZWV0LT5pbmplY3Rl
ZEZyYW1lcygpID09IEluamVjdEluVG9wRnJhbWVPbmx5ICYmIG1fZG9jdW1lbnQub3duZXJFbGVt
ZW50KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMobV9kb2N1bWVudC51cmwoKSwgc2hl
ZXQtPndoaXRlbGlzdCgpLCBzaGVldC0+YmxhY2tsaXN0KCkpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gZ3JvdXBTaGVldCA9
IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShjb25zdF9jYXN0PERvY3VtZW50Jj4obV9kb2N1
bWVudCksIHNoZWV0LT51cmwoKSk7CisgICAgICAgICAgICBib29sIGlzVXNlclN0eWxlU2hlZXQg
PSBzaGVldC0+bGV2ZWwoKSA9PSBVc2VyU3R5bGVVc2VyTGV2ZWw7CisgICAgICAgICAgICBpZiAo
aXNVc2VyU3R5bGVTaGVldCkKKyAgICAgICAgICAgICAgICBtX2luamVjdGVkVXNlclN0eWxlU2hl
ZXRzLmFwcGVuZChncm91cFNoZWV0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKGdyb3VwU2hlZXQpOworCisgICAg
ICAgICAgICBncm91cFNoZWV0LT5jb250ZW50cygpLnNldElzVXNlclN0eWxlU2hlZXQoaXNVc2Vy
U3R5bGVTaGVldCk7CisgICAgICAgICAgICBncm91cFNoZWV0LT5jb250ZW50cygpLnBhcnNlU3Ry
aW5nKHNoZWV0LT5zb3VyY2UoKSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgRXh0ZW5z
aW9uU3R5bGVTaGVldHM6OmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0NzIxMzBmZDc4NTBjOGZm
OTRhNTEwYmYzOTlhNmU1ODFkMjI2ZGQ0Li41MTdjZjZlMWY3YzFiNTNiM2FlODkyNTg1MDU1YWYw
ZTI4MjNiZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTEyNTYsNyArMTI1Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNv
bnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKIAotICAgIGlmIChkb2N1bWVudExv
YWRlciAmJiBwYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkucHJvY2Vzc0NvbnRlbnRFeHRlbnNp
b25SdWxlc0ZvckxvYWQocmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpNZWRpYSwgKmRvY3VtZW50TG9h
ZGVyKSA9PSBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1czo6QmxvY2tlZCkgeworICAg
IGlmIChwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSAmJiBkb2N1bWVudExvYWRlciAmJiBw
YWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQocmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpNZWRpYSwgKmRvY3VtZW50TG9hZGVyKSA9
PSBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1czo6QmxvY2tlZCkgewogICAgICAgICBy
ZXF1ZXN0ID0geyB9OwogICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZv
cm1hdEVycm9yKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAppbmRleCBjOTUwOWQ3NDJmZTE4ZjVlNzJhYzFjMWI1N2IxOGEzYWU0NTY2ODBmLi4w
NGU4Y2M2ZDYzNzE2NGVlNzg2ZDdhNzcwNDhlZDhjZjM4N2JkOWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZS5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci5oIgotI2luY2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCkBAIC05NiwxOCArOTUsNyBAQCBjbGFzcyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgewogICAgIH0KIH07
CiAKLWNsYXNzIEVtcHR5VXNlckNvbnRlbnRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBVc2VyQ29u
dGVudFByb3ZpZGVyIHsKLSAgICB2b2lkIGZvckVhY2hVc2VyU2NyaXB0KGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248dm9pZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBVc2VyU2NyaXB0Jik+JikgY29uc3Qg
b3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBmb3JFYWNoVXNlclN0eWxlU2hlZXQoY29uc3Qgc3RkOjpm
dW5jdGlvbjx2b2lkKGNvbnN0IFVzZXJTdHlsZVNoZWV0Jik+JikgY29uc3Qgb3ZlcnJpZGUgeyB9
Ci0jaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKLSAgICBjb25zdCBVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yTWFwJiB1c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycygpIGNv
bnN0IG92ZXJyaWRlIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JNYXA+IG1hcDsgcmV0dXJuIG1hcC5nZXQoKTsgfQotI2VuZGlmCi0jaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kJiB1c2VyQ29udGVudEV4dGVuc2lvbkJhY2tlbmQoKSBvdmVycmlkZSB7IHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNC
YWNrZW5kPiBiYWNrZW5kOyByZXR1cm4gYmFja2VuZC5nZXQoKTsgfTsKLSNlbmRpZgotfTsKLQot
Y2xhc3MgRW1wdHlWaXNpdGVkTGlua1N0b3JlIGZpbmFsIDogcHVibGljIFZpc2l0ZWRMaW5rU3Rv
cmUgeworY2xhc3MgRW1wdHlWaXNpdGVkTGlua1N0b3JlIDogcHVibGljIFZpc2l0ZWRMaW5rU3Rv
cmUgewogICAgIGJvb2wgaXNMaW5rVmlzaXRlZChQYWdlJiwgTGlua0hhc2gsIGNvbnN0IFVSTCYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9p
ZCBhZGRWaXNpdGVkTGluayhQYWdlJiwgTGlua0hhc2gpIG92ZXJyaWRlIHsgfQogfTsKQEAgLTE0
NCw3ICsxMzIsNiBAQCB2b2lkIGZpbGxXaXRoRW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0aW9u
JiBwYWdlQ29uZmlndXJhdGlvbikKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJv
dmlkZXIgPSBhZG9wdFJlZihuZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZihuZXcgRW1wdHlT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250
ZW50UHJvdmlkZXIgPSBhZG9wdFJlZihuZXcgRW1wdHlVc2VyQ29udGVudFByb3ZpZGVyKTsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlID0gYWRvcHRSZWYobmV3IEVtcHR5
VmlzaXRlZExpbmtTdG9yZSk7CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGY5NzY0NjRiNzAwZDFkZGQ1ODlhYWNhZmU4
MzM0MjM3YTI3N2UwOGYuLmIyMDhiNzllOThmNGYxY2Q3ZTYxMjA2Zjk1M2NjOTU4YzI3NmJlOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnQu
aCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTQzLDE4ICs0NCw5IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlckNsaWVudC5oIgogI2luY2x1
ZGUgIlJlc291cmNlRXJyb3IuaCIKLSNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIlZpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg+CiAKLSNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQotI2luY2x1ZGUgIlVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKLSNpbmNsdWRlICJDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCIKLSNlbmRp
ZgotCiAvKgogIFRoaXMgZmlsZSBob2xkcyBlbXB0eSBDbGllbnQgc3R1YnMgZm9yIHVzZSBieSBX
ZWJDb3JlLgogIFZpZXdsZXNzIGVsZW1lbnQgbmVlZHMgdG8gY3JlYXRlIGEgZHVtbXkgUGFnZS0+
RnJhbWUtPkZyYW1lVmlldyB0cmVlIGZvciB1c2UgaW4gcGFyc2luZyBvciBleGVjdXRpbmcgSmF2
YVNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDljMGFhYjQx
NWU2MDY3NWM0NDQ0NjU5Y2ZlMTlhMTNhZjNiZjhjYWMuLjQ0NzQ5ZWUyYmZjZWYzMGE0NWRkNjZl
ZTAzOWZiNjUwYWEwZmIzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtMjczMCwxMSArMjczMCwxMyBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgICAgIGlmIChtX2Rv
Y3VtZW50TG9hZGVyICYmIHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5wcm9jZXNzQ29udGVu
dEV4dGVuc2lvblJ1bGVzRm9yTG9hZChuZXdSZXF1ZXN0LCBSZXNvdXJjZVR5cGU6OlJhdywgKm1f
ZG9jdW1lbnRMb2FkZXIpID09IENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzOjpCbG9j
a2VkKSB7Ci0gICAgICAgICAgICAgICAgbmV3UmVxdWVzdCA9IHsgfTsKLSAgICAgICAgICAgICAg
ICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgaW5p
dGlhbFJlcXVlc3QudXJsKCksIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIHJlc3Bv
bnNlID0geyB9OwotICAgICAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOworICAgICAgICAgICAg
aWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyICYmIGNvbnRyb2xsZXItPnByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKG5ld1JlcXVlc3QsIFJlc291cmNlVHlwZTo6
UmF3LCAqbV9kb2N1bWVudExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0
dXM6OkJsb2NrZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdCA9IHsgfTsKKyAg
ICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLCBlbXB0eVN0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7IH07CisgICAgICAgICAgICAgICAgICAgIGRhdGEg
PSBudWxscHRyOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAppbmRleCAwNzY0YzQzNGRiMjZm
ZjVkNjEwNjRlOWJmMzAzNDRlYWEzMDRhZjU3Li4xOTRmNGNiMGViYmE5Zjg3NDE3MGFmMmEwOTVm
YjMyMDYxOWRmNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCkBAIC01OSw4
ICs1OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgQ29udGVudEV4dGVuc2lvbnM6
OkJsb2NrZWRTdGF0dXMgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29uc3Qg
RnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUpCiB7CiAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZS5wYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFnZS0+dXNlckNvbnRlbnRQcm92
aWRlcigpLnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVlc3QsIHJlc291
cmNlVHlwZSwgKmRvY3VtZW50TG9hZGVyKTsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFt
ZS5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChVc2VyQ29udGVudENvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVx
dWVzdCwgcmVzb3VyY2VUeXBlLCAqZG9jdW1lbnRMb2FkZXIpOworICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1czo6Tm90QmxvY2tlZDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA0NTY1NmEy
MjE1Y2ZhNTY5ZDE3ZjU5ODM5OGE0M2Q1MWYyN2U3NmMuLmNlZjA2YTM2YmU5MjY5ZjMzYjVkMWE4
NDUyMGE5MWQ5NjI4ZWVlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzCiAgICAgaWYg
KGZyYW1lTG9hZGVyKCkpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IGZyYW1lTG9hZGVyKCktPmZy
YW1lKCkucGFnZSgpOwogICAgICAgICBpZiAocGFnZSAmJiBtX2RvY3VtZW50TG9hZGVyKSB7Ci0g
ICAgICAgICAgICBpZiAocGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50
RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVlc3QsIG1fcmVzb3VyY2VUeXBlLCAqbV9kb2N1bWVu
dExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXM6OkJsb2NrZWQpCisg
ICAgICAgICAgICBhdXRvKiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKTsKKyAgICAgICAgICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIgJiYg
dXNlckNvbnRlbnRDb250cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9h
ZChyZXF1ZXN0LCBtX3Jlc291cmNlVHlwZSwgKm1fZG9jdW1lbnRMb2FkZXIpID09IENvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzOjpCbG9ja2VkKQogICAgICAgICAgICAgICAgIHJlcXVl
c3QgPSB7IH07CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiMWM1OTY5NWI2Nzc0MDQ2
OWE3YTMzMDdjZGVkYjljZmQ3ZDNlYjA0Li4wMDBmOWFhODM1MmVjMjAyMzZmYTdiYzJmYzU5ZDI0
Nzc0ODZkYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTU0Miw4ICs1NDIsOCBAQCBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZShDYWNoZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCi0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgp
ICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKLSAgICAgICAgaWYgKGZyYW1lKCktPm1haW5GcmFtZSgp
LnBhZ2UoKS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVs
ZXNGb3JMb2FkKHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCB0b1Jlc291cmNlVHlw
ZSh0eXBlKSwgKm1fZG9jdW1lbnRMb2FkZXIpID09IENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2Vk
U3RhdHVzOjpCbG9ja2VkKSB7CisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1l
KCkucGFnZSgpICYmIGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRDb250
cm9sbGVyKCkgJiYgbV9kb2N1bWVudExvYWRlcikgeworICAgICAgICBpZiAoZnJhbWUoKS0+bWFp
bkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS0+cHJvY2Vzc0NvbnRlbnRF
eHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIHRv
UmVzb3VyY2VUeXBlKHR5cGUpLCAqbV9kb2N1bWVudExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lv
bnM6OkJsb2NrZWRTdGF0dXM6OkJsb2NrZWQpIHsKICAgICAgICAgICAgIGlmICh0eXBlID09IENh
Y2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICBhdXRv
IHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBzZXNzaW9uSUQoKSk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBlZDVh
ZDc0YzBlZTkxNGIxNjIzMGM3M2FhYWI0NTBjODE4MmU0N2IxLi5mMzczM2ExNzYxMzZlYTI3NjRi
YWM4NjgyYTllYjA4MDFmM2Y3ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03
NjEsNyArNzYxLDE1IEBAIGJvb2wgRE9NV2luZG93OjpzaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNl
Rm9yV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoYXV0byYgZGVzY3JpcHRvciA6IHBhZ2UtPnVzZXJD
b250ZW50UHJvdmlkZXIoKS51c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycygpLnZhbHVlcygp
KSB7CisgICAgYXV0byogdXNlckNvbnRlbnRDb250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCk7CisgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8qIGRlc2NyaXB0b3JNYXAgPSB1c2VyQ29udGVudENvbnRy
b2xsZXItPnVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzKCk7CisgICAgaWYgKCFkZXNjcmlw
dG9yTWFwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIGRlc2NyaXB0
b3IgOiBkZXNjcmlwdG9yTWFwLT52YWx1ZXMoKSkgewogICAgICAgICBpZiAoJmRlc2NyaXB0b3It
PndvcmxkKCkgPT0gJndvcmxkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MjE2MCwxMCArMjE2OCwxMSBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVu
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGZpcnN0RnJhbWUtPmRvY3VtZW50KCkKICAgICAg
ICAgJiYgZmlyc3RGcmFtZS0+bWFpbkZyYW1lKCkucGFnZSgpCisgICAgICAgICYmIGZpcnN0RnJh
bWUtPm1haW5GcmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkKICAgICAgICAg
JiYgZmlyc3RGcmFtZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKQogICAgICAgICAmJiBmaXJzdEZy
YW1lLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5sb2FkZXIoKSkgewotICAgICAgICBSZXNvdXJj
ZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8gPSB7IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKHVybFN0cmluZyksIGZpcnN0RnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkt
PnVybCgpLCBSZXNvdXJjZVR5cGU6OlBvcHVwIH07Ci0gICAgICAgIFZlY3RvcjxDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uPiBhY3Rpb25zID0gZmlyc3RGcmFtZS0+bWFpbkZyYW1lKCkucGFnZSgp
LT51c2VyQ29udGVudFByb3ZpZGVyKCkuYWN0aW9uc0ZvclJlc291cmNlTG9hZChyZXNvdXJjZUxv
YWRJbmZvLCAqZmlyc3RGcmFtZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+bG9hZGVyKCkpOwor
ICAgICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8gPSB7Zmlyc3RGcmFtZS0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKSwgZmlyc3RGcmFtZS0+bWFpbkZyYW1l
KCkuZG9jdW1lbnQoKS0+dXJsKCksIFJlc291cmNlVHlwZTo6UG9wdXB9OworICAgICAgICBWZWN0
b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gYWN0aW9ucyA9IGZpcnN0RnJhbWUtPm1haW5G
cmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPmFjdGlvbnNGb3JSZXNvdXJj
ZUxvYWQocmVzb3VyY2VMb2FkSW5mbywgKmZpcnN0RnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCktPmxvYWRlcigpKTsKICAgICAgICAgZm9yIChjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uJiBhY3Rpb24gOiBhY3Rpb25zKSB7CiAgICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUoKSA9
PSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkKQogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAwNWVjOTNjZTNkMTE3
YjVlNzBlMDA2MWI5NzYxNzg5NTZiMTJlZTZkLi41ZDQ2MTZmNTM4NGZiMjY4MTIzOGIyYTlhYzM3
ZjU1ZTQ4NjEzM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjg5LDE3ICs2ODksMzUgQEAg
dm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSkKICAgICBpZiAobG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCgpICYmICFzZXR0aW5ncygpLnNob3VsZEluamVjdFVzZXJTY3JpcHRz
SW5Jbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCisgICAg
Y29uc3QgYXV0byogdXNlckNvbnRlbnRDb250cm9sbGVyID0gbV9wYWdlLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gV2FsayB0aGUgaGFzaHRhYmxlLiBJbmplY3QgYnkgd29ybGQuCisgICAg
Y29uc3QgVXNlclNjcmlwdE1hcCogdXNlclNjcmlwdHMgPSB1c2VyQ29udGVudENvbnRyb2xsZXIt
PnVzZXJTY3JpcHRzKCk7CisgICAgaWYgKCF1c2VyU2NyaXB0cykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZEFuZFVzZXJTY3JpcHQgOiAqdXNlclNjcmlwdHMp
CisgICAgICAgIGluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoKndvcmxkQW5kVXNlclNjcmlwdC5r
ZXksICp3b3JsZEFuZFVzZXJTY3JpcHQudmFsdWUsIGluamVjdGlvblRpbWUpOworfQorCit2b2lk
IEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IGNvbnN0IFVzZXJTY3JpcHRWZWN0b3ImIHVzZXJTY3JpcHRzLCBVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSBpbmplY3Rpb25UaW1lKQoreworICAgIGlmICh1c2VyU2NyaXB0cy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLmZvckVh
Y2hVc2VyU2NyaXB0KFsmXShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0
JiBzY3JpcHQpIHsKLSAgICAgICAgaWYgKHNjcmlwdC5pbmplY3RlZEZyYW1lcygpID09IEluamVj
dEluVG9wRnJhbWVPbmx5ICYmIG93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIHNjcmlwdCA6IHVzZXJTY3JpcHRzKSB7CisgICAgICAg
IGlmIChzY3JpcHQtPmluamVjdGVkRnJhbWVzKCkgPT0gSW5qZWN0SW5Ub3BGcmFtZU9ubHkgJiYg
b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoc2Ny
aXB0LmluamVjdGlvblRpbWUoKSA9PSBpbmplY3Rpb25UaW1lICYmIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LndoaXRlbGlzdCgp
LCBzY3JpcHQuYmxhY2tsaXN0KCkpKQotICAgICAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlSW5X
b3JsZChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2UoKSwgc2NyaXB0LnVybCgpKSwgd29y
bGQpOwotICAgIH0pOworICAgICAgICBpZiAoc2NyaXB0LT5pbmplY3Rpb25UaW1lKCkgPT0gaW5q
ZWN0aW9uVGltZSAmJiBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2Mt
PnVybCgpLCBzY3JpcHQtPndoaXRlbGlzdCgpLCBzY3JpcHQtPmJsYWNrbGlzdCgpKSkKKyAgICAg
ICAgICAgIG1fc2NyaXB0LT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQt
PnNvdXJjZSgpLCBzY3JpcHQtPnVybCgpKSwgd29ybGQpOworICAgIH0KIH0KIAogUmVuZGVyVmll
dyogRnJhbWU6OmNvbnRlbnRSZW5kZXJlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMzAw
OTVjODcxYTMxZDY3ZTIxOTc0N2QyZTYwYjQ5MDBhNmRlYzkxMC4uZjMwNTA3NWVlNDA2YmI5YjRi
ZTNhYjdkYThmMTM3M2Y5MzY0NjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjgwLDYgKzI4MCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRnJhbWUoUGFnZSYsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Jik7CiAKICAgICBwcml2YXRlOgorICAgICAg
ICB2b2lkIGluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3Qg
VXNlclNjcmlwdFZlY3RvciYsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKwogICAgICAgICBI
YXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnM7
CiAKICAgICAgICAgTWFpbkZyYW1lJiBtX21haW5GcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGEzZDI4NTdmN2E0ZWUzYzViMTljYzcwYWY3NDlhY2NjNzc0ZDg5ZjMuLjk2MzBjYjgxZTNlZWZi
YzNhMjRhMzAyNmY5ZTcyODVlM2NiNTY4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODcsNyAr
ODcsNyBAQAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxv
YWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKLSNpbmNsdWRlICJVc2Vy
Q29udGVudFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiVXNlcklucHV0QnJpZGdlLmgiCiAjaW5jbHVkZSAiVmlld1N0YXRlQ2hhbmdlT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1N0YXRlLmgiCkBAIC0yMzEsNyArMjMxLDcg
QEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlID8gKldURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UpIDogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNpbmdsZXRvbigpKQogICAgICwg
bV9kYXRhYmFzZVByb3ZpZGVyKCpXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJv
dmlkZXIpKQogICAgICwgbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKldURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKSkKLSAgICAsIG1fdXNlckNvbnRl
bnRQcm92aWRlcigqV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVy
KSkKKyAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24udXNlckNvbnRlbnRDb250cm9sbGVyKSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZSgqV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlKSkKICAgICAsIG1fc2Vzc2lv
bklEKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICwgbV9pc0Nsb3NpbmcoZmFs
c2UpCkBAIC0yNDAsNyArMjQwLDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAKICAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci0+YWRkUGFn
ZSgqdGhpcyk7CiAKLSAgICBtX3VzZXJDb250ZW50UHJvdmlkZXItPmFkZFBhZ2UoKnRoaXMpOwor
ICAgIGlmIChtX3VzZXJDb250ZW50Q29udHJvbGxlcikKKyAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFBhZ2UoKnRoaXMpOworCiAgICAgbV92aXNpdGVkTGlua1N0b3JlLT5hZGRQ
YWdlKCp0aGlzKTsKIAogICAgIGlmICghYWxsUGFnZXMpIHsKQEAgLTI5Niw3ICsyOTgsOSBAQCBQ
YWdlOjp+UGFnZSgpCiAjZW5kaWYKIAogICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5y
ZW1vdmVQYWdlKCp0aGlzKTsKLSAgICBtX3VzZXJDb250ZW50UHJvdmlkZXItPnJlbW92ZVBhZ2Uo
KnRoaXMpOworCisgICAgaWYgKG1fdXNlckNvbnRlbnRDb250cm9sbGVyKQorICAgICAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlUGFnZSgqdGhpcyk7CiAgICAgbV92aXNpdGVkTGlu
a1N0b3JlLT5yZW1vdmVQYWdlKCp0aGlzKTsKIH0KIApAQCAtMTgxNSwxNiArMTgxOSwxNSBAQCBi
b29sIFBhZ2U6OmFyZVByb21wdHNBbGxvd2VkKCkKICAgICByZXR1cm4gIW1fZm9yYmlkUHJvbXB0
c0RlcHRoOwogfQogCi1Vc2VyQ29udGVudFByb3ZpZGVyJiBQYWdlOjp1c2VyQ29udGVudFByb3Zp
ZGVyKCkKK3ZvaWQgUGFnZTo6c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29u
dHJvbGxlciogdXNlckNvbnRlbnRDb250cm9sbGVyKQogewotICAgIHJldHVybiBtX3VzZXJDb250
ZW50UHJvdmlkZXI7Ci19CisgICAgaWYgKG1fdXNlckNvbnRlbnRDb250cm9sbGVyKQorICAgICAg
ICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlUGFnZSgqdGhpcyk7CiAKLXZvaWQgUGFn
ZTo6c2V0VXNlckNvbnRlbnRQcm92aWRlcihSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2Vy
Q29udGVudFByb3ZpZGVyKQotewotICAgIG1fdXNlckNvbnRlbnRQcm92aWRlci0+cmVtb3ZlUGFn
ZSgqdGhpcyk7Ci0gICAgbV91c2VyQ29udGVudFByb3ZpZGVyID0gV1RGTW92ZSh1c2VyQ29udGVu
dFByb3ZpZGVyKTsKLSAgICBtX3VzZXJDb250ZW50UHJvdmlkZXItPmFkZFBhZ2UoKnRoaXMpOwor
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyID0gdXNlckNvbnRlbnRDb250cm9sbGVyOworCisg
ICAgaWYgKG1fdXNlckNvbnRlbnRDb250cm9sbGVyKQorICAgICAgICBtX3VzZXJDb250ZW50Q29u
dHJvbGxlci0+YWRkUGFnZSgqdGhpcyk7CiAKICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNo
ZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA2YmQ0NDllMzUzZTg4
ZjAyMTA0NmE4ZWMxZjE0MmYzMWQ2MmM5ZWY0Li5hZDAxNTk4MWQ3MDRlMGFlOGZlOWQwOTZhZjA4
MzY4NTM5Mjk1YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOwogY2xhc3MgU2V0dGluZ3M7CiBjbGFzcyBTdG9yYWdlTmFtZXNw
YWNlOwogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotY2xhc3MgVXNlckNvbnRlbnRQ
cm92aWRlcjsKK2NsYXNzIFVzZXJDb250ZW50Q29udHJvbGxlcjsKIGNsYXNzIFZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50OwogY2xhc3MgVmlld1N0YXRlQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBWaXNp
dGVkTGlua1N0b3JlOwpAQCAtNDUwLDggKzQ1MCw4IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXImIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpIHsgcmV0dXJuIG1fc3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIoUmVmPFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4mJik7CiAKLSAgICBVc2Vy
Q29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVyKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYm
KTsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXIqIHVzZXJDb250ZW50Q29udHJvbGxlcigpIHsg
cmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLmdldCgpOyB9CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVyKik7
CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWaXNpdGVkTGlua1N0b3JlKFJlZjxWaXNpdGVkTGlua1N0b3JlPiYm
KTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIFJlZjxBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZT4gbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKICAgICBSZWY8RGF0YWJhc2VQcm92
aWRlcj4gbV9kYXRhYmFzZVByb3ZpZGVyOwogICAgIFJlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI+IG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwotICAgIFJlZjxVc2VyQ29udGVudFByb3Zp
ZGVyPiBtX3VzZXJDb250ZW50UHJvdmlkZXI7CisgICAgUmVmUHRyPFVzZXJDb250ZW50Q29udHJv
bGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CiAgICAgUmVmPFZpc2l0ZWRMaW5rU3RvcmU+
IG1fdmlzaXRlZExpbmtTdG9yZTsKICAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RUcmlnZ2VyPiBt
X3Rlc3RUcmlnZ2VyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKaW5k
ZXggM2M0NDVkYjY0MTU1ZTk1MzMzMzE5YjJlZTE3YWZmNDU4YWMwY2JmZC4uNWI5NzFjMTViMGMx
YTU2MmU3ZTgzODkxNTJhZWQ0YjhhNjVmYTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBj
bGFzcyBQbHVnSW5DbGllbnQ7CiBjbGFzcyBQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiBjbGFzcyBT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7Ci1jbGFzcyBVc2VyQ29udGVudFByb3ZpZGVyOworY2xh
c3MgVXNlckNvbnRlbnRDb250cm9sbGVyOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7
CiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlOwogCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IGFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OwogICAgIFJlZlB0cjxEYXRhYmFzZVByb3ZpZGVyPiBkYXRhYmFzZVByb3ZpZGVyOwogICAgIFJl
ZlB0cjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsK
LSAgICBSZWZQdHI8VXNlckNvbnRlbnRQcm92aWRlcj4gdXNlckNvbnRlbnRQcm92aWRlcjsKKyAg
ICBSZWZQdHI8VXNlckNvbnRlbnRDb250cm9sbGVyPiB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAg
ICAgUmVmUHRyPFZpc2l0ZWRMaW5rU3RvcmU+IHZpc2l0ZWRMaW5rU3RvcmU7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggNDdhOTQ4
MThhYTRiODFjNWM0NzRmYjFhZjNkODQ3NDg5OWZlZmE2ZC4uZGY4YzdiOTQ3YzJmY2MyZTU3Nzhl
YTAzMjhmZTc1MGI5Y2UxOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcApAQCAtMjcsMTUgKzI3LDI0IEBACiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRXh0
ZW5zaW9uU3R5bGVTaGVldHMuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUgIlVzZXJTY3Jp
cHQuaCIKICNpbmNsdWRlICJVc2VyU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgogCiAj
aWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICNpbmNsdWRlICJVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCi0jaW5jbHVkZSAiQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmgiCisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsMzMgKzYyLDM2IEBA
IFVzZXJDb250ZW50Q29udHJvbGxlcjo6flVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiB9CiAK
LXZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpmb3JFYWNoVXNlclNjcmlwdChjb25zdCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpPiYgZnVu
Y3RvcikgY29uc3QKK3ZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRQYWdlKFBhZ2UmIHBh
Z2UpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZEFuZFVzZXJTY3JpcHRWZWN0b3IgOiBt
X3VzZXJTY3JpcHRzKSB7Ci0gICAgICAgIGF1dG8mIHdvcmxkID0gKndvcmxkQW5kVXNlclNjcmlw
dFZlY3Rvci5rZXkuZ2V0KCk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgdXNlclNjcmlwdCA6
ICp3b3JsZEFuZFVzZXJTY3JpcHRWZWN0b3IudmFsdWUpCi0gICAgICAgICAgICBmdW5jdG9yKHdv
cmxkLCAqdXNlclNjcmlwdCk7Ci0gICAgfQorICAgIEFTU0VSVCghbV9wYWdlcy5jb250YWlucygm
cGFnZSkpOworICAgIG1fcGFnZXMuYWRkKCZwYWdlKTsKIH0KIAotdm9pZCBVc2VyQ29udGVudENv
bnRyb2xsZXI6OmZvckVhY2hVc2VyU3R5bGVTaGVldChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Y29uc3QgVXNlclN0eWxlU2hlZXQmKT4mIGZ1bmN0b3IpIGNvbnN0Cit2b2lkIFVzZXJDb250ZW50
Q29udHJvbGxlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogewotICAgIGZvciAoYXV0byYgc3R5
bGVTaGVldFZlY3RvciA6IG1fdXNlclN0eWxlU2hlZXRzLnZhbHVlcygpKSB7Ci0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc3R5bGVTaGVldCA6ICpzdHlsZVNoZWV0VmVjdG9yKQotICAgICAgICAg
ICAgZnVuY3Rvcigqc3R5bGVTaGVldCk7Ci0gICAgfQorICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRh
aW5zKCZwYWdlKSk7CisgICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOwogfQogCiB2b2lkIFVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBz
dGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCkKIHsKLSAgICBhdXRvJiBzY3Jp
cHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIGlmICghbV91c2VyU2NyaXB0cykKKyAgICAgICAgbV91c2VyU2NyaXB0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VXNlclNjcmlwdE1hcD4oKTsKKworICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0g
bV91c2VyU2NyaXB0cy0+YWRkKCZ3b3JsZCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAg
IGlmICghc2NyaXB0c0luV29ybGQpCisgICAgICAgIHNjcmlwdHNJbldvcmxkID0gc3RkOjptYWtl
X3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOwogICAgIHNjcmlwdHNJbldvcmxkLT5hcHBlbmQo
V1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQog
ewotICAgIGF1dG8gaXQgPSBtX3VzZXJTY3JpcHRzLmZpbmQoJndvcmxkKTsKLSAgICBpZiAoaXQg
PT0gbV91c2VyU2NyaXB0cy5lbmQoKSkKKyAgICBpZiAoIW1fdXNlclNjcmlwdHMpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX3VzZXJTY3JpcHRzLT5maW5kKCZ3b3JsZCk7Cisg
ICAgaWYgKGl0ID09IG1fdXNlclNjcmlwdHMtPmVuZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIHNjcmlwdHMgPSBpdC0+dmFsdWUuZ2V0KCk7CkBAIC04OSwxNyArMTAxLDI1IEBAIHZv
aWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIGNvbnN0IFVSTCYKICAgICB9CiAKICAgICBpZiAoc2NyaXB0cy0+aXNFbXB0eSgp
KQotICAgICAgICBtX3VzZXJTY3JpcHRzLnJlbW92ZShpdCk7CisgICAgICAgIG1fdXNlclNjcmlw
dHMtPnJlbW92ZShpdCk7CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVV
c2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIG1fdXNlclNjcmlwdHMu
cmVtb3ZlKCZ3b3JsZCk7CisgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUoJndvcmxkKTsKIH0KIAogdm9pZCBVc2VyQ29u
dGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IHN0ZDo6dW5pcXVlX3B0cjxVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQsIFVzZXJTdHls
ZUluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBhdXRvJiBzdHlsZVNoZWV0c0lu
V29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVl
OworICAgIGlmICghbV91c2VyU3R5bGVTaGVldHMpCisgICAgICAgIG1fdXNlclN0eWxlU2hlZXRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldE1hcD4oKTsKKworICAgIGF1dG8mIHN0
eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQoJndvcmxkLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCisgICAgICAg
IHN0eWxlU2hlZXRzSW5Xb3JsZCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0
b3I+KCk7CiAgICAgc3R5bGVTaGVldHNJbldvcmxkLT5hcHBlbmQoV1RGTW92ZSh1c2VyU3R5bGVT
aGVldCkpOwogCiAgICAgaWYgKGluamVjdGlvblRpbWUgPT0gSW5qZWN0SW5FeGlzdGluZ0RvY3Vt
ZW50cykKQEAgLTEwOCw4ICsxMjgsMTEgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFk
ZFVzZXJTdHlsZVNoZWV0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXUKIAogdm9p
ZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIGF1dG8gaXQgPSBtX3VzZXJTdHls
ZVNoZWV0cy5maW5kKCZ3b3JsZCk7Ci0gICAgaWYgKGl0ID09IG1fdXNlclN0eWxlU2hlZXRzLmVu
ZCgpKQorICAgIGlmICghbV91c2VyU3R5bGVTaGVldHMpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gaXQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+ZmluZCgmd29ybGQpOworICAgIGlmIChpdCA9
PSBtX3VzZXJTdHlsZVNoZWV0cy0+ZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8m
IHN0eWxlc2hlZXRzID0gKml0LT52YWx1ZTsKQEAgLTEyNiwxNCArMTQ5LDE3IEBAIHZvaWQgVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQm
IHdvcmxkLCBjb25zdCBVCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzdHlsZXNoZWV0cy5p
c0VtcHR5KCkpCi0gICAgICAgIG1fdXNlclN0eWxlU2hlZXRzLnJlbW92ZShpdCk7CisgICAgICAg
IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmUoaXQpOwogCiAgICAgaW52YWxpZGF0ZUluamVjdGVk
U3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBhZ2VzKCk7CiB9CiAKIHZvaWQgVXNlckNv
bnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU3R5bGVTaGVldHMoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKIHsKLSAgICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzLnJlbW92ZSgmd29ybGQpKQorICAg
IGlmICghbV91c2VyU3R5bGVTaGVldHMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV91
c2VyU3R5bGVTaGVldHMtPnJlbW92ZSgmd29ybGQpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
bnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lc0luQWxsUGFnZXMoKTsK
QEAgLTE0Miw0MCArMTY4LDk1IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVV
c2VyU3R5bGVTaGVldHMoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKICNpZiBFTkFCTEUoVVNFUl9N
RVNTQUdFX0hBTkRMRVJTKQogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3IoVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKLSAgICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLmFkZChzdGQ6Om1h
a2VfcGFpcihkZXNjcmlwdG9yLm5hbWUoKSwgJmRlc2NyaXB0b3Iud29ybGQoKSksICZkZXNjcmlw
dG9yKTsKKyAgICBpZiAoIW1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMpCisgICAgICAg
IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JNYXA+KCk7CisKKyAgICBtX3VzZXJNZXNzYWdlSGFuZGxl
ckRlc2NyaXB0b3JzLT5hZGQoc3RkOjptYWtlX3BhaXIoZGVzY3JpcHRvci5uYW1lKCksICZkZXNj
cmlwdG9yLndvcmxkKCkpLCAmZGVzY3JpcHRvcik7CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRDb250
cm9sbGVyOjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yKFVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgbV91c2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9ycy5yZW1vdmUoc3RkOjptYWtlX3BhaXIoZGVzY3JpcHRvci5uYW1lKCksICZkZXNj
cmlwdG9yLndvcmxkKCkpKTsKKyAgICBpZiAoIW1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
cnMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
cnMtPnJlbW92ZShzdGQ6Om1ha2VfcGFpcihkZXNjcmlwdG9yLm5hbWUoKSwgJmRlc2NyaXB0b3Iu
d29ybGQoKSkpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
dm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSwgUmVmUHRyPENvbnRlbnRFeHRlbnNpb25zOjpDb21waWxlZENvbnRlbnRF
eHRlbnNpb24+IGNvbnRlbnRFeHRlbnNpb24pCiB7Ci0gICAgbV9jb250ZW50RXh0ZW5zaW9uQmFj
a2VuZC5hZGRDb250ZW50RXh0ZW5zaW9uKG5hbWUsIGNvbnRlbnRFeHRlbnNpb24pOworICAgIGlm
ICghbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZCkKKyAgICAgICAgbV9jb250ZW50RXh0ZW5zaW9u
QmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZD4oKTsKKyAgICAKKyAgICBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLT5h
ZGRDb250ZW50RXh0ZW5zaW9uKG5hbWUsIGNvbnRlbnRFeHRlbnNpb24pOwogfQogCiB2b2lkIFVz
ZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlckNvbnRlbnRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQogewotICAgIG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQucmVtb3ZlQ29udGVu
dEV4dGVuc2lvbihuYW1lKTsKKyAgICBpZiAoIW1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQtPnJlbW92ZUNv
bnRlbnRFeHRlbnNpb24obmFtZSk7CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVBbGxVc2VyQ29udGVudEV4dGVuc2lvbnMoKQogewotICAgIG1fY29udGVudEV4dGVuc2lv
bkJhY2tlbmQucmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoIW1fY29udGVu
dEV4dGVuc2lvbkJhY2tlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmQtPnJlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zKCk7Cit9CisKK3N0YXRpYyBi
b29sIGNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChjb25zdCBEb2N1bWVudExvYWRlciYgZG9jdW1l
bnRMb2FkZXIpCit7CisgICAgaWYgKGF1dG8gZnJhbWUgPSBkb2N1bWVudExvYWRlci5mcmFtZSgp
KSB7CisgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIHJldHVy
biBkb2N1bWVudExvYWRlci51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCk7CisgICAgICAg
IGlmIChhdXRvIG1haW5Eb2N1bWVudExvYWRlciA9IGZyYW1lLT5tYWluRnJhbWUoKS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpKQorICAgICAgICAgICAgcmV0dXJuIG1haW5Eb2N1bWVudExvYWRl
ci0+dXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCgpOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorICAgIAorQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgVXNlckNvbnRl
bnRDb250cm9sbGVyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUsIERvY3VtZW50TG9h
ZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpCit7CisgICAgaWYgKCFtX2NvbnRlbnRFeHRl
bnNpb25CYWNrZW5kKQorICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRT
dGF0dXM6Ok5vdEJsb2NrZWQ7CisKKyAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChp
bml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpKQorICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lv
bnM6OkJsb2NrZWRTdGF0dXM6Ok5vdEJsb2NrZWQ7CisKKyAgICByZXR1cm4gbV9jb250ZW50RXh0
ZW5zaW9uQmFja2VuZC0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVz
dCwgcmVzb3VyY2VUeXBlLCBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworfQorCitWZWN0b3I8
Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRDb250cm9sbGVyOjphY3Rpb25z
Rm9yUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mIHJlc291cmNlTG9hZEluZm8s
IERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpCit7CisgICAgaWYgKCFt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kKQorICAgICAgICByZXR1cm4gVmVjdG9yPENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb24+KCk7CisgICAgCisgICAgaWYgKCFjb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQoaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPigpOworCisgICAgcmV0dXJuIG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmQtPmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQocmVzb3VyY2VMb2FkSW5mbyk7CiB9
CiAjZW5kaWYKIAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJDb250
ZW50KCkKIHsKLSAgICBtX3VzZXJTY3JpcHRzLmNsZWFyKCk7CisgICAgbV91c2VyU2NyaXB0cyA9
IG51bGxwdHI7CiAKLSAgICBpZiAoIW1fdXNlclN0eWxlU2hlZXRzLmlzRW1wdHkoKSkgewotICAg
ICAgICBtX3VzZXJTdHlsZVNoZWV0cy5jbGVhcigpOworICAgIGlmIChtX3VzZXJTdHlsZVNoZWV0
cykgeworICAgICAgICBtX3VzZXJTdHlsZVNoZWV0cyA9IG51bGxwdHI7CiAgICAgICAgIGludmFs
aWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzSW5BbGxQYWdlcygpOwogICAg
IH0KIH0KIAordm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmludmFsaWRhdGVJbmplY3RlZFN0
eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzSW5BbGxQYWdlcygpCit7CisgICAgZm9yIChhdXRvJiBw
YWdlIDogbV9wYWdlcykKKyAgICAgICAgcGFnZS0+aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVl
dENhY2hlSW5BbGxGcmFtZXMoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggOTdjZmNmZjc4ZTU0
N2UxMGMxNTRhYTU3Njk4ZjhlZWUzYmFkNGY3My4uOWQxOGI3MTY4OWUxZDY5ZThhNWQxMjNiZGNi
ZWU2ZmU1MzU1Zjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJv
bGxlci5oCkBAIC0yNiwxOSArMjYsNTggQEAKICNpZm5kZWYgVXNlckNvbnRlbnRDb250cm9sbGVy
X2gKICNkZWZpbmUgVXNlckNvbnRlbnRDb250cm9sbGVyX2gKIAotI2luY2x1ZGUgIlVzZXJDb250
ZW50UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKKyNpbmNsdWRlICJV
c2VyU3R5bGVTaGVldFR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJM
RShVU0VSX01FU1NBR0VfSEFORExFUlMpCisjaW5jbHVkZSAiVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclR5cGVzLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CisjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCIKKyNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFVzZXJDb250ZW50Q29udHJvbGxlciBmaW5hbCA6IHB1Ymxp
YyBVc2VyQ29udGVudFByb3ZpZGVyIHsKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIERv
Y3VtZW50TG9hZGVyOworY2xhc3MgUGFnZTsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNz
IFN0eWxlU2hlZXRDb250ZW50czsKK2NsYXNzIFVSTDsKK2NsYXNzIFVzZXJTY3JpcHQ7CitjbGFz
cyBVc2VyU3R5bGVTaGVldDsKK2NsYXNzIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3I7CisK
K2VudW0gY2xhc3MgUmVzb3VyY2VUeXBlIDogdWludDE2X3Q7CisKK3N0cnVjdCBSZXNvdXJjZUxv
YWRJbmZvOworCituYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworY2xhc3MgQ29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uOworY2xhc3MgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOworc3RydWN0
IEFjdGlvbjsKK30KKworY2xhc3MgVXNlckNvbnRlbnRDb250cm9sbGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8VXNlckNvbnRlbnRDb250cm9sbGVyPiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxVc2VyQ29udGVudENvbnRyb2xsZXI+IGNyZWF0ZSgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIH5Vc2VyQ29udGVudENvbnRyb2xsZXIoKTsKIAorICAgIHZvaWQgYWRkUGFnZShQ
YWdlJik7CisgICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKKworICAgIGNvbnN0IFVzZXJTY3Jp
cHRNYXAqIHVzZXJTY3JpcHRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2NyaXB0cy5nZXQoKTsg
fQorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCYsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0Pik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW1vdmVVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFVSTCYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoRE9NV3JhcHBlcldvcmxkJik7CiAK
KyAgICBjb25zdCBVc2VyU3R5bGVTaGVldE1hcCogdXNlclN0eWxlU2hlZXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VyU3R5bGVTaGVldHMuZ2V0KCk7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWRkVXNlclN0eWxlU2hlZXQoRE9NV3JhcHBlcldvcmxkJiwgc3RkOjp1bmlxdWVfcHRyPFVz
ZXJTdHlsZVNoZWV0PiwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmLCBjb25zdCBVUkwm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0cyhET01XcmFw
cGVyV29ybGQmKTsKQEAgLTQ2LDYgKzg1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIAogI2lmIEVOQUJMRShVU0VSX01FU1NBR0Vf
SEFORExFUlMpCisgICAgY29uc3QgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvck1hcCogdXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMoKSBjb25zdCB7IHJldHVybiBtX3VzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JzLmdldCgpOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IoVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
ciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcihVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yJik7CiAjZW5kaWYKQEAgLTU0LDI4
ICs5NSwyNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRVc2VyQ29udGVu
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxDb250ZW50RXh0ZW5zaW9uczo6
Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVVc2VyQ29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKCk7CisKKyAgICBDb250
ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVz
Rm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBp
bml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uPiBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mLCBE
b2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKICNlbmRpZgogCiBwcml2
YXRlOgogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcigpOwogCi0gICAgLy8gVXNlckNvbnRlbnRQ
cm92aWRlcgotICAgIHZvaWQgZm9yRWFjaFVzZXJTY3JpcHQoY29uc3Qgc3RkOjpmdW5jdGlvbjx2
b2lkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFVzZXJTY3JpcHQmKT4mKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2b2lkIGZvckVhY2hVc2VyU3R5bGVTaGVldChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoY29uc3QgVXNlclN0eWxlU2hlZXQmKT4mKSBjb25zdCBvdmVycmlkZTsKLSNpZiBFTkFCTEUo
VVNFUl9NRVNTQUdFX0hBTkRMRVJTKQotICAgIGNvbnN0IFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3JNYXAmIHVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yczsgfQotI2VuZGlmCi0jaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kJiB1c2VyQ29udGVudEV4dGVuc2lvbkJhY2tlbmQoKSBvdmVycmlk
ZSB7IHJldHVybiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kOyB9Ci0jZW5kaWYKKyAgICB2b2lk
IGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzSW5BbGxQYWdlcygp
OworCisgICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsKIAotICAgIFVzZXJTY3JpcHRNYXAgbV91
c2VyU2NyaXB0czsKLSAgICBVc2VyU3R5bGVTaGVldE1hcCBtX3VzZXJTdHlsZVNoZWV0czsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdE1hcD4gbV91c2VyU2NyaXB0czsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXRNYXA+IG1fdXNlclN0eWxlU2hlZXRzOwogI2lmIEVO
QUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvck1hcCBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yTWFwPiBtX3VzZXJNZXNzYWdlSGFuZGxl
ckRlc2NyaXB0b3JzOwogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAg
ICBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kIG1fY29udGVudEV4
dGVuc2lvbkJhY2tlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQ7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDI2YzUwOGYzMDIzYmRhN2UyNWM3NGZlZWNk
ZDUwMDQ4ZmFlMmRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJVc2VyQ29udGVudFByb3ZpZGVyLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0j
aW5jbHVkZSAiUGFnZS5oIgotCi0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSNpbmNs
dWRlICJDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaCIKLSNpbmNsdWRlICJDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVzZXJDb250
ZW50UHJvdmlkZXI6OlVzZXJDb250ZW50UHJvdmlkZXIoKQotewotfQotCi1Vc2VyQ29udGVudFBy
b3ZpZGVyOjp+VXNlckNvbnRlbnRQcm92aWRlcigpCi17Ci0gICAgQVNTRVJUKG1fcGFnZXMuaXNF
bXB0eSgpKTsKLX0KLQotdm9pZCBVc2VyQ29udGVudFByb3ZpZGVyOjphZGRQYWdlKFBhZ2UmIHBh
Z2UpCi17Ci0gICAgQVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7Ci0KLSAgICBtX3Bh
Z2VzLmFkZCgmcGFnZSk7Ci19Ci0KLXZvaWQgVXNlckNvbnRlbnRQcm92aWRlcjo6cmVtb3ZlUGFn
ZShQYWdlJiBwYWdlKQotewotICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7Ci0K
LSAgICBtX3BhZ2VzLnJlbW92ZSgmcGFnZSk7Ci19Ci0KLXZvaWQgVXNlckNvbnRlbnRQcm92aWRl
cjo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBhZ2Vz
KCkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VzKQotICAgICAgICBwYWdlLT5pbnZh
bGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwotfQotCi0jaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKLXN0YXRpYyBib29sIGNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZChjb25zdCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCi17Ci0gICAgaWYgKGF1
dG8gZnJhbWUgPSBkb2N1bWVudExvYWRlci5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBkb2N1bWVudExvYWRlci51c2VyQ29u
dGVudEV4dGVuc2lvbnNFbmFibGVkKCk7Ci0gICAgICAgIGlmIChhdXRvIG1haW5Eb2N1bWVudExv
YWRlciA9IGZyYW1lLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIG1haW5Eb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25z
RW5hYmxlZCgpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotICAgIAotQ29udGVudEV4
dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgVXNlckNvbnRlbnRQcm92aWRlcjo6cHJvY2Vzc0NvbnRl
bnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9h
ZGVyKQotewotICAgIGlmICghY29udGVudEV4dGVuc2lvbnNFbmFibGVkKGluaXRpYXRpbmdEb2N1
bWVudExvYWRlcikpCi0gICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0
YXR1czo6Tm90QmxvY2tlZDsKLQotICAgIHJldHVybiB1c2VyQ29udGVudEV4dGVuc2lvbkJhY2tl
bmQoKS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0LCByZXNvdXJj
ZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7Ci19Ci0KLVZlY3RvcjxDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uPiBVc2VyQ29udGVudFByb3ZpZGVyOjphY3Rpb25zRm9yUmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mIHJlc291cmNlTG9hZEluZm8sIERvY3VtZW50TG9h
ZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpCi17Ci0gICAgaWYgKCFjb250ZW50RXh0ZW5z
aW9uc0VuYWJsZWQoaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIHJldHVybiB1c2VyQ29udGVudEV4dGVuc2lvbkJhY2tlbmQoKS5hY3Rpb25zRm9y
UmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZEluZm8pOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQ
cm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNTY1MjJiNDlhNDNhOTE3MmIzZjUzYWM2ZTI2
OTAyNzIwZWVmNDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVc2VyQ29udGVudFByb3Zp
ZGVyX2gKLSNkZWZpbmUgVXNlckNvbnRlbnRQcm92aWRlcl9oCi0KLSNpbmNsdWRlICJVc2VyU2Ny
aXB0VHlwZXMuaCIKLSNpbmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCi0jaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotI2lmIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCi0jaW5jbHVkZSAiVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5
cGVzLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0jaW5jbHVk
ZSAiQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCIKLSNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3Vt
ZW50TG9hZGVyOwotY2xhc3MgUGFnZTsKLWNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFVS
TDsKLQotZW51bSBjbGFzcyBSZXNvdXJjZVR5cGUgOiB1aW50MTZfdDsKLQotc3RydWN0IFJlc291
cmNlTG9hZEluZm87Ci0KLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Ci1jbGFzcyBDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ7Ci1zdHJ1Y3QgQWN0aW9uOwotfQotCi1jbGFzcyBVc2VyQ29u
dGVudFByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VXNlckNvbnRlbnRQcm92aWRlcj4gewot
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFVzZXJDb250ZW50UHJvdmlkZXIoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Vc2VyQ29udGVudFByb3ZpZGVyKCk7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZm9yRWFjaFVzZXJTY3JpcHQoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKERPTVdy
YXBwZXJXb3JsZCYsIGNvbnN0IFVzZXJTY3JpcHQmKT4mKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGZvckVhY2hVc2VyU3R5bGVTaGVldChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29u
c3QgVXNlclN0eWxlU2hlZXQmKT4mKSBjb25zdCA9IDA7Ci0KLSNpZiBFTkFCTEUoVVNFUl9NRVNT
QUdFX0hBTkRMRVJTKQotICAgIHZpcnR1YWwgY29uc3QgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvck1hcCYgdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMoKSBjb25zdCA9IDA7Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgdmlydHVhbCBDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kJiB1c2VyQ29udGVudEV4dGVuc2lv
bkJhY2tlbmQoKSA9IDA7Ci0jZW5kaWYKLQotICAgIHZvaWQgYWRkUGFnZShQYWdlJik7Ci0gICAg
dm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKLQotCi0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKLSAgICAvLyBGSVhNRTogVGhlc2UgZG9uJ3QgcmVhbGx5IGJlbG9uZyBoZXJlLiBUaGV5IHNo
b3VsZCBwcm9iYWJseSBidW5kbGVkIHVwIGluIHRoZSBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQK
LSAgICAvLyB3aGljaCBzaG91bGQgYWx3YXlzIGV4aXN0LgotICAgIENvbnRlbnRFeHRlbnNpb25z
OjpCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1
bWVudExvYWRlcik7Ci0gICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb24+IGFjdGlv
bnNGb3JSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VMb2FkSW5mbyYsIERvY3VtZW50TG9hZGVy
JiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOwotI2VuZGlmCi0KLXByb3RlY3RlZDoKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxs
RnJhbWVzSW5BbGxQYWdlcygpOwotCi1wcml2YXRlOgotICAgIEhhc2hTZXQ8UGFnZSo+IG1fcGFn
ZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVc2VyQ29udGVu
dFByb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yLmgKaW5kZXggZDIwMmVjNmYwYThjZjQ0ODY5OTZhOGE2ODMzMDg4ZTZjOGMx
MTIwZi4uMWYxZjIwYjI2YjU0MmIzY2E5N2UxZTZlZmMyNWI3ZTA4MzU3ZTEwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgKQEAg
LTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIH0KICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvcigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCgpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpOworICAgIERPTVdyYXBwZXJX
b3JsZCYgd29ybGQoKTsKIAogICAgIENsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KICAgICB2b2lkIGludmFsaWRhdGVDbGllbnQoKSB7IG1fY2xpZW50ID0gbnVsbHB0
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZS5jcHAKaW5kZXggMGUwZTNhMTQ2ZTg2MTkwMTM4MTU5ODdmODZjMmY5NTQyYjI5ODE1
Mi4uMDMzMjFmNWUyODdmZmRiOTZlYTdlOThmYmM3Y2IzMGMyMmRmMjllZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwCkBA
IC01Myw5ICs1MywxNSBAQCBVc2VyTWVzc2FnZUhhbmRsZXIqIFVzZXJNZXNzYWdlSGFuZGxlcnNO
YW1lc3BhY2U6OmhhbmRsZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYQogICAgIGlmICghcGFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgYXV0byYgZGVzY3JpcHRvcnMgPSBw
YWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkudXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMo
KTsKLSAgICAKLSAgICBSZWZQdHI8VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcj4gZGVzY3Jp
cHRvciA9IGRlc2NyaXB0b3JzLmdldChzdGQ6Om1ha2VfcGFpcihuYW1lLCAmd29ybGQpKTsKKyAg
ICBjb25zdCBhdXRvKiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKKyAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBhdXRvKiB1c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9ycyA9IHVzZXJDb250ZW50Q29udHJvbGxlci0+dXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRv
cnMoKTsKKyAgICBpZiAoIXVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
PiBkZXNjcmlwdG9yID0gdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMtPmdldChzdGQ6Om1h
a2VfcGFpcihuYW1lLCAmd29ybGQpKTsKICAgICBpZiAoIWRlc2NyaXB0b3IpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC02NCw3ICs3MCw3IEBAIFVzZXJNZXNzYWdlSGFuZGxlciogVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZTo6aGFuZGxlcihjb25zdCBBdG9taWNTdHJpbmcmIG5h
CiAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXIuZ2V0KCk7CiAgICAgfQogCi0gICAgYXV0byBs
aXZlSGFuZGxlcnMgPSBkZXNjcmlwdG9ycy52YWx1ZXMoKTsKKyAgICBhdXRvIGxpdmVIYW5kbGVy
cyA9IHVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLT52YWx1ZXMoKTsKICAgICBtX21lc3Nh
Z2VIYW5kbGVycy5yZW1vdmVBbGxNYXRjaGluZyhbbGl2ZUhhbmRsZXJzXShjb25zdCBSZWY8VXNl
ck1lc3NhZ2VIYW5kbGVyPiYgaGFuZGxlcikgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGxp
dmVIYW5kbGVyIDogbGl2ZUhhbmRsZXJzKSB7CiAgICAgICAgICAgICBpZiAobGl2ZUhhbmRsZXIu
Z2V0KCkgPT0gJmhhbmRsZXItPmRlc2NyaXB0b3IoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQppbmRleCA3ZTNmMDYwOGMzNTdkZTkzZjc2YzgyOTI0YWVmNzFmNzBmYjAxZTMwLi5m
MDkzOTAzZmEwM2MwZGNjMDYxMjNiZTNjMTdjNjhkYjcxNmVkNjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBzdGF0aWMgdm9pZCBXZWJL
aXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgIHBhZ2VDb25maWd1
cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9ICZXZWJE
YXRhYmFzZVByb3ZpZGVyOjpzaW5nbGV0b24oKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5zdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIgPSAmX3ByaXZhdGUtPmdyb3VwLT5zdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIoKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0g
Jl9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyID0gJl9wcml2YXRlLT5ncm91cC0+dXNlckNv
bnRlbnRDb250cm9sbGVyKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9y
ZSA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICBfcHJpdmF0ZS0+
cGFnZSA9IG5ldyBQYWdlKHBhZ2VDb25maWd1cmF0aW9uKTsKIApAQCAtMTI0OSw3ICsxMjQ5LDcg
QEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5
KCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFi
YXNlUHJvdmlkZXIgPSAmV2ViRGF0YWJhc2VQcm92aWRlcjo6c2luZ2xldG9uKCk7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gJl9wcml2YXRlLT5ncm91
cC0+c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24udXNl
ckNvbnRlbnRQcm92aWRlciA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciA9ICZfcHJp
dmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSAmX3ByaXZhdGUtPmdyb3VwLT52aXNpdGVkTGlua1N0b3Jl
KCk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKHBhZ2VDb25maWd1cmF0aW9uKTsK
QEAgLTYyMDMsNyArNjIwMyw3IEBAIHN0YXRpYyBXZWJGcmFtZSAqaW5jcmVtZW50RnJhbWUoV2Vi
RnJhbWUgKmZyYW1lLCBXZWJGaW5kT3B0aW9ucyBvcHRpb25zID0gMCkKICAgICBpZiAoIV9wcml2
YXRlLT5wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0VXNl
ckNvbnRlbnRQcm92aWRlcihfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigp
KTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKCZfcHJpdmF0
ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0VmlzaXRlZExpbmtTdG9yZShfcHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5rU3RvcmUoKSk7
CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldEdyb3VwTmFtZShncm91cE5hbWUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA5MDI5MjZlNDYwM2E2NWJl
ZDQyMGQzYWQ0MjZiMGMxZGFkZTkwMjJmLi5kY2YzZDY3NDUwYjA0YTJhNzcyNjE5NzA1OWU5NjBj
NGNhNDhlYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMzc4LDggKzM3OCw2IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViS2l0OjpXZWJUb3VjaEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6V2ViV2hlZWxFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Oldl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlJzogWyciV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIu
aCInXSwKLSAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCi0gICAgICAgICdzdHJ1Y3QgV2Vi
S2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQnOiBbJzxjaHJvbm8+J10sCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjJjYTgxZGYwYmIzN2QwMGRjM2E1MjExMmNjNDlk
ZTQ0NGNlMGFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aCIKLQotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdm9pZCBXZWJVc2VyU2NyaXB0RGF0YTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKLSAgICBl
bmNvZGVyIDw8IHdvcmxkSWRlbnRpZmllcjsKLSAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHQ7Ci19
Ci0KLWJvb2wgV2ViVXNlclNjcmlwdERhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgV2ViVXNlclNjcmlwdERhdGEmIGRhdGEpCi17Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLndvcmxkSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEudXNlclNjcmlwdCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJVc2VyU3R5bGVTaGVl
dERhdGE6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAg
ICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7Ci0gICAgZW5jb2RlciA8PCB3b3JsZElkZW50aWZpZXI7
Ci0gICAgZW5jb2RlciA8PCB1c2VyU3R5bGVTaGVldDsKLX0KLQotYm9vbCBXZWJVc2VyU3R5bGVT
aGVldERhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViVXNlclN0
eWxlU2hlZXREYXRhJiBkYXRhKQotewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5pZGVu
dGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS53b3JsZElkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLnVzZXJTdHlsZVNoZWV0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzZiNGFjNmY1YThhZmQzMDli
YzRlMGM2MDgwOTMzOTA3MDY4YWZhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXNfaAotI2RlZmluZSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXNfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9V
c2VyU2NyaXB0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU3R5bGVTaGVldC5oPgotCi1uYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLWNsYXNzIEFyZ3VtZW50RW5jb2Rl
cjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJVc2VyU2NyaXB0RGF0YSB7
Ci0gICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBXZWJVc2VyU2NyaXB0RGF0YSYp
OwotCi0gICAgdWludDY0X3QgaWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCB3b3JsZElkZW50aWZp
ZXI7Ci0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0OwotfTsKLQotc3RydWN0IFdl
YlVzZXJTdHlsZVNoZWV0RGF0YSB7Ci0gICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29k
ZXImKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXIm
LCBXZWJVc2VyU3R5bGVTaGVldERhdGEmKTsKLQotICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7Ci0g
ICAgdWludDY0X3Qgd29ybGRJZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0
IHVzZXJTdHlsZVNoZWV0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXNfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKaW5kZXggODQ1YWI1N2VhNzdjYzQzZjdk
NjU4NzE2M2I4ZTNhYWFlYTU0ZThiMi4uODRlYTZhMWM4ZWMxYmYyY2JjZGEzZGI1MmY0NGU4NzEz
ZjE5YmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3Jp
cHQuY3BwCkBAIC0zOSwyMCArMzksMTEgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRp
ZmllcigpCiAKIFdlYkNvcmU6OlVSTCBVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7
Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7Ci0KICAgICBTdHJpbmdCdWlsZGVyIHVy
bFN0cmluZ0J1aWxkZXI7CiAgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1c2Vy
LXNjcmlwdDoiKTsKLSAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcigrK2lkZW50aWZp
ZXIpOworICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKGdlbmVyYXRlSWRlbnRpZmll
cigpKTsKICAgICByZXR1cm4geyB7IH0sIHVybFN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSB9Owog
fQogCi1Vc2VyU2NyaXB0OjpVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlw
dCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKLSAgICA6IG1faWRlbnRpZmllcihnZW5l
cmF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fdXNlclNjcmlwdCh1c2VyU2NyaXB0KQotICAgICwg
bV93b3JsZCh3b3JsZCkKLXsKLX0KLQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKaW5kZXggNzU4MzUwYjliMzA4NGIw
NWEwZTk4ZTE2NDg5NDg0MzQ5M2MxNGVmNi4uZDZkMzIyMjJjN2QzODU0MDFiMjllNjNkZmU2ZDFl
MWU1MDBlODczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2Ny
aXB0LmgKQEAgLTQxLDkgKzQxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVXNlclNjcmlwdChXVEZNb3ZlKHVzZXJTY3JpcHQpLCB3b3JsZCkpOwogICAgIH0KIAot
ICAgIFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCwgQVBJOjpVc2VyQ29udGVudFdvcmxk
Jik7Ci0KLSAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisgICAgVXNlclNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgICAgIDogbV91c2VyU2NyaXB0KHVzZXJT
Y3JpcHQpCisgICAgICAgICwgbV93b3JsZCh3b3JsZCkKKyAgICB7CisgICAgfQogCiAgICAgY29u
c3QgV2ViQ29yZTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
clNjcmlwdDsgfQogICAgIApAQCAtNTEsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgVXNl
ckNvbnRlbnRXb3JsZCYgdXNlckNvbnRlbnRXb3JsZCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ybGQ7
IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFdlYkNv
cmU6OlVzZXJTY3JpcHQgbV91c2VyU2NyaXB0OwogICAgIFJlZjxVc2VyQ29udGVudFdvcmxkPiBt
X3dvcmxkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U3R5bGVTaGVldC5jcHAKaW5kZXggMjhlODAwOTU1NWZjZDJlMmY3NzE1ZjZkOTU1MTQ2M2JkNmFj
ZjUyNi4uMGMxYjJhYzIyNmI0ODZjZTc1YWE2MDhhYzgwMDY1OWFlMGVmMzBjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKQEAg
LTM5LDE5ICszOSwxMSBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlmaWVyKCkKIAog
V2ViQ29yZTo6VVJMIFVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCiB7Ci0gICAg
c3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7Ci0KICAgICBTdHJpbmdCdWlsZGVyIHVybFN0cmlu
Z0J1aWxkZXI7CiAgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1c2VyLXN0eWxl
LXNoZWV0OiIpOwotICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKCsraWRlbnRpZmll
cik7CisgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoZ2VuZXJhdGVJZGVudGlmaWVy
KCkpOwogICAgIHJldHVybiB7IHsgfSwgdXJsU3RyaW5nQnVpbGRlci50b1N0cmluZygpIH07CiB9
CiAKLVVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVl
dCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKLSAgICA6IG1f
aWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fdXNlclN0eWxlU2hlZXQo
dXNlclN0eWxlU2hlZXQpCi0gICAgLCBtX3dvcmxkKHdvcmxkKQotewotfQogCiB9IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxl
U2hlZXQuaAppbmRleCBmZTRmNDliYjNjNjFlZDU2M2NlY2M5MDBkY2E5ZDJhNzJjZWM2YjFjLi43
NDYxYmQ4YTY2YTMyMGYzZGFiOTY0YWMyN2Q1YjA4ZmIzMzA3NTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5oCkBAIC00MSw5ICs0MSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJTdHlsZVNoZWV0
KFdURk1vdmUodXNlclN0eWxlU2hlZXQpLCB3b3JsZCkpOwogICAgIH0KIAotICAgIFVzZXJTdHls
ZVNoZWV0KFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsK
LQotICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKyAgICBVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVT
aGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKKyAgICAgICAgOiBtX3VzZXJTdHls
ZVNoZWV0KHVzZXJTdHlsZVNoZWV0KQorICAgICAgICAsIG1fd29ybGQod29ybGQpCisgICAgewor
ICAgIH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7IH0KIApAQCAtNTEsNyArNTMsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVXNlckNvbnRlbnRXb3JsZCYgdXNlckNvbnRlbnRXb3JsZCgp
IGNvbnN0IHsgcmV0dXJuIG1fd29ybGQ7IH0KIAogcHJpdmF0ZToKLSAgICB1aW50NjRfdCBtX2lk
ZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgbV91c2VyU3R5bGVTaGVldDsK
ICAgICBSZWY8VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXgg
MzAwNmZmYzc4M2U0OGJmNjhhMTc4OWZkNTUxOTNhZmRmMjM0NmE0OS4uYzUxMzMzZDhlYWViMDBh
NmVkZGEwOWJmMzMwNTk1ZGY0MjY4M2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaApAQCAtMzgsMTMgKzM4LDEx
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKQogCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpzb3VyY2U7CiAKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkwgKmJhc2VVUkw7Ci0KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzRm9yTWFpbkZyYW1lT25seSkgQk9P
TCBmb3JNYWluRnJhbWVPbmx5OwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5T
U3RyaW5nICopc291cmNlIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seTsK
KwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JN
YWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihXS19B
UlJBWShOU1N0cmluZyAqKSAqKWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KFdLX0FS
UkFZKE5TU3RyaW5nICopICopbGVnYWN5QmxhY2tsaXN0IHVzZXJDb250ZW50V29ybGQ6KF9XS1Vz
ZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkOwotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1h
aW5GcmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihXS19BUlJBWShOU1N0cmluZyAqKSAqKWxlZ2Fj
eVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KFdLX0FSUkFZKE5TU3RyaW5nICopICopbGVnYWN5
QmxhY2tsaXN0IGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1c2VyQ29udGVudFdvcmxkOihfV0tV
c2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZDsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5t
bQppbmRleCA2YjJmNGI0MzZkZTEwODAyMzAwOWE3YWM3NTIyODkwYzg2OTZlNDJlLi41MGE3MTAx
NmE3YjJlMTQ4NGYxZDQ1M2NmM2MyMGJiNTUyMmE1ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTI4
LDcgKzI4LDYgQEAKIAogI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNpbXBvcnQgIldLTlNBcnJheS5o
IgotI2ltcG9ydCAiV0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViS2l0MkluaXRpYWxpemUu
aCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oIgogCkBAIC02MiwyOSAr
NjEsMTEgQEAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
U291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5G
cmFtZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihXS19BUlJBWShOU1N0cmluZyAqKSAqKWxlZ2FjeVdo
aXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KFdLX0FSUkFZKE5TU3RyaW5nICopICopbGVnYWN5Qmxh
Y2tsaXN0IGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1c2VyQ29udGVudFdvcmxkOihfV0tVc2Vy
Q29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAotewotICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgLy8gRklYTUU6IEluIHRoZSBB
UEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQ
STo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMg
cmVhbGx5IGJlPwotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7IHsgfSwgV1RGOjpT
dHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7Ci0KLSAgICByZXR1
cm4gc2VsZjsKLX0KLQogLSAoTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICByZXR1cm4gX3VzZXJT
dHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpLnNvdXJjZSgpOwogfQogCi0tIChOU1VSTCAqKWJh
c2VVUkwKLXsKLSAgICByZXR1cm4gX3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpLnVy
bCgpOwotfQotCiAtIChCT09MKWlzRm9yTWFpbkZyYW1lT25seQogewogICAgIHJldHVybiBfdXNl
clN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3Jl
OjpJbmplY3RJblRvcEZyYW1lT25seTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuY3BwCmluZGV4IDM0MzQ3MTZmMTBhNWZjZmQ3ZDI2NTJlMzMxZWVmN2JlYjkzMTc2N2Qu
LjdlZWEzNTFmNzU1MDNkNTUyYmZhYWRiZDE4NWMzYWFiMWRiYzZiYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgotI2luY2x1ZGUgIldlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CkBAIC04
MSwxNCArODAsMTQgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKICAgICAgICAgdXNlckNvbnRl
bnRXb3JsZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmtleS0+aWRlbnRpZmllcigpLCB3
b3JsZC5rZXktPm5hbWUoKSkpOwogICAgIHdlYlByb2Nlc3NQcm94eS5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3Js
ZHModXNlckNvbnRlbnRXb3JsZHMpLCBtX2lkZW50aWZpZXIpOwogCi0gICAgVmVjdG9yPFdlYlVz
ZXJTY3JpcHREYXRhPiB1c2VyU2NyaXB0czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90
LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4gdXNlclNjcmlwdHM7CiAgICAgZm9yIChjb25zdCBhdXRv
JiB1c2VyU2NyaXB0IDogbV91c2VyU2NyaXB0cy0+ZWxlbWVudHNPZlR5cGU8QVBJOjpVc2VyU2Ny
aXB0PigpKQotICAgICAgICB1c2VyU2NyaXB0cy5hcHBlbmQoeyB1c2VyU2NyaXB0LT5pZGVudGlm
aWVyKCksIHVzZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKS5pZGVudGlmaWVyKCksIHVzZXJT
Y3JpcHQtPnVzZXJTY3JpcHQoKSB9KTsKKyAgICAgICAgdXNlclNjcmlwdHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKHVzZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKS5pZGVudGlmaWVyKCksIHVz
ZXJTY3JpcHQtPnVzZXJTY3JpcHQoKSkpOwogICAgIHdlYlByb2Nlc3NQcm94eS5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlw
dHModXNlclNjcmlwdHMpLCBtX2lkZW50aWZpZXIpOwogCi0gICAgVmVjdG9yPFdlYlVzZXJTdHls
ZVNoZWV0RGF0YT4gdXNlclN0eWxlU2hlZXRzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0
X3QsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pj4gdXNlclN0eWxlU2hlZXRzOwogICAgIGZvciAo
Y29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQgOiBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHNP
ZlR5cGU8QVBJOjpVc2VyU3R5bGVTaGVldD4oKSkKLSAgICAgICAgdXNlclN0eWxlU2hlZXRzLmFw
cGVuZCh7IHVzZXJTdHlsZVNoZWV0LT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LT51c2Vy
Q29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hl
ZXQoKSB9KTsKKyAgICAgICAgdXNlclN0eWxlU2hlZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih1
c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpLmlkZW50aWZpZXIoKSwgdXNlclN0eWxl
U2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkpKTsKICAgICB3ZWJQcm9jZXNzUHJveHkuY29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHls
ZVNoZWV0cyh1c2VyU3R5bGVTaGVldHMpLCBtX2lkZW50aWZpZXIpOwogCiAgICAgVmVjdG9yPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxlPiBtZXNzYWdlSGFuZGxlckhhbmRsZXM7CkBAIC0x
NjksNyArMTY4LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNl
clNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCiAgICAgbV91c2VyU2NyaXB0cy0+
ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRz
KHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNj
cmlwdC51c2VyU2NyaXB0KCkgfSB9KSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgcHJvY2Vzcy0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFk
ZFVzZXJTY3JpcHRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNj
cmlwdC51c2VyU2NyaXB0KCkpIH0pLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYg
dXNlclNjcmlwdCkKQEAgLTE3Nyw3ICsxNzYsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdAog
ICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51c2VyQ29u
dGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmll
cigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIG1faWRlbnRpZmllcik7CisgICAgICAgIHBy
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNl
clNjcmlwdCgpLnVybCgpLnN0cmluZygpKSwgbV9pZGVudGlmaWVyKTsKIAogICAgIG1fdXNlclNj
cmlwdHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIApAQCAtMjI0LDcgKzIy
Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNo
ZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVs
ZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxl
U2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVy
KCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgbV9pZGVudGlmaWVyKTsK
KyAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxk
LT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkpIH0pLCBtX2lk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKQEAg
LTIzMiw3ICsyMzEsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgIFJlZjxBUEk6OlVz
ZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRlbnRXb3JsZCgp
OwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVz
ZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIG1faWRlbnRpZmllcik7CisgICAgICAgIHByb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVl
dC51c2VyU3R5bGVTaGVldCgpLnVybCgpLnN0cmluZygpKSwgbV9pZGVudGlmaWVyKTsKIAogICAg
IG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLnJlbW92ZUFsbCgmdXNlclN0eWxlU2hlZXQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTQ0NTUxMWE3NGU3YWIyY2Y1NmEyN2Y1NDY4OWMxOTMyMjE1YzU2NS4uMjQ1ZTdh
MjNmN2IyOTk1N2RmYmJiMjBkMTBkZThkZDljNDBhN2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0NCw4ICsxMDQ0LDYg
QEAKIAkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJN0E3OTFFRkIx
QzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVG
ODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2Fn
ZXMuaCAqLzsgfTsKIAkJN0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKLQkJN0MwNjVGMkIxQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLzsgfTsKLQkJN0MwNjVGMkMxQzhD
RDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1
RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9Owog
CQk3QzEzNUFBODE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CiAJCTdDMTM1QUE5
MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIg
LyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdDMTM1QUFDMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZv
cm1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMTM1QUFBMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAq
LzsgfTsKQEAgLTMwNTMsOCArMzA1MSw2IEBACiAJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwQkI5QTgxOERDREU4OTAwMDZDMDg2IC8qIFdlYkNvbnRlbnQtaU9TLmVudGl0
bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueG1sOyBwYXRoID0gIldlYkNvbnRlbnQtaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMEJCOUE5MThEQ0RGNUEwMDA2QzA4NiAvKiBOZXR3b3Jr
LWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9ICJOZXR3b3JrLWlPUy5lbnRpdGxlbWVudHMiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ1MDIsOCArNDQ5OCw2IEBACiAJCQkJODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8sCiAJCQkJODM2MDM0OUUxQUNCMzRENjAwNjI2
NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovLAogCQkJCUMwMzM3REQ3MTI3QTUx
QjYwMDhGRjRGNCAvKiBXZWJUb3VjaEV2ZW50LmNwcCAqLywKLQkJCQk3QzA2NUYyOTFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLywKLQkJ
CQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmggKi8sCiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZl
bnQuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBTaGFyZWQ7CkBAIC03OTk0LDcgKzc5ODgsNiBA
QAogCQkJCTJEMjhBNDk3MUFGOTY1QTEwMEYxOTBDOSAvKiBXS1ZpZXdMYXlvdXRTdHJhdGVneS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2Fk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCRkE2MTc5RjEyRjBCOTlEMDAzM0UwQ0EgLyogV0tWaWV3
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzVFMUFGRTkxNkIyMEI3NTAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzVFMUFGRUIxNkIyMEI3RTAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2ZVJlc291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUEyRTU2NzE4RDc3NTA4MDAzODE0QkQgLyogV0tXZWJQcm9j
ZXNzQnVuZGxlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTUxLDcgKzkxNDQsNiBA
QAogCQkJCTVDMTQyNzAxMUMyM0Y4NEMwMEQ0MTE4MyAvKiBEb3dubG9hZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMDMzN0RERDEyN0E1MjFDMDA4RkY0RjQgLyogV2ViUGxhdGZvcm1Ub3VjaFBv
aW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQTk0NEEyMTg4NEU0RjAwMEVEODZEQiAvKiBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0MwNjVGMkIx
QzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMUQ1OTI5RTE2NkUwNjAwMDBFNkJGMDIgLyogV2ViUGx1Z0lu
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTc0NEVGMTI2MzhGQjMwMDZGMEYxMiAv
KiBXZWJQb3B1cEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDNCOTQ4NDYxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggZDU3NDRlZjFlNjEyMWJlYjViZWRjMDJmN2MzNTRkY2IzYjdkYmViNi4uNDA1
Njk3OWE4ZTU2NDk1YWQyNTU2NzY4MTdmMzEyYTcxNmMxYzM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC03
MSw2ICs3MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclNjcmlw
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KQEAgLTQwNywzOSArNDA3
LDM5IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkKIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VH
cm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgQVBJOjpBcnJheSogd2hpdGVsaXN0LCBBUEk6
OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVj
dGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMpCiB7CiAgICAgLy8gdXJsIGlzIG5vdCBmcm9tIFVSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFz
IG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IFVSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJl
bGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0
cmluZ1RhZyB2ZXJzaW9uLgotICAgIFVzZXJTY3JpcHQgdXNlclNjcmlwdHsgc291cmNlLCBVUkwo
VVJMKCksIHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZl
Y3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6
IFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzIH07CisgICAg
YXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIFVS
TChVUkwoKSwgdXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDog
VmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3Rvcigp
IDogVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOwogCi0g
ICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpzY3Jp
cHRXb3JsZCwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CisgICAgcGFnZUdyb3VwLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgV1RG
TW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTdHls
ZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1
cmwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0LCBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewogICAgIC8vIHVy
bCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVu
IHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3Ry
dWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4K
LSAgICBVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldHsgc291cmNlLCBVUkwoVVJMKCksIHVy
bCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJp
bmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxT
dHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwgfTsKKyAgICBhdXRv
IHVzZXJTdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNl
LCBVUkwoVVJMKCksIHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0b3Io
KSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdWZWN0
b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2
ZWwpOwogCi0gICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5
bGVTaGVldCgqc2NyaXB0V29ybGQsIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKKyAgICBwYWdl
R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KHNjcmlwdFdv
cmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZSh1c2VyU3R5bGVTaGVldCksIEluamVjdEluRXhpc3Rp
bmdEb2N1bWVudHMpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVVc2VyU2NyaXB0
KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQq
IHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICAvLyB1cmwgaXMgbm90IGZy
b20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkg
VVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBV
UkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCi0gICAgcGFnZUdy
b3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5yZW1vdmVVc2VyU2NyaXB0V2l0aFVSTCgqc2Ny
aXB0V29ybGQsIFVSTChVUkwoKSwgdXJsKSk7CisgICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKS5yZW1vdmVVc2VyU2NyaXB0KHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgVVJM
KFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxl
U2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIC8vIHVybCBpcyBu
b3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNl
ZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3Ig
Zm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBw
YWdlR3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLnJlbW92ZVVzZXJTdHlsZVNoZWV0V2l0
aFVSTCgqc2NyaXB0V29ybGQsIFVSTChVUkwoKSwgdXJsKSk7CisgICAgcGFnZUdyb3VwLT51c2Vy
Q29udGVudENvbnRyb2xsZXIoKS5yZW1vdmVVc2VyU3R5bGVTaGVldChzY3JpcHRXb3JsZC0+Y29y
ZVdvcmxkKCksIFVSTChVUkwoKSwgdXJsKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJl
bW92ZVVzZXJTY3JpcHRzKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkKQogewotICAgIHBhZ2VHcm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkucmVtb3ZlVXNlclNjcmlwdHMoKnNjcmlwdFdvcmxkKTsKKyAgICBwYWdl
R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLnJlbW92ZVVzZXJTY3JpcHRzKHNjcmlwdFdv
cmxkLT5jb3JlV29ybGQoKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJT
dHlsZVNoZWV0cyhXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiBzY3JpcHRXb3JsZCkKIHsKLSAgICBwYWdlR3JvdXAtPnVzZXJDb250ZW50Q29u
dHJvbGxlcigpLnJlbW92ZVVzZXJTdHlsZVNoZWV0cygqc2NyaXB0V29ybGQpOworICAgIHBhZ2VH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkucmVtb3ZlVXNlclN0eWxlU2hlZXRzKHNjcmlw
dFdvcmxkLT5jb3JlV29ybGQoKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFs
bFVzZXJDb250ZW50KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggM2U0MDA2ZjQxNTUyYTk4NmI1OTM1MDcxNGNlMmVh
NTg4NzNiZjMwYi4uZjI4N2M0YWI4MWZhZDBiZTA0NWM4YjU4ZWQzOTUyODEyMzU0ZjU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RE9NV3JhcHBlcldvcmxkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxl
U2hlZXQuaD4KQEAgLTc5LDYgKzgwLDcgQEAgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGUKIAogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXIodWludDY0X3Qg
aWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV91c2Vy
Q29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVyOjpjcmVhdGUoKSkKIHsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIsICp0aGlzKTsKIH0KQEAgLTkyLDYgKzk0LDcgQEAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKCkKICAgICB1c2VyQ29udGVudENvbnRyb2xsZXJz
KCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CiAKKwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OmFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0
X3QsIFN0cmluZz4+JiB3b3JsZHMpCiB7CiAgICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxkcykg
ewpAQCAtMTIxLDIxICsxMjQsMjAgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJl
bW92ZVVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHcKICAgICB9CiB9
CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyhjb25zdCBW
ZWN0b3I8V2ViVXNlclNjcmlwdERhdGE+JiB1c2VyU2NyaXB0cykKK3ZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2
NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4mIHVzZXJTY3JpcHRzKQogewotICAgIGZvciAoY29u
c3QgYXV0byYgdXNlclNjcmlwdERhdGEgOiB1c2VyU2NyaXB0cykgewotICAgICAgICBhdXRvIGl0
ID0gd29ybGRNYXAoKS5maW5kKHVzZXJTY3JpcHREYXRhLndvcmxkSWRlbnRpZmllcik7CisgICAg
Zm9yIChjb25zdCBhdXRvJiB1c2VyU2NyaXB0V29ybGRQYWlyIDogdXNlclNjcmlwdHMpIHsKKyAg
ICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh1c2VyU2NyaXB0V29ybGRQYWlyLmZpcnN0
KTsKICAgICAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIGFkZCBhIFVzZXJTY3JpcHQgdG8gYSBVc2VyQ29udGVudFdv
cmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU2NyaXB0RGF0
YS53b3JsZElkZW50aWZpZXIpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8g
YWRkIGEgVXNlclNjcmlwdCB0byBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0
aGF0IGRvZXMgbm90IGV4aXN0LiIsIHVzZXJTY3JpcHRXb3JsZFBhaXIuZmlyc3QpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBVc2VyU2NyaXB0IHNjcmlwdCA9
IHVzZXJTY3JpcHREYXRhLnVzZXJTY3JpcHQ7Ci0gICAgICAgIGFkZFVzZXJTY3JpcHRJbnRlcm5h
bCgqaXQtPnZhbHVlLmZpcnN0LCB1c2VyU2NyaXB0RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNj
cmlwdCkpOworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdChp
dC0+dmFsdWUuZmlyc3QtPmNvcmVXb3JsZCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlVz
ZXJTY3JpcHQ+KHVzZXJTY3JpcHRXb3JsZFBhaXIuc2Vjb25kKSk7CiAgICAgfQogfQogCi12b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdCh1aW50NjRfdCB3b3Js
ZElkZW50aWZpZXIsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKQordm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHQodWludDY0X3Qgd29ybGRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBhdXRvIGl0ID0gd29ybGRNYXAo
KS5maW5kKHdvcmxkSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkp
IHsKQEAgLTE0Myw3ICsxNDUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVt
b3ZlVXNlclNjcmlwdCh1aW50NjRfdCB3b3JsZElkZW50aWZpZXIsIHVpbnQ2NAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgcmVtb3ZlVXNlclNjcmlwdEludGVybmFsKCppdC0+dmFsdWUu
Zmlyc3QsIHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
ci0+cmVtb3ZlVXNlclNjcmlwdChpdC0+dmFsdWUuZmlyc3QtPmNvcmVXb3JsZCgpLCBVUkwoVVJM
KCksIHVybFN0cmluZykpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVt
b3ZlQWxsVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgd29ybGRJZGVudGlmaWVy
cykKQEAgLTE1NSwyNSArMTU3LDI0IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVBbGxVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiB3b3JsCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICByZW1vdmVVc2VyU2NyaXB0cygqaXQt
PnZhbHVlLmZpcnN0KTsKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVz
ZXJTY3JpcHRzKGl0LT52YWx1ZS5maXJzdC0+Y29yZVdvcmxkKCkpOwogICAgIH0KIH0KIAotdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0
b3I8V2ViVXNlclN0eWxlU2hlZXREYXRhPiYgdXNlclN0eWxlU2hlZXRzKQordm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4+JiB1c2VyU3R5bGVTaGVldHMp
CiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldERhdGEgOiB1c2VyU3R5bGVT
aGVldHMpIHsKLSAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh1c2VyU3R5bGVTaGVl
dERhdGEud29ybGRJZGVudGlmaWVyKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNo
ZWV0V29ybGRQYWlyIDogdXNlclN0eWxlU2hlZXRzKSB7CisgICAgICAgIGF1dG8gaXQgPSB3b3Js
ZE1hcCgpLmZpbmQodXNlclN0eWxlU2hlZXRXb3JsZFBhaXIuZmlyc3QpOwogICAgICAgICBpZiAo
aXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlp
bmcgdG8gYWRkIGEgVXNlclN0eWxlU2hlZXQgdG8gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQ
Ukl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU3R5bGVTaGVldERhdGEud29ybGRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIGFkZCBhIFVz
ZXJTdHlsZVNoZWV0IHRvIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQg
ZG9lcyBub3QgZXhpc3QuIiwgdXNlclN0eWxlU2hlZXRXb3JsZFBhaXIuZmlyc3QpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFVzZXJTdHlsZVNo
ZWV0IHNoZWV0ID0gdXNlclN0eWxlU2hlZXREYXRhLnVzZXJTdHlsZVNoZWV0OwotICAgICAgICBh
ZGRVc2VyU3R5bGVTaGVldEludGVybmFsKCppdC0+dmFsdWUuZmlyc3QsIHVzZXJTdHlsZVNoZWV0
RGF0YS5pZGVudGlmaWVyLCBXVEZNb3ZlKHNoZWV0KSk7CisKKyAgICAgICAgbV91c2VyQ29udGVu
dENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KGl0LT52YWx1ZS5maXJzdC0+Y29yZVdvcmxk
KCksIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+KHVzZXJTdHlsZVNo
ZWV0V29ybGRQYWlyLnNlY29uZCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogICAgIH0K
IH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0
KHVpbnQ2NF90IHdvcmxkSWRlbnRpZmllciwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlm
aWVyKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0
KHVpbnQ2NF90IHdvcmxkSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAg
ICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgIGlmIChp
dCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7CkBAIC0xODEsNyArMTgyLDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KHVpbnQ2NF90IHdvcmxkSWRl
bnRpZmllciwgdWkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlbW92ZVVzZXJTdHls
ZVNoZWV0SW50ZXJuYWwoKml0LT52YWx1ZS5maXJzdCwgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVy
KTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlclN0eWxlU2hlZXQoaXQt
PnZhbHVlLmZpcnN0LT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpKTsKIH0KIAog
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiB3b3JsZElkZW50aWZpZXJzKQpAQCAtMTkzLDcgKzE5NCw3
IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHJlbW92ZVVzZXJTdHlsZVNoZWV0cygqaXQtPnZhbHVlLmZpcnN0KTsKKyAg
ICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJTdHlsZVNoZWV0cyhpdC0+
dmFsdWUuZmlyc3QtPmNvcmVXb3JsZCgpKTsKICAgICB9CiB9CiAKQEAgLTI1Miw5ICsyNTMsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVycyhjb25zdCBWZWN0b3I8V2ViU2NyaQogICAgICAgICBSZWZQdHI8V2ViVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvclByb3h5PiBkZXNjcmlwdG9yID0gV2ViVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvclByb3h5OjpjcmVhdGUodGhpcywgaGFuZGxlLm5hbWUsIGhhbmRsZS5pZGVudGlm
aWVyKTsKIAogICAgICAgICBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLmFkZChkZXNj
cmlwdG9yLT5pZGVudGlmaWVyKCksIGRlc2NyaXB0b3IpOwotCi0gICAgICAgIGF1dG8mIGNvcmVE
ZXNjcmlwdG9yID0gZGVzY3JpcHRvci0+ZGVzY3JpcHRvcigpOwotICAgICAgICBtX3VzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3JzTWFwLmFkZChzdGQ6Om1ha2VfcGFpcihjb3JlRGVzY3JpcHRv
ci5uYW1lKCksICZjb3JlRGVzY3JpcHRvci53b3JsZCgpKSwgJmNvcmVEZXNjcmlwdG9yKTsKKyAg
ICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IoZGVzY3JpcHRvci0+ZGVzY3JpcHRvcigpKTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwpAQCAtMjY2LDEwICsyNjUsOCBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
KHVpbnQ2NF90IGlkZW50aWZpZQogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAg
ICAgYXV0byBpdCA9IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnMuZmluZChpZGVudGlm
aWVyKTsKICAgICBBU1NFUlQoaXQgIT0gbV91c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9ycy5l
bmQoKSk7Ci0KLSAgICBhdXRvJiBjb3JlRGVzY3JpcHRvciA9IGl0LT52YWx1ZS0+ZGVzY3JpcHRv
cigpOwotICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnNNYXAucmVtb3ZlKHN0ZDo6
bWFrZV9wYWlyKGNvcmVEZXNjcmlwdG9yLm5hbWUoKSwgJmNvcmVEZXNjcmlwdG9yLndvcmxkKCkp
KTsKLQorICAgIAorICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yKGl0LT52YWx1ZS0+ZGVzY3JpcHRvcigpKTsKICAgICBtX3VzZXJN
ZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzLnJlbW92ZShpdCk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShpZGVudGlmaWVyKTsKQEAgLTI4MiwxNjggKzI3OSwxOSBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8UwogICAgIGZvciAoY29uc3QgYXV0byYgdXNlckNvbnRlbnRFeHRlbnNpb24gOiB1c2Vy
Q29udGVudEV4dGVuc2lvbnMpIHsKICAgICAgICAgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
RGF0YSBjb250ZW50RXh0ZW5zaW9uRGF0YSA9IHVzZXJDb250ZW50RXh0ZW5zaW9uLnNlY29uZDsK
ICAgICAgICAgUmVmUHRyPFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbj4gY29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uID0gV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92
ZShjb250ZW50RXh0ZW5zaW9uRGF0YSkpOwotCi0gICAgICAgIG1fY29udGVudEV4dGVuc2lvbkJh
Y2tlbmQuYWRkQ29udGVudEV4dGVuc2lvbih1c2VyQ29udGVudEV4dGVuc2lvbi5maXJzdCwgV1RG
TW92ZShjb21waWxlZENvbnRlbnRFeHRlbnNpb24pKTsKKyAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJDb250ZW50RXh0ZW5zaW9uKHVzZXJDb250ZW50RXh0ZW5zaW9uLmZp
cnN0LCBjb21waWxlZENvbnRlbnRFeHRlbnNpb24pOwogICAgIH0KIH0KIAogdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLnJlbW92ZUNvbnRlbnRF
eHRlbnNpb24obmFtZSk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJD
b250ZW50RXh0ZW5zaW9uKG5hbWUpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKCkKIHsKLSAgICBtX2NvbnRlbnRFeHRl
bnNpb25CYWNrZW5kLnJlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zKCk7CisgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPnJlbW92ZUFsbFVzZXJDb250ZW50RXh0ZW5zaW9ucygpOwogfQogI2Vu
ZGlmCiAKLQotCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdElu
dGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50NjRfdCB1c2VyU2Ny
aXB0SWRlbnRpZmllciwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQpCi17Ci0gICAgYXV0byYgc2Ny
aXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFtdIHsgcmV0dXJuIFZl
Y3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNvcmU6OlVzZXJTY3JpcHQ+PigpOyB9KS5pdGVy
YXRvci0+dmFsdWU7Ci0gICAgc2NyaXB0c0luV29ybGQuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHVz
ZXJTY3JpcHRJZGVudGlmaWVyLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKSk7Ci19Ci0KLXZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQmIHdvcmxkLCBVc2VyU2NyaXB0JiYgdXNlclNjcmlwdCkKLXsKLSAgICBhZGRVc2VyU2Ny
aXB0SW50ZXJuYWwod29ybGQsIDAsIFdURk1vdmUodXNlclNjcmlwdCkpOwotfQotCi12b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQotewotICAgIGF1dG8gaXQg
PSBtX3VzZXJTY3JpcHRzLmZpbmQoJndvcmxkKTsKLSAgICBpZiAoaXQgPT0gbV91c2VyU2NyaXB0
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgc2NyaXB0cyA9IGl0LT52YWx1
ZTsKLSAgICBmb3IgKGludCBpID0gc2NyaXB0cy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewot
ICAgICAgICBpZiAoc2NyaXB0c1tpXS5zZWNvbmQudXJsKCkgPT0gdXJsKQotICAgICAgICAgICAg
c2NyaXB0cy5yZW1vdmUoaSk7Ci0gICAgfQotCi0gICAgaWYgKHNjcmlwdHMuaXNFbXB0eSgpKQot
ICAgICAgICBtX3VzZXJTY3JpcHRzLnJlbW92ZShpdCk7Ci19Ci0KLXZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYgd29ybGQsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKQotewotICAgIGF1
dG8gaXQgPSBtX3VzZXJTY3JpcHRzLmZpbmQoJndvcmxkKTsKLSAgICBpZiAoaXQgPT0gbV91c2Vy
U2NyaXB0cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgc2NyaXB0cyA9IGl0
LT52YWx1ZTsKLSAgICBmb3IgKGludCBpID0gc2NyaXB0cy5zaXplKCkgLSAxOyBpID49IDA7IC0t
aSkgewotICAgICAgICBpZiAoc2NyaXB0c1tpXS5maXJzdCA9PSB1c2VyU2NyaXB0SWRlbnRpZmll
cikKLSAgICAgICAgICAgIHNjcmlwdHMucmVtb3ZlKGkpOwotICAgIH0KLQotICAgIGlmIChzY3Jp
cHRzLmlzRW1wdHkoKSkKLSAgICAgICAgbV91c2VyU2NyaXB0cy5yZW1vdmUoaXQpOwotfQotCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdHMoSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCYgd29ybGQpCi17Ci0gICAgbV91c2VyU2NyaXB0cy5yZW1vdmUoJndv
cmxkKTsKLX0KLQotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNo
ZWV0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIHVpbnQ2NF90IHVz
ZXJTdHlsZVNoZWV0SWRlbnRpZmllciwgVXNlclN0eWxlU2hlZXQmJiB1c2VyU3R5bGVTaGVldCkK
LXsKLSAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1
cmUoJndvcmxkLCBbXSB7IHJldHVybiBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldD4+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzdHlsZVNoZWV0
c0luV29ybGQuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHVzZXJTdHlsZVNoZWV0SWRlbnRpZmllciwg
V1RGTW92ZSh1c2VyU3R5bGVTaGVldCkpKTsKLQotICAgIGludmFsaWRhdGVJbmplY3RlZFN0eWxl
U2hlZXRDYWNoZUluQWxsRnJhbWVzSW5BbGxQYWdlcygpOwotfQotCi12b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCYgd29ybGQsIFVzZXJTdHlsZVNoZWV0JiYgdXNlclN0eWxlU2hlZXQpCi17Ci0gICAgYWRkVXNl
clN0eWxlU2hlZXRJbnRlcm5hbCh3b3JsZCwgMCwgV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkpOwot
fQotCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclN0eWxlU2hlZXRX
aXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBjb25zdCBVUkwmIHVybCkK
LXsKLSAgICBhdXRvIGl0ID0gbV91c2VyU3R5bGVTaGVldHMuZmluZCgmd29ybGQpOwotICAgIGlm
IChpdCA9PSBtX3VzZXJTdHlsZVNoZWV0cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byYgc3R5bGVzaGVldHMgPSBpdC0+dmFsdWU7Ci0KLSAgICBib29sIHNoZWV0c0NoYW5nZWQg
PSBmYWxzZTsKLSAgICBmb3IgKGludCBpID0gc3R5bGVzaGVldHMuc2l6ZSgpIC0gMTsgaSA+PSAw
OyAtLWkpIHsKLSAgICAgICAgaWYgKHN0eWxlc2hlZXRzW2ldLnNlY29uZC51cmwoKSA9PSB1cmwp
IHsKLSAgICAgICAgICAgIHN0eWxlc2hlZXRzLnJlbW92ZShpKTsKLSAgICAgICAgICAgIHNoZWV0
c0NoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFzaGVldHNDaGFu
Z2VkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3R5bGVzaGVldHMuaXNFbXB0eSgpKQot
ICAgICAgICBtX3VzZXJTdHlsZVNoZWV0cy5yZW1vdmUoaXQpOwotCi0gICAgaW52YWxpZGF0ZUlu
amVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBhZ2VzKCk7Ci19Ci0KLXZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU3R5bGVTaGVldEludGVybmFsKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50NjRfdCB1c2VyU3R5bGVTaGVldElk
ZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdCA9IG1fdXNlclN0eWxlU2hlZXRzLmZpbmQoJndvcmxk
KTsKLSAgICBpZiAoaXQgPT0gbV91c2VyU3R5bGVTaGVldHMuZW5kKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGF1dG8mIHN0eWxlc2hlZXRzID0gaXQtPnZhbHVlOwotCi0gICAgYm9vbCBzaGVl
dHNDaGFuZ2VkID0gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IHN0eWxlc2hlZXRzLnNpemUoKSAt
IDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIGlmIChzdHlsZXNoZWV0c1tpXS5maXJzdCA9PSB1
c2VyU3R5bGVTaGVldElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIHN0eWxlc2hlZXRzLnJlbW92
ZShpKTsKLSAgICAgICAgICAgIHNoZWV0c0NoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKCFzaGVldHNDaGFuZ2VkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
c3R5bGVzaGVldHMuaXNFbXB0eSgpKQotICAgICAgICBtX3VzZXJTdHlsZVNoZWV0cy5yZW1vdmUo
aXQpOwotCi0gICAgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJ
bkFsbFBhZ2VzKCk7Ci19Ci0KLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVV
c2VyU3R5bGVTaGVldHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQpCi17Ci0gICAg
aWYgKCFtX3VzZXJTdHlsZVNoZWV0cy5yZW1vdmUoJndvcmxkKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBh
Z2VzKCk7Ci19Ci0KLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2Vy
Q29udGVudCgpCi17Ci0gICAgbV91c2VyU2NyaXB0cy5jbGVhcigpOwotCi0gICAgaWYgKCFtX3Vz
ZXJTdHlsZVNoZWV0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV91c2VyU3R5bGVTaGVldHMuY2xl
YXIoKTsKLSAgICAgICAgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFt
ZXNJbkFsbFBhZ2VzKCk7Ci0gICAgfQotfQotCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6Zm9yRWFjaFVzZXJTY3JpcHQoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkRP
TVdyYXBwZXJXb3JsZCYsIGNvbnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmKT4mIGZ1bmN0b3IpIGNv
bnN0Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZEFuZFVzZXJTY3JpcHRWZWN0b3IgOiBt
X3VzZXJTY3JpcHRzKSB7Ci0gICAgICAgIGF1dG8mIHdvcmxkID0gd29ybGRBbmRVc2VyU2NyaXB0
VmVjdG9yLmtleS0+Y29yZVdvcmxkKCk7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgaWRlbnRp
ZmllclVzZXJTY3JpcHRQYWlyIDogd29ybGRBbmRVc2VyU2NyaXB0VmVjdG9yLnZhbHVlKQotICAg
ICAgICAgICAgZnVuY3Rvcih3b3JsZCwgaWRlbnRpZmllclVzZXJTY3JpcHRQYWlyLnNlY29uZCk7
Ci0gICAgfQotfQotCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJT
dHlsZVNoZWV0KGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldCYpPiYgZnVuY3RvcikgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8mIHN0eWxlU2hlZXRW
ZWN0b3IgOiBtX3VzZXJTdHlsZVNoZWV0cy52YWx1ZXMoKSkgewotICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGlkZW50aWZpZXJVc2VyU3R5bGVTaGVldFBhaXIgOiBzdHlsZVNoZWV0VmVjdG9yKQot
ICAgICAgICAgICAgZnVuY3RvcihpZGVudGlmaWVyVXNlclN0eWxlU2hlZXRQYWlyLnNlY29uZCk7
Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5oCmluZGV4IDA0YWUwMzUyNGE4YTU4ZDllMGM0ZmVjNzM2NmViOTQ1MWY4ZmRiZjku
LjdkMWQ4YmQ1MDhmMDllYWU1ZGU2YzM4ZjA4YTE2NzBjYjMyYTgzYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaApAQCAtMjgsMTkgKzI4LDkgQEAKIAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCi0jaW5j
bHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyQ29udGVudFByb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi0jaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucyB7Ci1jbGFzcyBDb21waWxlZENvbnRlbnRFeHRlbnNpb247Ci19Ci19CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ4LDQ0
ICszOCwzMCBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YTsKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JQcm94eTsKIAotY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlVzZXJDb250ZW50UHJvdmlkZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgeworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciAgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKTsKIAotICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0gCisgICAgV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9s
bGVyJiB1c2VyQ29udGVudENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3VzZXJDb250ZW50Q29udHJv
bGxlcjsgfQogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQmLCBXZWJDb3JlOjpVc2VyU2NyaXB0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdFdp
dGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwot
ICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHMoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpOwot
ICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYsIFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRX
aXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
LSAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0cyhJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
Jik7Ci0gICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudCgpOworICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0gCiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0gICAg
Ly8gV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlcgotICAgIHZvaWQgZm9yRWFjaFVzZXJTY3Jp
cHQoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYsIGNv
bnN0IFdlYkNvcmU6OlVzZXJTY3JpcHQmKT4mKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGZv
ckVhY2hVc2VyU3R5bGVTaGVldChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQmKT4mKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBXZWJDb3Jl
OjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yTWFwJiB1c2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvcnNNYXA7IH0KLSNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIHVzZXJDb250
ZW50RXh0ZW5zaW9uQmFja2VuZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudEV4dGVuc2lv
bkJhY2tlbmQ7IH0KLSNlbmRpZgotCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+Jik7CiAgICAgdm9pZCByZW1vdmVVc2Vy
Q29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CiAKLSAgICB2b2lkIGFkZFVz
ZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mKTsKLSAgICB2b2lkIHJl
bW92ZVVzZXJTY3JpcHQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VyU2Ny
aXB0SWRlbnRpZmllcik7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4mKTsKKyAgICB2b2lkIHJlbW92
ZVVzZXJTY3JpcHQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZyk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8dWludDY0
X3Q+Jik7CiAKLSAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNl
clN0eWxlU2hlZXREYXRhPiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXQodWludDY0
X3Qgd29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllcik7CisgICAg
dm9pZCBhZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwg
V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+PiYpOworICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hl
ZXQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYp
OwogCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mKTsKQEAgLTk3LDI3ICs3MywxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKCk7CiAjZW5kaWYK
IAotCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0SW50ZXJuYWwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCYsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyLCBXZWJDb3JlOjpVc2VyU2NyaXB0
JiYpOwotICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQmLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllcik7Ci0gICAgdm9pZCBhZGRV
c2VyU3R5bGVTaGVldEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmLCB1aW50NjRf
dCB1c2VyU3R5bGVTaGVldElkZW50aWZpZXIsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiYpOwot
ICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiwgdWludDY0X3QgdXNlclN0eWxlU2hlZXRJZGVudGlmaWVyKTsKLQotCiAgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOworICAgIFJlZjxXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xs
ZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyOworI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFO
RExFUlMpCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlVzZXJNZXNzYWdlSGFuZGxl
ckRlc2NyaXB0b3JQcm94eT4+IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnM7Ci0KLSAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0
b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU2NyaXB0Pj4+IFdvcmxkVG9Vc2Vy
U2NyaXB0TWFwOwotICAgIFdvcmxkVG9Vc2VyU2NyaXB0TWFwIG1fdXNlclNjcmlwdHM7Ci0KLSAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCBWZWN0
b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4+PiBXb3JsZFRv
VXNlclN0eWxlU2hlZXRNYXA7Ci0gICAgV29ybGRUb1VzZXJTdHlsZVNoZWV0TWFwIG1fdXNlclN0
eWxlU2hlZXRzOwotCi0gICAgV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvck1h
cCBtX3VzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JzTWFwOwotI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCi0gICAgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZCBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kOwogI2VuZGlmCi0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5tZXNzYWdlcy5pbgppbmRleCBmYTI1YzdhYTJlZWIzZDA2NGFmOWY0YjUzNTZjZDZjNmE1
NzdmMjA0Li44OWRiY2E1ZmFjMjk1ZDA1MTg3NmUwNGUxY2YyMDNlMDVlMzdhM2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjcsMTIg
KzI3LDEyIEBAIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlciB7CiAgICAgQWRk
VXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4gd29y
bGRzKTsKICAgICBSZW1vdmVVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8dWludDY0X3Q+IHdvcmxk
SWRlbnRpZmllcnMpOwogCi0gICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPHN0cnVjdCBXZWJLaXQ6
OldlYlVzZXJTY3JpcHREYXRhPiB1c2VyU2NyaXB0cyk7Ci0gICAgUmVtb3ZlVXNlclNjcmlwdCh1
aW50NjRfdCB3b3JsZElkZW50aWZpZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIpOworICAgIEFkZFVz
ZXJTY3JpcHRzKFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNvcmU6OlVzZXJTY3JpcHQ+
PiB1c2VyU2NyaXB0cyk7CisgICAgUmVtb3ZlVXNlclNjcmlwdCh1aW50NjRfdCB3b3JsZElkZW50
aWZpZXIsIFN0cmluZyB1cmwpOwogICAgIFJlbW92ZUFsbFVzZXJTY3JpcHRzKFZlY3Rvcjx1aW50
NjRfdD4gd29ybGRJZGVudGlmaWVycyk7CiAKLSAgICBBZGRVc2VyU3R5bGVTaGVldHMoVmVjdG9y
PHN0cnVjdCBXZWJLaXQ6OldlYlVzZXJTdHlsZVNoZWV0RGF0YT4gdXNlclN0eWxlU2hlZXRzKTsK
LSAgICBSZW1vdmVVc2VyU3R5bGVTaGVldCh1aW50NjRfdCB3b3JsZElkZW50aWZpZXIsIHVpbnQ2
NF90IGlkZW50aWZpZXIpOworICAgIEFkZFVzZXJTdHlsZVNoZWV0cyhWZWN0b3I8c3RkOjpwYWly
PHVpbnQ2NF90LCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4+IHVzZXJTdHlsZVNoZWV0cyk7Cisg
ICAgUmVtb3ZlVXNlclN0eWxlU2hlZXQodWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCBTdHJpbmcg
dXJsKTsKICAgICBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoVmVjdG9yPHVpbnQ2NF90PiB3b3Js
ZElkZW50aWZpZXJzKTsKIAogICAgIEFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoVmVjdG9y
PFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+IHNjcmlwdE1lc3NhZ2VIYW5k
bGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNWFiYjczZDE0ZTM1OTI5M2ZlYjkxZDQ5NjNkYzU3MTZhYTc4NzBjMS4uOGY1MjY4YzAy
Y2U3M2FkZGYzMTRmODUxMTJjM2I1NDc1YmQ0YTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUg
IkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHNj
YXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmgiCkBAIC0zOTcsNyArMzk2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gV2ViRGF0YWJhc2VQcm92aWRlcjo6
Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXAtPnBhZ2VHcm91cElEKCkpOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6Z2V0T3JDcmVhdGUobV9wYWdlR3JvdXAtPnBhZ2VHcm91cElEKCkpOwotICAgIHBhZ2VD
b25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBtX3VzZXJDb250ZW50Q29udHJvbGxl
ci5wdHIoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSAm
bV91c2VyQ29udGVudENvbnRyb2xsZXItPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSBWaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy52aXNpdGVkTGlua1RhYmxlSUQpOwogCiAjaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKQEAgLTUyMTcsMjEgKzUyMTYsMjEgQEAgdm9pZCBXZWJQ
YWdlOjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1Np
emUpCiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwg
V2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29y
ZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBXZWJDb3Jl
OjpVc2VyU2NyaXB0IHVzZXJTY3JpcHR7IHNvdXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRG
cmFtZXMgfTsKKyAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQoc291cmNlLCBXZWJD
b3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7CiAKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
ci0+YWRkVXNlclNjcmlwdCgqSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQo
KSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQobWFpblRocmVhZE5vcm1hbFdvcmxk
KCksIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VXNlclNjcmlwdD4odXNlclNjcmlwdCkpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNl
LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewot
ICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0eyBzb3VyY2UsIFdlYkNv
cmU6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVj
dGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwgfTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldChzb3VyY2UsIFdlYkNvcmU6OmJsYW5rVVJMKCksIFZlY3RvcjxT
dHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2Vy
TGV2ZWwpOwogCi0gICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0
KCpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJT
dHlsZVNoZWV0KSk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPnVzZXJDb250ZW50Q29u
dHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pih1c2VyU3R5bGVTaGVldCksIElu
amVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlbW92ZUFsbFVz
ZXJDb250ZW50KCkKIHsKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlQWxsVXNl
ckNvbnRlbnQoKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+dXNlckNvbnRlbnRDb250
cm9sbGVyKCkucmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaXNw
YXRjaERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFBy
b3h5LmNwcAppbmRleCBmOWE4NjMwOGY1OGM5OTcwYzY0ZGM0ZTcyZTc0YTk2MjA0YWU5YWRjLi45
NDc0MmMzNzVhMDU4ZDQ0NjdhNzJiMWFmNTU3MmU3M2I1MTc2N2YzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAK
QEAgLTU2LDkgKzU2LDkgQEAgV2ViUGFnZUdyb3VwUHJveHk6On5XZWJQYWdlR3JvdXBQcm94eSgp
CiB7CiB9CiAKLVdlYlVzZXJDb250ZW50Q29udHJvbGxlciYgV2ViUGFnZUdyb3VwUHJveHk6OnVz
ZXJDb250ZW50Q29udHJvbGxlcigpCitXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXImIFdl
YlBhZ2VHcm91cFByb3h5Ojp1c2VyQ29udGVudENvbnRyb2xsZXIoKQogewotICAgIHJldHVybiBt
X3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3Jv
dXBQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91
cFByb3h5LmgKaW5kZXggYzk4YjhhZTNkNmUyYThjOGQwNjE4OWFkZDNmMzc5Mjc3ZDJhOWJmZi4u
Y2FjNTk2MWM0NDNmYmJmNmNhNjBmMjg2NGYxM2U2OTc5MDM1YjNmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmgKQEAg
LTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGFnZUdyb3VwOwor
Y2xhc3MgVXNlckNvbnRlbnRDb250cm9sbGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWaXNpYmxlVG9IaXN0b3J5Q2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnZpc2libGVUb0hpc3RvcnlDbGllbnQ7IH0KICAgICBX
ZWJDb3JlOjpQYWdlR3JvdXAqIGNvcmVQYWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VH
cm91cDsgfQogCi0gICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyJiB1c2VyQ29udGVudENvbnRy
b2xsZXIoKTsKKyAgICBXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXImIHVzZXJDb250ZW50
Q29udHJvbGxlcigpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VHcm91cFByb3h5KGNvbnN0IFdl
YlBhZ2VHcm91cERhdGEmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>