From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Gregory Heytings Newsgroups: gmane.emacs.bugs Subject: bug#51377: Automatically exit server when it has no remaining clients Date: Tue, 26 Oct 2021 10:37:38 +0000 Message-ID: <664bd93fdd10b4061070@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> <90ba36dccc0584692d36@heytings.org> <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="wwAWweFZC1" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31651"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 51377@debbugs.gnu.org To: Jim Porter Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Oct 26 13:14:40 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mfKPe-0007wK-PO for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 26 Oct 2021 13:14:38 +0200 Original-Received: from localhost ([::1]:55890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mfKPd-0000yq-LZ for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 26 Oct 2021 07:14:37 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mfJqE-0001l7-IX for bug-gnu-emacs@gnu.org; Tue, 26 Oct 2021 06:38:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:33657) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mfJqE-0005vA-8Q for bug-gnu-emacs@gnu.org; Tue, 26 Oct 2021 06:38:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mfJqE-0006uf-59 for bug-gnu-emacs@gnu.org; Tue, 26 Oct 2021 06:38:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Gregory Heytings Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 26 Oct 2021 10:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51377 X-GNU-PR-Package: emacs Original-Received: via spool by 51377-submit@debbugs.gnu.org id=B51377.163524466226547 (code B ref 51377); Tue, 26 Oct 2021 10:38:02 +0000 Original-Received: (at 51377) by debbugs.gnu.org; 26 Oct 2021 10:37:42 +0000 Original-Received: from localhost ([127.0.0.1]:45203 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfJpt-0006u6-Sv for submit@debbugs.gnu.org; Tue, 26 Oct 2021 06:37:42 -0400 Original-Received: from heytings.org ([95.142.160.155]:35952) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfJpr-0006tu-MB for 51377@debbugs.gnu.org; Tue, 26 Oct 2021 06:37:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635244658; bh=soZsUco/R/uME9vY8coLSYciaPP4SE/8Fu10vPzWjgk=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=SieVga8AnIajwPcbcLtAZgxlbLA5zNrYnafaEa2WubvsC5R0Ioxex9LjO1FUbn1ds p8SXjFSep2d35L6S4p/cX11i2Ur+MxrlNjJUwdiLAtn8h3ctFqkw5O/Kn7deM2HDSO apup5fvfw+Rq0XiGPwn/e9ZepM5Qv6vHimGEE7sC2u5af2sz18I9n52+2Ook4Sb0is IXMYAdjWdZ9ML113KkbRqeBx3tagv/5bqySu7TdCdxd7GnCadJgHCIfoU3paqiLQ4b pFphxn24Ri0HWe8ilKY47VidaR8Zv25atEw8PpyephGq9N+oPvZDOtown4zAPNT2wD Sa+jeMu45Ksrg== In-Reply-To: <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> Content-ID: <664bd93fdd572047fc28@heytings.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:218372 Archived-At: --wwAWweFZC1 Content-Type: text/plain; charset=us-ascii; format=flowed Content-ID: <664bd93fdd8d46974def@heytings.org> > > 1) I think it should check whether there are other *clients*, not other > *frames*. > No, because nowait client frames are not recorded as clients. There's no way around it, it's necessary to use frames. > > 3) `handle-delete-frame' (used when clicking the X button in your window > manager) can also call `save-buffers-kill-emacs' if the user closed the > last frame. The logic here should exclude the daemon frame from counting > as another frame so that closing all frames via the window manager stops > the daemon too. > If it's now also necessary to kill the daemon when you close the last Emacs frame with the window manager close button (I did not see this requirement in your original post), then it's also necessary to kill the daemon when you close the last Emacs frame with C-x 5 0 (delete-frame), because it's what Emacs tells you to do when you call emacsclient without a file argument. Here's a combined patch, which implements the two desired behaviors, and which I believe handles all cases properly: delete-frame, handele-delete-frame, save-buffers-kill-terminal, wait and nowait clients. --wwAWweFZC1 Content-Type: text/x-diff; name=Options-to-automatically-stop-the-Emacs-server.patch; charset=us-ascii Content-Transfer-Encoding: base64 Content-ID: <664bd93fddf2850ec8e5@heytings.org> Content-Description: Content-Disposition: attachment; filename=Options-to-automatically-stop-the-Emacs-server.patch RnJvbSAzYTZiYzA1OWRjYzBjMjliZTgxYTgzZjcwZjg2Nzg5N2E5ODkwNjY3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBUdWUsIDI2IE9j dCAyMDIxIDEwOjIxOjU4ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIE9wdGlv bnMgdG8gYXV0b21hdGljYWxseSBzdG9wIHRoZSBFbWFjcyBzZXJ2ZXIuDQoN CiogbGlzcC9zZXJ2ZXIuZWwgKHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkp OiBOZXcgZnVuY3Rpb24uDQooc2VydmVyLXN0b3AtYXV0b21hdGljYWxseSk6 IE5ldyBhdXhpbGlhcnkgdmFyaWFibGUuDQooc2VydmVyLXN0b3AtYXV0b21h dGljYWxseS0taGFuZGxlLWRlbGV0ZS1mcmFtZSk6IE5ldyBhdXhpbGlhcnkN CmZ1bmN0aW9uLg0KKHNlcnZlci1zYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5h bCk6IENhbGwgdGhlIG5ldyBhdXhpbGlhcnkNCmZ1bmN0aW9uIHdoZW4gbmVj ZXNzYXJ5Lg0KKiBkb2MvZW1hY3MvbWlzYy50ZXhpIChFbWFjcyBTZXJ2ZXIp OiBEb2N1bWVudCB0aGUgbmV3IGZ1bmN0aW9uLg0KQWxzbyBtZW50aW9uIHRo YXQgYW4gRW1hY3Mgc2VydmVyIGNhbiBiZSBzdGFydGVkIHdpdGggZW1hY3Nj bGllbnQuDQotLS0NCiBkb2MvZW1hY3MvbWlzYy50ZXhpIHwgIDE3ICsrKysr KysrDQogbGlzcC9zZXJ2ZXIuZWwgICAgICB8IDEwMyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KIDIgZmlsZXMgY2hh bmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pDQoNCmRp ZmYgLS1naXQgYS9kb2MvZW1hY3MvbWlzYy50ZXhpIGIvZG9jL2VtYWNzL21p c2MudGV4aQ0KaW5kZXggNTEyM2E3MTZkYy4uNzdlNDE2NDAzZSAxMDA2NDQN Ci0tLSBhL2RvYy9lbWFjcy9taXNjLnRleGkNCisrKyBiL2RvYy9lbWFjcy9t aXNjLnRleGkNCkBAIC0xNjk3LDYgKzE2OTcsMTEgQEAgRW1hY3MgU2VydmVy DQogY2FsbHMgQGNvZGV7c2VydmVyLXN0YXJ0fSBhZnRlciBpbml0aWFsaXph dGlvbiBhbmQgZG9lcyBub3Qgb3BlbiBhbg0KIGluaXRpYWwgZnJhbWUuICBJ dCB0aGVuIHdhaXRzIGZvciBlZGl0IHJlcXVlc3RzIGZyb20gY2xpZW50cy4N CiANCitAaXRlbQ0KK1J1biB0aGUgY29tbWFuZCBAY29kZXtlbWFjc2NsaWVu dH0gd2l0aCB0aGUgQHNhbXB7LS1hbHRlcm5hdGUtZWRpdG9yPSIifQ0KK2Nv bW1hbmQtbGluZSBvcHRpb24uICBUaGlzIHN0YXJ0cyBhbiBFbWFjcyBkYWVt b24gb25seSBpZiBubyBFbWFjcyBkYWVtb24NCitpcyBhbHJlYWR5IHJ1bm5p bmcuDQorDQogQGNpbmRleCBzeXN0ZW1kIHVuaXQgZmlsZQ0KIEBpdGVtDQog SWYgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHVzZXMgQGNvbW1hbmR7c3lzdGVt ZH0gdG8gbWFuYWdlIHN0YXJ0dXAsDQpAQCAtMTc2Myw2ICsxNzY4LDE4IEBA IEVtYWNzIFNlcnZlcg0KICAgZW1hY3MgLS1kYWVtb249Zm9vDQogQGVuZCBl eGFtcGxlDQogDQorQGZpbmRleCBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5 DQorICBJZiB5b3Ugd2FudCB0byBhdXRvbWF0aWNhbGx5IHN0b3AgdGhlIEVt YWNzIHNlcnZlciB3aGVuIGl0IGhhcyBubw0KK2NsaWVudHMsIG5vIHVuc2F2 ZWQgZmlsZS12aXNpdGluZyBidWZmZXJzIGFuZCBubyBydW5uaW5nIHByb2Nl c3Nlcw0KK2FueW1vcmUsIHB1dCB0aGUgZXhwcmVzc2lvbiBAY29kZXsoc2Vy dmVyLXN0b3AtYXV0b21hdGljYWxseSBuaWwpfSBpbg0KK3lvdXIgaW5pdCBm aWxlIChAcHhyZWZ7SW5pdCBGaWxlfSkuDQorDQorICBJZiB5b3Ugd2FudCB0 byBiZSBhc2tlZCB3aGV0aGVyIGVhY2ggdW5zYXZlZCBmaWxlLXZpc2l0aW5n IGJ1ZmZlcg0KK211c3QgYmUgc2F2ZWQgYW5kIGVhY2ggdW5maW5pc2hlZCBw cm9jZXNzIGNhbiBiZSBzdG9wcGVkIHdoZW4gdGhlIGxhc3QNCitjbGllbnQg ZnJhbWUgaXMgYmVpbmcgY2xvc2VkLCBhbmQgaWYgc28sIHRvIHN0b3AgdGhl IEVtYWNzIHNlcnZlciwgcHV0DQordGhlIGV4cHJlc3Npb24gQGNvZGV7KHNl cnZlci1zdG9wLWF1dG9tYXRpY2FsbHkgdCl9IGluIHlvdXIgaW5pdCBmaWxl DQorKEBweHJlZntJbml0IEZpbGV9KS4NCisNCiBAZmluZGV4IHNlcnZlci1l dmFsLWF0DQogICBJZiB5b3UgaGF2ZSBkZWZpbmVkIGEgc2VydmVyIGJ5IGEg dW5pcXVlIHNlcnZlciBuYW1lLCBpdCBpcyBwb3NzaWJsZQ0KIHRvIGNvbm5l Y3QgdG8gdGhlIHNlcnZlciBmcm9tIGFub3RoZXIgRW1hY3MgaW5zdGFuY2Ug YW5kIGV2YWx1YXRlIExpc3ANCmRpZmYgLS1naXQgYS9saXNwL3NlcnZlci5l bCBiL2xpc3Avc2VydmVyLmVsDQppbmRleCA2MzU5YTc2MTk5Li5mNmRjMGNj MTQ1IDEwMDY0NA0KLS0tIGEvbGlzcC9zZXJ2ZXIuZWwNCisrKyBiL2xpc3Av c2VydmVyLmVsDQpAQCAtMTcxNiw2ICsxNzE2LDkgQEAgc2VydmVyLXN3aXRj aC1idWZmZXINCiAgICAgKHdoZW4gc2VydmVyLXJhaXNlLWZyYW1lDQogICAg ICAgKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMgKHdpbmRvdy1mcmFt ZSkpKSkpDQogDQorKGRlZnZhciBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5 IG5pbA0KKyAgIkludGVybmFsIHN0YXR1cyB2YXJpYWJsZSBmb3IgYHNlcnZl ci1zdG9wLWF1dG9tYXRpY2FsbHknLiIpDQorDQogOzs7IyMjYXV0b2xvYWQN CiAoZGVmdW4gc2VydmVyLXNhdmUtYnVmZmVycy1raWxsLXRlcm1pbmFsIChh cmcpDQogICA7OyBDYWxsZWQgZnJvbSBzYXZlLWJ1ZmZlcnMta2lsbC10ZXJt aW5hbCBpbiBmaWxlcy5lbC4NCkBAIC0xNzI0LDI3ICsxNzI3LDg1IEBAIHNl cnZlci1zYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5hbA0KIA0KIElmIGVtYWNz Y2xpZW50IHdhcyBzdGFydGVkIHdpdGggYSBsaXN0IG9mIGZpbGVuYW1lcyB0 byBlZGl0LCB0aGVuDQogb25seSB0aGVzZSBmaWxlcyB3aWxsIGJlIGFza2Vk IHRvIGJlIHNhdmVkLiINCi0gIChsZXQgKChwcm9jIChmcmFtZS1wYXJhbWV0 ZXIgbmlsICdjbGllbnQpKSkNCi0gICAgKGNvbmQgKChlcSBwcm9jICdub3dh aXQpDQotCSAgIDs7IE5vd2FpdCBmcmFtZXMgaGF2ZSBubyBjbGllbnQgYnVm ZmVyIGxpc3QuDQotCSAgIChpZiAoY2RyIChmcmFtZS1saXN0KSkNCi0JICAg ICAgIChwcm9nbiAoc2F2ZS1zb21lLWJ1ZmZlcnMgYXJnKQ0KLQkJICAgICAg KGRlbGV0ZS1mcmFtZSkpDQotCSAgICAgOzsgSWYgd2UncmUgdGhlIGxhc3Qg ZnJhbWUgc3RhbmRpbmcsIGtpbGwgRW1hY3MuDQotCSAgICAgKHNhdmUtYnVm ZmVycy1raWxsLWVtYWNzIGFyZykpKQ0KLQkgICgocHJvY2Vzc3AgcHJvYykN Ci0JICAgKGxldCAoKGJ1ZmZlcnMgKHByb2Nlc3MtZ2V0IHByb2MgJ2J1ZmZl cnMpKSkNCi0JICAgICAoc2F2ZS1zb21lLWJ1ZmZlcnMNCi0JICAgICAgYXJn IChpZiBidWZmZXJzDQotICAgICAgICAgICAgICAgICAgICAgIDs7IE9ubHkg ZmlsZXMgZnJvbSBlbWFjc2NsaWVudCBmaWxlIGxpc3QuDQotCQkgICAgICAo bGFtYmRhICgpIChtZW1xIChjdXJyZW50LWJ1ZmZlcikgYnVmZmVycykpDQot ICAgICAgICAgICAgICAgICAgICA7OyBObyBlbWFjc2NsaWVudCBmaWxlIGxp c3Q6IGRvbid0IG92ZXJyaWRlDQotICAgICAgICAgICAgICAgICAgICA7OyBg c2F2ZS1zb21lLWJ1ZmZlcnMtZGVmYXVsdC1wcmVkaWNhdGUnICh1bmxlc3MN Ci0gICAgICAgICAgICAgICAgICAgIDs7IEFSRyBpcyBub24tbmlsKSwgc2lu Y2Ugd2UncmUgbm90IGtpbGxpbmcNCi0gICAgICAgICAgICAgICAgICAgIDs7 IEVtYWNzICh1bmxpa2UgYHNhdmUtYnVmZmVycy1raWxsLWVtYWNzJykuDQot CQkgICAgKGFuZCBhcmcgdCkpKQ0KLQkgICAgIChzZXJ2ZXItZGVsZXRlLWNs aWVudCBwcm9jKSkpDQotCSAgKHQgKGVycm9yICJJbnZhbGlkIGNsaWVudCBm cmFtZSIpKSkpKQ0KKyAgKGlmIHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkN CisgICAgICAoc2VydmVyLXN0b3AtYXV0b21hdGljYWxseS0taGFuZGxlLWRl bGV0ZS1mcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQ0KKyAgICAobGV0ICgocHJv YyAoZnJhbWUtcGFyYW1ldGVyIG5pbCAnY2xpZW50KSkpDQorICAgICAgKGNv bmQgKChlcSBwcm9jICdub3dhaXQpDQorCSAgICAgOzsgTm93YWl0IGZyYW1l cyBoYXZlIG5vIGNsaWVudCBidWZmZXIgbGlzdC4NCisJICAgICAoaWYgKGNk ciAoZnJhbWUtbGlzdCkpDQorCSAgICAgICAgIChwcm9nbiAoc2F2ZS1zb21l LWJ1ZmZlcnMgYXJnKQ0KKwkJICAgICAgICAoZGVsZXRlLWZyYW1lKSkNCisJ ICAgICAgIDs7IElmIHdlJ3JlIHRoZSBsYXN0IGZyYW1lIHN0YW5kaW5nLCBr aWxsIEVtYWNzLg0KKwkgICAgICAgKHNhdmUtYnVmZmVycy1raWxsLWVtYWNz IGFyZykpKQ0KKwkgICAgKChwcm9jZXNzcCBwcm9jKQ0KKwkgICAgIChsZXQg KChidWZmZXJzIChwcm9jZXNzLWdldCBwcm9jICdidWZmZXJzKSkpDQorCSAg ICAgICAoc2F2ZS1zb21lLWJ1ZmZlcnMNCisJICAgICAgICBhcmcgKGlmIGJ1 ZmZlcnMNCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBPbmx5IGZpbGVz IGZyb20gZW1hY3NjbGllbnQgZmlsZSBsaXN0Lg0KKwkJICAgICAgICAobGFt YmRhICgpIChtZW1xIChjdXJyZW50LWJ1ZmZlcikgYnVmZmVycykpDQorICAg ICAgICAgICAgICAgICAgICAgIDs7IE5vIGVtYWNzY2xpZW50IGZpbGUgbGlz dDogZG9uJ3Qgb3ZlcnJpZGUNCisgICAgICAgICAgICAgICAgICAgICAgOzsg YHNhdmUtc29tZS1idWZmZXJzLWRlZmF1bHQtcHJlZGljYXRlJyAodW5sZXNz DQorICAgICAgICAgICAgICAgICAgICAgIDs7IEFSRyBpcyBub24tbmlsKSwg c2luY2Ugd2UncmUgbm90IGtpbGxpbmcNCisgICAgICAgICAgICAgICAgICAg ICAgOzsgRW1hY3MgKHVubGlrZSBgc2F2ZS1idWZmZXJzLWtpbGwtZW1hY3Mn KS4NCisJCSAgICAgIChhbmQgYXJnIHQpKSkNCisJICAgICAgIChzZXJ2ZXIt ZGVsZXRlLWNsaWVudCBwcm9jKSkpDQorCSAgICAodCAoZXJyb3IgIkludmFs aWQgY2xpZW50IGZyYW1lIikpKSkpKQ0KKw0KKyhkZWZ1biBzZXJ2ZXItc3Rv cC1hdXRvbWF0aWNhbGx5LS1oYW5kbGUtZGVsZXRlLWZyYW1lIChmcmFtZSkN CisgICJIYW5kbGUgZGVsZXRpb24gb2YgYSBmcmFtZSB3aGVuIGBzZXJ2ZXIt c3RvcC1hdXRvbWF0aWNhbGx5JyBpcyB0LiINCisgICh3aGVuIHNlcnZlci1z dG9wLWF1dG9tYXRpY2FsbHkNCisgICAgKGlmIChpZiAoYW5kIChwcm9jZXNz cCAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdjbGllbnQpKQ0KKyAgICAgICAg ICAgICAgICAgKGVxIHRoaXMtY29tbWFuZCAnc2F2ZS1idWZmZXJzLWtpbGwt dGVybWluYWwpKQ0KKyAgICAgICAgICAgIChwcm9nbg0KKyAgICAgICAgICAg ICAgKGRvbGlzdCAoZiAoZnJhbWUtbGlzdCkpDQorICAgICAgICAgICAgICAg ICh3aGVuIChhbmQgKGVxIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2NsaWVu dCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZyYW1lLXBh cmFtZXRlciBmICdjbGllbnQpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKGVxIGZyYW1lIGYpKSkNCisgICAgICAgICAgICAgICAgICAo c2V0LWZyYW1lLXBhcmFtZXRlciBmICdjbGllbnQgbmlsKQ0KKyAgICAgICAg ICAgICAgICAgIChsZXQgKChzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5IG5p bCkpDQorICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWZyYW1lIGYpKSkp DQorICAgICAgICAgICAgICAoaWYgKGNkZHIgKGZyYW1lLWxpc3QpKQ0KKyAg ICAgICAgICAgICAgICAgIChsZXQgKChzZXJ2ZXItc3RvcC1hdXRvbWF0aWNh bGx5IG5pbCkpDQorICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWZyYW1l IGZyYW1lKQ0KKyAgICAgICAgICAgICAgICAgICAgbmlsKQ0KKyAgICAgICAg ICAgICAgICB0KSkNCisgICAgICAgICAgKG51bGwgKGNkZHIgKGZyYW1lLWxp c3QpKSkpDQorICAgICAgICAobGV0ICgoc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseSBuaWwpKQ0KKyAgICAgICAgICAoc2F2ZS1idWZmZXJzLWtpbGwtZW1h Y3MpDQorICAgICAgICAgIChkZWxldGUtZnJhbWUgZnJhbWUpKSkpKQ0KKw0K Kzs7OyMjI2F1dG9sb2FkDQorKGRlZnVuIHNlcnZlci1zdG9wLWF1dG9tYXRp Y2FsbHkgKGFyZykNCisgICJBdXRvbWF0aWNhbGx5IHN0b3Agc2VydmVyIHdo ZW4gcG9zc2libGUuDQorV2hlbiBBUkcgaXMgbmlsLCB0aGUgc2VydmVyIGlz IHN0b3BwZWQgd2hlbiBpdCBoYXMgbm8gcmVtYWluaW5nDQorY2xpZW50cywg bm8gcmVtYWluaW5nIHVuc2F2ZWQgZmlsZS12aXNpdGluZyBidWZmZXJzLCBh bmQgbm8NCitydW5uaW5nIHByb2Nlc3NlcyB3aXRoIGEgcXVlcnktb24tZXhp dCBmbGFnLg0KK1doZW4gQVJHIGlzIG5vbi1uaWwsIHdoZW4gdGhlIGxhc3Qg ZnJhbWUgaXMgYmVpbmcgY2xvc2VkLCB0aGUNCit1c2VyIGlzIGFza2VkIHdo ZXRoZXIgZWFjaCB1bnNhdmVkIGZpbGUtdmlzaXRpbmcgYnVmZmVyIG11c3Qg YmUNCitzYXZlZCBhbmQgZWFjaCBydW5uaW5nIHByb2Nlc3Mgd2l0aCBhIHF1 ZXJ5LW9uLWV4aXQgZmxhZyBtdXN0IGJlDQora2lsbGVkLCBhbmQgaWYgc28s IHRoZSBzZXJ2ZXIgaXRzZWxmIGlzIHN0b3BwZWQuDQorVGhpcyBmdW5jdGlv biBpcyBtZWFudCB0byBiZSBwdXQgaW4gaW5pdCBmaWxlcy4iDQorICAod2hl biAoZGFlbW9ucCkNCisgICAgKHNldHEgc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseSBhcmcpDQorICAgIChpZiBhcmcNCisJKGFkZC1ob29rICdkZWxldGUt ZnJhbWUtZnVuY3Rpb25zDQorCQkgICMnc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseS0taGFuZGxlLWRlbGV0ZS1mcmFtZSkNCisgICAgICAocnVuLXdpdGgt dGltZXINCisgICAgICAgMTAgMg0KKyAgICAgICAobGFtYmRhICgpDQorCSAo dW5sZXNzIChjZHIgKGZyYW1lLWxpc3QpKQ0KKwkgICAod2hlbiAoYW5kDQor CQkgIChub3QgKG1lbXEgdCAobWFwY2FyIChsYW1iZGEgKGIpDQorCQkJCQkg KGFuZCAoYnVmZmVyLWZpbGUtbmFtZSBiKQ0KKwkJCQkJICAgICAgKGJ1ZmZl ci1tb2RpZmllZC1wIGIpKSkNCisJCQkJICAgICAgIChidWZmZXItbGlzdCkp KSkNCisJCSAgKG5vdCAobWVtcSB0IChtYXBjYXIgKGxhbWJkYSAocCkNCisJ CQkJCSAoYW5kIChtZW1xIChwcm9jZXNzLXN0YXR1cyBwKQ0KKwkJCQkJCSAg ICAnKHJ1biBzdG9wIG9wZW4gbGlzdGVuKSkNCisJCQkJCSAgICAgIChwcm9j ZXNzLXF1ZXJ5LW9uLWV4aXQtZmxhZyBwKSkpDQorCQkJCSAgICAgICAocHJv Y2Vzcy1saXN0KSkpKSkNCisJICAgICAocHJpbnQgImtpbGxpbmcgc2VydmVy IiAjJ2V4dGVybmFsLWRlYnVnZ2luZy1vdXRwdXQpDQorCSAgICAgKGtpbGwt ZW1hY3MpKSkpKSkpKQ0KIA0KIChkZWZpbmUta2V5IGN0bC14LW1hcCAiIyIg J3NlcnZlci1lZGl0KQ0KIA0KLS0gDQoyLjMzLjANCg0K --wwAWweFZC1--