GNU bug report logs - #75056
31.0.50; tty-child-frames with server / multiple clients possible hangs
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Package: emacs;
Reported by: Len Trigg <lenbok@HIDDEN>; dated Tue, 24 Dec 2024 05:44:02 UTC;
Maintainer for emacs is
bug-gnu-emacs@HIDDEN.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 17:51:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 12:51:33 2025
Received: from localhost ([127.0.0.1]:52341 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1thXwR-0007q0-Gp
for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 12:51:33 -0500
Received: from mout.gmx.net ([212.227.17.22]:56703)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1thXwN-0007pg-86
for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 12:51:29 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1739209872; x=1739814672; i=rudalics@HIDDEN;
bh=QPhm0rOOmTJNTf37QXsmKS9WxJIFCCwwi7C1FrnoXu4=;
h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
Subject:To:Cc:References:From:In-Reply-To:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=aQ9uyWeWjJw+QNLCSxCEW4RPnCooznEdMG3wcyf1a5rkDWEfh2WH9SZiEwBeChbb
mPXA372W+84qluN7TGr17J+V1n+3P/sRmbWS6mJzC4PgfEzZe7Gf4umPMH4c1/pIi
ip02oGlgmVPcBQutsPFblzBRHoVFERFy5J5kNH1COBb5F1wiCGPeSNVTzTWyWvqEb
zRifa2mV3P6zeGVdQnjv7nKyBMPwsbgAhnVC3hpEmWGJMSASr3yUmlZzEaus+StuH
vA6cfBSLJk8CYFAZdNQG1hRgKyXjUaUo6hLR5B0S1J2vM7knaLga2xPlbmilMvDzw
Q7ECKjZHqAg5DQTa+w==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.219]) by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MHXBp-1tdN5K3JSr-000Ppq; Mon, 10
Feb 2025 18:51:12 +0100
Content-Type: multipart/mixed; boundary="------------g10vPUGCcPR3uoc6XZn708Q0"
Message-ID: <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN>
Date: Mon, 10 Feb 2025 18:51:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> <m21pwgyw4m.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m21pwgyw4m.fsf@HIDDEN>
X-Provags-ID: V03:K1:dZucfOKXVoEAUaUd603ebkGkdpuZQjUW4vrfGiRoRDt/ObDn6Mw
29+0LQDGMZeWDP0Aixqhoq1fKEzhKxjvRb342vHcRasMQawZO5yCqdYvslsxN92XF+bSOrD
r4yNgKOs+N4XxelBp2XJjsb666PPZyYPP8PpB3R6v3XbHUxNaGjqaaE8MJ9Vaqxqt1S0dpb
m3ENOJRygJMKTVItuooeQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:MgrQtBIGyZg=;PcG493WFwlhKq96+2gHT7b9U4am
w5ubVn17ePXop9kBiEFwmyehpBufOWZ5U81gIw+8pMfpHGvG+ufdQkpIGgZ30BHi7FBDV6Oeg
FZefEuwgQB/e0k3QjMXNwZ6yyb6Dn0trunudU3WE8zGOfQ05PGSkjEtvyaEMj4cS94B8XCUCw
WpE2e3x9SpC5H8SU9mjJtphB4MTRyta8ffmXR8ujCs13FLArKvLVumR59oGpCpxV2a42nj5EM
XQotj9NGAxRDYq2AeJy6wruULZCpbAQqq7/JuX1k1VaJTCgPR0TUhJA4K9UW0wo9ykf23Z9Od
o9Trwh/II5XFOhbQTh5u5/xzgDz8NYZxw+tCe9gcqNzpzpip39yci2T+PpT+jhiYvocalXlIM
LLsqKLAygOXV2u5zv0AXZBZHmII9wjuhLehHn+bspQ8g/0iW22ypIazIqBDk5TY6eGfOxy4iG
FKFsIFlsILVBJvCg1k6UNbOf5HhtFj12TXsLujCeeBcVKsSHUXix6fcO4+Y1dXxs95B7rzcKo
u+6KLgjjNvtQhZYDqNJpTklEfDdOGIHt1pna6VHmH0b1a6cFrIUYIPVDtV0QxWX3pQ7p+RzRg
kIo7PJhDLUgjX5/IjPZCe6I3NUwj8xZone3oP/p+v3cZKetxd8NZbCxp2gU3G4JlEOPkem7CG
Kbzb+aX/K0m2ioZWCeN9OGhR3DjWUhP1hN20t1g8A793O2buZue22qzLUHe2T6MsDEIn7kOXJ
o24//iWDvhTpkWxDJgqM+qYKvbrEBXvtZTj4EpcTu76cIfjV8RFbxR2uaTrBFW1Md1b3eUZdw
Vjzn+NGttRv4KrMAvDwJJ5d5nMtQd5iSquVZXQmbPPBq6VeH6W6FSVum8rGSLV7rfkMQ8kHF5
IxInfDfiz7yn4rfRJ3bSNJQ2FpKP3RWhMd6g34cQbYOc630YFIKO2uquhIY43kPSVL0UNwMH4
/J8FmTHYP2UL7LVhUK7dn39LXf1ka3P8HFLoRTlmJp2jvp8Dry4pfBwOiwWCi6CeM6AcRMcwH
w66RxVOkMe1Z8s1zZO1qYfzNEDBV2sNTXceL4cWd8vPndvM4oK346hZPAe14FPw2UV8bY5tUl
gtYU8aSkfy/7/D0qKWRdX3PkMXXByBpCv57lhnYXCDkGHB0ywP5ebSF0Dv0CV5917zPvtboqF
UDWY8sWj+nwqWoKCaagZIbpyNzMh+pg62Mc0mkMIGo8SMH1AEv2ghXp8hXMCMbcr5e1EYTYtD
hvwAD1xT7ZzfYiFhTek9rBkPkH65IGQhmWHLl7pxHQvUAlmyDmVDmw/eADWm6gkqmtaQiGloY
OztZ1GZXcJgPVzlBhI9V6ttjM7KoVeLMM4/5+8JBgKeACmVINbxKnU49Udj88kLA4Rcras+aC
iCRyBg+kScev4IQvGbmTTNjcwQ0aNiA0xZemux7dkM2OLmtPEguDEAPHeQ6exqVSdke6PlhV2
/9NgJxA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
This is a multi-part message in MIME format.
--------------g10vPUGCcPR3uoc6XZn708Q0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
> Works well for me. Only dragging the edges of a child frame doesn't seem
> to work like in a GUI.
I think I fixed that now - having coordinates start at 0 and lines and
columns at 1 is a bit hard to grasp. Please have a look.
martin
--------------g10vPUGCcPR3uoc6XZn708Q0
Content-Type: text/x-patch; charset=UTF-8;
name="child-frame-menubar-drag-resize.diff"
Content-Disposition: attachment;
filename="child-frame-menubar-drag-resize.diff"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvbWVudS1iYXIuZWwgYi9saXNwL21lbnUtYmFyLmVsCmluZGV4
IDEzOTExMTA5ZmQ3Li4xNDY5ZGY2MzE2ZiAxMDA2NDQKLS0tIGEvbGlzcC9tZW51LWJhci5l
bAorKysgYi9saXNwL21lbnUtYmFyLmVsCkBAIC0yNjkxLDUzICsyNjkxLDc0IEBAIHBvcHVw
LW1lbnUKIAkJCSAoZmlsdGVyICh3aGVuIChzeW1ib2xwIG1hcCkKIAkJCQkgICAocGxpc3Qt
Z2V0IChnZXQgbWFwICdtZW51LXByb3ApIDpmaWx0ZXIpKSkpCiAJCSAgICAoaWYgZmlsdGVy
IChmdW5jYWxsIGZpbHRlciAoc3ltYm9sLWZ1bmN0aW9uIG1hcCkpIG1hcCkpKSkpCi0JIChm
cmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorCSAoc2VsZWN0ZWQtZnJhbWUgKHNlbGVjdGVkLWZy
YW1lKSkKKwkgKGZyYW1lIChpZiAoYW5kIChlcSAoZnJhbWVwIHNlbGVjdGVkLWZyYW1lKSB0
KSAoZnJhbWUtcGFyZW50KQorCQkJIGZyb20tbWVudS1iYXIKKwkJCSAoemVyb3AgKG9yIChm
cmFtZS1wYXJhbWV0ZXIgbmlsICdtZW51LWJhci1saW5lcykgMCkpKQorCQkgICAgOzsgSWYg
dGhlIHNlbGVjdGVkIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lCisJCSAgICA7OyB3aXRo
b3V0IGl0cyBvd24gbWVudSBiYXIgYW5kIHdlIGFyZSBjYWxsZWQgZnJvbQorCQkgICAgOzsg
dGhlIG1lbnUgYmFyLCB0aGUgbWVudSBiYXIgbXVzdCBiZSBvbiB0aGUgcm9vdAorCQkgICAg
OzsgZnJhbWUgb2YgdGhlIHNlbGVjdGVkIGZyYW1lLgorCQkgICAgKGZyYW1lLXJvb3QtZnJh
bWUpCisJCSAgKHNlbGVjdGVkLWZyYW1lKSkpCiAJIGV2ZW50IGNtZCkKLSAgICAoaWYgZnJv
bS1tZW51LWJhcgotCShsZXQqICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKLQkgICAgICAg
KG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSAoY2FyIHh5KSAoY2RyIHh5KSkp
KQotCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyht
ZW51LWJhcikKLQkJCQkJCSB4eSAwKSkpKQotICAgICAgKHNldHEgcG9zaXRpb24gKHBvcHVw
LW1lbnUtbm9ybWFsaXplLXBvc2l0aW9uIHBvc2l0aW9uKSkpCi0gICAgOzsgVGhlIGxvb3Bp
bmcgYmVoYXZpb3Igd2FzIHRha2VuIGZyb20gbG1lbnUncyBwb3B1cC1tZW51LXBvcHVwCi0g
ICAgKHdoaWxlIChhbmQgbWFwIChzZXRxIGV2ZW50Ci0JCQkgIDs7IG1hcCBjb3VsZCBiZSBh
IHByZWZpeCBrZXksIGluIHdoaWNoIGNhc2UKLQkJCSAgOzsgd2UgbmVlZCB0byBnZXQgaXRz
IGZ1bmN0aW9uIGNlbGwKLQkJCSAgOzsgZGVmaW5pdGlvbi4KLQkJCSAgKHgtcG9wdXAtbWVu
dSBwb3NpdGlvbiAoaW5kaXJlY3QtZnVuY3Rpb24gbWFwKSkpKQotICAgICAgOzsgU3RyYW5n
ZWx5IHgtcG9wdXAtbWVudSByZXR1cm5zIGEgbGlzdC4KLSAgICAgIDs7IG1vdXNlLW1ham9y
LW1vZGUtbWVudSB3YXMgdXNpbmcgYSB3ZWlyZDoKLSAgICAgIDs7IChrZXktYmluZGluZyAo
YXBwbHkgJ3ZlY3RvciAoYXBwZW5kICcobWVudS1iYXIpIG1lbnUtcHJlZml4IGV2ZW50cykp
KQotICAgICAgKHNldHEgY21kCi0JICAgIChjb25kCi0JICAgICAoKGFuZCBmcm9tLW1lbnUt
YmFyCi0JCSAgIChjb25zcCBldmVudCkKLQkJICAgKG51bWJlcnAgKGNhciBldmVudCkpCi0J
CSAgIChudW1iZXJwIChjZHIgZXZlbnQpKSkKLQkgICAgICAobGV0ICgoeCAoY2FyIGV2ZW50
KSkKLQkJICAgICh5IChjZHIgZXZlbnQpKQotCQkgICAgbWVudS1zeW1ib2wpCi0JCShzZXRx
IG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSB4IHkpKQotCQkoc2V0cSBwb3Np
dGlvbiAobGlzdCBtZW51LXN5bWJvbCAobGlzdCBmcmFtZSAnKG1lbnUtYmFyKQotCQkJCQkJ
IGV2ZW50IDApKSkKLQkJKHNldHEgbWFwCi0JCSAgICAgIChrZXktYmluZGluZyAodmVjdG9y
ICdtZW51LWJhciBtZW51LXN5bWJvbCkpKSkpCi0JICAgICAoKGFuZCAobm90IChrZXltYXBw
IG1hcCkpIChsaXN0cCBtYXApKQotCSAgICAgIDs7IFdlIHdlcmUgZ2l2ZW4gYSBsaXN0IG9m
IGtleW1hcHMuICBTZWFyY2ggdGhlbSBhbGwKLQkgICAgICA7OyBpbiBzZXF1ZW5jZSB1bnRp
bCBhIGZpcnN0IGJpbmRpbmcgaXMgZm91bmQuCi0JICAgICAgKGxldCAoKG1vdXNlLWNsaWNr
IChhcHBseSAndmVjdG9yIGV2ZW50KSkKLQkJICAgIGJpbmRpbmcpCi0JCSh3aGlsZSAoYW5k
IG1hcCAobnVsbCBiaW5kaW5nKSkKLQkJICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWln
bm9yZS10b28tbG9uZyAoY2FyIG1hcCkgbW91c2UtY2xpY2spKQotCQkgIChzZXRxIG1hcCAo
Y2RyIG1hcCkpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcpKQotCSAgICAgKHQKLQkgICAg
ICA7OyBXZSB3ZXJlIGdpdmVuIGEgc2luZ2xlIGtleW1hcC4KLQkgICAgICAobG9va3VwLWtl
eSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQotICAgICAgOzsgQ2xlYXIgb3V0IGVj
aG9pbmcsIHdoaWNoIHBlcmhhcHMgc2hvd3MgYSBwcmVmaXggYXJnLgotICAgICAgKG1lc3Nh
Z2UgIiIpCi0gICAgICA7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1Ym1hcC4K
LSAgICAgIChzZXRxIG1hcCAoaWYgKGtleW1hcHAgY21kKSBjbWQpKSkKKyAgICAod2l0aC1z
ZWxlY3RlZC1mcmFtZSBmcmFtZQorICAgICAgKGlmIGZyb20tbWVudS1iYXIKKwkgIChsZXQq
ICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKKwkJIChtZW51LXN5bWJvbCAobWVudS1iYXIt
bWVudS1hdC14LXkgKGNhciB4eSkgKGNkciB4eSkpKSkKKwkgICAgKHNldHEgcG9zaXRpb24g
KGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCSAgIHh5
IDApKSkpCisJKHNldHEgcG9zaXRpb24gKHBvcHVwLW1lbnUtbm9ybWFsaXplLXBvc2l0aW9u
IHBvc2l0aW9uKSkpCisKKyAgICAgIDs7IFRoZSBsb29waW5nIGJlaGF2aW9yIHdhcyB0YWtl
biBmcm9tIGxtZW51J3MgcG9wdXAtbWVudS1wb3B1cAorICAgICAgKHdoaWxlIChhbmQgbWFw
IChzZXRxIGV2ZW50CisJCQkgICAgOzsgbWFwIGNvdWxkIGJlIGEgcHJlZml4IGtleSwgaW4g
d2hpY2ggY2FzZQorCQkJICAgIDs7IHdlIG5lZWQgdG8gZ2V0IGl0cyBmdW5jdGlvbiBjZWxs
CisJCQkgICAgOzsgZGVmaW5pdGlvbi4KKwkJCSAgICAoeC1wb3B1cC1tZW51IHBvc2l0aW9u
IChpbmRpcmVjdC1mdW5jdGlvbiBtYXApKSkpCisJOzsgU3RyYW5nZWx5IHgtcG9wdXAtbWVu
dSByZXR1cm5zIGEgbGlzdC4KKwk7OyBtb3VzZS1tYWpvci1tb2RlLW1lbnUgd2FzIHVzaW5n
IGEgd2VpcmQ6CisJOzsgKGtleS1iaW5kaW5nIChhcHBseSAndmVjdG9yIChhcHBlbmQgJyht
ZW51LWJhcikgbWVudS1wcmVmaXggZXZlbnRzKSkpCisJKHNldHEgY21kCisJICAgICAgKGNv
bmQKKwkgICAgICAgKChhbmQgZnJvbS1tZW51LWJhcgorCQkgICAgIChjb25zcCBldmVudCkK
KwkJICAgICAobnVtYmVycCAoY2FyIGV2ZW50KSkKKwkJICAgICAobnVtYmVycCAoY2RyIGV2
ZW50KSkpCisJCShsZXQgKCh4IChjYXIgZXZlbnQpKQorCQkgICAgICAoeSAoY2RyIGV2ZW50
KSkKKwkJICAgICAgbWVudS1zeW1ib2wpCisJCSAgKHNldHEgbWVudS1zeW1ib2wgKG1lbnUt
YmFyLW1lbnUtYXQteC15IHggeSkpCisJCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1z
eW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCQkgZXZlbnQgMCkpKQorCQkg
IChpZiAobm90IChlcSBmcmFtZSBzZWxlY3RlZC1mcmFtZSkpCisJCSAgICAgIDs7IElmIHdl
IGFyZSB1c2luZyB0aGUgbWVudSBiYXIgZnJvbSB0aGUgcm9vdAorCQkgICAgICA7OyBmcmFt
ZSwgbG9vayB1cCB0aGUga2V5IGJpbmRpbmcgaW4gdGhlIGtleW1hcHMKKwkJICAgICAgOzsg
b2YgdGhlIGluaXRpYWxseSBzZWxlY3RlZCB3aW5kb3cncyBidWZmZXIgdG8KKwkJICAgICAg
OzsgbWFrZSBzdXJlIHRoYXQgbmF2aWdhdGluZyB0aGUgbWVudSBiYXIgd2l0aCB0aGUKKwkJ
ICAgICAgOzsga2V5Ym9hcmQgd29ya3MgYXMgaW50ZW5kZWQuCisJCSAgICAgIChzZXRxIG1h
cAorCQkJICAgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJhciBtZW51LXN5bWJvbCkg
bmlsIG5pbAorCQkJCQkgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBzZWxlY3RlZC1mcmFtZSkp
KQorCQkgICAgKHNldHEgbWFwCisJCQkgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJh
ciBtZW51LXN5bWJvbCkpKSkpKQorCSAgICAgICAoKGFuZCAobm90IChrZXltYXBwIG1hcCkp
IChsaXN0cCBtYXApKQorCQk7OyBXZSB3ZXJlIGdpdmVuIGEgbGlzdCBvZiBrZXltYXBzLiAg
U2VhcmNoIHRoZW0gYWxsCisJCTs7IGluIHNlcXVlbmNlIHVudGlsIGEgZmlyc3QgYmluZGlu
ZyBpcyBmb3VuZC4KKwkJKGxldCAoKG1vdXNlLWNsaWNrIChhcHBseSAndmVjdG9yIGV2ZW50
KSkKKwkJICAgICAgYmluZGluZykKKwkJICAod2hpbGUgKGFuZCBtYXAgKG51bGwgYmluZGlu
ZykpCisJCSAgICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWlnbm9yZS10b28tbG9uZyAo
Y2FyIG1hcCkgbW91c2UtY2xpY2spKQorCQkgICAgKHNldHEgbWFwIChjZHIgbWFwKSkpCisJ
CSAgYmluZGluZykpCisJICAgICAgICh0CisJCTs7IFdlIHdlcmUgZ2l2ZW4gYSBzaW5nbGUg
a2V5bWFwLgorCQkobG9va3VwLWtleSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQor
CTs7IENsZWFyIG91dCBlY2hvaW5nLCB3aGljaCBwZXJoYXBzIHNob3dzIGEgcHJlZml4IGFy
Zy4KKwkobWVzc2FnZSAiIikKKwk7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1
Ym1hcC4KKwkoc2V0cSBtYXAgKGlmIChrZXltYXBwIGNtZCkgY21kKSkpKQorCiAgICAgOzsg
SWYgdGhlIHVzZXIgZGlkIG5vdCBjYW5jZWwgYnkgcmVmdXNpbmcgdG8gc2VsZWN0LAogICAg
IDs7IGFuZCBpZiB0aGUgcmVzdWx0IGlzIGEgY29tbWFuZCwgcnVuIGl0LgogICAgICh3aGVu
IChhbmQgKG51bGwgbWFwKSAoY29tbWFuZHAgY21kKSkKQEAgLTI4MDgsMTQgKzI4MjksMjcg
QEAgbWVudS1iYXItb3BlbgogSWYgRlJBTUUgaXMgbmlsIG9yIG5vdCBnaXZlbiwgdXNlIHRo
ZSBzZWxlY3RlZCBmcmFtZS4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxpc3QgbmlsIChwcmVm
aXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpKSkKLSAgKGxldCAoKHR5cGUg
KGZyYW1lcCAob3IgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpKSkKKyAgKGxldCogKCh0eXBl
IChmcmFtZXAgKG9yIGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKSkKKwkgcm9vdAorCSAoZnJh
bWUgKGlmIChhbmQgKGVxIHR5cGUgdCkgKGZyYW1lLXBhcmVudCBmcmFtZSkKKwkJCSAobnVs
bCB0dHktbWVudS1vcGVuLXVzZS10bW0pCisJCQkgKHplcm9wIChvciAoZnJhbWUtcGFyYW1l
dGVyIGZyYW1lICdtZW51LWJhci1saW5lcykgMCkpCisJCQkgKHNldHEgcm9vdCAoZnJhbWUt
cm9vdC1mcmFtZSkpCisJCQkgKG5vdCAoemVyb3AKKwkJCSAgICAgICAob3IgKGZyYW1lLXBh
cmFtZXRlciByb290ICdtZW51LWJhci1saW5lcykgMCkpKSkKKwkJICAgIDs7IElmIEZSQU1F
IGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgaXRzIG93bgorCQkgICAgOzsgbWVudSBi
YXIsICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIGZhbHNlIGFuZAorCQkgICAgOzsgRlJB
TUUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyLCB1c2UgdGhhdCByb290CisJCSAgICA7
OyBmcmFtZSdzIG1lbnUgYmFyLgorCQkgICAgcm9vdAorCQkgIGZyYW1lKSkpCiAgICAgKGNv
bmQKICAgICAgKChlcSB0eXBlICd4KSAoeC1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAg
KChlcSB0eXBlICd3MzIpICh3MzItbWVudS1iYXItb3BlbiBmcmFtZSkpCiAgICAgICgoZXEg
dHlwZSAnaGFpa3UpIChoYWlrdS1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChlcSB0
eXBlICdwZ3RrKSAocGd0ay1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChhbmQgKG51
bGwgdHR5LW1lbnUtb3Blbi11c2UtdG1tKQotCSAgIChub3QgKHplcm9wIChvciAoZnJhbWUt
cGFyYW1ldGVyIG5pbCAnbWVudS1iYXItbGluZXMpIDApKSkpCisJICAgKG5vdCAoemVyb3Ag
KG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ21lbnUtYmFyLWxpbmVzKSAwKSkpKQogICAg
ICAgOzsgTWFrZSBzdXJlIHRoZSBtZW51IGJhciBpcyB1cCB0byBkYXRlLiAgT25lIHNpdHVh
dGlvbiB3aGVyZQogICAgICAgOzsgdGhpcyBpcyBpbXBvcnRhbnQgaXMgd2hlbiB0aGlzIGZ1
bmN0aW9uIGlzIGludm9rZWQgYnkgbmFtZQogICAgICAgOzsgdmlhIE0teCwgaW4gd2hpY2gg
Y2FzZSB0aGUgbWVudSBiYXIgaW5jbHVkZXMgdGhlICJNaW5pYnVmIgpAQCAtMjgzMSw3ICsy
ODY1LDcgQEAgbWVudS1iYXItb3BlbgogICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50
LWxvY2FsLW1hcCkgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpCiAJCSAgICAgKGNkYXIgKG1p
bm9yLW1vZGUta2V5LWJpbmRpbmcgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpKQogICAgICAg
ICAgICAgICAgICAgICAgKG1vdXNlLW1lbnUtYmFyLW1hcCkpCi0JCSAgICAocG9zbi1hdC14
LXkgeCAwIG5pbCB0KSBuaWwgdCkpKQorCQkgICAgKHBvc24tYXQteC15IHggMCBmcmFtZSB0
KSBuaWwgdCkpKQogICAgICAodCAod2l0aC1zZWxlY3RlZC1mcmFtZSAob3IgZnJhbWUgKHNl
bGVjdGVkLWZyYW1lKSkKICAgICAgICAgICAodG1tLW1lbnViYXIpKSkpKSkKIApkaWZmIC0t
Z2l0IGEvbGlzcC9tb3VzZS5lbCBiL2xpc3AvbW91c2UuZWwKaW5kZXggMWYwY2E2YTUxYjYu
LmUzZTEzZjAzZDliIDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVsCisrKyBiL2xpc3AvbW91
c2UuZWwKQEAgLTExMTEsNyArMTExMSwxMCBAQCBtb3VzZS1kcmFnLWZyYW1lLXJlc2l6ZQog
CSAoZHJhZy1ib3R0b20gKG1lbXEgcGFydCAnKGJvdHRvbS1yaWdodCBib3R0b20gYm90dG9t
LWxlZnQpKSkKIAkgOzsgSW5pdGlhbCAiZmlyc3QiIG1vdXNlIHBvc2l0aW9uLiAgV2hpbGUg
ZHJhZ2dpbmcgd2UgYmFzZSBhbGwKIAkgOzsgY2FsY3VsYXRpb25zIGFnYWluc3QgdGhhdCBw
b3NpdGlvbi4KLQkgKGZpcnN0LXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24p
KQorCSAodHR5ICh0dHktdHlwZSBmcmFtZSkpCisJIChmaXJzdC14LXkgKGlmIHR0eQorCQkJ
KG1vdXNlLXBvc2l0aW9uLWluLXJvb3QtZnJhbWUpCisJCSAgICAgIChtb3VzZS1hYnNvbHV0
ZS1waXhlbC1wb3NpdGlvbikpKQogICAgICAgICAgKGZpcnN0LXggKGNhciBmaXJzdC14LXkp
KQogICAgICAgICAgKGZpcnN0LXkgKGNkciBmaXJzdC14LXkpKQogICAgICAgICAgKGV4aXRm
dW4gbmlsKQpAQCAtMTExOSw3ICsxMTIyLDkgQEAgbW91c2UtZHJhZy1mcmFtZS1yZXNpemUK
ICAgICAgICAgICAobGFtYmRhIChldmVudCkKICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSAi
ZSIpCiAgICAgICAgICAgICAod2hlbiAoY29uc3AgZXZlbnQpCi0gICAgICAgICAgICAgIChs
ZXQqICgobGFzdC14LXkgKG1vdXNlLWFic29sdXRlLXBpeGVsLXBvc2l0aW9uKSkKKyAgICAg
ICAgICAgICAgKGxldCogKChsYXN0LXgteSAoaWYgdHR5CisJCQkJICAgKG1vdXNlLXBvc2l0
aW9uLWluLXJvb3QtZnJhbWUpCisJCQkJIChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlv
bikpKQogCQkgICAgIChsYXN0LXggKGNhciBsYXN0LXgteSkpCiAJCSAgICAgKGxhc3QteSAo
Y2RyIGxhc3QteC15KSkKIAkJICAgICAobGVmdCAoLSBsYXN0LXggZmlyc3QteCkpCkBAIC0x
MjI4LDEwICsxMjMzLDEzIEBAIG1vdXNlLWRyYWctZnJhbWUtbW92ZQogICAgICAgICAgKHBh
cmVudC1ib3R0b20gKGFuZCBwYXJlbnQtZWRnZXMgKG50aCAzIHBhcmVudC1lZGdlcykpKQog
CSA7OyBJbml0aWFsICJmaXJzdCIgbW91c2UgcG9zaXRpb24uICBXaGlsZSBkcmFnZ2luZyB3
ZSBiYXNlIGFsbAogCSA7OyBjYWxjdWxhdGlvbnMgYWdhaW5zdCB0aGF0IHBvc2l0aW9uLgot
CSAoZmlyc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCi0gICAgICAg
ICAoZmlyc3QteCAoY2FyIGZpcnN0LXgteSkpCi0gICAgICAgICAoZmlyc3QteSAoY2RyIGZp
cnN0LXgteSkpCi0gICAgICAgICA7OyBgc25hcC13aWR0aCcgKG1heWJlIGFsc28gYSB5ZXQg
dG8gYmUgcHJvdmlkZWQgYHNuYXAtaGVpZ2h0JykKKwkgKHR0eSAodHR5LXR5cGUgZnJhbWUp
KQorCSAoZmlyc3QteC15IChpZiB0dHkKKwkJCShtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZy
YW1lKQorCQkgICAgICAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKKwkgKGZp
cnN0LXggKGNhciBmaXJzdC14LXkpKQorCSAoZmlyc3QteSAoY2RyIGZpcnN0LXgteSkpCisJ
IDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxzbyBhIHlldCB0byBiZSBwcm92aWRlZCBgc25h
cC1oZWlnaHQnKQogICAgICAgICAgOzsgY291bGQgYmVjb21lIGZsb2F0cyB0byBoYW5kbGUg
cHJvcG9ydGlvbmFsaXR5IHdydCBQQVJFTlQuCiAgICAgICAgICA7OyBXZSBkb24ndCBkbyBh
bnkgY2hlY2tzIG9uIHRoaXMgcGFyYW1ldGVyIHNvIGZhci4KICAgICAgICAgIChzbmFwLXdp
ZHRoIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ3NuYXAtd2lkdGgpKQpAQCAtMTI0Nyw3ICsx
MjU1LDkgQEAgbW91c2UtZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgKGxhbWJkYSAoZXZl
bnQpCiAgICAgICAgICAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgICAgICAgICAgKHdoZW4g
KGNvbnNwIGV2ZW50KQotICAgICAgICAgICAgICAobGV0KiAoKGxhc3QteC15IChtb3VzZS1h
YnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChsZXQqICgobGFzdC14
LXkgKGlmIHR0eQorCQkJCSAgIChtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lKQorCQkJ
CSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKIAkJICAgICAobGFzdC14IChj
YXIgbGFzdC14LXkpKQogCQkgICAgIChsYXN0LXkgKGNkciBsYXN0LXgteSkpCiAJCSAgICAg
KGxlZnQgKC0gbGFzdC14IGZpcnN0LXgpKQpkaWZmIC0tZ2l0IGEvbGlzcC94dC1tb3VzZS5l
bCBiL2xpc3AveHQtbW91c2UuZWwKaW5kZXggMjUwZjRlZmViYjQuLjZmMzNjNjVmZjJhIDEw
MDY0NAotLS0gYS9saXNwL3h0LW1vdXNlLmVsCisrKyBiL2xpc3AveHQtbW91c2UuZWwKQEAg
LTMwNCwxOSArMzA0LDM2IEBAIHh0ZXJtLW1vdXNlLWV2ZW50CiAgICAgICAgICAgICAgKHgg
KG9yIChudGggMSBmcmFtZS1hbmQteHkpIHgpKQogICAgICAgICAgICAgICh5IChvciAobnRo
IDIgZnJhbWUtYW5kLXh5KSB5KSkKICAgICAgICAgICAgICAodyAod2luZG93LWF0IHggeSBm
cmFtZSkpCi0gICAgICAgICAgICAgKGx0cmIgKHdpbmRvdy1lZGdlcyB3KSkKLSAgICAgICAg
ICAgICAobGVmdCAobnRoIDAgbHRyYikpCi0gICAgICAgICAgICAgKHRvcCAobnRoIDEgbHRy
YikpCi0gICAgICAgICAgICAgKHBvc24gKGlmIHcKLQkJICAgICAgIChwb3NuLWF0LXgteSAo
LSB4IGxlZnQpICgtIHkgdG9wKSB3IHQpCi0JCSAgICAgKGFwcGVuZCAobGlzdCBuaWwgKGlm
IChhbmQgdGFiLWJhci1tb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAob3IgKG5vdCBtZW51LWJhci1tb2RlKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFRoZSB0YWItYmFyIGlz
IG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDs7IHNlY29uZCByb3cgYmVsb3cgbWVudS1iYXIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgeSAxKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhYi1iYXIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lbnUtYmFyKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKG50aGNkciAyIChwb3NuLWF0LXgteSB4IHkgKHNlbGVj
dGVkLWZyYW1lKSkpKSkpCisgICAgICAgICAgICAgKHBvc24KKwkgICAgICAoaWYgdworCQkg
IChsZXQqICgobHRyYiAod2luZG93LWVkZ2VzIHcpKQorCQkJIChsZWZ0IChudGggMCBsdHJi
KSkKKwkJCSAodG9wIChudGggMSBsdHJiKSkpCisJCSAgICAocG9zbi1hdC14LXkgKC0geCBs
ZWZ0KSAoLSB5IHRvcCkgdyB0KSkKKwkJKGxldCAoKGl0ZW0gKGNvbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKChhbmQgbWVudS1iYXItbW9kZSAoZXEgeSAwKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdtZW51LWJhcikKKwkJCSAgICAgKChhbmQgdGFi
LWJhci1tb2RlCisJCQkJICAgKG9yIChhbmQgbWVudS1iYXItbW9kZQorCQkJCQkgICAgKGVx
IHkgMSkpCisJCQkJICAgICAgIChlcSB5IDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0YWItYmFyKQorCQkJICAgICAoKGVxIHggLTEpCisJCQkgICAgICAoY29uZAor
CQkJICAgICAgICgoZXEgeSAtMSkgJ3RvcC1sZWZ0LWNvcm5lcikKKwkJCSAgICAgICAoKGVx
IHkgKGZyYW1lLWhlaWdodCBmcmFtZSkpICdib3R0b20tbGVmdC1jb3JuZXIpCisJCQkgICAg
ICAgKHQgJ2xlZnQtZWRnZSkpKQorCQkJICAgICAoKGVxIHggKGZyYW1lLXdpZHRoIGZyYW1l
KSkKKwkJCSAgICAgIChjb25kCisJCQkgICAgICAgKChlcSB5IC0xKSAndG9wLXJpZ2h0LWNv
cm5lcikKKwkJCSAgICAgICAoKGVxIHkgKGZyYW1lLWhlaWdodCBmcmFtZSkpICdib3R0b20t
cmlnaHQtY29ybmVyKQorCQkJICAgICAgICh0ICdyaWdodC1lZGdlKSkpCisJCQkgICAgICgo
ZXEgeSAtMSkgJ3RvcC1lZGdlKQorCQkJICAgICAodCAnYm90dG9tLWVkZ2UpKSkpCisJCSAg
KGFwcGVuZCAobGlzdCAodW5sZXNzIChtZW1xIGl0ZW0gJyhtZW51LWJhciB0YWItYmFyKSkK
KwkJCQkgIGZyYW1lKQorCQkJCWl0ZW0pCisJCQkgIChudGhjZHIgMiAocG9zbi1hdC14LXkg
eCB5IChzZWxlY3RlZC1mcmFtZSkpKSkpKSkKICAgICAgICAgICAgICAoZXZlbnQgKGxpc3Qg
dHlwZSBwb3NuKSkpCiAgICAgICAgIChzZXRjYXIgKG50aGNkciAzIHBvc24pIHRpbWVzdGFt
cCkKIApkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmMgYi9zcmMvZnJhbWUuYwppbmRleCAyY2Nk
ZWM2ZmM0MS4uYzFhYTA3OWZkYzAgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5jCisrKyBiL3Ny
Yy9mcmFtZS5jCkBAIC0xNDgyLDE3ICsxNDgyLDM4IEBAIGdldF9mdXR1cmVfZnJhbWVfcGFy
YW0gKExpc3BfT2JqZWN0IHBhcmFtZXRlciwKICNlbmRpZgogCiBpbnQKLXR0eV9jaGlsZF9w
b3NfcGFyYW0gKHN0cnVjdCBmcmFtZSAqY2hpbGQsIExpc3BfT2JqZWN0IGtleSwKLQkJICAg
ICBMaXNwX09iamVjdCBwYXJhbXMsIGludCBkZmx0KQordHR5X2NoaWxkX3Bvc19wYXJhbSAo
c3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBrZXksCisJCSAgICAgTGlzcF9PYmplY3Qg
cGFyYW1zLCBpbnQgcG9zKQogeworICBzdHJ1Y3QgZnJhbWUgKnAgPSBYRlJBTUUgKGYtPnBh
cmVudF9mcmFtZSk7CiAgIExpc3BfT2JqZWN0IHZhbCA9IEZhc3NxIChrZXksIHBhcmFtcyk7
CisKICAgaWYgKENPTlNQICh2YWwpKQogICAgIHsKICAgICAgIHZhbCA9IFhDRFIgKHZhbCk7
Ci0gICAgICBpZiAoRklYTlVNUCAodmFsKSkKLQlyZXR1cm4gWEZJWE5VTSAodmFsKTsKKwor
ICAgICAgaWYgKFRZUEVfUkFOR0VEX0ZJWE5VTVAgKGludCwgdmFsKSkKKwl7CisJICBwb3Mg
PSBYRklYTlVNICh2YWwpOworCisJICBpZiAocG9zIDwgMCkKKwkgICAgLyogSGFuZGxlIG5l
Z2F0aXZlIHZhbHVlLiAqLworCSAgICBwb3MgPSBtYXggKEVRIChrZXksIFF0b3ApCisJCSAg
ICAgICA/IHAtPnBpeGVsX2hlaWdodCAtIGYtPnBpeGVsX2hlaWdodCAtIHBvcworCQkgICAg
ICAgOiBwLT5waXhlbF93aWR0aCAtIGYtPnBpeGVsX3dpZHRoIC0gcG9zLAorCQkgICAgICAg
MCk7CisJfQorICAgICAgZWxzZSBpZiAoQ09OU1AgKHZhbCkgJiYgRVEgKFhDQVIgKHZhbCks
IFFwbHVzKQorCSAgICAgICAmJiBDT05TUCAoWENEUiAodmFsKSkKKwkgICAgICAgJiYgVFlQ
RV9SQU5HRURfRklYTlVNUCAoaW50LCBYQ0FSIChYQ0RSICh2YWwpKSkpCisJcG9zID0gWEZJ
WE5VTSAoWENBUiAoWENEUiAodmFsKSkpOworICAgICAgZWxzZSBpZiAoQ09OU1AgKHZhbCkg
JiYgRVEgKFhDQVIgKHZhbCksIFFtaW51cykKKwkgICAgICAgJiYgQ09OU1AgKFhDRFIgKHZh
bCkpCisJICAgICAgICYmIFJBTkdFRF9GSVhOVU1QICgtSU5UX01BWCwgWENBUiAoWENEUiAo
dmFsKSksIElOVF9NQVgpKQorCXBvcyA9IC0gWEZJWE5VTSAoWENBUiAoWENEUiAodmFsKSkp
OwogICAgIH0KLSAgcmV0dXJuIGRmbHQ7CisKKyAgcmV0dXJuIHBvczsKIH0KIAogaW50CkBA
IC0yODY2LDcgKzI4ODcsNyBAQCBERUZVTiAoImRlbGV0ZS1mcmFtZSIsIEZkZWxldGVfZnJh
bWUsIFNkZWxldGVfZnJhbWUsIDAsIDIsICIiLAogICByZXR1cm4gZGVsZXRlX2ZyYW1lIChm
cmFtZSwgIU5JTFAgKGZvcmNlKSA/IFF0IDogUW5pbCk7CiB9CiAMCi0jaWZkZWYgSEFWRV9X
SU5ET1dfU1lTVEVNCisKIC8qKgogICogZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQ6CiAg
KgpAQCAtMjg4OSw3ICsyOTEwLDExIEBAIERFRlVOICgiZGVsZXRlLWZyYW1lIiwgRmRlbGV0
ZV9mcmFtZSwgU2RlbGV0ZV9mcmFtZSwgMCwgMiwgIiIsCiBlbnVtIGludGVybmFsX2JvcmRl
cl9wYXJ0CiBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFydCAoc3RydWN0IGZyYW1lICpmLCBp
bnQgeCwgaW50IHkpCiB7Ci0gIGludCBib3JkZXIgPSBGUkFNRV9JTlRFUk5BTF9CT1JERVJf
V0lEVEggKGYpOworICBpbnQgYm9yZGVyID0gKEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURU
SCAoZikKKwkJPyBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpCisJCTogKGlzX3R0
eV9jaGlsZF9mcmFtZSAoZikgJiYgIUZSQU1FX1VOREVDT1JBVEVEIChmKSkKKwkJPyAxCisJ
CTogMCk7CiAgIGludCBvZmZzZXQgPSBGUkFNRV9MSU5FX0hFSUdIVCAoZik7CiAgIGludCB3
aWR0aCA9IEZSQU1FX1BJWEVMX1dJRFRIIChmKTsKICAgaW50IGhlaWdodCA9IEZSQU1FX1BJ
WEVMX0hFSUdIVCAoZik7CkBAIC0yOTU4LDcgKzI5ODMsNyBAQCBmcmFtZV9pbnRlcm5hbF9i
b3JkZXJfcGFydCAoc3RydWN0IGZyYW1lICpmLCBpbnQgeCwgaW50IHkpCiAKICAgcmV0dXJu
IHBhcnQ7CiB9Ci0jZW5kaWYKKwogCiAvKiBSZXR1cm4gbW91c2UgcG9zaXRpb24gaW4gY2hh
cmFjdGVyIGNlbGwgdW5pdHMuICAqLwogCkBAIC02NTEzLDYgKzY1MzgsMzYgQEAgREVGVU4g
KCJmcmFtZS1wb2ludGVyLXZpc2libGUtcCIsIEZmcmFtZV9wb2ludGVyX3Zpc2libGVfcCwK
ICAgcmV0dXJuIGRlY29kZV9hbnlfZnJhbWUgKGZyYW1lKS0+cG9pbnRlcl9pbnZpc2libGUg
PyBRbmlsIDogUXQ7CiB9CiAKK0RFRlVOICgibW91c2UtcG9zaXRpb24taW4tcm9vdC1mcmFt
ZSIsIEZtb3VzZV9wb3NpdGlvbl9pbl9yb290X2ZyYW1lLAorICAgICAgIFNtb3VzZV9wb3Np
dGlvbl9pbl9yb290X2ZyYW1lLCAwLCAwLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJuIG1v
dXNlIHBvc2l0aW9uIGluIHNlbGVjdGVkIGZyYW1lJ3Mgcm9vdCBmcmFtZS4KK1JldHVybiB0
aGUgcG9zaXRpb24gb2YgYG1vdXNlLXBvc2l0aW9uJyBpbiBjb29yZGluYXRlcyBvZiB0aGUg
cm9vdCBmcmFtZQorb2YgdGhlIGZyYW1lIHJldHVybmVkIGJ5ICdtb3VzZS1wb3NpdGlvbicu
ICAqLykKKyAgKHZvaWQpCit7CisgIExpc3BfT2JqZWN0IHBvcyA9IG1vdXNlX3Bvc2l0aW9u
ICh0cnVlKTsKKyAgTGlzcF9PYmplY3QgZnJhbWUgPSBYQ0FSIChwb3MpOworICBzdHJ1Y3Qg
ZnJhbWUgKmYgPSBYRlJBTUUgKGZyYW1lKTsKKyAgaW50IHggPSBYRklYTlVNIChYQ0FSIChY
Q0RSIChwb3MpKSkgKyBmLT5sZWZ0X3BvczsKKyAgaW50IHkgPSBYRklYTlVNIChYQ0RSIChY
Q0RSIChwb3MpKSkgKyBmLT50b3BfcG9zOworCisgIGlmICghRlJBTUVQIChmcmFtZSkpCisg
ICAgcmV0dXJuIFFuaWw7CisgIGVsc2UKKyAgICB7CisgICAgICBmID0gRlJBTUVfUEFSRU5U
X0ZSQU1FIChmKTsKKworICAgICAgd2hpbGUgKGYpCisJeworCSAgeCA9IHggKyBmLT5sZWZ0
X3BvczsKKwkgIHkgPSB5ICsgZi0+dG9wX3BvczsKKwkgIGYgPSBGUkFNRV9QQVJFTlRfRlJB
TUUgKGYpOworCX0KKworICAgICAgcmV0dXJuIEZjb25zIChtYWtlX2ZpeG51bSAoeCksIG1h
a2VfZml4bnVtICh5KSk7CisgICAgfQorfQorCiBERUZVTiAoImZyYW1lLS1zZXQtd2FzLWlu
dmlzaWJsZSIsIEZmcmFtZV9fc2V0X3dhc19pbnZpc2libGUsCiAgICAgICAgU2ZyYW1lX19z
ZXRfd2FzX2ludmlzaWJsZSwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFNldCBGUkFNRSdz
IHdhcy1pbnZpc2libGUgZmxhZyBpZiBXQVMtSU5WSVNJQkxFIGlzIG5vbi1uaWwuCkBAIC03
Mjg1LDYgKzczNDAsNyBAQCBmb2N1cyAod2hlcmUgYSBmcmFtZSBpbW1lZGlhdGVseSBsb3Nl
cyBmb2N1cyB3aGVuIGl0J3MgbGVmdCBieSB0aGUgbW91c2UKICAgZGVmc3ViciAoJlNmcmFt
ZV9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZTc2V0X2ZyYW1lX3Bvc2l0aW9uKTsKICAgZGVm
c3ViciAoJlNmcmFtZV9wb2ludGVyX3Zpc2libGVfcCk7CisgIGRlZnN1YnIgKCZTbW91c2Vf
cG9zaXRpb25faW5fcm9vdF9mcmFtZSk7CiAgIGRlZnN1YnIgKCZTZnJhbWVfX3NldF93YXNf
aW52aXNpYmxlKTsKICAgZGVmc3ViciAoJlNmcmFtZV93aW5kb3dfc3RhdGVfY2hhbmdlKTsK
ICAgZGVmc3ViciAoJlNzZXRfZnJhbWVfd2luZG93X3N0YXRlX2NoYW5nZSk7CmRpZmYgLS1n
aXQgYS9zcmMvZnJhbWUuaCBiL3NyYy9mcmFtZS5oCmluZGV4IGM5Y2M2NWU1OTdkLi5lMjcw
MjFmYTI4MyAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgKKysrIGIvc3JjL2ZyYW1lLmgKQEAg
LTMxLDYgKzMxLDE5IEBAICNkZWZpbmUgRU1BQ1NfRlJBTUVfSAogICB2ZXJ0aWNhbF9zY3Jv
bGxfYmFyX3JpZ2h0CiB9OwogCitlbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0CisgIHsKKyAg
IElOVEVSTkFMX0JPUkRFUl9OT05FLAorICAgSU5URVJOQUxfQk9SREVSX0xFRlRfRURHRSwK
KyAgIElOVEVSTkFMX0JPUkRFUl9UT1BfTEVGVF9DT1JORVIsCisgICBJTlRFUk5BTF9CT1JE
RVJfVE9QX0VER0UsCisgICBJTlRFUk5BTF9CT1JERVJfVE9QX1JJR0hUX0NPUk5FUiwKKyAg
IElOVEVSTkFMX0JPUkRFUl9SSUdIVF9FREdFLAorICAgSU5URVJOQUxfQk9SREVSX0JPVFRP
TV9SSUdIVF9DT1JORVIsCisgICBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0VER0UsCisgICBJ
TlRFUk5BTF9CT1JERVJfQk9UVE9NX0xFRlRfQ09STkVSLAorICB9OworCiAjaWZkZWYgSEFW
RV9XSU5ET1dfU1lTVEVNCiAKIGVudW0gZnVsbHNjcmVlbl90eXBlCkBAIC01MywxOSArNjYs
NiBAQCAjZGVmaW5lIEVNQUNTX0ZSQU1FX0gKICAgel9ncm91cF9hYm92ZV9zdXNwZW5kZWQs
CiB9OwogCi1lbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0Ci0gIHsKLSAgIElOVEVSTkFMX0JP
UkRFUl9OT05FLAotICAgSU5URVJOQUxfQk9SREVSX0xFRlRfRURHRSwKLSAgIElOVEVSTkFM
X0JPUkRFUl9UT1BfTEVGVF9DT1JORVIsCi0gICBJTlRFUk5BTF9CT1JERVJfVE9QX0VER0Us
Ci0gICBJTlRFUk5BTF9CT1JERVJfVE9QX1JJR0hUX0NPUk5FUiwKLSAgIElOVEVSTkFMX0JP
UkRFUl9SSUdIVF9FREdFLAotICAgSU5URVJOQUxfQk9SREVSX0JPVFRPTV9SSUdIVF9DT1JO
RVIsCi0gICBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0VER0UsCi0gICBJTlRFUk5BTF9CT1JE
RVJfQk9UVE9NX0xFRlRfQ09STkVSLAotICB9OwotCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQog
ZW51bSBuc19hcHBlYXJhbmNlX3R5cGUKICAgewpAQCAtMTg2Miw3ICsxODYyLDYgQEAgI2Rl
ZmluZSBFTUFDU19DTEFTUyAiRW1hY3MiCiBleHRlcm4gdm9pZCBzZXRfZnJhbWVfbWVudWJh
ciAoc3RydWN0IGZyYW1lICpmLCBib29sIGRlZXBfcCk7CiBleHRlcm4gdm9pZCBmcmFtZV9z
ZXRfbW91c2VfcGl4ZWxfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHBpeF94LCBp
bnQgcGl4X3kpOwogZXh0ZXJuIHZvaWQgZnJlZV9mcmFtZV9tZW51YmFyIChzdHJ1Y3QgZnJh
bWUgKik7Ci1leHRlcm4gZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBmcmFtZV9pbnRlcm5h
bF9ib3JkZXJfcGFydCAoc3RydWN0IGZyYW1lICpmLCBpbnQgeCwgaW50IHkpOwogCiAjaWYg
ZGVmaW5lZCBIQVZFX1hfV0lORE9XUwogZXh0ZXJuIHZvaWQgeF93bV9zZXRfaWNvbl9wb3Np
dGlvbiAoc3RydWN0IGZyYW1lICosIGludCwgaW50KTsKQEAgLTE4ODgsNiArMTg4Nyw4IEBA
IGd1aV9zZXRfYml0bWFwX2ljb24gKHN0cnVjdCBmcmFtZSAqZikKICNlbmRpZiAvKiAhSEFW
RV9OUyAqLwogI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwogCitleHRlcm4gZW51
bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFydCAoc3Ry
dWN0IGZyYW1lICpmLAorCQkJCQkJCSAgICAgaW50IHgsIGludCB5KTsKIGV4dGVybiBib29s
IGZyYW1lX2FuY2VzdG9yX3AgKHN0cnVjdCBmcmFtZSAqYWYsIHN0cnVjdCBmcmFtZSAqZGYp
OwogCiBJTkxJTkUgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5
Ym9hcmQuYwppbmRleCBiMjI4MTRkNzAyZC4uNTE2N2IzY2U1YWQgMTAwNjQ0Ci0tLSBhL3Ny
Yy9rZXlib2FyZC5jCisrKyBiL3NyYy9rZXlib2FyZC5jCkBAIC01NTUzLDcgKzU1NTMsNiBA
QCAjZGVmaW5lIElTT19GVU5DVElPTl9LRVlfT0ZGU0VUIDB4ZmUwMAogICBTWU1CT0xfSU5E
RVggKFFyaWdodG1vc3QpLCBTWU1CT0xfSU5ERVggKFFlbmRfc2Nyb2xsKSwgU1lNQk9MX0lO
REVYIChRcmF0aW8pCiB9OwogCi0jaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAvKiBBbiBh
cnJheSBvZiBzeW1ib2wgaW5kZXhlcyBvZiBpbnRlcm5hbCBib3JkZXIgcGFydHMsIGluZGV4
ZWQgYnkgYW4gZW51bQogICAgaW50ZXJuYWxfYm9yZGVyX3BhcnQgdmFsdWUuICBOb3RlIHRo
YXQgUW5pbCBjb3JyZXNwb25kcyB0bwogICAgaW50ZXJuYWxfYm9yZGVyX3BhcnRfbm9uZSBh
bmQgc2hvdWxkIG5vdCBhcHBlYXIgaW4gTGlzcCBldmVudHMuICAqLwpAQCAtNTU2NCw3ICs1
NTYzLDYgQEAgI2RlZmluZSBJU09fRlVOQ1RJT05fS0VZX09GRlNFVCAweGZlMDAKICAgU1lN
Qk9MX0lOREVYIChRYm90dG9tX3JpZ2h0X2Nvcm5lciksIFNZTUJPTF9JTkRFWCAoUWJvdHRv
bV9lZGdlKSwKICAgU1lNQk9MX0lOREVYIChRYm90dG9tX2xlZnRfY29ybmVyKQogfTsKLSNl
bmRpZgogCiAvKiBBIHZlY3RvciwgaW5kZXhlZCBieSBidXR0b24gbnVtYmVyLCBnaXZpbmcg
dGhlIGRvd24tZ29pbmcgbG9jYXRpb24KICAgIG9mIGN1cnJlbnRseSBkZXByZXNzZWQgYnV0
dG9ucywgYm90aCBzY3JvbGwgYmFyIGFuZCBub24tc2Nyb2xsIGJhci4KQEAgLTU1OTksNiAr
NTU5Nyw5MCBAQCAjZGVmaW5lIElTT19GVU5DVElPTl9LRVlfT0ZGU0VUIDB4ZmUwMAogCiBz
dGF0aWMgaW50IGRvdWJsZV9jbGlja19jb3VudDsKIAorZW51bSBmcmFtZV9ib3JkZXJfc2lk
ZQoreworICBPTl9MRUZULAorICBPTl9UT1AsCisgIE9OX1JJR0hULAorICBPTl9CT1RUT00s
CisgIE9OX05PTkUKK307CisKKy8qIEhhbmRsZSBtYWtlX2xpc3B5X2V2ZW50IHdoZW4gYSB0
dHkgY2hpbGQgZnJhbWUncyBkZWNvcmF0aW9ucyBzaGFsbCBiZQorICAgdXNlZCBpbiBsaWV1
IG9mIGludGVybmFsIGJvcmRlcnMuICBSIGRlbm90ZXMgdGhlIHJvb3QgZnJhbWUgdW5kZXIK
KyAgIGludmVzdGlnYXRpb24sIE1YIGFuZCBNWSBhcmUgdGhlIHBvc2l0aW9ucyBvZiB0aGUg
bW91c2UgcmVsYXRpdmUgdG8KKyAgIFIuICBXSU5ET1dfT1JfRlJBTUUgZGVub3RlcyB0aGUg
ZnJhbWUgcHJldmlvdXNseSByZXBvcnRlZCBhcyB0aGUKKyAgIGZyYW1lIHVuZGVyIChNWCwg
TVkpLiAgTm90ZTogVGhlIGRlY29yYXRpb25zIG9mIGEgY2hpbGQgZnJhbWUgYXJlCisgICBh
bHdheXMgZHJhd24gb3V0c2lkZSB0aGUgY2hpbGQgZnJhbWUsIHNvIFdJTkRPV19PUl9GUkFN
RSBpcyBjZXJ0YWlubHkKKyAgIG5vdCB0aGUgZnJhbWUgd2UgYXJlIGxvb2tpbmcgZm9yLiAg
TmVpdGhlciBpcyBSLiAgQSBjYW5kaWRhdGUgZnJhbWUKKyAgIGlzIGFueSBmcmFtZSBidXQg
V0lORE9XX09SX0ZSQU1FIGFuZCBSIHdob3NlIHJvb3QgaXMgUiwgd2hpY2ggaXMgbm90Cisg
ICBkZWNvcmF0ZWQgYW5kIGhhcyBhICdkcmFnLWludGVybmFsLWJvcmRlcicgcGFyYW1ldGVy
LiAgSWYgd2UgZmluZCBhCisgICBzdWl0YWJsZSBmcmFtZSwgc2V0IFdJTkRPV19PUl9GUkFN
RSB0byBpdCBhbmQgUE9TTiB0byB0aGUgcGFydCBvZiB0aGUKKyAgIGludGVybmFsIGJvcmRl
ciBjb3JyZXNwb25kaW5nIHRvIChNWCwgTVkpIG9uIHRoZSBmcmFtZSBmb3VuZC4gICovCisK
K3N0YXRpYyB2b2lkCittYWtlX2xpc3B5X3R0eV9wb3NpdGlvbiAoc3RydWN0IGZyYW1lICpy
LCBpbnQgbXgsIGludCBteSwKKwkJCSBMaXNwX09iamVjdCAqd2luZG93X29yX2ZyYW1lLCBM
aXNwX09iamVjdCAqcG9zbikKK3sKKyAgZW51bSBmcmFtZV9ib3JkZXJfc2lkZSBzaWRlID0g
T05fTk9ORTsKKyAgc3RydWN0IGZyYW1lICpmID0gTlVMTDsKKyAgTGlzcF9PYmplY3QgdGFp
bCwgZnJhbWU7CisgIGludCBpeCwgaXkgPSAwOworCisgIEZPUl9FQUNIX0ZSQU1FICh0YWls
LCBmcmFtZSkKKyAgICB7CisgICAgICBmID0gWEZSQU1FIChmcmFtZSk7CisKKyAgICAgIGlu
dCBsZWZ0ID0gZi0+bGVmdF9wb3M7CisgICAgICBpbnQgdG9wID0gZi0+dG9wX3BvczsKKyAg
ICAgIGludCByaWdodCA9IGxlZnQgKyBmLT5waXhlbF93aWR0aDsKKyAgICAgIGludCBib3R0
b20gPSB0b3AgKyBmLT5waXhlbF9oZWlnaHQ7CisKKyAgICAgIGlmIChyb290X2ZyYW1lIChm
KSA9PSByICYmIGYgIT0gcgorCSAgJiYgIUZSQU1FX1VOREVDT1JBVEVEIChmKQorCSAgJiYg
IU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdfaW50ZXJuYWxfYm9yZGVyKSkpCisJ
eworCSAgaWYgKGxlZnQgPT0gbXggKyAxICYmIG15ID49IHRvcCAmJiBteSA8PSBib3R0b20p
CisJICAgIHsKKwkgICAgICBzaWRlID0gT05fTEVGVDsKKwkgICAgICBpeCA9IC0xOworCSAg
ICAgIGl5ID0gbXkgLSB0b3AgKyAxOworCSAgICAgIGJyZWFrOworCSAgICB9CisJICBlbHNl
IGlmIChyaWdodCA9PSBteCAmJiBteSA+PSB0b3AgJiYgbXkgPD0gYm90dG9tKQorCSAgICB7
CisJICAgICAgc2lkZSA9IE9OX1JJR0hUOworCSAgICAgIGl4ID0gZi0+cGl4ZWxfd2lkdGg7
CisJICAgICAgaXkgPSBteSAtIHRvcCArIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkg
IGVsc2UgaWYgKHRvcCA9PSBteSArIDEgJiYgbXggPj0gbGVmdCAmJiBteCA8PSByaWdodCkK
KwkgICAgeworCSAgICAgIHNpZGUgPSBPTl9UT1A7CisJICAgICAgaXggPSBteCAtIGxlZnQg
KyAxOworCSAgICAgIGl5ID0gLTE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGVsc2Ug
aWYgKGJvdHRvbSA9PSBteSAmJiBteCA+PSBsZWZ0ICYmIG14IDw9IHJpZ2h0KQorCSAgICB7
CisJICAgICAgc2lkZSA9IE9OX0JPVFRPTTsKKwkgICAgICBpeCA9IG14IC0gbGVmdCArIDE7
CisJICAgICAgaXkgPSBmLT5waXhlbF9oZWlnaHQ7CisJICAgICAgYnJlYWs7CisJICAgIH0K
Kwl9CisgICAgfQorCisgIGlmIChzaWRlICE9IE9OX05PTkUpCisgICAgeworICAgICAgZW51
bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBwYXJ0CisJPSBmcmFtZV9pbnRlcm5hbF9ib3JkZXJf
cGFydCAoZiwgaXgsIGl5KTsKKworICAgICAgWFNFVEZSQU1FICgqd2luZG93X29yX2ZyYW1l
LCBmKTsKKyAgICAgICpwb3NuID0gYnVpbHRpbl9saXNwX3N5bWJvbCAoaW50ZXJuYWxfYm9y
ZGVyX3BhcnRzW3BhcnRdKTsKKyAgICB9Cit9CisKIC8qIFggYW5kIFkgYXJlIGZyYW1lLXJl
bGF0aXZlIGNvb3JkaW5hdGVzIGZvciBhIGNsaWNrIG9yIHdoZWVsIGV2ZW50LgogICAgUmV0
dXJuIGEgTGlzcC1zdHlsZSBldmVudCBsaXN0LiAgKi8KIApAQCAtNTY3Nyw3ICs1NzU5LDE0
IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3Qg
eCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHdpbmRvd19vcl9mcmFtZSA9IFFuaWw7CS8qIHNl
ZSBhYm92ZSAqLwogICAgIH0KIAotICBpZiAoV0lORE9XUCAod2luZG93X29yX2ZyYW1lKSkK
KyAgaWYgKFdJTkRPV1AgKHdpbmRvd19vcl9mcmFtZSkgJiYgaXNfdHR5X2ZyYW1lIChmKQor
ICAgICAgJiYgKGlzX3R0eV9yb290X2ZyYW1lX3dpdGhfdmlzaWJsZV9jaGlsZCAoZikKKwkg
IHx8IGlzX3R0eV9jaGlsZF9mcmFtZSAoZikpKQorICAgIG1ha2VfbGlzcHlfdHR5X3Bvc2l0
aW9uIChyb290X2ZyYW1lIChmKSwgbXgsIG15LCAmd2luZG93X29yX2ZyYW1lLCAmcG9zbik7
CisKKyAgaWYgKCFOSUxQIChwb3NuKSkKKyAgICA7CisgIGVsc2UgaWYgKFdJTkRPV1AgKHdp
bmRvd19vcl9mcmFtZSkpCiAgICAgewogICAgICAgLyogSXQncyBhIGNsaWNrIGluIHdpbmRv
dyBXSU5ET1cgYXQgZnJhbWUgY29vcmRpbmF0ZXMgKFgsWSkgICovCiAgICAgICBzdHJ1Y3Qg
d2luZG93ICp3ID0gWFdJTkRPVyAod2luZG93X29yX2ZyYW1lKTsKQEAgLTU4ODAsOSArNTk2
OSw3IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmpl
Y3QgeCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHhyZXQgPSBteDsKICAgICAgIHlyZXQgPSBt
eTsKIAotI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQotICAgICAgaWYgKEZSQU1FX1dJTkRP
V19QIChmKQotCSAgJiYgRlJBTUVfTElWRV9QIChmKQorICAgICAgaWYgKEZSQU1FX0xJVkVf
UCAoZikKIAkgICYmIE5JTFAgKHBvc24pCiAJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JERVJf
V0lEVEggKGYpID4gMAogCSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdf
aW50ZXJuYWxfYm9yZGVyKSkpCkBAIC01ODkyLDcgKzU5NzksNiBAQCBtYWtlX2xpc3B5X3Bv
c2l0aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHks
CiAKIAkgIHBvc24gPSBidWlsdGluX2xpc3Bfc3ltYm9sIChpbnRlcm5hbF9ib3JkZXJfcGFy
dHNbcGFydF0pOwogCX0KLSNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKQEAgLTEyNTcy
LDcgKzEyNjU4LDkgQEAgREVGVU4gKCJwb3NuLWF0LXgteSIsIEZwb3NuX2F0X3hfeSwgU3Bv
c25fYXRfeF95LCAyLCA0LCAwLAogICAgICBpbnRvIHRoZSBsZWZ0IGZyaW5nZS4gICovCiAg
IGlmIChYRklYTlVNICh4KSAhPSAtMSkKICAgICBDSEVDS19GSVhOQVQgKHgpOwotICBDSEVD
S19GSVhOQVQgKHkpOworICBDSEVDS19GSVhOVU0gKHkpOworICBpZiAoWEZJWE5VTSAoeSkg
IT0gLTEpCisgICAgQ0hFQ0tfRklYTkFUICh5KTsKIAogICBpZiAoTklMUCAoZnJhbWVfb3Jf
d2luZG93KSkKICAgICBmcmFtZV9vcl93aW5kb3cgPSBzZWxlY3RlZF93aW5kb3c7CmRpZmYg
LS1naXQgYS9zcmMva2V5bWFwLmMgYi9zcmMva2V5bWFwLmMKaW5kZXggNTY5MWIzNGM0MGQu
LmM5OGI4M2RiNjhkIDEwMDY0NAotLS0gYS9zcmMva2V5bWFwLmMKKysrIGIvc3JjL2tleW1h
cC5jCkBAIC0xNjUyLDcgKzE2NTIsOCBAQCBERUZVTiAoImN1cnJlbnQtYWN0aXZlLW1hcHMi
LCBGY3VycmVudF9hY3RpdmVfbWFwcywgU2N1cnJlbnRfYWN0aXZlX21hcHMsCiAgICAgICAg
ZG9jOiAvKiBSZXR1cm4gYSBsaXN0IG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGtleW1hcHMu
CiBPTFAgaWYgbm9uLW5pbCBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgb2JleSBgb3ZlcnJp
ZGluZy1sb2NhbC1tYXAnIGFuZAogYG92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwJy4g
IFBPU0lUSU9OIGNhbiBzcGVjaWZ5IGEgY2xpY2sgcG9zaXRpb24KLWxpa2UgaW4gdGhlIHJl
c3BlY3RpdmUgYXJndW1lbnQgb2YgYGtleS1iaW5kaW5nJy4gICovKQorbGlrZSBpbiB0aGUg
cmVzcGVjdGl2ZSBhcmd1bWVudCBvZiBga2V5LWJpbmRpbmcnIG9yIGEgbGl2ZSB3aW5kb3cg
d2hpY2gKK21lYW5zIHRvIHJldHVybiB0aGUgYWN0aXZlIG1hcHMgZm9yIHRoYXQgd2luZG93
J3MgYnVmZmVyLiAgKi8pCiAgIChMaXNwX09iamVjdCBvbHAsIExpc3BfT2JqZWN0IHBvc2l0
aW9uKQogewogICBzcGVjcGRsX3JlZiBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CkBAIC0x
NjgyLDYgKzE2ODMsMTYgQEAgREVGVU4gKCJjdXJyZW50LWFjdGl2ZS1tYXBzIiwgRmN1cnJl
bnRfYWN0aXZlX21hcHMsIFNjdXJyZW50X2FjdGl2ZV9tYXBzLAogCSAgc2V0X2J1ZmZlcl9p
bnRlcm5hbCAoWEJVRkZFUiAoWFdJTkRPVyAod2luZG93KS0+Y29udGVudHMpKTsKIAl9CiAg
ICAgfQorICBlbHNlIGlmIChXSU5ET1dfTElWRV9QIChwb3NpdGlvbikpCisgICAgeworICAg
ICAgaWYgKEJVRkZFUlAgKFhXSU5ET1cgKHBvc2l0aW9uKS0+Y29udGVudHMpCisJICAmJiBY
QlVGRkVSIChYV0lORE9XIChwb3NpdGlvbiktPmNvbnRlbnRzKSAhPSBjdXJyZW50X2J1ZmZl
cikKKwl7CisJICAvKiBTZWUgY29tbWVudCBhYm92ZS4gICovCisJICByZWNvcmRfdW53aW5k
X2N1cnJlbnRfYnVmZmVyICgpOworCSAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAoWEJVRkZFUiAo
WFdJTkRPVyAocG9zaXRpb24pLT5jb250ZW50cykpOworCX0KKyAgICB9CiAKICAgaWYgKCFO
SUxQIChvbHApCiAgICAgICAvKiBUaGUgZG9jIHNhaWQgdGhhdCBvdmVycmlkaW5nLXRlcm1p
bmFsLWxvY2FsLW1hcCBzaG91bGQKZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVy
bS5jCmluZGV4IGZkOTVlNzVhMDA3Li4yZWY3NjNkMGZmYyAxMDA2NDQKLS0tIGEvc3JjL3Rl
cm0uYworKysgYi9zcmMvdGVybS5jCkBAIC0yNjU4LDEyICsyNjU4LDY4IEBAIHR0eV9mcmFt
ZV9hdCAoaW50IHgsIGludCB5LCBpbnQgKmN4LCBpbnQgKmN5KQogICAgICAgTGlzcF9PYmpl
Y3QgZnJhbWUgPSBGY2FyIChmcmFtZXMpOwogICAgICAgc3RydWN0IGZyYW1lICpmID0gWEZS
QU1FIChmcmFtZSk7CiAgICAgICBpbnQgZngsIGZ5OworICAgICAgYm9vbCBvbl9ib3JkZXIg
PSBmYWxzZTsKKwogICAgICAgcm9vdF94eSAoZiwgMCwgMCwgJmZ4LCAmZnkpOwogCi0gICAg
ICBpZiAoKGZ4IDw9IHggJiYgeCA8IGZ4ICsgZi0+cGl4ZWxfd2lkdGgpCi0JICAmJiAoZnkg
PD0geSAmJiB5IDwgZnkgKyBmLT5waXhlbF9oZWlnaHQpKQorICAgICAgaWYgKCFGUkFNRV9V
TkRFQ09SQVRFRCAoZikgJiYgRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKwl7CisJICBpZiAo
ZnkgLSAxIDw9IHkgJiYgeSA8PSBmeSArIGYtPnBpeGVsX2hlaWdodCArIDEpCisJICAgIHsK
KwkgICAgICBpZiAoZnggPT0geCArIDEpCisJCXsKKwkJICAqY3ggPSAtMTsKKwkJICBvbl9i
b3JkZXIgPSB0cnVlOworCQl9CisJICAgICAgZWxzZSBpZiAoZnggKyBmLT5waXhlbF93aWR0
aCA9PSB4KQorCQl7CisJCSAgKmN4ID0gZi0+cGl4ZWxfd2lkdGg7CisJCSAgb25fYm9yZGVy
ID0gdHJ1ZTsKKwkJfQorCisJICAgICAgaWYgKG9uX2JvcmRlcikKKwkJeworCQkgICpjeSA9
IHkgLSBmeTsKKworCQkgIHJldHVybiBmcmFtZTsKKwkJfQorCSAgICB9CisKKwkgIGlmIChm
eCAtIDEgPD0geCAmJiB4IDw9IGZ4ICsgZi0+cGl4ZWxfd2lkdGggKyAxKQorCSAgICB7CisJ
ICAgICAgaWYgKGZ5ID09IHkgKyAxKQorCQl7CisJCSAgKmN5ID0gLTE7CisJCSAgb25fYm9y
ZGVyID0gdHJ1ZTsKKwkJfQorCSAgICAgIGVsc2UgaWYgKGZ5ICsgZi0+cGl4ZWxfaGVpZ2h0
ID09IHkpCisJCXsKKwkJICAqY3kgPSBmLT5waXhlbF9oZWlnaHQ7CisJCSAgb25fYm9yZGVy
ID0gdHJ1ZTsKKwkJfQorCisJICAgICAgaWYgKG9uX2JvcmRlcikKKwkJeworCQkgICpjeCA9
IHggLSBmeDsKKworCQkgIHJldHVybiBmcmFtZTsKKwkJfQorCSAgICB9CisKKworCSAgaWYg
KChmeCA8PSB4ICYmIHggPD0gZnggKyBmLT5waXhlbF93aWR0aCkKKwkgICAgICAmJiAoZnkg
PD0geSAmJiB5IDw9IGZ5ICsgZi0+cGl4ZWxfaGVpZ2h0KSkKKwkgICAgeworCSAgICAgIGNo
aWxkX3h5IChYRlJBTUUgKGZyYW1lKSwgeCwgeSwgY3gsIGN5KTsKKworCSAgICAgIHJldHVy
biBmcmFtZTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UgaWYgKChmeCA8PSB4ICYmIHggPD0g
ZnggKyBmLT5waXhlbF93aWR0aCkKKwkgICAgICAgJiYgKGZ5IDw9IHkgJiYgeSA8PSBmeSAr
IGYtPnBpeGVsX2hlaWdodCkpCiAJewogCSAgY2hpbGRfeHkgKFhGUkFNRSAoZnJhbWUpLCB4
LCB5LCBjeCwgY3kpOworCiAJICByZXR1cm4gZnJhbWU7CiAJfQogICAgIH0KQEAgLTI2NzMs
NyArMjcyOSw3IEBAIHR0eV9mcmFtZV9hdCAoaW50IHgsIGludCB5LCBpbnQgKmN4LCBpbnQg
KmN5KQogfQogCiBERUZVTiAoInR0eS1mcmFtZS1hdCIsIEZ0dHlfZnJhbWVfYXQsIFN0dHlf
ZnJhbWVfYXQsIDIsIDIsIDAsCi0gICAgICAgZG9jIDogLyogUmV0dXJuIHR0eSBmcmFtZSBj
b250YWluaW5nIGFic29sdXRlIHBpeGVsIHBvc2l0aW9uIChYLCBZKS4KKyAgICAgICBkb2M6
IC8qIFJldHVybiB0dHkgZnJhbWUgY29udGFpbmluZyBhYnNvbHV0ZSBwaXhlbCBwb3NpdGlv
biAoWCwgWSkuCiBWYWx1ZSBpcyBuaWwgaWYgbm8gZnJhbWUgZm91bmQuICBPdGhlcndpc2Ug
aXQgaXMgYSBsaXN0IChGUkFNRSBDWCBDWSksCiB3aGVyZSBGUkFNRSBpcyB0aGUgZnJhbWUg
Y29udGFpbmluZyAoWCwgWSkgYW5kIENYIGFuZCBDWSBhcmUgWCBhbmQgWQogcmVsYXRpdmUg
dG8gRlJBTUUuICAqLykKQEAgLTI2ODcsNiArMjc0Myw3IEBAIERFRlVOICgidHR5LWZyYW1l
LWF0IiwgRnR0eV9mcmFtZV9hdCwgU3R0eV9mcmFtZV9hdCwgMiwgMiwgMCwKICAgTGlzcF9P
YmplY3QgZnJhbWUgPSB0dHlfZnJhbWVfYXQgKFhGSVhOVU0gKHgpLCBYRklYTlVNICh5KSwg
JmN4LCAmY3kpOwogICBpZiAoTklMUCAoZnJhbWUpKQogICAgIHJldHVybiBRbmlsOworCiAg
IHJldHVybiBsaXN0MyAoZnJhbWUsIG1ha2VfZml4bnVtIChjeCksIG1ha2VfZml4bnVtIChj
eSkpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5k
ZXggMzMwYTk1YTcxNmYuLjFhYzAwNGFmNWUwIDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMK
KysrIGIvc3JjL3dpbmRvdy5jCkBAIC0xNzU4LDYgKzE3NTgsMTMgQEAgREVGVU4gKCJ3aW5k
b3ctYXQiLCBGd2luZG93X2F0LCBTd2luZG93X2F0LCAyLCAzLCAwLAogewogICBzdHJ1Y3Qg
ZnJhbWUgKmYgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJhbWUpOwogCisgIENIRUNLX0lOVEVH
RVIgKHgpOworICBDSEVDS19JTlRFR0VSICh5KTsKKworICBpZiAoWEZJWE5VTSAoeCkgPCAw
IHx8IFhGSVhOVU0gKHgpID4gRlJBTUVfUElYRUxfV0lEVEggKGYpCisgICAgICB8fCBYRklY
TlVNICh5KSA8IDAgfHwgWEZJWE5VTSAoeSkgPiBGUkFNRV9QSVhFTF9IRUlHSFQgKGYpKQor
ICAgIHJldHVybiBRbmlsOworCiAgIENIRUNLX05VTUJFUiAoeCk7CiAgIENIRUNLX05VTUJF
UiAoeSk7CiAKZGlmZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXgg
YzliY2FmZTU3ZmQuLmM0NWFhOGExYmIwIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysg
Yi9zcmMveGRpc3AuYwpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgI2RlZmluZSBUSElOX1NQQUNF
X1dJRFRIIDEKIAkJCQkgc3RydWN0IGdseXBoX21hdHJpeCAqLCBwdHJkaWZmX3QsIHB0cmRp
ZmZfdCwKIAkJCQkgaW50LCBpbnQpOwogc3RhdGljIGJvb2wgY3Vyc29yX3Jvd19mdWxseV92
aXNpYmxlX3AgKHN0cnVjdCB3aW5kb3cgKiwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1zdGF0aWMg
Ym9vbCB1cGRhdGVfbWVudV9iYXIgKHN0cnVjdCBmcmFtZSAqLCBib29sLCBib29sKTsKK3N0
YXRpYyBib29sIHVwZGF0ZV9tZW51X2JhciAoc3RydWN0IGZyYW1lICosIGJvb2wsIGJvb2ws
IHN0cnVjdCB3aW5kb3cgKik7CiBzdGF0aWMgYm9vbCB0cnlfd2luZG93X3JldXNpbmdfY3Vy
cmVudF9tYXRyaXggKHN0cnVjdCB3aW5kb3cgKik7CiBzdGF0aWMgaW50IHRyeV93aW5kb3df
aWQgKHN0cnVjdCB3aW5kb3cgKik7CiBzdGF0aWMgdm9pZCBtYXliZV9wcm9kdWNlX2xpbmVf
bnVtYmVyIChzdHJ1Y3QgaXQgKik7CkBAIC0xNDA2NCwxMyArMTQwNjQsMzIgQEAgcHJlcGFy
ZV9tZW51X2JhcnMgKHZvaWQpCiAgICAgICAvKiBUcnVlIG1lYW5zIHRoYXQgdXBkYXRlX21l
bnVfYmFyIGhhcyBydW4gaXRzIGhvb2tzCiAJIHNvIGFueSBmdXJ0aGVyIGNhbGxzIHRvIHVw
ZGF0ZV9tZW51X2JhciBzaG91bGRuJ3QgZG8gc28gYWdhaW4uICAqLwogICAgICAgYm9vbCBt
ZW51X2Jhcl9ob29rc19ydW4gPSBmYWxzZTsKKyAgICAgIHN0cnVjdCB3aW5kb3cgKnN3ID0g
WFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqc2YgPSBX
SU5ET1dfWEZSQU1FIChzdyk7CisgICAgICBzdHJ1Y3QgZnJhbWUgKnJmID0gTlVMTDsKKwor
ICAgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoc2YpICYmICFGUkFNRV9XSU5ET1dfUCAo
c2YpCisJICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAoc2YpID09IDAKKwkgICYmIEZSQU1F
X01FTlVfQkFSX0xJTkVTIChyZiA9IHJvb3RfZnJhbWUgKHNmKSkgIT0gMAorCSAgJiYgTklM
UCAoRmRlZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKwkvKiBJZiB0
aGUgc2VsZWN0ZWQgd2luZG93J3MgZnJhbWUgaXMgYSB0dHkgY2hpbGQgZnJhbWUgd2l0aG91
dAorCSAgIG1lbnUgYmFyLCB0aGF0IGZyYW1lJ3Mgcm9vdCBmcmFtZSBoYXMgYSBtZW51IGJh
ciBhbmQKKwkgICAndHR5LW1lbnUtb3Blbi11c2UtdG1tJyBpcyBuaWwsIHVwZGF0ZSB0aGUg
bWVudSBiYXIgb2YgdGhlCisJICAgcm9vdCBmcmFtZSBmcm9tIHRoZSBzZWxlY3RlZCB3aW5k
b3cuICAqLworCXNmID0gcmY7CisgICAgICBlbHNlCisJeworCSAgc2YgPSBOVUxMOworCSAg
c3cgPSBOVUxMOworCX0KIAogICAgICAgcmVjb3JkX3Vud2luZF9zYXZlX21hdGNoX2RhdGEg
KCk7CiAKICAgICAgIEZPUl9FQUNIX0ZSQU1FICh0YWlsLCBmcmFtZSkKIAl7CiAJICBzdHJ1
Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKGZyYW1lKTsKLQkgIHN0cnVjdCB3aW5kb3cgKncgPSBY
V0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpKTsKKwkgIHN0cnVjdCB3aW5kb3cg
KncKKwkgICAgPSBzZiA9PSBmID8gc3cgOiBYV0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5E
T1cgKGYpKTsKIAogCSAgLyogSWdub3JlIHRvb2x0aXAgZnJhbWUuICAqLwogCSAgaWYgKEZS
QU1FX1RPT0xUSVBfUCAoZikpCkBAIC0xNDA4Miw4ICsxNDEwMSw4IEBAIHByZXBhcmVfbWVu
dV9iYXJzICh2b2lkKQogCSAgICAgICYmICFYQlVGRkVSICh3LT5jb250ZW50cyktPnRleHQt
PnJlZGlzcGxheSkKIAkgICAgY29udGludWU7CiAKLQkgIGlmICghRlJBTUVfUEFSRU5UX0ZS
QU1FIChmKSkKLQkgICAgbWVudV9iYXJfaG9va3NfcnVuID0gdXBkYXRlX21lbnVfYmFyIChm
LCBmYWxzZSwgbWVudV9iYXJfaG9va3NfcnVuKTsKKwkgIG1lbnVfYmFyX2hvb2tzX3J1bgor
CSAgICA9IHVwZGF0ZV9tZW51X2JhciAoZiwgZmFsc2UsIG1lbnVfYmFyX2hvb2tzX3J1biwg
dyk7CiAKIAkgIHVwZGF0ZV90YWJfYmFyIChmLCBmYWxzZSk7CiAjaWZkZWYgSEFWRV9XSU5E
T1dfU1lTVEVNCkBAIC0xNDA5NSwxMCArMTQxMTQsMjEgQEAgcHJlcGFyZV9tZW51X2JhcnMg
KHZvaWQpCiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgc3RydWN0IGZyYW1lICpzZiA9
IFNFTEVDVEVEX0ZSQU1FICgpOworICAgICAgc3RydWN0IHdpbmRvdyAqc3cgPSBYV0lORE9X
IChzZWxlY3RlZF93aW5kb3cpOworICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFdJTkRPV19Y
RlJBTUUgKHN3KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOwogCi0gICAgICBp
ZiAoIUZSQU1FX1BBUkVOVF9GUkFNRSAoc2YpKQotCXVwZGF0ZV9tZW51X2JhciAoc2YsIHRy
dWUsIGZhbHNlKTsKKyAgICAgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKHNmKSAmJiAhRlJB
TUVfV0lORE9XX1AgKHNmKQorCSAgJiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKHNmKSA9PSAw
CisJICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAocmYgPSByb290X2ZyYW1lIChzZikpICE9
IDAKKwkgICYmIE5JTFAgKEZkZWZhdWx0X3ZhbHVlIChRdHR5X21lbnVfb3Blbl91c2VfdG1t
KSkpCisJLyogSWYgdGhlIHNlbGVjdGVkIHdpbmRvdydzIGZyYW1lIGlzIGEgdHR5IGNoaWxk
IGZyYW1lIHdpdGhvdXQKKwkgICBtZW51IGJhciwgdGhhdCBmcmFtZSdzIHJvb3QgZnJhbWUg
aGFzIGEgbWVudSBiYXIgYW5kCisJICAgJ3R0eS1tZW51LW9wZW4tdXNlLXRtbScgaXMgbmls
LCB1cGRhdGUgdGhlIG1lbnUgYmFyIG9mIHRoZQorCSAgIHJvb3QgZnJhbWUgZnJvbSB0aGUg
c2VsZWN0ZWQgd2luZG93LiAgKi8KKwlzZiA9IHJmOworCisgICAgICB1cGRhdGVfbWVudV9i
YXIgKHNmLCB0cnVlLCBmYWxzZSwgc3cpOwogCiAgICAgICB1cGRhdGVfdGFiX2JhciAoc2Ys
IHRydWUpOwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQpAQCAtMTQxMjAsMjAgKzE0MTUw
LDE0IEBAIHByZXBhcmVfbWVudV9iYXJzICh2b2lkKQogICAgdXBkYXRlZCB2YWx1ZSBvZiB0
aGlzIGZsYWcsIHRvIHBhc3MgdG8gdGhlIG5leHQgY2FsbC4gICovCiAKIHN0YXRpYyBib29s
Ci11cGRhdGVfbWVudV9iYXIgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBzYXZlX21hdGNoX2Rh
dGEsIGJvb2wgaG9va3NfcnVuKQordXBkYXRlX21lbnVfYmFyIChzdHJ1Y3QgZnJhbWUgKmYs
IGJvb2wgc2F2ZV9tYXRjaF9kYXRhLCBib29sIGhvb2tzX3J1biwgc3RydWN0IHdpbmRvdyAq
dykKIHsKLSAgTGlzcF9PYmplY3Qgd2luZG93OwotICBzdHJ1Y3Qgd2luZG93ICp3OwotCiAg
IC8qIElmIGNhbGxlZCByZWN1cnNpdmVseSBkdXJpbmcgYSBtZW51IHVwZGF0ZSwgZG8gbm90
aGluZy4gIFRoaXMgY2FuCiAgICAgIGhhcHBlbiB3aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGFj
dGl2YXRlLW1lbnViYXItaG9vayBjYXVzZXMgYQogICAgICByZWRpc3BsYXkuICAqLwogICBp
ZiAoaW5oaWJpdF9tZW51YmFyX3VwZGF0ZSkKICAgICByZXR1cm4gaG9va3NfcnVuOwogCi0g
IHdpbmRvdyA9IEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoZik7Ci0gIHcgPSBYV0lORE9XICh3
aW5kb3cpOwotCiAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikKICAgICAgID8KICNpZmRlZiBI
QVZFX0VYVF9NRU5VX0JBUgpAQCAtMjEwOTAsMjQgKzIxMTE0LDMzIEBAIHJlZGlzcGxheV93
aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAKICAg
LyogV2hlbiB3ZSByZWFjaCBhIGZyYW1lJ3Mgc2VsZWN0ZWQgd2luZG93LCByZWRvIHRoZSBm
cmFtZSdzIG1lbnUKICAgICAgYmFyLCB0b29sIGJhciwgdGFiLWJhciwgYW5kIHRoZSBmcmFt
ZSdzIHRpdGxlLiAgKi8KLSAgaWYgKHVwZGF0ZV9tb2RlX2xpbmUKLSAgICAgICYmIEVRIChG
UkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpLCB3aW5kb3cpKQorICBpZiAodXBkYXRlX21vZGVf
bGluZSAmJiBFUSAoRlJBTUVfU0VMRUNURURfV0lORE9XIChmKSwgd2luZG93KSkKICAgICB7
Ci0gICAgICBib29sIHJlZGlzcGxheV9tZW51X3A7Ci0KICAgICAgIGlmIChGUkFNRV9XSU5E
T1dfUCAoZikpCiAJewogI2lmZGVmIEhBVkVfRVhUX01FTlVfQkFSCi0JICByZWRpc3BsYXlf
bWVudV9wID0gRlJBTUVfRVhURVJOQUxfTUVOVV9CQVIgKGYpOworCSAgaWYgKEZSQU1FX0VY
VEVSTkFMX01FTlVfQkFSIChmKSkKKwkgICAgZGlzcGxheV9tZW51X2JhciAodyk7CiAjZWxz
ZQotCSAgcmVkaXNwbGF5X21lbnVfcCA9IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDA7
CisJICBpZiAoRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID4gMCkKKwkgICAgZGlzcGxheV9t
ZW51X2JhciAodyk7CiAjZW5kaWYKIAl9CiAgICAgICBlbHNlCi0gICAgICAgIHJlZGlzcGxh
eV9tZW51X3AgPSBGUkFNRV9NRU5VX0JBUl9MSU5FUyAoZikgPiAwOworCXsKKwkgIHN0cnVj
dCBmcmFtZSAqcmYgPSBOVUxMOwogCi0gICAgICBpZiAocmVkaXNwbGF5X21lbnVfcCkKLSAg
ICAgICAgZGlzcGxheV9tZW51X2JhciAodyk7CisJICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1F
IChmKQorCSAgICAgICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisJICAgICAg
JiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKHJmID0gcm9vdF9mcmFtZSAoZikpICE9IDAKKwkg
ICAgICAmJiBOSUxQIChGZGVmYXVsdF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkp
KQorCSAgICAvKiBJZiBGIGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgbWVudSBiYXIs
IHRoYXQgZnJhbWUncyByb290CisJICAgICAgIGZyYW1lIGhhcyBhIG1lbnUgYmFyIGFuZCAn
dHR5LW1lbnUtb3Blbi11c2UtdG1tJyBpcyBuaWwsCisJICAgICAgIGRpc3BsYXkgdGhlIG1l
bnUgYmFyIG9mIHRoZSByb290IGZyYW1lJ3Mgc2VsZWN0ZWQgd2luZG93LiAgKi8KKwkgICAg
ZGlzcGxheV9tZW51X2JhciAoWFdJTkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChyZikp
KTsKKwkgIGVsc2UgaWYgKEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDApCisJICAgIGRp
c3BsYXlfbWVudV9iYXIgKHcpOworCX0KIAogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQog
ICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKSkKQEAgLTI3MzQ5LDEwICsyNzM4MiwxOSBA
QCBkaXNwbGF5X3R0eV9tZW51X2l0ZW0gKGNvbnN0IGNoYXIgKml0ZW1fdGV4dCwgaW50IHdp
ZHRoLCBpbnQgZmFjZV9pZCwKIHsKICAgc3RydWN0IGl0IGl0OwogICBzdHJ1Y3QgZnJhbWUg
KmYgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKLSAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cg
KGYtPnNlbGVjdGVkX3dpbmRvdyk7CiAgIHN0cnVjdCBnbHlwaF9yb3cgKnJvdzsKICAgc2l6
ZV90IGl0ZW1fbGVuID0gc3RybGVuIChpdGVtX3RleHQpOwogCisgIHN0cnVjdCBmcmFtZSAq
cmYgPSBOVUxMOworCisgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYpICYmICFGUkFNRV9X
SU5ET1dfUCAoZikKKyAgICAgICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisg
ICAgICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAocmYgPSByb290X2ZyYW1lIChmKSkgIT0g
MAorICAgICAgJiYgTklMUCAoRmRlZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90
bW0pKSkKKyAgICBmID0gcmY7CisKKyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKGYt
PnNlbGVjdGVkX3dpbmRvdyk7CisKICAgZWFzc2VydCAoRlJBTUVfVEVSTUNBUF9QIChmKSk7
CiAKICAgLyogRG9uJ3Qgd3JpdGUgYmV5b25kIHRoZSBtYXRyaXgncyBsYXN0IHJvdy4gIFRo
aXMgY2FuIGhhcHBlbiBmb3IKQEAgLTM4NDY4LDYgKzM4NTEwLDcgQEAgc3ltc19vZl94ZGlz
cCAodm9pZCkKICAgREVGU1lNIChRbmhkcmFnLCAibmhkcmFnIik7CiAgIERFRlNZTSAoUXZk
cmFnLCAidmRyYWciKTsKICAgREVGU1lNIChRaG91cmdsYXNzLCAiaG91cmdsYXNzIik7Cisg
IERFRlNZTSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSwgInR0eS1tZW51LW9wZW4tdXNlLXRt
bSIpOwogfQogCiAK
--------------g10vPUGCcPR3uoc6XZn708Q0--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 15:51:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 10:51:36 2025
Received: from localhost ([127.0.0.1]:52064 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1thW4O-0007Lt-2a
for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 10:51:36 -0500
Received: from mout.gmx.net ([212.227.17.20]:39107)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1thW4J-0007La-Rm
for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 10:51:34 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1739202677; x=1739807477; i=rudalics@HIDDEN;
bh=Ofvj1YU+avt7500OAMyJL2Rgdz1bT0NnT26VaBrWDwk=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=aR3QRel3PVpXsKDMg+2ASpM840rXUs3Ux42qWBLKK/NusShg2L1ra2HJF/mGfiEP
qpWwCZfRZgO2yRxgJsaS1u3d6i07wSqVDwmZuB1C07hWKmBdqKv4X9sI9fbIAYaeh
WzT6OFqQ7s7X4Ym1/ayiuuSAk0dfVORCfHuN3i80gbOXtlXi6pHW+cnRnai7XiE/I
y4Orky2ViDHAWWzY7Pe/Ry6800vT5mn2xUe2VH/ZsP3jD+m6nNrGBu5XqK3A+pOyQ
E/49eP7qmlJbT6/fzDDcoqc9hiWE15dya4+TLjqLTThjTITEiU6D927pQeJ7bBEML
zCQBJoEW6Mw5Cz5ZIA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.219]) by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MLiCu-1tzBRN2gZk-00V3Ru; Mon, 10
Feb 2025 16:51:17 +0100
Message-ID: <c213226e-ef3c-4688-b0a7-8dcc6a5f9105@HIDDEN>
Date: Mon, 10 Feb 2025 16:51:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
<m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
<m2frknml43.fsf@HIDDEN> <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
<m234gnmjvi.fsf@HIDDEN> <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
<m2y0yfks1p.fsf@HIDDEN> <m2seonf0qr.fsf@HIDDEN>
<9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN> <m2v7tikk53.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2v7tikk53.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:q6+8aQqrLsEAHcC+Pt8tdjeBMjZbYMzHsjiHVPRxq+cZOdWGUFf
GlcRYIwCly8Ruig46hSKmMCWmUDv3NSOWHPNZvchK365nicFHbNApUnkn9um06EGEYtXQJH
LpRrB/ymchKRa/8eViW8DnuKHuKgVt/Gj7kuWAR+m6dnHJCV+IHGyDfCoOovzd7Q14Jb3K/
9MG2BbW4pasCOtuG/pbQQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:mMtgaM7THrM=;5PS/qjTz+I2J8Nd9Hn09hySc5/h
bdG89MqWwx1Xj87Wrmk36KkffRxPIDYu2PK3+aTh1WN19D/ZI160ML6GWkGK0dOhhOxkCR1u3
y4c83MaHtSaDFoWR6Wlp8nLdydlnRQdlpwNC29+rG/XBNiOLxlaNtVUHQUU/c5pTaWXYU+6PS
M+z6oQ/wsHWly2LuY1d2/ptJB6+FnYQ5BjVrfDxfwQVkKUbIvlS3vB1rzZZp36EAJcceWN97c
q3qXPGaBwqJIy9HUccvfmZMCrGqsEgv6JIUZV74kFDHYIrg66pY0eCStZ9Pw/bKUS+Zg4Y7wg
R2sxe7XVwdV8OO6iZsZfTeQMFE/O8YXWlcO//Xl2e63Ei3Y1w8bJIcDvZda39rFQpy9RrStZg
q8Cyl/MrFgUiRp6cxaVFp24rdBnV7btCYSlKEjc+xNQAalpXvqOvFOjB4QgI8nAyoOtVhhwlt
Yxsg4HZvvmYqXsL8WLzmy5HIcVkr7kYVnouK4c82vXHXI6jXiG/FzNx0bqLGZ0QlPnf+q097t
8sJFWpr1g4a0OByQX5QD86MVPw1PEYAP9zrn1muik+xid9elsNF/aaU75yOn+2dpoPIIM6tEb
JTtFMoSlV+T1dCUdzIiMMIAdNyGXdR3PIWP7v7ZXcJmS37sNrQesOgyKiE9JpkhOY3BrNo6mQ
+JHDt6uA8oOuyqpP4GvHPu+8CtMytjQFvW/YAVELt+ytSBlkM5iZM7QGOaHj7pFVmkYTumibz
NkW+9KTwTVLxNA8iYqJWkSgqdtAVBfVUXXd/UOsYrCpshD+HSASLR7872YlzFL8rW07bzzG/k
XtHxuWDG54HM9/TD3vi4doOCPo0qJfeASiPOZAT0sQJ09HhWeE2VlJMMPjZ8N6bacbqbyy5qs
o/Ophduhq+g51R5q9wUD0UgGzv/7sffzXo678BGInUivY2iadJVHJUR1RTQ63tzT4k+BKyZUz
lk77IOadG3syCtnXY0GeoAD9f4diYo/MdPKtf2nu1MF1MagS/H8VbehX2PbD0zywxzr40Z2Oy
+VdE3eWjOGoBDfWz2LNHvVcnLp1DHmMUVjB7/KzDQyc+ZAIONUYX2rBAhU9RkTFIC8MGSZnpI
kpFnG/vcZB86abf0HuleQvg26j0Z0lEtVJ8JW0pSiMx05fHcAYZZlOjO2XBsNj9mvrGWfcMrV
1RLuTam/GlW7pvdMMC4ZAzS07RWwrp6/oaZQks6x+3dmoBfULdHwL/DMwg0G/nfeTl3iuPB+b
9vLV8dGqg3s93YQ9HRQagHwH/CjeZcsePE86WGSdcYpbmcbiLI+vVEEVk6Um3xQg7vtL+bJRB
bAHbLzYmd5dr9DeAsLc1xKx14h9jY1K7Ya5qxY9e38p0U8be9B/GclqSD5/7u0UBWCkyjAlqG
f3YMS7qFzPrHL4G9xPSluE1lpZiA2pPw30uZhiwB5WqQ8h9ODB5WWGLOLM0xCr2C508pKSAR0
tlVDREA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
From what I tried so far I can't enter submenus. But the fonts are>> Debugger entered--Lisp error: (void-function cond*)
>
> Is that an Emacs <= 30? In master, cond* is fboundp and autoloaded.
Probably. It doesn't happen any more.
> BTW, I made a branch here on my side today because things won't work
> without a small addition to the C core, a hook that I called
> x-popup-menu-function. Reason being that C calls x_popup_menu_1 which is
> not exposed to Lisp.
>
> It's still a bit early, I'll holler when I think I have something
> more or less usable.
Thanks, martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 13:24:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 08:24:35 2025
Received: from localhost ([127.0.0.1]:49580 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1thTm7-0007vo-0B
for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 08:24:35 -0500
Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]:45436)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1thTm4-0007vW-Q6
for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 08:24:33 -0500
Received: by mail-ej1-x632.google.com with SMTP id
a640c23a62f3a-ab7d3bcf1ceso51329366b.3
for <75056 <at> debbugs.gnu.org>; Mon, 10 Feb 2025 05:24:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1739193866; x=1739798666; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=MeANa9IhX+7wHq07vJcXT9cRRTMvkA97a0K001D0eEE=;
b=ekgU+etK+79vlJXjhuoFDrBPH9LxMS3fr3kcdb9LFkUKD4tIZqTFafkoTSLTHuWwo5
SZxVMGtF4vGyvs1JGD9Ys4oio3F6JDQ52o6A+68dBWAfBamFhWozKlLMh0bUcxJa3sqw
hY4tLm+uZp1pT/O6b3ggTlYfo8VYVqPHLMcX6It7Jrh9VqWcXArXafnQpvdMVz/QnI5j
OW+kYTo2oztE/8/8Ez9Ue56t43R/JqJGc3KwdQwU9EBcIn0iLMfLDbhAh6KKbptV0kOM
jmficTu5AoWTNuTZhkReH/LYzg2isuY6BBJQqXoQHgZgFfz/NUs7IQmXWbsUt251xU+A
3VJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1739193866; x=1739798666;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=MeANa9IhX+7wHq07vJcXT9cRRTMvkA97a0K001D0eEE=;
b=tHMJjIqz0+rJP+0SGcba9ZrVBpnQOhR9TO0TOT2u2T5TsLwJBV8e7seTYEAmrtJegc
CcDgDP2uHahvjvwZFZzSVm5KqT6GxZ3XYQ+IaMrCmALiRf2X5Jaiz0/+WJykCZG9HY5j
4vZfoLzDWDZgfplw4IT3vxhjZRRzo733zq8dqu7tLsLY/EIv72rH5zZDg814YUVVAwdK
llDHR15cvacYqamPMmm8Qci0+FgnrlAyhl4FxYew/md8L7hxSrDB16gS01lgDCIYEnr6
UpWkblFhELxnRGxBM8JAH1vdNqwzKlez4M4Q740rBfLFWDFeWJQR/YkimBzcyrSxjFzR
3exQ==
X-Forwarded-Encrypted: i=1;
AJvYcCUhsFxP8eHkBKt9ap4aEz7qUiHklO0+QcXffwRj3AR8hwzPck5LC9ADuJ7ox3ewWv0+Z/wcZA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwTglVV05ALNdBspZWkgSUcZQGsez3HtP0ZdiS451PJFTtUEZaj
jYHGDN8bTv1lGsUf9z0iXbC9Ik/JIyY02v9LmMRmCsJzZgI7RYTl3aqi6g==
X-Gm-Gg: ASbGncupkXL3Z9iBedz9rolKZ8h3W1IVeLEhwT/dA+RCAKXxwkJO27p7wlrX927P337
f0zZcsAzuNz5MqKtkbOBkojAvGVoZJ4WVZHwe18dkYpRj6Dp8x2s6YBdzN+nkuHXKKvgANfXDeM
FChXXbI/R2YIdmGP0zGgjkOwy83ykVrNfldo9Nf7pGOgRE2dHmJHHEP4kIvBakIa77BpTm96Hs3
08ZptALdNxV/FNwuBsCrp+rNLMbkkY1PdYwwqgaHUh3zswhSy4EV37CxuWt3P8e8I695Y20uqTW
DgNqTZ0HP3ZkyxQQUPYWCf97wEmxO668MMXNki8xrwl1fKGhoxFSvVnov5NJ0V1dQxx0WUNFayO
INuBXxGUoVeiCGYnpbUQ4xNvp
X-Google-Smtp-Source: AGHT+IEtdxkPg6WbdJoEOC++fYD8QJF6vnqlFzyAbSWZzDihW8BbFhgly2A4iP6Gn/aZqHfxkeiarg==
X-Received: by 2002:a17:907:9803:b0:ab6:d7c5:123 with SMTP id
a640c23a62f3a-ab789c50a85mr1393536566b.51.1739193865872;
Mon, 10 Feb 2025 05:24:25 -0800 (PST)
Received: from pro2 (p200300e0b72ded006d97dc68cf4df393.dip0.t-ipconnect.de.
[2003:e0:b72d:ed00:6d97:dc68:cf4d:f393])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab78e82cc0csm702391866b.12.2025.02.10.05.24.25
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Mon, 10 Feb 2025 05:24:25 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
<m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
<m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
<e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
<m234gnmjvi.fsf@HIDDEN>
<31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
<m2y0yfks1p.fsf@HIDDEN> <m2seonf0qr.fsf@HIDDEN>
<9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN>
Date: Mon, 10 Feb 2025 14:24:24 +0100
Message-ID: <m2v7tikk53.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> This works better with the menu-bar, although the menu bar itself does
>> strange stuff while the menu is open. Don't know what that is.
>
> Still can't test it with emacs -Q -nw
>
> Debugger entered--Lisp error: (void-function cond*)
Is that an Emacs <= 30? In master, cond* is fboundp and autoloaded.
BTW, I made a branch here on my side today because things won't work
without a small addition to the C core, a hook that I called
x-popup-menu-function. Reason being that C calls x_popup_menu_1 which is
not exposed to Lisp.
It's still a bit early, I'll holler when I think I have something
more or less usable.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 10:16:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 05:16:04 2025
Received: from localhost ([127.0.0.1]:48235 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1thQpf-0003RT-Df
for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 05:16:04 -0500
Received: from mout.gmx.net ([212.227.15.15]:43421)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1thQpc-00038j-Gn
for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 05:16:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1739182550; x=1739787350; i=rudalics@HIDDEN;
bh=N0Zd4w2QI8ApxXsG2TAznrLK1C69mylbU8lvVl/0T08=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=qTWm4OOwTUcEGliU3OQz9OISNIDcdVo9v2PkLgDjWgkt2pzJTNmzHSLVepPr6fWL
llLxb+QWjjXRvUNg3nFrlwGwnC/tkkCQoZSV4HGASCZPhcHpvedI7T1KMVWEbC5Vz
nfQwH8qeu3FLMqlYp6vMFLlsA7ynUr9sfAu5lDHUJhSqTdLa22vjDWWSN6F19YTmL
2xDAHUgIEg/s/pSvQBhoIskmzNhGFLTJyTeijFpqpHjp62bw6EUbQmfvHSGuqb/so
2LMRQ5gpmdEqaUon6++OA40uyUA+L6FbkZ6h8vPxy7+PWbiqSfYa1TeSypq8PlMMN
AWtabmYCzWNEr1mYTA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.219]) by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MAwXr-1tWCQp0OaH-00E3eY; Mon, 10
Feb 2025 11:15:50 +0100
Message-ID: <9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN>
Date: Mon, 10 Feb 2025 11:15:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
<m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
<m2frknml43.fsf@HIDDEN> <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
<m234gnmjvi.fsf@HIDDEN> <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
<m2y0yfks1p.fsf@HIDDEN> <m2seonf0qr.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2seonf0qr.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:dSYoOObFn0TRyP+VX0+07sQFndwOMTtF6r4ht4TcUJBIOI54K0C
8zbSvwenP0fI/P54QsraEAy86A7u/RuCdxDYJLFgeiVRi8LKYpQzOZlYMx7tMWQyz1NokPX
wYdxZUSTdxHzJM4SsPxOt4JhPN8qPuJ1te6tQAbbTEQkzFuGPfnXSdVWOSJC8JiDLUByoLP
6NOpE9SFDpY84oLjbDsPQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:1IElaP33hso=;wT4FYH+f6wVKDfD7zOVagw/TAP7
TPditjoAzwGT3sUD0aRV3+f079i7uGw051eOJ5Avn/EBOQ/QTcW+nPviiXk69yShYMDnPK+wk
z461TSnzLoY++nl73TAfbBL97YQN/4TbyCMX9luiB8caupjBk3nflFozHwylMusUC++6QZl6k
oOEYIGMHXBnrH6pL3ZJM6ZZLMaWfU6siqbnPPBigN9nTW6hvtuL9Hg5wGPdqOeVe5qAqM3oHL
h/NeuLWcj9+tfwe/TIDWMafzOm5cNpe7mhjyO2aQPUQPzaOdJ/GuRutnLCdb41U+dXDSNV+IK
/o5HT94TAGYRuWtPV/4bBWf2pETxuTOKW2gjLNqqZh010YSWDr/9IukuBwkpQQdr5lgmOMb0o
Fs2si9zriE8Ct+WLUDulKAETkcTcCVkiBgNhZu0fq9JlFXAAJRr2p/DxpzPpmsvrgJbdahG2u
znR96ADFwH5Pkpb9Q7Er3n5+hJ42sDyIR//eKwpTPKZI43VAfq41pDWDxC6V3t7e8dvzc1oUP
TyVKpAQ4Lao9zEXM2FbqMPNVLxjFmGDxD5v87yknMzL0iC4JDf5cpY2CnI/DrhZLe5BXjZIUf
8mySO1Z2Um56u7SmSN1k+DHtceLPeWmlm11WBwRERYFp4O79ECC+5fip/yhe8p3uC7XSM235j
RMIteBDELqxG8zCQYJ9+q9qC2Pf5IE5DNVXN+N48Z3Hpfl2uqw8UyjC56ElRO1hjrB21Kvc5J
rnaZlOrwnNIQs0YdoFIEW/zJy9LWoOeyLktB0iBz9EYaMYw03UmkGn0Ix6DqaFWD3K4k6CnuI
NtBbqMgr1tyUA4k8dc0ha4qUWWzrgapis8wNQs/b/o7Z/JeywbGSAWGIsV07+hHGFtS9l7WAC
38k8zazMVzOJ/9NbmH7fsPHec12YsDZZLpnYKLlCHpg1TWq8ft2uxl2snNOeiBCV+ssOgR8FS
UzfLqk0qdeXMO8A1qJLjy4B9VxSOlxcyIbX2nA+dWmFRFB3BAL4iiAO+SsnVOiK0Fc2sFShvM
pj3O45B86Wid35SMVhaW4NLMubmfkZ/WoEEBIKKaIvuqWvreNunKpx5YyBhqxkAxUPp4J7dEW
WqQrmfuArlpLxafaWCCvH44MxO8NT32otyaV8ZwbhVL2v1n8pBUeTqtwy028PW7Fb4g24XCMJ
JI7ENEcrTBdsgSOOyKPAM8uq7uOUzptv+VsduAsDXo5SD31eTfr3yuJQ0X8RrUo5sftvgYGNI
s1QRV8fUl7aI7hQcu93f898q5cRKZdqMl5dBJ8+v/iR8dftZXafDgs2br7UZwP+lJIbnDvfi1
IzoC/hQvvGVwoqTrRy0WI57jOxecFKYArWW1JUYABi9r/TE6EgsSILajxFgwQvGU7+MISqZhG
GZl/KTshqsw1hJ6Dj13K/FJ1k7+Un5N1lOGHMD96s9jKhmERKHLGl1JkXkv/fmO/PqvAM1iHb
d0qiq/A==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
ID4gVGhpcyB3b3JrcyBiZXR0ZXIgd2l0aCB0aGUgbWVudS1iYXIsIGFsdGhvdWdoIHRoZSBt
ZW51IGJhciBpdHNlbGYgZG9lcw0KID4gc3RyYW5nZSBzdHVmZiB3aGlsZSB0aGUgbWVudSBp
cyBvcGVuLiBEb24ndCBrbm93IHdoYXQgdGhhdCBpcy4NCg0KU3RpbGwgY2FuJ3QgdGVzdCBp
dCB3aXRoIGVtYWNzIC1RIC1udw0KDQpEZWJ1Z2dlciBlbnRlcmVkLS1MaXNwIGVycm9yOiAo
dm9pZC1mdW5jdGlvbiBjb25kKikNCiAgIChjb25kKiAoKG1hdGNoKiAnbmlsIHBvcykgbmls
KSAoKG1hdGNoKiAndCBwb3MpIChsZXQqICgoeSAobW91c2UtcG9zaXRpb24pKSAoZnJhbWUg
KGlmIChjZHIgeSkgKGNhci1zYWZlIChwcm9nMSB5IC4uLikpIChzaWduYWwgJ3dyb25nLW51
bWJlci1vZi1hcmd1bWVudHMgKGxpc3QgLi4uIC4uLikpKSkgKHggKGNhci1zYWZlIChwcm9n
MSB5IChzZXRxIHkgLi4uKSkpKSkgKGxpc3QgZnJhbWUgKG9yIHggMTApIChvciB5IDEwKSkp
KSAoKG1hdGNoKiAoZXZlbnRwIGUpIHBvcykgKGxldCogKChlbmQgKGV2ZW50LWVuZCBlKSkg
KHdpbiAocG9zbi13aW5kb3cgZW5kKSkgKHggKGNhciAocG9zbi14LXkgZW5kKSkpICh5IChj
ZHIgKHBvc24teC15IGVuZCkpKSkgKGlmICh3aW5kb3dwIHdpbikgKGxldCogKCgtLWNsLXJl
c3QtLSAod2luZG93LWVkZ2VzIHdpbiBuaWwgdCkpICh3eCAoaWYgLi4uIC4uLiAuLi4pKSAo
d3kgKGNhci1zYWZlIC4uLikpIChfIChjYXItc2FmZSAuLi4pKSAoXyAoY2FyLXNhZmUgLS1j
bC1yZXN0LS0pKSkgKGxpc3QgKHdpbmRvdy1mcmFtZSB3aW4pICgrIHd4IHgpICgrIHd5IHkp
KSkgKGxldCAoKG1lbnUtYmFyLWxpbmVzIChmcmFtZS1wYXJhbWV0ZXIgd2luIC4uLikpKSAo
bGlzdCB3aW4geCAoKyB5IG1lbnUtYmFyLWxpbmVzKSkpKSkpICgobWF0Y2gqIChjb25zIChj
b25zIChudW1iZXJwIHgpIChudW1iZXJwIHkpKSAoY29ucyAod2luZG93cCB3aW4pIF8pKSBw
b3MpIChsZXQqICgoLS1jbC1yZXN0LS0gKHdpbmRvdy1lZGdlcyB3aW4gbmlsIHQpKSAod3gg
KGlmICg9IChsZW5ndGggLS1jbC1yZXN0LS0pIDQpIChjYXItc2FmZSAocHJvZzEgLS1jbC1y
ZXN0LS0gLi4uKSkgKHNpZ25hbCAnd3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cyAobGlzdCAu
Li4gLi4uKSkpKSAod3kgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNs
LXJlc3QtLSAuLi4pKSkpIChfIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEg
LS1jbC1yZXN0LS0gLi4uKSkpKSAoXyAoY2FyLXNhZmUgLS1jbC1yZXN0LS0pKSkgKGxpc3Qg
KHdpbmRvdy1mcmFtZSB3aW4pICgrIHd4IHgpICgrIHd5IHkpKSkpICgobWF0Y2gqIChjb25z
IChsaXN0IChudW1iZXJwIHgpIChudW1iZXJwIHkpKSAoY29ucyAoZnJhbWVwIGZyYW1lKSBf
KSkgcG9zKSAobGlzdCBmcmFtZSB4IHkpKSAoKG1hdGNoKiAoY29ucyAoY29ucyAobnVtYmVy
cCB4KSAobnVtYmVycCB5KSkgKGNvbnMgKGZyYW1lcCBmcmFtZSkgXykpIHBvcykgKGxpc3Qg
ZnJhbWUgeCB5KSkgKChtYXRjaCogKGNvbnMgKG51bWJlcnAgeCkgKG51bWJlcnAgeSkpIHBv
cykgKGxpc3QgKHNlbGVjdGVkLWZyYW1lKSB4IHkpKSAodCAoZXJyb3IgIiVTIGRvZXMgbm90
IG1hdGNoIGluIHR0eS1tZW51LXBvc2l0aW9uIiBwb3MpKSkNCiAgIHR0eS1tZW51LXBvc2l0
aW9uKCh0b29scyAoIzxmcmFtZSBGMSAweDIxYjVjYWQwPiAobWVudS1iYXIpICgyNiAuIDAp
IDApKSkNCiAgIChhbmQgdCAodHR5LW1lbnUtcG9zaXRpb24gcG9zaXRpb24pKQ0KICAgKGxl
dCogKCh3aGVyZSAoYW5kIHQgKHR0eS1tZW51LXBvc2l0aW9uIHBvc2l0aW9uKSkpKSAoaWYg
d2hlcmUgKGNvbmQgKChrZXltYXBwIG1lbnUpICh0dHktbWVudS1sb29wIG1lbnUgd2hlcmUp
KSAoKGNvbnNwIG1lbnUpIChsZXQqICgob3V0ZXIgKG1ha2Utc3BhcnNlLWtleW1hcCAib3V0
ZXIiKSkgKC0tY2wtdmFyLS0gbWVudSkgKGtleW1hcCBuaWwpIChuYW1lIG5pbCkgKC0tY2wt
dmFyLS0gdCkpICh3aGlsZSAoY29uc3AgLS1jbC12YXItLSkgKHNldHEga2V5bWFwIChjYXIg
LS1jbC12YXItLSkpIChzZXRxIG5hbWUgKHR0eS1tZW51LWtleW1hcC1uYW1lIGtleW1hcCAi
PyIpKSAoZGVmaW5lLWtleSBvdXRlciAodmVjdG9yIC4uLikga2V5bWFwKSAoc2V0cSAtLWNs
LXZhci0tIChjZHIgLS1jbC12YXItLSkpIChzZXRxIC0tY2wtdmFyLS0gbmlsKSkgKHR0eS1t
ZW51LWxvb3Agb3V0ZXIgd2hlcmUpIG5pbCkpICh0IChlcnJvciAiTm90IGEgbWVudTogJVMi
IG1lbnUpKSkpKQ0KICAgdHR5LW1lbnUtcG9wdXAtbWVudSgodG9vbHMgKCM8ZnJhbWUgRjEg
MHgyMWI1Y2FkMD4gKG1lbnUtYmFyKSAoMjYgLiAwKSAwKSkgKGtleW1hcCAoZ3JlcCBtZW51
LWl0ZW0gIlNlYXJjaCBGaWxlcyAoR3JlcCkuLi4iIGdyZXAgOmhlbHAgIlNlYXJjaCBmaWxl
cyBmb3Igc3RyaW5ncyBvciByZWdleHBzICh3aXRoIEdyZXApIikgKHJncmVwIG1lbnUtaXRl
bSAiUmVjdXJzaXZlIEdyZXAuLi4iIHJncmVwIDpoZWxwICJJbnRlcmFjdGl2ZWx5IGFzayBm
b3IgcGFyYW1ldGVycyBhbmQgc2VhcmNoIHJlY3Vyc2l2ZWx5IikgKHNoZWxsLWNvbW1hbmRz
IG1lbnUtaXRlbSAiU2hlbGwgQ29tbWFuZHMiIChrZXltYXAgLi4uIC4uLiAuLi4gLi4uIC4u
LiAiU2hlbGwgQ29tbWFuZHMiKSkgKGNvbXBpbGUgbWVudS1pdGVtICJDb21waWxlLi4uIiBj
b21waWxlIDpoZWxwICJJbnZva2UgY29tcGlsZXIgb3IgTWFrZSBpbiBjdXJyZW50IGJ1ZmZl
cidzIGRpcmVjdG9yeSwgdmlldyBlcnJvcnMiKSAocHJvamVjdC1jb21waWxlIG1lbnUtaXRl
bSAiQ29tcGlsZSBQcm9qZWN0Li4uIiBwcm9qZWN0LWNvbXBpbGUgOmhlbHAgIkludm9rZSBj
b21waWxlciBvciBNYWtlIGZvciBjdXJyZW50IHByb2plY3QsIHZpZXcgZXJyb3JzIikgKGdk
YiBtZW51LWl0ZW0gIkRlYnVnZ2VyIChHREIpLi4uIiBnZGIgOmhlbHAgIkRlYnVnIGEgcHJv
Z3JhbSBmcm9tIHdpdGhpbiBFbWFjcyB3aXRoIEdEQiIpIChlZGUgbWVudS1pdGVtICJQcm9q
ZWN0IFN1cHBvcnQgKEVERSkiIGdsb2JhbC1lZGUtbW9kZSA6aGVscCAiVG9nZ2xlIHRoZSBF
bWFjcyBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCAoR2xvYmFsIEVERSBtb2RlKSIgOmJ1dHRv
biAoOnRvZ2dsZSBib3VuZC1hbmQtdHJ1ZS1wIGdsb2JhbC1lZGUtbW9kZSkpIChwcm9qZWN0
IG1lbnUtaXRlbSAiUHJvamVjdCIgKGtleW1hcCAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAu
Li4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4u
IC4uLiAiUHJvamVjdCIpKSAoZWdsb3QgbWVudS1pdGVtICJMYW5ndWFnZSBTZXJ2ZXIgU3Vw
cG9ydCAoRWdsb3QpIiBlZ2xvdCA6aGVscCAiU3RhcnQgbGFuZ3VhZ2Ugc2VydmVyIHN1aXRh
YmxlIGZvciB0aGlzIGJ1ZmZlcidzIG1ham9yLW1vZGUiKSAoc2VtYW50aWMgbWVudS1pdGVt
ICJTb3VyY2UgQ29kZSBQYXJzZXJzIChTZW1hbnRpYykiIHNlbWFudGljLW1vZGUgOmhlbHAg
IlRvZ2dsZSBhdXRvbWF0aWMgcGFyc2luZyBpbiBzb3VyY2UgY29kZSBidWZmZXJzIChTZW1h
bnRpYyBtb2RlKSIgOmJ1dHRvbiAoOnRvZ2dsZSBib3VuZC1hbmQtdHJ1ZS1wIHNlbWFudGlj
LW1vZGUpKSAoc2VwYXJhdG9yLXByb2cgIi0tIikgKHNwZWxsIG1lbnUtaXRlbSAiU3BlbGwg
Q2hlY2tpbmciIGlzcGVsbC1tZW51LW1hcCkgKHNlcGFyYXRvci1zcGVsbCAiLS0iKSAoY29t
cGFyZSBtZW51LWl0ZW0gIkNvbXBhcmUgKEVkaWZmKSIgbWVudS1iYXItZWRpZmYtbWVudSkg
KGVkaWZmLW1lcmdlIG1lbnUtaXRlbSAiTWVyZ2UiIG1lbnUtYmFyLWVkaWZmLW1lcmdlLW1l
bnUpIChlcGF0Y2ggbWVudS1pdGVtICJBcHBseSBQYXRjaCIgDQptZW51LWJhci1lcGF0Y2gt
bWVudSkgKHNlcGFyYXRvci1jb21wYXJlICItLSIpICh2YyBtZW51LWl0ZW0gIlZlcnNpb24g
Q29udHJvbCIgdmMtbWVudS1tYXAgOmZpbHRlciB2Yy1tZW51LW1hcC1maWx0ZXIpIChzZXBh
cmF0b3ItdmMgIi0tIikgKGdudXMgbWVudS1pdGVtICJSZWFkIE5ldCBOZXdzIiBnbnVzIDpo
ZWxwICJSZWFkIG5ldHdvcmsgbmV3cyBncm91cHMiKSAocm1haWwgbWVudS1pdGVtICJSZWFk
IE1haWwiIG1lbnUtYmFyLXJlYWQtbWFpbCA6dmlzaWJsZSAoYW5kIHJlYWQtbWFpbC1jb21t
YW5kIC4uLikgOmhlbHAgIlJlYWQgeW91ciBtYWlsIikgKGNvbXBvc2UtbWFpbCBtZW51LWl0
ZW0gIkNvbXBvc2UgTmV3IE1haWwiIGNvbXBvc2UtbWFpbCA6dmlzaWJsZSAoYW5kIG1haWwt
dXNlci1hZ2VudCAuLi4pIDpoZWxwICJTdGFydCB3cml0aW5nIGEgbmV3IG1haWwgbWVzc2Fn
ZSIpIChkaXJlY3Rvcnktc2VhcmNoIG1lbnUtaXRlbSAiRGlyZWN0b3J5IFNlcnZlcnMiIGV1
ZGMtdG9vbHMtbWVudSkgKGJyb3dzZS13ZWIgbWVudS1pdGVtICJCcm93c2UgdGhlIFdlYi4u
LiIgYnJvd3NlLXdlYikgKHNlcGFyYXRvci1uZXQgIi0tIikgLi4uKSkNCiAgIGFwcGx5KHR0
eS1tZW51LXBvcHVwLW1lbnUgKCh0b29scyAoIzxmcmFtZSBGMSAweDIxYjVjYWQwPiAobWVu
dS1iYXIpICgyNiAuIDApIDApKSAoa2V5bWFwIChncmVwIG1lbnUtaXRlbSAiU2VhcmNoIEZp
bGVzIChHcmVwKS4uLiIgZ3JlcCA6aGVscCAiU2VhcmNoIGZpbGVzIGZvciBzdHJpbmdzIG9y
IHJlZ2V4cHMgKHdpdGggR3JlcCkiKSAocmdyZXAgbWVudS1pdGVtICJSZWN1cnNpdmUgR3Jl
cC4uLiIgcmdyZXAgOmhlbHAgIkludGVyYWN0aXZlbHkgYXNrIGZvciBwYXJhbWV0ZXJzIGFu
ZCBzZWFyY2ggcmVjdXJzaXZlbHkiKSAoc2hlbGwtY29tbWFuZHMgbWVudS1pdGVtICJTaGVs
bCBDb21tYW5kcyIgKGtleW1hcCAuLi4gLi4uIC4uLiAuLi4gLi4uICJTaGVsbCBDb21tYW5k
cyIpKSAoY29tcGlsZSBtZW51LWl0ZW0gIkNvbXBpbGUuLi4iIGNvbXBpbGUgOmhlbHAgIklu
dm9rZSBjb21waWxlciBvciBNYWtlIGluIGN1cnJlbnQgYnVmZmVyJ3MgZGlyZWN0b3J5LCB2
aWV3IGVycm9ycyIpIChwcm9qZWN0LWNvbXBpbGUgbWVudS1pdGVtICJDb21waWxlIFByb2pl
Y3QuLi4iIHByb2plY3QtY29tcGlsZSA6aGVscCAiSW52b2tlIGNvbXBpbGVyIG9yIE1ha2Ug
Zm9yIGN1cnJlbnQgcHJvamVjdCwgdmlldyBlcnJvcnMiKSAoZ2RiIG1lbnUtaXRlbSAiRGVi
dWdnZXIgKEdEQikuLi4iIGdkYiA6aGVscCAiRGVidWcgYSBwcm9ncmFtIGZyb20gd2l0aGlu
IEVtYWNzIHdpdGggR0RCIikgKGVkZSBtZW51LWl0ZW0gIlByb2plY3QgU3VwcG9ydCAoRURF
KSIgZ2xvYmFsLWVkZS1tb2RlIDpoZWxwICJUb2dnbGUgdGhlIEVtYWNzIERldmVsb3BtZW50
IEVudmlyb25tZW50IChHbG9iYWwgRURFIG1vZGUpIiA6YnV0dG9uICg6dG9nZ2xlIGJvdW5k
LWFuZC10cnVlLXAgZ2xvYmFsLWVkZS1tb2RlKSkgKHByb2plY3QgbWVudS1pdGVtICJQcm9q
ZWN0IiAoa2V5bWFwIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAu
Li4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uICJQcm9qZWN0Iikp
IChlZ2xvdCBtZW51LWl0ZW0gIkxhbmd1YWdlIFNlcnZlciBTdXBwb3J0IChFZ2xvdCkiIGVn
bG90IDpoZWxwICJTdGFydCBsYW5ndWFnZSBzZXJ2ZXIgc3VpdGFibGUgZm9yIHRoaXMgYnVm
ZmVyJ3MgbWFqb3ItbW9kZSIpIChzZW1hbnRpYyBtZW51LWl0ZW0gIlNvdXJjZSBDb2RlIFBh
cnNlcnMgKFNlbWFudGljKSIgc2VtYW50aWMtbW9kZSA6aGVscCAiVG9nZ2xlIGF1dG9tYXRp
YyBwYXJzaW5nIGluIHNvdXJjZSBjb2RlIGJ1ZmZlcnMgKFNlbWFudGljIG1vZGUpIiA6YnV0
dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAgc2VtYW50aWMtbW9kZSkpIChzZXBhcmF0
b3ItcHJvZyAiLS0iKSAoc3BlbGwgbWVudS1pdGVtICJTcGVsbCBDaGVja2luZyIgaXNwZWxs
LW1lbnUtbWFwKSAoc2VwYXJhdG9yLXNwZWxsICItLSIpIChjb21wYXJlIG1lbnUtaXRlbSAi
Q29tcGFyZSAoRWRpZmYpIiBtZW51LWJhci1lZGlmZi1tZW51KSAoZWRpZmYtbWVyZ2UgbWVu
dS1pdGVtICJNZXJnZSIgbWVudS1iYXItZWRpZmYtbWVyZ2UtbWVudSkgKGVwYXRjaCBtZW51
LWl0ZW0gIkFwcGx5IFBhdGNoIiANCm1lbnUtYmFyLWVwYXRjaC1tZW51KSAoc2VwYXJhdG9y
LWNvbXBhcmUgIi0tIikgKHZjIG1lbnUtaXRlbSAiVmVyc2lvbiBDb250cm9sIiB2Yy1tZW51
LW1hcCA6ZmlsdGVyIHZjLW1lbnUtbWFwLWZpbHRlcikgKHNlcGFyYXRvci12YyAiLS0iKSAo
Z251cyBtZW51LWl0ZW0gIlJlYWQgTmV0IE5ld3MiIGdudXMgOmhlbHAgIlJlYWQgbmV0d29y
ayBuZXdzIGdyb3VwcyIpIChybWFpbCBtZW51LWl0ZW0gIlJlYWQgTWFpbCIgbWVudS1iYXIt
cmVhZC1tYWlsIDp2aXNpYmxlIChhbmQgcmVhZC1tYWlsLWNvbW1hbmQgLi4uKSA6aGVscCAi
UmVhZCB5b3VyIG1haWwiKSAoY29tcG9zZS1tYWlsIG1lbnUtaXRlbSAiQ29tcG9zZSBOZXcg
TWFpbCIgY29tcG9zZS1tYWlsIDp2aXNpYmxlIChhbmQgbWFpbC11c2VyLWFnZW50IC4uLikg
OmhlbHAgIlN0YXJ0IHdyaXRpbmcgYSBuZXcgbWFpbCBtZXNzYWdlIikgKGRpcmVjdG9yeS1z
ZWFyY2ggbWVudS1pdGVtICJEaXJlY3RvcnkgU2VydmVycyIgZXVkYy10b29scy1tZW51KSAo
YnJvd3NlLXdlYiBtZW51LWl0ZW0gIkJyb3dzZSB0aGUgV2ViLi4uIiBicm93c2Utd2ViKSAo
c2VwYXJhdG9yLW5ldCAiLS0iKSAoY2FsZW5kYXIgbWVudS1pdGVtICJDYWxlbmRhciIgY2Fs
ZW5kYXIgOmhlbHAgIkludm9rZSB0aGUgRW1hY3MgYnVpbHQtaW4gY2FsZW5kYXIiKSAoY2Fs
YyBtZW51LWl0ZW0gIlByb2dyYW1tYWJsZSBDYWxjdWxhdG9yIiBjYWxjIDpoZWxwICJJbnZv
a2UgdGhlIEVtYWNzIGJ1aWx0LWluIGZ1bGwgc2NpZW50aWZpYyBjYWxjdWxhdG9yIikgKHNp
bXBsZS1jYWxjdWxhdG9yIG1lbnUtaXRlbSAiU2ltcGxlIENhbGN1bGF0b3IiIGNhbGN1bGF0
b3IgOmhlbHAgIkludm9rZSB0aGUgRW1hY3MgYnVpbHQtaW4gcXVpY2sgY2FsY3VsYXRvciIp
IChzZXBhcmF0b3ItZW5jcnlwdGlvbi1kZWNyeXB0aW9uICItLSIpIChlbmNyeXB0aW9uLWRl
Y3J5cHRpb24gbWVudS1pdGVtICJFbmNyeXB0aW9uL0RlY3J5cHRpb24iIChrZXltYXAgLi4u
IC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAu
Li4gIkVuY3J5cHRpb24vRGVjcnlwdGlvbiIpKSAoc2VwYXJhdG9yLWdhbWVzICItLSIpIC4u
LikpKQ0KICAgeC1wb3B1cC1tZW51KCh0b29scyAoIzxmcmFtZSBGMSAweDIxYjVjYWQwPiAo
bWVudS1iYXIpICgyNiAuIDApIDApKSAoa2V5bWFwIChncmVwIG1lbnUtaXRlbSAiU2VhcmNo
IEZpbGVzIChHcmVwKS4uLiIgZ3JlcCA6aGVscCAiU2VhcmNoIGZpbGVzIGZvciBzdHJpbmdz
IG9yIHJlZ2V4cHMgKHdpdGggR3JlcCkiKSAocmdyZXAgbWVudS1pdGVtICJSZWN1cnNpdmUg
R3JlcC4uLiIgcmdyZXAgOmhlbHAgIkludGVyYWN0aXZlbHkgYXNrIGZvciBwYXJhbWV0ZXJz
IGFuZCBzZWFyY2ggcmVjdXJzaXZlbHkiKSAoc2hlbGwtY29tbWFuZHMgbWVudS1pdGVtICJT
aGVsbCBDb21tYW5kcyIgKGtleW1hcCAuLi4gLi4uIC4uLiAuLi4gLi4uICJTaGVsbCBDb21t
YW5kcyIpKSAoY29tcGlsZSBtZW51LWl0ZW0gIkNvbXBpbGUuLi4iIGNvbXBpbGUgOmhlbHAg
Ikludm9rZSBjb21waWxlciBvciBNYWtlIGluIGN1cnJlbnQgYnVmZmVyJ3MgZGlyZWN0b3J5
LCB2aWV3IGVycm9ycyIpIChwcm9qZWN0LWNvbXBpbGUgbWVudS1pdGVtICJDb21waWxlIFBy
b2plY3QuLi4iIHByb2plY3QtY29tcGlsZSA6aGVscCAiSW52b2tlIGNvbXBpbGVyIG9yIE1h
a2UgZm9yIGN1cnJlbnQgcHJvamVjdCwgdmlldyBlcnJvcnMiKSAoZ2RiIG1lbnUtaXRlbSAi
RGVidWdnZXIgKEdEQikuLi4iIGdkYiA6aGVscCAiRGVidWcgYSBwcm9ncmFtIGZyb20gd2l0
aGluIEVtYWNzIHdpdGggR0RCIikgKGVkZSBtZW51LWl0ZW0gIlByb2plY3QgU3VwcG9ydCAo
RURFKSIgZ2xvYmFsLWVkZS1tb2RlIDpoZWxwICJUb2dnbGUgdGhlIEVtYWNzIERldmVsb3Bt
ZW50IEVudmlyb25tZW50IChHbG9iYWwgRURFIG1vZGUpIiA6YnV0dG9uICg6dG9nZ2xlIGJv
dW5kLWFuZC10cnVlLXAgZ2xvYmFsLWVkZS1tb2RlKSkgKHByb2plY3QgbWVudS1pdGVtICJQ
cm9qZWN0IiAoa2V5bWFwIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4u
LiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uICJQcm9qZWN0
IikpIChlZ2xvdCBtZW51LWl0ZW0gIkxhbmd1YWdlIFNlcnZlciBTdXBwb3J0IChFZ2xvdCki
IGVnbG90IDpoZWxwICJTdGFydCBsYW5ndWFnZSBzZXJ2ZXIgc3VpdGFibGUgZm9yIHRoaXMg
YnVmZmVyJ3MgbWFqb3ItbW9kZSIpIChzZW1hbnRpYyBtZW51LWl0ZW0gIlNvdXJjZSBDb2Rl
IFBhcnNlcnMgKFNlbWFudGljKSIgc2VtYW50aWMtbW9kZSA6aGVscCAiVG9nZ2xlIGF1dG9t
YXRpYyBwYXJzaW5nIGluIHNvdXJjZSBjb2RlIGJ1ZmZlcnMgKFNlbWFudGljIG1vZGUpIiA6
YnV0dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAgc2VtYW50aWMtbW9kZSkpIChzZXBh
cmF0b3ItcHJvZyAiLS0iKSAoc3BlbGwgbWVudS1pdGVtICJTcGVsbCBDaGVja2luZyIgaXNw
ZWxsLW1lbnUtbWFwKSAoc2VwYXJhdG9yLXNwZWxsICItLSIpIChjb21wYXJlIG1lbnUtaXRl
bSAiQ29tcGFyZSAoRWRpZmYpIiBtZW51LWJhci1lZGlmZi1tZW51KSAoZWRpZmYtbWVyZ2Ug
bWVudS1pdGVtICJNZXJnZSIgbWVudS1iYXItZWRpZmYtbWVyZ2UtbWVudSkgKGVwYXRjaCBt
ZW51LWl0ZW0gIkFwcGx5IFBhdGNoIiANCm1lbnUtYmFyLWVwYXRjaC1tZW51KSAoc2VwYXJh
dG9yLWNvbXBhcmUgIi0tIikgKHZjIG1lbnUtaXRlbSAiVmVyc2lvbiBDb250cm9sIiB2Yy1t
ZW51LW1hcCA6ZmlsdGVyIHZjLW1lbnUtbWFwLWZpbHRlcikgKHNlcGFyYXRvci12YyAiLS0i
KSAoZ251cyBtZW51LWl0ZW0gIlJlYWQgTmV0IE5ld3MiIGdudXMgOmhlbHAgIlJlYWQgbmV0
d29yayBuZXdzIGdyb3VwcyIpIChybWFpbCBtZW51LWl0ZW0gIlJlYWQgTWFpbCIgbWVudS1i
YXItcmVhZC1tYWlsIDp2aXNpYmxlIChhbmQgcmVhZC1tYWlsLWNvbW1hbmQgLi4uKSA6aGVs
cCAiUmVhZCB5b3VyIG1haWwiKSAoY29tcG9zZS1tYWlsIG1lbnUtaXRlbSAiQ29tcG9zZSBO
ZXcgTWFpbCIgY29tcG9zZS1tYWlsIDp2aXNpYmxlIChhbmQgbWFpbC11c2VyLWFnZW50IC4u
LikgOmhlbHAgIlN0YXJ0IHdyaXRpbmcgYSBuZXcgbWFpbCBtZXNzYWdlIikgKGRpcmVjdG9y
eS1zZWFyY2ggbWVudS1pdGVtICJEaXJlY3RvcnkgU2VydmVycyIgZXVkYy10b29scy1tZW51
KSAoYnJvd3NlLXdlYiBtZW51LWl0ZW0gIkJyb3dzZSB0aGUgV2ViLi4uIiBicm93c2Utd2Vi
KSAoc2VwYXJhdG9yLW5ldCAiLS0iKSAuLi4pKQ0KICAgcG9wdXAtbWVudSgoa2V5bWFwIChn
cmVwIG1lbnUtaXRlbSAiU2VhcmNoIEZpbGVzIChHcmVwKS4uLiIgZ3JlcCA6aGVscCAiU2Vh
cmNoIGZpbGVzIGZvciBzdHJpbmdzIG9yIHJlZ2V4cHMgKHdpdGggR3JlcCkiKSAocmdyZXAg
bWVudS1pdGVtICJSZWN1cnNpdmUgR3JlcC4uLiIgcmdyZXAgOmhlbHAgIkludGVyYWN0aXZl
bHkgYXNrIGZvciBwYXJhbWV0ZXJzIGFuZCBzZWFyY2ggcmVjdXJzaXZlbHkiKSAoc2hlbGwt
Y29tbWFuZHMgbWVudS1pdGVtICJTaGVsbCBDb21tYW5kcyIgKGtleW1hcCAuLi4gLi4uIC4u
LiAuLi4gLi4uICJTaGVsbCBDb21tYW5kcyIpKSAoY29tcGlsZSBtZW51LWl0ZW0gIkNvbXBp
bGUuLi4iIGNvbXBpbGUgOmhlbHAgIkludm9rZSBjb21waWxlciBvciBNYWtlIGluIGN1cnJl
bnQgYnVmZmVyJ3MgZGlyZWN0b3J5LCB2aWV3IGVycm9ycyIpIChwcm9qZWN0LWNvbXBpbGUg
bWVudS1pdGVtICJDb21waWxlIFByb2plY3QuLi4iIHByb2plY3QtY29tcGlsZSA6aGVscCAi
SW52b2tlIGNvbXBpbGVyIG9yIE1ha2UgZm9yIGN1cnJlbnQgcHJvamVjdCwgdmlldyBlcnJv
cnMiKSAoZ2RiIG1lbnUtaXRlbSAiRGVidWdnZXIgKEdEQikuLi4iIGdkYiA6aGVscCAiRGVi
dWcgYSBwcm9ncmFtIGZyb20gd2l0aGluIEVtYWNzIHdpdGggR0RCIikgKGVkZSBtZW51LWl0
ZW0gIlByb2plY3QgU3VwcG9ydCAoRURFKSIgZ2xvYmFsLWVkZS1tb2RlIDpoZWxwICJUb2dn
bGUgdGhlIEVtYWNzIERldmVsb3BtZW50IEVudmlyb25tZW50IChHbG9iYWwgRURFIG1vZGUp
IiA6YnV0dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAgZ2xvYmFsLWVkZS1tb2RlKSkg
KHByb2plY3QgbWVudS1pdGVtICJQcm9qZWN0IiAoa2V5bWFwIC4uLiAuLi4gLi4uIC4uLiAu
Li4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4u
IC4uLiAuLi4gLi4uICJQcm9qZWN0IikpIChlZ2xvdCBtZW51LWl0ZW0gIkxhbmd1YWdlIFNl
cnZlciBTdXBwb3J0IChFZ2xvdCkiIGVnbG90IDpoZWxwICJTdGFydCBsYW5ndWFnZSBzZXJ2
ZXIgc3VpdGFibGUgZm9yIHRoaXMgYnVmZmVyJ3MgbWFqb3ItbW9kZSIpIChzZW1hbnRpYyBt
ZW51LWl0ZW0gIlNvdXJjZSBDb2RlIFBhcnNlcnMgKFNlbWFudGljKSIgc2VtYW50aWMtbW9k
ZSA6aGVscCAiVG9nZ2xlIGF1dG9tYXRpYyBwYXJzaW5nIGluIHNvdXJjZSBjb2RlIGJ1ZmZl
cnMgKFNlbWFudGljIG1vZGUpIiA6YnV0dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAg
c2VtYW50aWMtbW9kZSkpIChzZXBhcmF0b3ItcHJvZyAiLS0iKSAoc3BlbGwgbWVudS1pdGVt
ICJTcGVsbCBDaGVja2luZyIgaXNwZWxsLW1lbnUtbWFwKSAoc2VwYXJhdG9yLXNwZWxsICIt
LSIpIChjb21wYXJlIG1lbnUtaXRlbSAiQ29tcGFyZSAoRWRpZmYpIiBtZW51LWJhci1lZGlm
Zi1tZW51KSAoZWRpZmYtbWVyZ2UgbWVudS1pdGVtICJNZXJnZSIgbWVudS1iYXItZWRpZmYt
bWVyZ2UtbWVudSkgKGVwYXRjaCBtZW51LWl0ZW0gIkFwcGx5IFBhdGNoIiBtZW51LWJhci1l
cGF0Y2gtbWVudSkgKHNlcGFyYXRvci1jb21wYXJlICItLSIpICh2YyBtZW51LWl0ZW0gIlZl
cnNpb24gDQpDb250cm9sIiB2Yy1tZW51LW1hcCA6ZmlsdGVyIHZjLW1lbnUtbWFwLWZpbHRl
cikgKHNlcGFyYXRvci12YyAiLS0iKSAoZ251cyBtZW51LWl0ZW0gIlJlYWQgTmV0IE5ld3Mi
IGdudXMgOmhlbHAgIlJlYWQgbmV0d29yayBuZXdzIGdyb3VwcyIpIChybWFpbCBtZW51LWl0
ZW0gIlJlYWQgTWFpbCIgbWVudS1iYXItcmVhZC1tYWlsIDp2aXNpYmxlIChhbmQgcmVhZC1t
YWlsLWNvbW1hbmQgLi4uKSA6aGVscCAiUmVhZCB5b3VyIG1haWwiKSAoY29tcG9zZS1tYWls
IG1lbnUtaXRlbSAiQ29tcG9zZSBOZXcgTWFpbCIgY29tcG9zZS1tYWlsIDp2aXNpYmxlIChh
bmQgbWFpbC11c2VyLWFnZW50IC4uLikgOmhlbHAgIlN0YXJ0IHdyaXRpbmcgYSBuZXcgbWFp
bCBtZXNzYWdlIikgKGRpcmVjdG9yeS1zZWFyY2ggbWVudS1pdGVtICJEaXJlY3RvcnkgU2Vy
dmVycyIgZXVkYy10b29scy1tZW51KSAoYnJvd3NlLXdlYiBtZW51LWl0ZW0gIkJyb3dzZSB0
aGUgV2ViLi4uIiBicm93c2Utd2ViKSAoc2VwYXJhdG9yLW5ldCAiLS0iKSAuLi4pICgjPHdp
bmRvdyAxIG9uICpzY3JhdGNoKj4gMjcgKDI2IC4gMCkgMCBuaWwgMjcgKDI2IC4gMCkgbmls
ICgwIC4gMCkgKDEgLiAwKSkgbmlsIHQpDQogICBtZW51LWJhci1vcGVuKG5pbCAyNikNCiAg
IG1lbnUtYmFyLW9wZW4tbW91c2UoKG1vdXNlLTEgKG5pbCBtZW51LWJhciAoMjggLiAwKSA5
NjgpKSkNCiAgIGZ1bmNhbGwtaW50ZXJhY3RpdmVseShtZW51LWJhci1vcGVuLW1vdXNlICht
b3VzZS0xIChuaWwgbWVudS1iYXIgKDI4IC4gMCkgOTY4KSkpDQogICBjYWxsLWludGVyYWN0
aXZlbHkobWVudS1iYXItb3Blbi1tb3VzZSBuaWwgbmlsKQ0KICAgY29tbWFuZC1leGVjdXRl
KG1lbnUtYmFyLW9wZW4tbW91c2UpDQoNCm1hcnRpbg0K
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 18:10:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 13:10:17 2025
Received: from localhost ([127.0.0.1]:46189 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1thBl3-0008D4-0n
for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 13:10:17 -0500
Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]:47305)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1thBkz-0008BE-E5
for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 13:10:14 -0500
Received: by mail-ej1-x635.google.com with SMTP id
a640c23a62f3a-aaeec07b705so590376166b.2
for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 10:10:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1739124607; x=1739729407; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=QnzhzdQhas+zYuwC2rYcrNfQNZg6viZ/FuMsYxBvl08=;
b=EWQ71Z2r+FR39x4q1u7SMsmMwRLt0iVl4c3111Y7qnOk4Kws+kU4dtopt/nyiooPcz
agbbmI+BhAhJBXP1t0koi8KboenK5YH71PllX8ARpNBBPbiEusaES3bHxMcrNVs2OL/Z
i9mZPunsNIB3VPcBfsLNyNXVbChny+Wgr7fLIO1Savh/Gn4E8G+XIoT4rZDGYyGxV8EX
hjZN3YWSkWoYHDzlJV42hcgX1L3tyBijJUB2vNssG81oae1HtmibDPYxNZI4Ff4Va/nC
dOn1WKJYIn97lnkQUIzJRYIUvNvIqcDPOoMQuq9mWJzq0Y7xt+aKEA5wZjtrdKWuthiH
FZ9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1739124607; x=1739729407;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=QnzhzdQhas+zYuwC2rYcrNfQNZg6viZ/FuMsYxBvl08=;
b=jpD11WQKSHwTO81QxIPEdMJcSjs/OSy+Jpd28Yu8q0jyjzxbBgA44Qn8e/SW19zeXf
ky6XxZF396/Y9GfWAETlJXN5pvMrxIYlkiz6D2ozI/lSPsX8xw3hRwVwiqLeWN2+PcY1
AvmiCGUmYIhKrPW4v8KEleBY1/n2+wWsbLfv7XzqgMCDiPIl+iLbW1pRtxfbpXkKtyvv
ii3aAgIRfDQtEg4kMMKRMJLKi59KJgg4ztkJDTNpoLCN+bj66n2UeDo9F3vsA99iJd9q
I243xd472UUGs3QH2HCQKu1b+Bl0dK4PAv+vN2396cR0Ndog3WguWypY3ltTmqKl4ZKN
q+Ew==
X-Forwarded-Encrypted: i=1;
AJvYcCXQNy0eJ7hbchC5P2Xnte+ArhwjyumDtras1Ho2YT6Ubt3gABKXAUmMRyCwdvd9HDIQXCMSRg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzbUID0BBTFsrqiX3PthWCBUHeBMDaxtwXFIIOiL11zLlAyAPMe
aZEAJyBARXvTWyZQpM9WP7EiLGJhSbNXwKQMeHukejc41+H/fCaJbH7EXA==
X-Gm-Gg: ASbGncvTGbktf66IMvhx0dF1D2WdgRrWregddlf8Cgo8tZWE49PZv3cZgMRJx2efjik
noUSVwftx+jgoAhr1Qd/U9CkKw+S9h1GJhowK5OB+ffjtGPLF7Lg9D04ssQ7QbKf3qQir3oFbgq
xc8uWqe3sxSjeTcel49xwgbFjAWFvcPS8YVpdhCQq8+hwtKKB2DSz1bS6gsGumIYFhxpvxEcjQx
3BLBCaSCgy/lRM1DKGRJWj8RS9O7C1WKZrZ361q8HFcNiaXbiqhDWIka6LMdmjGC6+OCMTD267h
ym653nFqlRwIE6gN9VaHqd1oMXz2EJizMDX1gcEixYfIDXW/f+teBoiXsBs1QpERY8poWgQyROO
BHD24x+Z1uPbFWMDzLs3nlc1i
X-Google-Smtp-Source: AGHT+IEIqemKoOuhNoYNDeR0baJArTcg3lu8MJNhK2TRI0DpK0fuApLRRkSFbuw5UPU0WWcmwy1SAw==
X-Received: by 2002:a17:907:9719:b0:aaf:8f8e:6bf4 with SMTP id
a640c23a62f3a-ab789aeacc1mr1087002266b.26.1739124606345;
Sun, 09 Feb 2025 10:10:06 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
[2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab7809a2ec4sm639317266b.116.2025.02.09.10.10.05
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 09 Feb 2025 10:10:05 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <m2y0yfks1p.fsf@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
<m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
<m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
<e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
<m234gnmjvi.fsf@HIDDEN>
<31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
<m2y0yfks1p.fsf@HIDDEN>
Date: Sun, 09 Feb 2025 19:10:04 +0100
Message-ID: <m2seonf0qr.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> martin rudalics <rudalics@HIDDEN> writes:
>
>>> Sachen gibt's :-/.
>>
>> Clicking with the mouse on an arbitrary menubar item gets me
>
> Yeah, I didn't do the integration with the rest of Emacs yet. Looks like
> another dark and ancient corner of Emacs. Insofar, please disregard
> tty-menu-mode at the moment. But the rest is kind of funny, help-echo,
> C-s in menus :-).
>
> Wie auch immer.
This works better with the menu-bar, although the menu bar itself does
strange stuff while the menu is open. Don't know what that is.
--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable
;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp
;; Copyright (C) 2025 Gerd M=C3=B6llmann
;; This file is not part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
;;; Todo
;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu. Close it by moving the selection out.
;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)
;; menu-bar-menu doesn't work (list of keymaps?)
(eval-when-compile (require 'cl-lib))
(require 'eieio)
(defclass tty-menu-element () ()
:documentation "Base class for elements of a menu.")
(defclass tty-menu-pane (tty-menu-element)
((items :initarg :items :initform nil :type t)
(buffer :initarg :buffer :type buffer)
(layout :type list))
:documentation "Class for menu panes.")
(defclass tty-menu-item (tty-menu-element)
((name :initarg :name :type string)
(enable :initarg :enable :initform t :type t)
(help :initarg :help :initform nil :type t)
(visible :initarg :visible :initform t :type t)
(key-sequence :initarg :key-sequence :initform nil :type t)
(keys :initarg :keys :initform nil :type t)
(filter :initarg :filter :initform nil :type t)
(button :initarg :button :initform nil :type t)
(selected :initarg :selected :initform nil :type t)
(binding :initarg :binding :initform nil :type t)))
(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())
(defclass tty-menu-separator (tty-menu-item)
((sep :initform "-" :type string :reader tty-menu-sep)))
(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
(with-slots (name sep enable) item
(setf enable nil)
(cl-multiple-value-bind (ch disp)
(pcase name
("--space" (cl-values ?\s nil))
("--double-line" (cl-values ?=3D 'box-double-horizontal))
(_ (cl-values ?- 'box-horizontal)))
(setf sep
(make-string 1
(or (and disp
(let ((c (display-table-slot
standard-display-table disp)))
(and (characterp c) c)))
ch))))))
(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")
(defvar tty-menu-triangle "=E2=96=B6")
(defvar tty-menu-radio-on "=E2=97=8F")
(defvar tty-menu-radio-off "=E2=97=AF")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=E2=96=A1")
(defun tty-menu-selectable-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-visible-p (item)
(eval (slot-value item 'visible)))
(defun tty-menu-enabled-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-ninsert (n x)
(cl-loop repeat n do (insert x)))
(cl-defgeneric tty-menu-button-string (item)
(:method ((_ tty-menu-item)) "")
(:method ((r tty-menu-radio))
(format tty-menu-button-format
(if (slot-value r 'selected)
tty-menu-radio-on tty-menu-radio-off)))
(:method ((c tty-menu-checkbox))
(format tty-menu-button-format
(if (slot-value c 'selected)
tty-menu-checkbox-on tty-menu-checkbox-off)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-name-string (item)
(:method ((item tty-menu-item))
(format tty-menu-name-format (slot-value item 'name)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-key-string (item)
(:method ((item tty-menu-item))
(format tty-menu-key-format
(with-slots (binding) item
(cond ((commandp binding)
(key-description (where-is-internal binding nil t)))
((keymapp binding)
tty-menu-triangle)
(t "")))))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-draw-button (item pane)
(:method ((_item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width ?\s))))
(:method ((item tty-menu-button) _pane)
(with-slots (selected button) item
(cl-destructuring-bind (_ . form) button
(setf selected (eval form))
(insert (tty-menu-button-string item)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-name (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width _ _) layout
(with-slots (name) item
(insert (tty-menu-name-string item))
(indent-to (+ left-border button name-width))))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ name-width _ _) layout
(tty-menu-ninsert name-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-key (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width key-width _) la=
yout
(insert (tty-menu-key-string item))
(indent-to (+ left-border button name-width key-width)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ _ key-width _) layout
(tty-menu-ninsert key-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-finish (item pane)
(:method ((item tty-menu-item) _)
(let* ((enabled (tty-menu-enabled-p item))
(face (if enabled 'tty-menu-enabled-face
'tty-menu-disabled-face)))
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
(put-text-property (pos-bol) (pos-eol) 'face face))
(when-let* ((help (slot-value item 'help)))
(put-text-property (pos-bol) (pos-eol) 'help-echo help)))
(:method ((_item tty-menu-separator) _)
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
(put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))
(cl-defgeneric tty-menu-layout (pane)
(:method ((pane tty-menu-pane))
(with-slots (items layout) pane
(cl-loop
with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
for i in items
maximize (string-width (tty-menu-button-string i)) into button
maximize (string-width (tty-menu-name-string i)) into name
maximize (string-width (tty-menu-key-string i)) into key
finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))
(defun tty-menu-try-place-point (selectable old-line)
(goto-char (point-min))
(if (nth old-line selectable)
(forward-line old-line)
(let ((next (cl-loop for i from (1+ old-line)
to (1- (length selectable))
when (nth i selectable) return i))
(prev (cl-loop for i downfrom (1- old-line) to 0
when (nth i selectable) return i)))
(cond (next (forward-line next))
(prev (forward-line prev))))))
(cl-defgeneric tty-menu-draw (item pane)
(:method ((pane tty-menu-pane) line)
(with-slots (buffer items) pane
(with-current-buffer buffer
(let ((old-line (or line (1- (line-number-at-pos)))))
(erase-buffer)
(tty-menu-layout pane)
(let ((selectable
(cl-loop for i in items
when (tty-menu-visible-p i)
do (tty-menu-draw i pane)
and collect (tty-menu-selectable-p i))))
(tty-menu-try-place-point selectable old-line))))))
(:method :around ((item tty-menu-item) pane)
(let ((start (point)))
(insert (format tty-menu-left-border-format ""))
(cl-call-next-method)
(insert (format tty-menu-right-border-format ""))
(tty-menu-draw-finish item pane)
(insert ?\n)
(put-text-property start (point) 'tty-menu-item item)))
(:method ((item tty-menu-item) pane)
(tty-menu-draw-button item pane)
(tty-menu-draw-name item pane)
(tty-menu-draw-key item pane)))
(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)
(cl-defgeneric tty-menu-select-item (item how)
(:method ((item tty-menu-item) how)
(when-let* ((enabled (tty-menu-enabled-p item)))
(throw 'tty-menu-item-selected (cons item how))))
(:method ((_item tty-menu-separator) _))
(:method ((item tty-menu-button) _)
(with-slots (binding) item
(when (commandp binding)
(call-interactively binding))
(tty-menu-draw tty-menu-pane-drawn nil))))
(defun tty-menu-create-buffer (pane)
"Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
(with-slots (buffer) pane
(with-current-buffer buffer
(dolist (var '((mode-line-format . nil)
(header-line-format . nil)
(tab-line-format . nil)
(tab-bar-format . nil)
(frame-title-format . "")
(truncate-lines . t)
(cursor-in-non-selected-windows . nil)
(cursor-type . nil)
(show-trailing-whitespace . nil)
(display-line-numbers . nil)
(left-fringe-width . nil)
(right-fringe-width . nil)
(left-margin-width . 0)
(right-margin-width . 0)
(fringes-outside-margins . 0)
(scroll-conservatively . 1)))
(set (make-local-variable (car var)) (cdr var)))
(let ((inhibit-modification-hooks t)
(inhibit-read-only t)
(indent-tabs-mode nil))
(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
(tty-menu-draw pane 0)
(cl-flet ((line-width ()
(save-excursion
(goto-char (point-min))
(goto-char (line-end-position))
(current-column))))
(list (current-buffer)
(line-width)
(count-lines (point-min) (point-max))))))))
(defun tty-menu-make-element (item)
(cl-labels ((separator? (name) (string-prefix-p "--" name))
(button? (props) (plist-get props :button))
(radio? (props) (eq (car (button? props)) :radio))
(toggle? (props) (eq (car (button? props)) :toggle)))
;; COND* complains about unknown pattern (PREDICATE symbol) if
;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
;; symbol)) instead.
(cond*
((match* (cons 'menu-item
(cons (constrain name (separator? name))
props))
item)
(apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
((match* (list 'menu-item name) item)
(make-instance 'tty-menu-item :name name :enable nil))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (radio? props)))))
item)
(apply #'make-instance 'tty-menu-radio
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (toggle? props)))))
item)
(apply #'make-instance 'tty-menu-checkbox
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding props)))
item)
(apply #'make-instance 'tty-menu-item
(cl-list* :name name :binding binding props)))
((match* (cons (constrain name (separator? name)) _)
item)
(make-instance 'tty-menu-separator :name name))
((match* (cons name
(cons help
binding))
item)
(make-instance 'tty-menu-item :name name :binding binding :help help))
((match* (cons name binding) item)
(make-instance 'tty-menu-item :name name :binding binding))
(t (error "No match for menu item %S" item)))))
(defun tty-menu-keymap-name (keymap)
(let ((name (last keymap)))
(and (stringp (car name)) (car name))))
(defun tty-menu-make-pane-buffer (keymap)
(cl-labels
((pane-buffer-name ()
(if-let* ((name (tty-menu-keymap-name keymap)))
(format " *tty-menu-%s*" name)
(generate-new-buffer-name " *tty-menu--")))
(make-pane ()
(make-instance
'tty-menu-pane
:buffer (get-buffer-create (pane-buffer-name))
:items (cl-loop for b being the key-bindings of keymap
collect (tty-menu-make-element b)))))
(tty-menu-create-buffer (make-pane))))
(defvar tty-menu-frame-parameters
`((visibility . nil)
(background-color . "grey20")
(foreground-color . "white")
(width . 0) (height . 0)
(min-width . t) (min-height . t)
(no-accept-focus . t)
(no-focus-on-map . t)
(border-width . 0)
(child-frame-border-width . 1)
(left-fringe . 0)
(right-fringe . 0)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(tty-menu-bar-lines . 0)
(tool-bar-lines . 0)
(tab-bar-lines . 0)
(no-other-frame . t)
(no-other-window . t)
(no-delete-other-windows . t)
(unsplittable . t)
(undecorated . t)
(cursor-type . nil)
(no-special-glyphs . t)
(desktop-dont-save . t)))
(defun tty-menu-frame-parameters ()
(let ((params (copy-sequence tty-menu-frame-parameters))
(fg (face-attribute 'tty-menu-enabled-face :foreground))
(bg (face-attribute 'tty-menu-enabled-face :background)))
(when (stringp fg)
(setf (alist-get 'foreground-color params) fg))
(when (stringp bg)
(setf (alist-get 'background-color params) bg))
params))
(defun tty-menu-make-fully-visible (f1 f2 x y)
(let* ((f1-edges (frame-edges f1))
(f1-width (frame-width f1))
(f1-height (frame-height f1))
(f1-x (nth 0 f1-edges))
(f1-y (nth 1 f1-edges))
(f2-width (frame-width f2))
(f2-height (frame-height f2))
(new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
(new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
;; Ensure F2 is fully contained within F1
(setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
(setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
;; Move and resize F2
(set-frame-position f2 new-x new-y)
(set-frame-size f2 f2-width f2-height)))
(defun tty-menu-frame-absolute-position (frame x y)
"Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
(let ((current-frame frame)
(abs-x x)
(abs-y y))
(while (frame-parent current-frame)
(let ((edges (frame-edges current-frame)))
(setq abs-x (+ abs-x (nth 0 edges)))
(setq abs-y (+ abs-y (nth 1 edges)))
(setq current-frame (frame-parent current-frame))))
(cons abs-x abs-y)))
(defun tty-menu-create-frame (keymap where)
(cl-destructuring-bind (buffer width height)
(tty-menu-make-pane-buffer keymap)
(cl-destructuring-bind (parent-frame x y) where
;; We want to show the menu using a root frame as parent because
;; that doesn't clip the frame. Means that we have to translate
;; coordinates to absolute.
(when (frame-parent parent-frame)
(cl-destructuring-bind (ax . ay)
(tty-menu-frame-absolute-position parent-frame x y)
(setq x ax y ay)
(setq parent-frame (frame-root-frame parent-frame))))
(setq height (min height
(round (/ (frame-height parent-frame) 1.6))))
(let* ((minibuffer (minibuffer-window parent-frame))
(window-min-height 1)
(window-min-width 1)
(after-make-frame-functions nil)
(frame (make-frame `((parent-frame . ,parent-frame)
(name . ,(buffer-name buffer))
(minibuffer . ,minibuffer)
,@(tty-menu-frame-parameters))))
(win (frame-root-window frame)))
(set-window-buffer win buffer)
(set-window-dedicated-p win t)
(set-frame-size frame width height)
(set-frame-position frame x y)
(tty-menu-make-fully-visible parent-frame frame x y)
(make-frame-visible frame)
(raise-frame frame)
(select-frame-set-input-focus frame)
frame))))
(defun tty-menu-mouse-select-item (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(unless (eq (window-frame win) (tty-top-frame))
(throw 'tty-menu-item-selected nil))
(when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
(tty-menu-select-item item 'mouse))))
(defun tty-menu-key-select-item ()
(interactive)
(when-let* ((item (get-text-property (point) 'tty-menu-item)))
(tty-menu-select-item item 'key)))
(defun tty-menu-key-select-item-if-subpane ()
(interactive)
(when-let* ((item (get-text-property (point) 'tty-menu-item)))
(with-slots (binding) item
(when (keymapp binding)
(tty-menu-select-item item 'key)))))
(defun tty-menu-mouse-moved (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(when (eq (window-frame win) (tty-top-frame))
(let ((item (get-text-property (posn-point end) 'tty-menu-item)))
(when (and item (tty-menu-selectable-p item))
(goto-char (posn-point end)))))))
(defun tty-menu-next-line ()
(interactive)
(cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
then (next-single-property-change next 'tty-menu-item)
while next
for item =3D (get-text-property next 'tty-menu-item)
until (tty-menu-selectable-p item)
finally (when next (goto-char next))))
(defun tty-menu-previous-line ()
(interactive)
(cl-loop for prev =3D (previous-single-property-change
(point) 'tty-menu-item nil (point-min))
then (previous-single-property-change
prev 'tty-menu-item nil (point-min))
while prev
for item =3D (get-text-property prev 'tty-menu-item)=20
if (tty-menu-selectable-p item) do (goto-char prev) and return t
else if (eq prev (point-min)) return t))
(defun tty-menu-close-pane ()
(interactive)
(throw 'tty-menu-item-selected nil))
(defun tty-menu-isearch (forward)
(isearch-mode forward nil nil)
(while isearch-mode
(let* ((key (read-key-sequence nil nil t nil nil nil)))
(when-let* ((cmd (lookup-key isearch-mode-map key)))
(if (and (eq cmd #'isearch-printing-char)
(stringp key))
(isearch-printing-char (aref key 0))
(call-interactively cmd))))))
(defun tty-menu-isearch-forward ()
(interactive)
(tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
(interactive)
(tty-menu-isearch nil))
(defvar-keymap tty-menu-keymap
:doc "Keymap for menu interaction."
"<up>" #'tty-menu-previous-line
"<down>" #'tty-menu-next-line
"<left>" #'tty-menu-close-pane
"<right>" #'tty-menu-key-select-item-if-subpane
"C-b" #'tty-menu-close-pane
"C-g" #'keyboard-quit
"C-j" #'tty-menu-key-select-item
"C-n" #'tty-menu-next-line
"C-p" #'tty-menu-previous-line
"C-r" #'tty-menu-isearch-backward
"C-s" #'tty-menu-isearch-forward
"RET" #'tty-menu-key-select-item
"SPC" #'tty-menu-key-select-item
"<return>" #'tty-menu-key-select-item
"<mouse-movement>" #'tty-menu-mouse-moved
"<mouse-1>" #'tty-menu-mouse-select-item)
(defun tty-menu-show-selected-item ()
(unless tty-menu-selection-ov
(setq tty-menu-selection-ov (make-overlay 1 1))
(overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
(move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))
(defun tty-menu-global-menu ()
(keymap-lookup global-map "<menu-bar>"))
(defun tty-menu-position (pos)
(interactive)
(cond*
((match* 'nil pos) nil)
((match* 't pos)
(cl-destructuring-bind (frame x . y) (mouse-position)
;; mouse-position sometimes returns nil for x and y which I
;; think should not happen.
(list frame (or x 10) (or y 10))))
((match* (eventp e) pos)
(let* ((end (event-end e))
(win (posn-window end))
(x (car (posn-x-y end)))
(y (cdr (posn-x-y end))))
;; posn-window returns a frame when the event is not on a window, for
;; example, when clicking on a menu bar in a tty frame.
(if (windowp win)
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y)))
(let ((menu-bar-lines (frame-parameter win 'menu-bar-lines)))
(list win x (+ y menu-bar-lines))))))
((match* (cons (cons (numberp x)
(numberp y))
(cons (windowp win)
_))
pos)
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y))))
((match* (cons (list (numberp x) (numberp y))
(cons (framep frame) _))
pos)
(list frame x y))
((match* (cons (cons (numberp x) (numberp y))
(cons (framep frame) _))
pos)
(list frame x y))
((match* (cons (numberp x) (numberp y)) pos)
(list (selected-frame) x y))
(t (error "%S does not match in tty-menu-position" pos))))
(defun tty-menu-where (how)
(cl-ecase how
(mouse (tty-menu-position t))
(key (let* ((posn (posn-at-point (line-end-position)))
(xy (posn-x-y posn))
(win (posn-window posn)))
(tty-menu-position (list xy win))))))
(defun tty-menu-loop (keymap where)
(let ((frame (tty-menu-create-frame keymap where)))
(unwind-protect
;; Inner loop handling mouse movement over the pane,
;; moving with the keyboard on the pane. The loop is
;; left by a throw when a menu-item is selected.
(cl-loop
named outer-loop
while t
for res =3D (catch 'tty-menu-item-selected
(while t
(tty-menu-show-selected-item)
(let* ((track-mouse t)
(key (read-key-sequence nil))
(cmd (lookup-key tty-menu-keymap key)))
(when (commandp cmd)
(call-interactively cmd)))))
do
;; If the selected item was for a sub-pane, call ourselves
;; recursively with the sub-pane.
(cond* ((match* (cons selected how) res)
(with-slots (binding) selected
(if (keymapp binding)
(tty-menu-loop binding (tty-menu-where how))
;; Return a list because x-popup-menu does.
(cl-return-from outer-loop (list binding)))))
((match* 'nil res)
(cl-return-from outer-loop nil))))
(when frame
(delete-frame frame)))))
(defun frame-with-name (name)
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-find-if (lambda (f) (equal (frame-name f) name))
(frame-list))))
(defun tty-menu-delete-menu-frames ()
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-loop for frame in (frame-list)
when (string-prefix-p " *tty-menu-" (frame-name frame))
do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
(when-let* ((where (tty-menu-position position)))
(cond ((keymapp menu)
(tty-menu-loop menu where))
((consp menu)
(cl-loop with outer =3D (make-sparse-keymap "outer")
for keymap in menu
for name =3D (tty-menu-keymap-name keymap "?")
do (define-key outer (vector (intern name)) keymap)
finally (tty-menu-loop outer where)))
(t (error "Not a menu: %S" menu)))))
;;;###autoload
(define-minor-mode tty-menu-mode
"Global minor mode for displaying menus with tty child frames."
:global t :group 'menu
(unless (display-graphic-p)
(if tty-menu-mode
(add-function :override (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu)
(remove-function (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu))))
(provide 'tty-menu)
;;; Local Variables:
;;; fill-column: 80
;;; End:
--=-=-=--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 16:21:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 11:21:34 2025
Received: from localhost ([127.0.0.1]:45942 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1thA3q-0005PP-5w
for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 11:21:34 -0500
Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]:55495)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1thA3n-0005P8-4f
for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 11:21:31 -0500
Received: by mail-ed1-x535.google.com with SMTP id
4fb4d7f45d1cf-5de64873d18so1572384a12.2
for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 08:21:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1739118084; x=1739722884; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=QNfxZlRywYwyBsmLmxf2rTkbUI3Ee0311Sh2JwIsLj0=;
b=LG7WBSR4gCMYespanEORH2IQzSUsUY6zzjFyjYEtMMExuzpK/Tmf+8tqCd9FPOejhV
RiEJWaq2/DB2AqOO2U2UyHbJSczoeDrS66QUSiiyPupkFjJn5MFSAGAmykKQhqbiR6tn
UwYOJozIkLQyfSNNysvsHYhepocOxtzn4OaljFPcsBilDDKKMmhGUyu2V07631AcfNiZ
QMrtxlGSxc1IpQbi5d/hmpEqkYNcyo1sZVMT4ZFb9T/YHvGqsEtIPtXJHK8Z/8zObgj9
vrZ5zHZgM9e8sdHy8fzDFYV+OBCL5mMdqYWGEIrK4andfzK800bmO0bQxEnT3qQLyBEa
1O2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1739118084; x=1739722884;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=QNfxZlRywYwyBsmLmxf2rTkbUI3Ee0311Sh2JwIsLj0=;
b=WzMGHXygU8Q/3rt+DDpU5XQs9UtaFjNds2WmArx2fjs3CGF0PVzVbhtyUprJBmDM+W
NE+8kgLi3afitceKrG2mCuOkO/2b4GvQCkR7t2c3xxtbhn9aDZUscDmfQWr2cnoTJ/IW
PP4S203h5dvuwv/oKw1yDl3tCUYeebrXpz9IMXRhSFHpN2g5f9TTq7c5nTdVPWFfbM01
7GSa66oeDXEJTEODoq5zxK2d+drdp9R4yGNidRNr6Lb2J6G0tLolyl1xB7CZLTxr/KoZ
TqwCmXTTU95TdsAx0oZ4XeZcWikyFJcVIQRPqfjtxgQt8qFOFxSPaRGHSTtJFZwalJDk
Oh6w==
X-Forwarded-Encrypted: i=1;
AJvYcCX4qmP2IH0wZX/mS6ChMcD2XdqfIxCrl7XOqn6Zuald1KfelLGUtLWQOmqzkxsXD7e1+M4odg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yzf3PK7c1dCKS9VYXj5XggKwXhAyzIzLsMe2VHiLV+SxifVD5lx
LsPiFbRZ718+PKvQL64nK3InFaqbqrnb+tA1Jg7/oxlGA5OdmcjKq/X0MA==
X-Gm-Gg: ASbGncvjXElgp92Cml2rqkv/viutvgbHXI1TN4ET7/6A8l3bIDPU4C0ySb22OcTFIjB
bFeUtHp3fU1kbPu2oE2ouRFh/TX8lPMOgYvq+ZG9HOv+1X4uH5YXfffNKaDVAomzj3NItYOSkTO
SG69LCJu+OeTr5AXsQPPNS/0Trw/5AzQKAmFr0ibXtxqXTzGS27nrNCaf4syl7F2qSA22T8gaXk
JqejcW16HhnfJ883tNoz6xgElLJ5QMTPu0TetRH+dg/JhIrLjN0K4nfbOJuQQnegoIX4BEdafbo
1+AyJpoy5GpKGVOQVP0CQhc5kKdbOvMYEPGmvdZdfaVXf+QO5B9vpqwN4hdQlji7ILsc4Sd14X7
GXM+Qi77IjmADdBGLPD5Sploa
X-Google-Smtp-Source: AGHT+IH+GhYOEWXKME6Dqp2zCDc9uQKmTYvf2tKepnOlYjuWWvgJTvsJUS3QBsFVhByd5xrebjBnBw==
X-Received: by 2002:a05:6402:42c8:b0:5dc:1f35:56a with SMTP id
4fb4d7f45d1cf-5de44feb976mr12606122a12.5.1739118084228;
Sun, 09 Feb 2025 08:21:24 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
[2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
by smtp.gmail.com with ESMTPSA id
4fb4d7f45d1cf-5de3ca503a2sm5616923a12.72.2025.02.09.08.21.23
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 09 Feb 2025 08:21:23 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
<m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
<m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
<e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
<m234gnmjvi.fsf@HIDDEN>
<31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
Date: Sun, 09 Feb 2025 17:21:22 +0100
Message-ID: <m2y0yfks1p.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> Sachen gibt's :-/.
>
> Clicking with the mouse on an arbitrary menubar item gets me
Yeah, I didn't do the integration with the rest of Emacs yet. Looks like
another dark and ancient corner of Emacs. Insofar, please disregard
tty-menu-mode at the moment. But the rest is kind of funny, help-echo,
C-s in menus :-).
Wie auch immer.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 15:47:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 10:47:37 2025
Received: from localhost ([127.0.0.1]:45854 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1th9Wy-0003l9-EW
for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 10:47:37 -0500
Received: from mout.gmx.net ([212.227.15.19]:39187)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1th9Wv-0003kr-89
for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 10:47:34 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1739116039; x=1739720839; i=rudalics@HIDDEN;
bh=Iyqm+Ot7C9LzX1Ddx+KMImnoyAaBD2WP4Mp9vpb+0T4=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=W8KF8HPXKt3WgB43Blgc0wXUaFPRy7GkVI5AlQp2tryAsu+GNsqW5hmokJX0P2BB
xfSk/WW4UexpzDvC05FdSISvnpEid2qOsPEgxjJi2ZBOfidf4IEAD74IYr+eUoO/u
3OYCfT7Mm4J/NeYiRGHMVTUfzBV+Cg/h6CRvihSyya3zHpBzq8H1MYNYx7ampYau5
LF9mzSVRPJsryTW5SzgGVYmKlZFyTS3dvdJ1lOAuEgy23bq9HNOP/zpfGFGqcPU8Q
WucnIbxVYvhGtpjoQmW2MyDoQuGNes2uNCKaeLQliBsCxeiWW3pAzzRDaZCpINPgi
bgLspCtGdM01i2PhPQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.220]) by mail.gmx.net (mrgmx004
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MMobO-1tzmL52Qj6-00MQ72; Sun, 09
Feb 2025 16:47:19 +0100
Message-ID: <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
Date: Sun, 9 Feb 2025 16:47:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
<m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
<m2frknml43.fsf@HIDDEN> <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
<m234gnmjvi.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m234gnmjvi.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:iHUtu6TWF3O301kbCvlvI1MHqzD0CcJ7Z4aInAnI09DivsV52Sf
Ivirn5rfywRvAev+zC/B6e66XmehGp080lySRSpI1bJ5wm1nH3EzfqwyY0ei7B7kuzholf0
SHSgDMzdndNQrOsl5MsjZxR4B9hE075CIPWzaBpb7XKvjAtpz4dxpKlCYvFOCmxPG2JOorR
RxHkyOkQseBOcZXzIAP2w==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:c5QDSH6yr4g=;CZU1RZz9nNzCcK0fkljsNh4JRR3
ru0IcNywMF/5A9eXPdrvnk/I2Bx7JxBWuY6rdtNSydpAi4h8VAOyPfg0su78t5ypNnEKoF7IT
GaKYHVWpZyw4irEMlPP9wK1Fa3WfcbxaB5kJ4+h+QPl7NF1Cw50maFTeOK+hhvXTIvNAf0xB/
kAJHNy3iHj6qVUnI5l4UhUaPi2QQSZw1im6w/SiNEbF/lLhE0j+++BhUPLZc8BDjgrj6f1t44
RDj2oIqmWOQ79RUY0h0nsoe/AU/s6zmssxi62NZ+1cdMKpfvatIiTLZ+6QbnyBTqysZJdNddX
h8VvJIsSvEcWOE0ekLxOOW5zN1wAEszyFKTljMLhPvRjpbAnO5v/Vp7qmuFnxQGq3dWZb9Gqd
LAN1jkdAEevo59uj0ywygB5fZ/NqZINHlDGpfuYpG8yPZMJlRTaouhLOvvW+3hXcEAcG622d+
+/g6qXetayVT5mqmSzjZA5u/Gbm9Jumox+or2HzLKN3ETjp52gqCY+YTICNBjLF271r6Du1vf
0gwIQccUQT2H+5KM+n2uiHMxy9ld2CEOmRLuzOZn+rCJh9/yVvByKSXqswE972GgUdTNc84hA
cH2YZQpzgrYDzs7CGoDfl4R2o2AYQYenHWegCy9Ue0RpbJ0euvrZdwurJjY9/e/aKeJn1o3Dh
tNKCSLFHY1m2yW+gK00P9uNFs1C92X7nw+ziLDJ+PLu5PUo9nZmng0wDgA/MC02j9YyaamxOc
4Oc/qDg36pBPxo0bOGw32rknc66S/2Dfki+xGAEAD3uwcw1Wt1qC+KDgPCqhefevD61y6GBAk
WJPcv3cdt/cMxZIPEKDW/gkQK4c/Z3I3KEx7qw2a2HBukQoDvA3a0Jrhp4dPzzOLvmFncgO+U
rRk/OmhOpXaKkN4RTzQ86K+YRe+/b5NoygfYaboJEjOQQY6ztxVZiYjun/ZCy6cjCt0rAvhVK
GZkPoSV44N7Lgtd+urC638EtS581YGeER9DsBD1eohVC6QCNoNbg656vEVA3Yr0t6YdpuGb5w
Qt+kAOlmN4bEZIJj9EgzW4NuX+/NEWMlQ5mmVPU0y8cbSrRZbKzn9GFKID7Tcy/zdz7MfQtg+
3tJuqgPOcKWLGJZvGlR/x2gAMZpPfnkMic1NrfHFuzFDDPiIIBAdTmwCVCSWII8KL54JEAWIe
lmkmD+lojM9GFp4SAl7ACDRxIk5oHlE3tvMKzSPhQxIJqV/kPTgueGEK7O0aImPWNqIINpjPI
/5rwqyJ4XN5DwldLQWPPi7mvfAz/8bjP2O2trcRGFCFyiQPfS1TBdOxFvoZV06H1QlbCD8VWk
WGI8frF3Q66MNYjZto304eVQwd+1jNWqpsaygJMzmwQQPdEwzlZDL/2ksr5tpeB6XvcdcoykR
GIPucwKOMVa7jfje1IKEYL9lQGFb6eK0zEe8WShr6LUZPbIyFBiygRZpREhWcWfR0yITPm+dn
X3ZBbhw==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
ID4gU2FjaGVuIGdpYnQncyA6LS8uDQoNCkNsaWNraW5nIHdpdGggdGhlIG1vdXNlIG9uIGFu
IGFyYml0cmFyeSBtZW51YmFyIGl0ZW0gZ2V0cyBtZQ0KDQoNCkRlYnVnZ2VyIGVudGVyZWQt
LUxpc3AgZXJyb3I6IChlcnJvciAiIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiBpcyBub3QgYSB2
YWxpZCB3aW5kb3ciKQ0KICAgc2lnbmFsKGVycm9yICgiIzxmcmFtZSBGMSAweDEzOTA2ZDQw
PiBpcyBub3QgYSB2YWxpZCB3aW5kb3ciKSkNCiAgIGVycm9yKCIlcyBpcyBub3QgYSB2YWxp
ZCB3aW5kb3ciICM8ZnJhbWUgRjEgMHgxMzkwNmQ0MD4pDQogICB3aW5kb3ctbm9ybWFsaXpl
LXdpbmRvdygjPGZyYW1lIEYxIDB4MTM5MDZkNDA+IG5pbCkNCiAgIHdpbmRvdy1lZGdlcygj
PGZyYW1lIEYxIDB4MTM5MDZkNDA+IG5pbCB0KQ0KICAgKGxldCogKCgtLWNsLXJlc3QtLSAo
d2luZG93LWVkZ2VzIHdpbiBuaWwgdCkpICh3eCAoaWYgKD0gKGxlbmd0aCAtLWNsLXJlc3Qt
LSkgNCkgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3QtLSAo
Y2RyIC0tY2wtcmVzdC0tKSkpKSAoc2lnbmFsICd3cm9uZy1udW1iZXItb2YtYXJndW1lbnRz
IChsaXN0ICcod3ggd3kgXyBfKSAobGVuZ3RoIC0tY2wtcmVzdC0tKSkpKSkgKHd5IChjYXIt
c2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEgLS1jbC1yZXN0LS0gKGNkciAtLWNsLXJl
c3QtLSkpKSkpIChfIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEgLS1jbC1y
ZXN0LS0gKGNkciAtLWNsLXJlc3QtLSkpKSkpIChfIChjYXItc2FmZSAtLWNsLXJlc3QtLSkp
KSAobGlzdCAod2luZG93LWZyYW1lIHdpbikgKCsgd3ggeCkgKCsgd3kgeSkpKQ0KICAgKGxl
dCogKChlbmQgKGV2ZW50LWVuZCBlKSkgKHdpbiAocG9zbi13aW5kb3cgZW5kKSkgKHggKGNh
ciAocG9zbi14LXkgZW5kKSkpICh5IChjZHIgKHBvc24teC15IGVuZCkpKSkgKGxldCogKCgt
LWNsLXJlc3QtLSAod2luZG93LWVkZ2VzIHdpbiBuaWwgdCkpICh3eCAoaWYgKD0gKGxlbmd0
aCAtLWNsLXJlc3QtLSkgNCkgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAt
LWNsLXJlc3QtLSAuLi4pKSkgKHNpZ25hbCAnd3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cyAo
bGlzdCAnLi4uIChsZW5ndGggLS1jbC1yZXN0LS0pKSkpKSAod3kgKGNhci1zYWZlIChwcm9n
MSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3QtLSAoY2RyIC0tY2wtcmVzdC0tKSkpKSkg
KF8gKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3QtLSAoY2Ry
IC0tY2wtcmVzdC0tKSkpKSkgKF8gKGNhci1zYWZlIC0tY2wtcmVzdC0tKSkpIChsaXN0ICh3
aW5kb3ctZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKQ0KICAgKGxldCogKChlIGQx
MikpIChsZXQqICgoZW5kIChldmVudC1lbmQgZSkpICh3aW4gKHBvc24td2luZG93IGVuZCkp
ICh4IChjYXIgKHBvc24teC15IGVuZCkpKSAoeSAoY2RyIChwb3NuLXgteSBlbmQpKSkpIChs
ZXQqICgoLS1jbC1yZXN0LS0gKHdpbmRvdy1lZGdlcyB3aW4gbmlsIHQpKSAod3ggKGlmICg9
IChsZW5ndGggLS1jbC1yZXN0LS0pIDQpIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0g
Li4uKSkgKHNpZ25hbCAnd3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cyAobGlzdCAuLi4gLi4u
KSkpKSAod3kgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3Qt
LSAuLi4pKSkpIChfIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEgLS1jbC1y
ZXN0LS0gLi4uKSkpKSAoXyAoY2FyLXNhZmUgLS1jbC1yZXN0LS0pKSkgKGxpc3QgKHdpbmRv
dy1mcmFtZSB3aW4pICgrIHd4IHgpICgrIHd5IHkpKSkpKQ0KICAgKGlmIChldmVudHAgZDEy
KSAobGV0KiAoKGUgZDEyKSkgKGxldCogKChlbmQgKGV2ZW50LWVuZCBlKSkgKHdpbiAocG9z
bi13aW5kb3cgZW5kKSkgKHggKGNhciAocG9zbi14LXkgZW5kKSkpICh5IChjZHIgKHBvc24t
eC15IGVuZCkpKSkgKGxldCogKCgtLWNsLXJlc3QtLSAod2luZG93LWVkZ2VzIHdpbiBuaWwg
dCkpICh3eCAoaWYgKD0gLi4uIDQpIChjYXItc2FmZSAuLi4pIChzaWduYWwgLi4uIC4uLikp
KSAod3kgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAuLi4pKSkgKF8gKGNhci1zYWZl
IChwcm9nMSAtLWNsLXJlc3QtLSAuLi4pKSkgKF8gKGNhci1zYWZlIC0tY2wtcmVzdC0tKSkp
IChsaXN0ICh3aW5kb3ctZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKSkgKGxldCAo
KGQxMSBwb3MpKSAoaWYgKGFuZCAoY29uc3AgZDExKSAoYW5kIChjb25zcCAoY2FyIGQxMSkp
IChudW1iZXJwIChjYXIgKGNhciBkMTEpKSkgKG51bWJlcnAgKGNkciAoY2FyIGQxMSkpKSkg
KGFuZCAoY29uc3AgKGNkciBkMTEpKSAod2luZG93cCAoY2FyIChjZHIgZDExKSkpKSkgKGxl
dCogKCh3aW4gKGNhciAoY2RyIGQxMSkpKSAoeSAoY2RyIChjYXIgZDExKSkpICh4IChjYXIg
KGNhciBkMTEpKSkpIChsZXQqICgoLS1jbC1yZXN0LS0gKHdpbmRvdy1lZGdlcyB3aW4gbmls
IHQpKSAod3ggKGlmIC4uLiAuLi4gLi4uKSkgKHd5IChjYXItc2FmZSAuLi4pKSAoXyAoY2Fy
LXNhZmUgLi4uKSkgKF8gKGNhci1zYWZlIC0tY2wtcmVzdC0tKSkpIChsaXN0ICh3aW5kb3ct
ZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKSAobGV0ICgoZDEwIHBvcykpIChpZiAo
YW5kIChjb25zcCBkMTApIChhbmQgKGNvbnNwIC4uLikgKG51bWJlcnAgLi4uKSAoY29uc3Ag
Li4uKSAobnVtYmVycCAuLi4pIChudWxsIC4uLikpIChhbmQgKGNvbnNwIC4uLikgKGZyYW1l
cCAuLi4pKSkgKGxldCogKChmcmFtZSAuLi4pICh5IC4uLikgKHggLi4uKSkgKGxpc3QgZnJh
bWUgeCB5KSkgKGxldCAoKGQ5IHBvcykpIChpZiAoYW5kIC4uLiAuLi4gLi4uKSAobGV0KiAu
Li4gLi4uKSAobGV0IC4uLiAuLi4pKSkpKSkpKQ0KICAgKGxldCAoKGQxMiBwb3MpKSAoaWYg
KGV2ZW50cCBkMTIpIChsZXQqICgoZSBkMTIpKSAobGV0KiAoKGVuZCAoZXZlbnQtZW5kIGUp
KSAod2luIChwb3NuLXdpbmRvdyBlbmQpKSAoeCAoY2FyIChwb3NuLXgteSBlbmQpKSkgKHkg
KGNkciAocG9zbi14LXkgZW5kKSkpKSAobGV0KiAoKC0tY2wtcmVzdC0tICh3aW5kb3ctZWRn
ZXMgd2luIG5pbCB0KSkgKHd4IChpZiAuLi4gLi4uIC4uLikpICh3eSAoY2FyLXNhZmUgLi4u
KSkgKF8gKGNhci1zYWZlIC4uLikpIChfIChjYXItc2FmZSAtLWNsLXJlc3QtLSkpKSAobGlz
dCAod2luZG93LWZyYW1lIHdpbikgKCsgd3ggeCkgKCsgd3kgeSkpKSkpIChsZXQgKChkMTEg
cG9zKSkgKGlmIChhbmQgKGNvbnNwIGQxMSkgKGFuZCAoY29uc3AgKGNhciBkMTEpKSAobnVt
YmVycCAoY2FyIC4uLikpIChudW1iZXJwIChjZHIgLi4uKSkpIChhbmQgKGNvbnNwIChjZHIg
ZDExKSkgKHdpbmRvd3AgKGNhciAuLi4pKSkpIChsZXQqICgod2luIChjYXIgLi4uKSkgKHkg
KGNkciAuLi4pKSAoeCAoY2FyIC4uLikpKSAobGV0KiAoKC0tY2wtcmVzdC0tIC4uLikgKHd4
IC4uLikgKHd5IC4uLikgKF8gLi4uKSAoXyAuLi4pKSAobGlzdCAod2luZG93LWZyYW1lIHdp
bikgKCsgd3ggeCkgKCsgd3kgeSkpKSkgKGxldCAoKGQxMCBwb3MpKSAoaWYgKGFuZCAoY29u
c3AgZDEwKSAoYW5kIC4uLiAuLi4gLi4uIC4uLiAuLi4pIChhbmQgLi4uIC4uLikpIChsZXQq
ICguLi4gLi4uIC4uLikgKGxpc3QgZnJhbWUgeCB5KSkgKGxldCAoLi4uKSAoaWYgLi4uIC4u
LiAuLi4pKSkpKSkpKQ0KICAgKGlmIChlcSAndCBkMTMpIChwcm9nbiAobGV0KiAoKHkgKG1v
dXNlLXBvc2l0aW9uKSkgKGZyYW1lIChpZiAoY2RyIHkpIChjYXItc2FmZSAocHJvZzEgeSAu
Li4pKSAoc2lnbmFsICd3cm9uZy1udW1iZXItb2YtYXJndW1lbnRzIChsaXN0IC4uLiAuLi4p
KSkpICh4IChjYXItc2FmZSAocHJvZzEgeSAoc2V0cSB5IC4uLikpKSkpIChsaXN0IGZyYW1l
IChvciB4IDEwKSAob3IgeSAxMCkpKSkgKGxldCAoKGQxMiBwb3MpKSAoaWYgKGV2ZW50cCBk
MTIpIChsZXQqICgoZSBkMTIpKSAobGV0KiAoKGVuZCAoZXZlbnQtZW5kIGUpKSAod2luIChw
b3NuLXdpbmRvdyBlbmQpKSAoeCAoY2FyIC4uLikpICh5IChjZHIgLi4uKSkpIChsZXQqICgo
LS1jbC1yZXN0LS0gLi4uKSAod3ggLi4uKSAod3kgLi4uKSAoXyAuLi4pIChfIC4uLikpIChs
aXN0ICh3aW5kb3ctZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKSkgKGxldCAoKGQx
MSBwb3MpKSAoaWYgKGFuZCAoY29uc3AgZDExKSAoYW5kIChjb25zcCAuLi4pIChudW1iZXJw
IC4uLikgKG51bWJlcnAgLi4uKSkgKGFuZCAoY29uc3AgLi4uKSAod2luZG93cCAuLi4pKSkg
KGxldCogKCh3aW4gLi4uKSAoeSAuLi4pICh4IC4uLikpIChsZXQqICguLi4gLi4uIC4uLiAu
Li4gLi4uKSAobGlzdCAuLi4gLi4uIC4uLikpKSAobGV0ICgoZDEwIHBvcykpIChpZiAoYW5k
IC4uLiAuLi4gLi4uKSAobGV0KiAuLi4gLi4uKSAobGV0IC4uLiAuLi4pKSkpKSkpKQ0KICAg
KGxldCAoKGQxMyBwb3MpKSAoaWYgKGVxICd0IGQxMykgKHByb2duIChsZXQqICgoeSAobW91
c2UtcG9zaXRpb24pKSAoZnJhbWUgKGlmIChjZHIgeSkgKGNhci1zYWZlIC4uLikgKHNpZ25h
bCAuLi4gLi4uKSkpICh4IChjYXItc2FmZSAocHJvZzEgeSAuLi4pKSkpIChsaXN0IGZyYW1l
IChvciB4IDEwKSAob3IgeSAxMCkpKSkgKGxldCAoKGQxMiBwb3MpKSAoaWYgKGV2ZW50cCBk
MTIpIChsZXQqICgoZSBkMTIpKSAobGV0KiAoKGVuZCAuLi4pICh3aW4gLi4uKSAoeCAuLi4p
ICh5IC4uLikpIChsZXQqICguLi4gLi4uIC4uLiAuLi4gLi4uKSAobGlzdCAuLi4gLi4uIC4u
LikpKSkgKGxldCAoKGQxMSBwb3MpKSAoaWYgKGFuZCAoY29uc3AgZDExKSAoYW5kIC4uLiAu
Li4gLi4uKSAoYW5kIC4uLiAuLi4pKSAobGV0KiAoLi4uIC4uLiAuLi4pIChsZXQqIC4uLiAu
Li4pKSAobGV0ICguLi4pIChpZiAuLi4gLi4uIC4uLikpKSkpKSkpDQogICAoaWYgKGVxICdu
aWwgZDE0KSAocHJvZ24gbmlsKSAobGV0ICgoZDEzIHBvcykpIChpZiAoZXEgJ3QgZDEzKSAo
cHJvZ24gKGxldCogKCh5IChtb3VzZS1wb3NpdGlvbikpIChmcmFtZSAoaWYgLi4uIC4uLiAu
Li4pKSAoeCAoY2FyLXNhZmUgLi4uKSkpIChsaXN0IGZyYW1lIChvciB4IDEwKSAob3IgeSAx
MCkpKSkgKGxldCAoKGQxMiBwb3MpKSAoaWYgKGV2ZW50cCBkMTIpIChsZXQqICgoZSBkMTIp
KSAobGV0KiAoLi4uIC4uLiAuLi4gLi4uKSAobGV0KiAuLi4gLi4uKSkpIChsZXQgKChkMTEg
cG9zKSkgKGlmIChhbmQgLi4uIC4uLiAuLi4pIChsZXQqIC4uLiAuLi4pIChsZXQgLi4uIC4u
LikpKSkpKSkpDQogICAobGV0ICgoZDE0IHBvcykpIChpZiAoZXEgJ25pbCBkMTQpIChwcm9n
biBuaWwpIChsZXQgKChkMTMgcG9zKSkgKGlmIChlcSAndCBkMTMpIChwcm9nbiAobGV0KiAo
KHkgLi4uKSAoZnJhbWUgLi4uKSAoeCAuLi4pKSAobGlzdCBmcmFtZSAob3IgeCAxMCkgKG9y
IHkgMTApKSkpIChsZXQgKChkMTIgcG9zKSkgKGlmIChldmVudHAgZDEyKSAobGV0KiAoLi4u
KSAobGV0KiAuLi4gLi4uKSkgKGxldCAoLi4uKSAoaWYgLi4uIC4uLiAuLi4pKSkpKSkpKQ0K
ICAgdHR5LW1lbnUtcG9zaXRpb24oKGJ1ZmZlciAoIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiAo
bWVudS1iYXIpICgxOCAuIDApIDApKSkNCiAgIChhbmQgdCAodHR5LW1lbnUtcG9zaXRpb24g
cG9zaXRpb24pKQ0KICAgKGxldCogKCh3aGVyZSAoYW5kIHQgKHR0eS1tZW51LXBvc2l0aW9u
IHBvc2l0aW9uKSkpKSAoaWYgd2hlcmUgKGNvbmQgKChrZXltYXBwIG1lbnUpICh0dHktbWVu
dS1sb29wIG1lbnUgd2hlcmUpKSAoKGNvbnNwIG1lbnUpIChsZXQqICgob3V0ZXIgKG1ha2Ut
c3BhcnNlLWtleW1hcCAib3V0ZXIiKSkgKC0tY2wtdmFyLS0gbWVudSkgKGtleW1hcCBuaWwp
IChuYW1lIG5pbCkgKC0tY2wtdmFyLS0gdCkpICh3aGlsZSAoY29uc3AgLS1jbC12YXItLSkg
KHNldHEga2V5bWFwIChjYXIgLS1jbC12YXItLSkpIChzZXRxIG5hbWUgKHR0eS1tZW51LWtl
eW1hcC1uYW1lIGtleW1hcCAiPyIpKSAoZGVmaW5lLWtleSBvdXRlciAodmVjdG9yIC4uLikg
a2V5bWFwKSAoc2V0cSAtLWNsLXZhci0tIChjZHIgLS1jbC12YXItLSkpIChzZXRxIC0tY2wt
dmFyLS0gbmlsKSkgKHR0eS1tZW51LWxvb3Agb3V0ZXIgd2hlcmUpIG5pbCkpICh0IChlcnJv
ciAiTm90IGEgbWVudTogJVMiIG1lbnUpKSkpKQ0KICAgdHR5LW1lbnUtcG9wdXAtbWVudSgo
YnVmZmVyICgjPGZyYW1lIEYxIDB4MTM5MDZkNDA+IChtZW51LWJhcikgKDE4IC4gMCkgMCkp
IChrZXltYXAgIkJ1ZmZlcnMiIFsoIipzY3JhdGNoKiAgIiAuICNmKGNvbXBpbGVkLWZ1bmN0
aW9uICgpIChpbnRlcmFjdGl2ZSBuaWwpICM8Ynl0ZWNvZGUgLTB4MTY2MjNiZDEwMWZlMzU4
MD4pKSAoIipNZXNzYWdlcyogIColIiAuICNmKGNvbXBpbGVkLWZ1bmN0aW9uICgpIChpbnRl
cmFjdGl2ZSBuaWwpICM8Ynl0ZWNvZGUgLTB4MTY2MjNiZDU0ZjM5MzU4MD4pKV0gKGNvbW1h
bmQtc2VwYXJhdG9yICItLSIpIChuZXh0LWJ1ZmZlciBtZW51LWl0ZW0gIk5leHQgQnVmZmVy
IiBuZXh0LWJ1ZmZlciA6aGVscCAiU3dpdGNoIHRvIHRoZSBcIm5leHRcIiBidWZmZXIgaW4g
YSBjeWNsaWMgb3JkZXIiKSAocHJldmlvdXMtYnVmZmVyIG1lbnUtaXRlbSAiUHJldmlvdXMg
QnVmZmVyIiBwcmV2aW91cy1idWZmZXIgOmhlbHAgIlN3aXRjaCB0byB0aGUgXCJwcmV2aW91
c1wiIGJ1ZmZlciBpbiBhIGN5Y2xpYyBvcmRlciIpIChzZWxlY3QtbmFtZWQtYnVmZmVyIG1l
bnUtaXRlbSAiU2VsZWN0IE5hbWVkIEJ1ZmZlci4uLiIgc3dpdGNoLXRvLWJ1ZmZlciA6aGVs
cCAiUHJvbXB0IGZvciBhIGJ1ZmZlciBuYW1lLCBhbmQgc2VsZWN0IHRoYXQgYnVmZmVyIGlu
IHRoZSBjdXJyZW50IHdpbmRvdyIpIChsaXN0LWFsbC1idWZmZXJzIG1lbnUtaXRlbSAiTGlz
dCBBbGwgQnVmZmVycyIgbGlzdC1idWZmZXJzIDpoZWxwICJQb3AgdXAgYSB3aW5kb3cgbGlz
dGluZyBhbGwgRW1hY3MgYnVmZmVycyIpIChzZWxlY3QtYnVmZmVyLWluLXByb2plY3QgbWVu
dS1pdGVtICJTZWxlY3QgQnVmZmVyIEluIFByb2plY3QuLi4iIHByb2plY3Qtc3dpdGNoLXRv
LWJ1ZmZlciA6aGVscCAiUHJvbXB0IGZvciBhIGJ1ZmZlciBiZWxvbmdpbmcgdG8gY3VycmVu
dCBwcm9qZWN0LCBhbmQgc3dpdGNoIHRvIGl0IikgKGxpc3QtYnVmZmVycy1pbi1wcm9qZWN0
IG1lbnUtaXRlbSAiTGlzdCBCdWZmZXJzIEluIFByb2plY3QuLi4iIHByb2plY3QtbGlzdC1i
dWZmZXJzIDpoZWxwICJQb3AgdXAgYSB3aW5kb3cgbGlzdGluZyBhbGwgRW1hY3MgYnVmZmVy
cyBiZWxvbmdpbmcgdG8gY3VycmVudCBwcm9qZWN0IikpKQ0KICAgYXBwbHkodHR5LW1lbnUt
cG9wdXAtbWVudSAoKGJ1ZmZlciAoIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiAobWVudS1iYXIp
ICgxOCAuIDApIDApKSAoa2V5bWFwICJCdWZmZXJzIiBbKCIqc2NyYXRjaCogICIgLiAjZihj
b21waWxlZC1mdW5jdGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2
NjIzYmQxMDFmZTM1ODA+KSkgKCIqTWVzc2FnZXMqICAqJSIgLiAjZihjb21waWxlZC1mdW5j
dGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2NjIzYmQ1NGYzOTM1
ODA+KSldIChjb21tYW5kLXNlcGFyYXRvciAiLS0iKSAobmV4dC1idWZmZXIgbWVudS1pdGVt
ICJOZXh0IEJ1ZmZlciIgbmV4dC1idWZmZXIgOmhlbHAgIlN3aXRjaCB0byB0aGUgXCJuZXh0
XCIgYnVmZmVyIGluIGEgY3ljbGljIG9yZGVyIikgKHByZXZpb3VzLWJ1ZmZlciBtZW51LWl0
ZW0gIlByZXZpb3VzIEJ1ZmZlciIgcHJldmlvdXMtYnVmZmVyIDpoZWxwICJTd2l0Y2ggdG8g
dGhlIFwicHJldmlvdXNcIiBidWZmZXIgaW4gYSBjeWNsaWMgb3JkZXIiKSAoc2VsZWN0LW5h
bWVkLWJ1ZmZlciBtZW51LWl0ZW0gIlNlbGVjdCBOYW1lZCBCdWZmZXIuLi4iIHN3aXRjaC10
by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgbmFtZSwgYW5kIHNlbGVjdCB0
aGF0IGJ1ZmZlciBpbiB0aGUgY3VycmVudCB3aW5kb3ciKSAobGlzdC1hbGwtYnVmZmVycyBt
ZW51LWl0ZW0gIkxpc3QgQWxsIEJ1ZmZlcnMiIGxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVw
IGEgd2luZG93IGxpc3RpbmcgYWxsIEVtYWNzIGJ1ZmZlcnMiKSAoc2VsZWN0LWJ1ZmZlci1p
bi1wcm9qZWN0IG1lbnUtaXRlbSAiU2VsZWN0IEJ1ZmZlciBJbiBQcm9qZWN0Li4uIiBwcm9q
ZWN0LXN3aXRjaC10by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgYmVsb25n
aW5nIHRvIGN1cnJlbnQgcHJvamVjdCwgYW5kIHN3aXRjaCB0byBpdCIpIChsaXN0LWJ1ZmZl
cnMtaW4tcHJvamVjdCBtZW51LWl0ZW0gIkxpc3QgQnVmZmVycyBJbiBQcm9qZWN0Li4uIiBw
cm9qZWN0LWxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVwIGEgd2luZG93IGxpc3RpbmcgYWxs
IEVtYWNzIGJ1ZmZlcnMgYmVsb25naW5nIHRvIGN1cnJlbnQgcHJvamVjdCIpKSkpDQogICB4
LXBvcHVwLW1lbnUoKGJ1ZmZlciAoIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiAobWVudS1iYXIp
ICgxOCAuIDApIDApKSAoa2V5bWFwICJCdWZmZXJzIiBbKCIqc2NyYXRjaCogICIgLiAjZihj
b21waWxlZC1mdW5jdGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2
NjIzYmQxMDFmZTM1ODA+KSkgKCIqTWVzc2FnZXMqICAqJSIgLiAjZihjb21waWxlZC1mdW5j
dGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2NjIzYmQ1NGYzOTM1
ODA+KSldIChjb21tYW5kLXNlcGFyYXRvciAiLS0iKSAobmV4dC1idWZmZXIgbWVudS1pdGVt
ICJOZXh0IEJ1ZmZlciIgbmV4dC1idWZmZXIgOmhlbHAgIlN3aXRjaCB0byB0aGUgXCJuZXh0
XCIgYnVmZmVyIGluIGEgY3ljbGljIG9yZGVyIikgKHByZXZpb3VzLWJ1ZmZlciBtZW51LWl0
ZW0gIlByZXZpb3VzIEJ1ZmZlciIgcHJldmlvdXMtYnVmZmVyIDpoZWxwICJTd2l0Y2ggdG8g
dGhlIFwicHJldmlvdXNcIiBidWZmZXIgaW4gYSBjeWNsaWMgb3JkZXIiKSAoc2VsZWN0LW5h
bWVkLWJ1ZmZlciBtZW51LWl0ZW0gIlNlbGVjdCBOYW1lZCBCdWZmZXIuLi4iIHN3aXRjaC10
by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgbmFtZSwgYW5kIHNlbGVjdCB0
aGF0IGJ1ZmZlciBpbiB0aGUgY3VycmVudCB3aW5kb3ciKSAobGlzdC1hbGwtYnVmZmVycyBt
ZW51LWl0ZW0gIkxpc3QgQWxsIEJ1ZmZlcnMiIGxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVw
IGEgd2luZG93IGxpc3RpbmcgYWxsIEVtYWNzIGJ1ZmZlcnMiKSAoc2VsZWN0LWJ1ZmZlci1p
bi1wcm9qZWN0IG1lbnUtaXRlbSAiU2VsZWN0IEJ1ZmZlciBJbiBQcm9qZWN0Li4uIiBwcm9q
ZWN0LXN3aXRjaC10by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgYmVsb25n
aW5nIHRvIGN1cnJlbnQgcHJvamVjdCwgYW5kIHN3aXRjaCB0byBpdCIpIChsaXN0LWJ1ZmZl
cnMtaW4tcHJvamVjdCBtZW51LWl0ZW0gIkxpc3QgQnVmZmVycyBJbiBQcm9qZWN0Li4uIiBw
cm9qZWN0LWxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVwIGEgd2luZG93IGxpc3RpbmcgYWxs
IEVtYWNzIGJ1ZmZlcnMgYmVsb25naW5nIHRvIGN1cnJlbnQgcHJvamVjdCIpKSkNCiAgIHBv
cHVwLW1lbnUoKGtleW1hcCAiQnVmZmVycyIgWygiKnNjcmF0Y2gqICAiIC4gI2YoY29tcGls
ZWQtZnVuY3Rpb24gKCkgKGludGVyYWN0aXZlIG5pbCkgIzxieXRlY29kZSAtMHgxNjYyM2Jk
MTAxZmUzNTgwPikpICgiKk1lc3NhZ2VzKiAgKiUiIC4gI2YoY29tcGlsZWQtZnVuY3Rpb24g
KCkgKGludGVyYWN0aXZlIG5pbCkgIzxieXRlY29kZSAtMHgxNjYyM2JkNTRmMzkzNTgwPikp
XSAoY29tbWFuZC1zZXBhcmF0b3IgIi0tIikgKG5leHQtYnVmZmVyIG1lbnUtaXRlbSAiTmV4
dCBCdWZmZXIiIG5leHQtYnVmZmVyIDpoZWxwICJTd2l0Y2ggdG8gdGhlIFwibmV4dFwiIGJ1
ZmZlciBpbiBhIGN5Y2xpYyBvcmRlciIpIChwcmV2aW91cy1idWZmZXIgbWVudS1pdGVtICJQ
cmV2aW91cyBCdWZmZXIiIHByZXZpb3VzLWJ1ZmZlciA6aGVscCAiU3dpdGNoIHRvIHRoZSBc
InByZXZpb3VzXCIgYnVmZmVyIGluIGEgY3ljbGljIG9yZGVyIikgKHNlbGVjdC1uYW1lZC1i
dWZmZXIgbWVudS1pdGVtICJTZWxlY3QgTmFtZWQgQnVmZmVyLi4uIiBzd2l0Y2gtdG8tYnVm
ZmVyIDpoZWxwICJQcm9tcHQgZm9yIGEgYnVmZmVyIG5hbWUsIGFuZCBzZWxlY3QgdGhhdCBi
dWZmZXIgaW4gdGhlIGN1cnJlbnQgd2luZG93IikgKGxpc3QtYWxsLWJ1ZmZlcnMgbWVudS1p
dGVtICJMaXN0IEFsbCBCdWZmZXJzIiBsaXN0LWJ1ZmZlcnMgOmhlbHAgIlBvcCB1cCBhIHdp
bmRvdyBsaXN0aW5nIGFsbCBFbWFjcyBidWZmZXJzIikgKHNlbGVjdC1idWZmZXItaW4tcHJv
amVjdCBtZW51LWl0ZW0gIlNlbGVjdCBCdWZmZXIgSW4gUHJvamVjdC4uLiIgcHJvamVjdC1z
d2l0Y2gtdG8tYnVmZmVyIDpoZWxwICJQcm9tcHQgZm9yIGEgYnVmZmVyIGJlbG9uZ2luZyB0
byBjdXJyZW50IHByb2plY3QsIGFuZCBzd2l0Y2ggdG8gaXQiKSAobGlzdC1idWZmZXJzLWlu
LXByb2plY3QgbWVudS1pdGVtICJMaXN0IEJ1ZmZlcnMgSW4gUHJvamVjdC4uLiIgcHJvamVj
dC1saXN0LWJ1ZmZlcnMgOmhlbHAgIlBvcCB1cCBhIHdpbmRvdyBsaXN0aW5nIGFsbCBFbWFj
cyBidWZmZXJzIGJlbG9uZ2luZyB0byBjdXJyZW50IHByb2plY3QiKSkgKCM8d2luZG93IDEg
b24gKnNjcmF0Y2gqPiAxOSAoMTggLiAwKSAwIG5pbCAxOSAoMTggLiAwKSBuaWwgKDAgLiAw
KSAoMSAuIDApKSBuaWwgdCkNCiAgIG1lbnUtYmFyLW9wZW4obmlsIDE4KQ0KICAgbWVudS1i
YXItb3Blbi1tb3VzZSgobW91c2UtMSAobmlsIG1lbnUtYmFyICgyMSAuIDApIDI0MjQpKSkN
CiAgIGZ1bmNhbGwtaW50ZXJhY3RpdmVseShtZW51LWJhci1vcGVuLW1vdXNlIChtb3VzZS0x
IChuaWwgbWVudS1iYXIgKDIxIC4gMCkgMjQyNCkpKQ0KICAgY2FsbC1pbnRlcmFjdGl2ZWx5
KG1lbnUtYmFyLW9wZW4tbW91c2UgbmlsIG5pbCkNCiAgIGNvbW1hbmQtZXhlY3V0ZShtZW51
LWJhci1vcGVuLW1vdXNlKQ0KDQoNCm1hcnRpbg0K
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:35:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:35:08 2025
Received: from localhost ([127.0.0.1]:43382 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1th5ae-0005AL-L7
for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:35:08 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:42335)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1th5ac-00055W-8a
for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:35:07 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
5b1f17b1804b1-43934d6b155so4356065e9.1
for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 03:35:06 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1739100899; x=1739705699; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=7JWVbj6LPKQGYJaX9zOXQjKNPZmY4c8R3Mni9krWQPs=;
b=ZTJUnqyCgWTCJD10FSyOVpBesZqg0UPv0tbZBnUcaGjdGd1j+gmQbgTEuemj1FGO4J
l/S0MC5cDasQETLgLCPioErTZH22dTXXt5F3xQEZ2NONLnjKEXcEb/e9bLiGEZNUt94Z
HaO2osTQ7DLHRLmOC+YVVjl1A0ty9m9V5QwPc0ZTE0EfNMJveq66cr2m29rOJt6SE6fQ
segaDvcT+5HmOssF9D+mMGUXGmYuBx/+bcFALPI2kMjS7Y98yqorUFSEC/BibOPeRizU
m28BNx9jKlQRwgj8/ENKZRWCfMqiRcs4hH6DMIUNM+cZ3K4dYZI12F3cSxgAIGKo8RoO
rmIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1739100899; x=1739705699;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=7JWVbj6LPKQGYJaX9zOXQjKNPZmY4c8R3Mni9krWQPs=;
b=A0FOeafc9K5O1iUKBxL3sWPopcKn/A9+42mw2390N3gJUyUr2h42kIeBbDg0unQ13/
QXsgH4kxgN7Uprf7F0gJ8zxN6wqt6pCPahZ7rHh0KmohK7GmReLLirsAkwjmO9poT2pt
AwOYyb28243hg433CcNhuUHmcsCCAIGeAUC8YZ98deNfu5Lcz8s81xZPlSrZKpRydpWi
A5rwdVe68vYIna2mtSUGnFqgx4KuOV1yCbdGOjMV1xe++txSt1KOeEQl3p/M1U6y8KvL
JOgNvxVBAy+iUulRHEz/kXDsjzj51Mvec1VxFSrZzCq+QLQl+40VVQczR3wfeMDMtVEM
+/Lg==
X-Forwarded-Encrypted: i=1;
AJvYcCXujyFRSo5ZKn1DND8OFPUdOcTEToNGzrKocb5FwdMoDKUrKA9u5hEAN9+PNEpwRQoaCMywSw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw1YbciCWuLklaDLhXmvAgzy26BZdkg86IRxB2MVBzKhIb6w1M6
Y4ffkYmBn0pPmPsloKKqt8rlBevKFrwOMt2GXAxVFCSAlVqHv0dtXIqB+A==
X-Gm-Gg: ASbGncvGda5SPsbUo7iM1OuJOlBFQX4fFFsKtI7r/B6F245ymT/zJWMjLh263GKuMCS
47mRWQ7qG4AsiE3ePcpy9+MAp7lSfKMEmWoDauVOf9jyNX+7p9qc5mTko3jdgrkfwu/xVdYyga0
Xo+SJi7hPbfL2a6B72k/glAFOCwCq4hvFLkTx01z078gr1ZgDACpqkOwLBRPtFgxg87TQ2oI8GC
zt0mJIMP/B4a3bfxwjTvaz+rLVS6Va84E22v40jd1z5vZ8sAJXPcEQHkRjPXnqkQUA5yAz+6sCZ
ADLHVq15atEm7gK7w4D1M9vN1Ar9Zddow3z0eKFN8lZbTK5VhxN4b4aoIy0kh+gx41FFoNHij7t
UQqXfuaAcjF9MIhuJUF1HsAtX
X-Google-Smtp-Source: AGHT+IFNoLZk+aeH19YYljQeUWW8VoTjoTZoL93SjkkOGIvOGFqAh0wmr97plu3SSYBHTwLGVI5pEg==
X-Received: by 2002:a05:600c:c7:b0:434:e65e:457b with SMTP id
5b1f17b1804b1-43912d0f1eemr102199825e9.3.1739100898861;
Sun, 09 Feb 2025 03:34:58 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
[2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-4390d94d40csm146644255e9.9.2025.02.09.03.34.57
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 09 Feb 2025 03:34:58 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
<m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
<m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
<e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
Date: Sun, 09 Feb 2025 12:34:57 +0100
Message-ID: <m234gnmjvi.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: text/plain
martin rudalics <rudalics@HIDDEN> writes:
>> Wrong version. Please use this one:
>
> Can you send me one I can load with emacs -Q -nw?
> Here it complains about a void defclass.
Sorry, I would never have expected that defclass requires eieio, and is
not autoloaded. Sachen gibt's :-/.
--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable
;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp
;; Copyright (C) 2025 Gerd M=C3=B6llmann
;; This file is not part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
;;; Todo
;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu. Close it by moving the selection out.
;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)
;; menu-bar-menu doesn't work (list of keymaps?)
(eval-when-compile (require 'cl-lib))
(require 'eieio)
(defclass tty-menu-element () ()
:documentation "Base class for elements of a menu.")
(defclass tty-menu-pane (tty-menu-element)
((items :initarg :items :initform nil :type t)
(buffer :initarg :buffer :type buffer)
(layout :type list))
:documentation "Class for menu panes.")
(defclass tty-menu-item (tty-menu-element)
((name :initarg :name :type string)
(enable :initarg :enable :initform t :type t)
(help :initarg :help :initform nil :type t)
(visible :initarg :visible :initform t :type t)
(key-sequence :initarg :key-sequence :initform nil :type t)
(keys :initarg :keys :initform nil :type t)
(filter :initarg :filter :initform nil :type t)
(button :initarg :button :initform nil :type t)
(selected :initarg :selected :initform nil :type t)
(binding :initarg :binding :initform nil :type t)))
(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())
(defclass tty-menu-separator (tty-menu-item)
((sep :initform "-" :type string :reader tty-menu-sep)))
(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
(with-slots (name sep enable) item
(setf enable nil)
(cl-multiple-value-bind (ch disp)
(pcase name
("--space" (cl-values ?\s nil))
("--double-line" (cl-values ?=3D 'box-double-horizontal))
(_ (cl-values ?- 'box-horizontal)))
(setf sep
(make-string 1
(or (and disp
(let ((c (display-table-slot
standard-display-table disp)))
(and (characterp c) c)))
ch))))))
(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")
(defvar tty-menu-triangle "=E2=96=B7")
(defvar tty-menu-radio-on "=E2=9C=94")
(defvar tty-menu-radio-off "")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=F0=90=84=82")
(defun tty-menu-selectable-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-visible-p (item)
(eval (slot-value item 'visible)))
(defun tty-menu-enabled-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-ninsert (n x)
(cl-loop repeat n do (insert x)))
(cl-defgeneric tty-menu-button-string (item)
(:method ((_ tty-menu-item)) "")
(:method ((r tty-menu-radio))
(format tty-menu-button-format
(if (slot-value r 'selected)
tty-menu-radio-on tty-menu-radio-off)))
(:method ((c tty-menu-checkbox))
(format tty-menu-button-format
(if (slot-value c 'selected)
tty-menu-checkbox-on tty-menu-checkbox-off)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-name-string (item)
(:method ((item tty-menu-item))
(format tty-menu-name-format (slot-value item 'name)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-key-string (item)
(:method ((item tty-menu-item))
(format tty-menu-key-format
(with-slots (binding) item
(cond ((commandp binding)
(key-description (where-is-internal binding nil t)))
((keymapp binding)
tty-menu-triangle)
(t (format "?? %S" binding))))))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-draw-button (item pane)
(:method ((_item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width ?\s))))
(:method ((item tty-menu-button) _pane)
(with-slots (selected button) item
(cl-destructuring-bind (_ . form) button
(setf selected (eval form))
(insert (tty-menu-button-string item)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-name (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width _ _) layout
(with-slots (name) item
(insert (tty-menu-name-string item))
(indent-to (+ left-border button name-width))))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ name-width _ _) layout
(tty-menu-ninsert name-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-key (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width key-width _) la=
yout
(insert (tty-menu-key-string item))
(indent-to (+ left-border button name-width key-width)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ _ key-width _) layout
(tty-menu-ninsert key-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-finish (item pane)
(:method ((item tty-menu-item) _)
(let* ((enabled (tty-menu-enabled-p item))
(face (if enabled 'tty-menu-enabled-face
'tty-menu-disabled-face)))
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
(put-text-property (pos-bol) (pos-eol) 'face face))
(when-let* ((help (slot-value item 'help)))
(put-text-property (pos-bol) (pos-eol) 'help-echo help)))
(:method ((_item tty-menu-separator) _)
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
(put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))
(cl-defgeneric tty-menu-layout (pane)
(:method ((pane tty-menu-pane))
(with-slots (items layout) pane
(cl-loop
with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
for i in items
maximize (string-width (tty-menu-button-string i)) into button
maximize (string-width (tty-menu-name-string i)) into name
maximize (string-width (tty-menu-key-string i)) into key
finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))
(defun tty-menu-try-place-point (selectable old-line)
(goto-char (point-min))
(if (nth old-line selectable)
(forward-line old-line)
(let ((next (cl-loop for i from (1+ old-line)
to (1- (length selectable))
when (nth i selectable) return i))
(prev (cl-loop for i downfrom (1- old-line) to 0
when (nth i selectable) return i)))
(cond (next (forward-line next))
(prev (forward-line prev))))))
(cl-defgeneric tty-menu-draw (item pane)
(:method ((pane tty-menu-pane) line)
(with-slots (buffer items) pane
(with-current-buffer buffer
(let ((old-line (or line (1- (line-number-at-pos)))))
(erase-buffer)
(tty-menu-layout pane)
(let ((selectable
(cl-loop for i in items
when (tty-menu-visible-p i)
do (tty-menu-draw i pane)
and collect (tty-menu-selectable-p i))))
(tty-menu-try-place-point selectable old-line))))))
(:method :around ((item tty-menu-item) pane)
(let ((start (point)))
(insert (format tty-menu-left-border-format ""))
(cl-call-next-method)
(insert (format tty-menu-right-border-format ""))
(tty-menu-draw-finish item pane)
(insert ?\n)
(put-text-property start (point) 'tty-menu-item item)))
(:method ((item tty-menu-item) pane)
(tty-menu-draw-button item pane)
(tty-menu-draw-name item pane)
(tty-menu-draw-key item pane)))
(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)
(cl-defgeneric tty-menu-select-item (item how)
(:method ((item tty-menu-item) how)
(when-let* ((enabled (tty-menu-enabled-p item)))
(throw 'tty-menu-item-selected (cons item how))))
(:method ((_item tty-menu-separator) _))
(:method ((item tty-menu-button) _)
(with-slots (binding) item
(when (commandp binding)
(call-interactively binding))
(tty-menu-draw tty-menu-pane-drawn nil))))
(defun tty-menu-create-buffer (pane)
"Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
(with-slots (buffer) pane
(with-current-buffer buffer
(dolist (var '((mode-line-format . nil)
(header-line-format . nil)
(tab-line-format . nil)
(tab-bar-format . nil)
(frame-title-format . "")
(truncate-lines . t)
(cursor-in-non-selected-windows . nil)
(cursor-type . nil)
(show-trailing-whitespace . nil)
(display-line-numbers . nil)
(left-fringe-width . nil)
(right-fringe-width . nil)
(left-margin-width . 0)
(right-margin-width . 0)
(fringes-outside-margins . 0)
(scroll-conservatively . 1)))
(set (make-local-variable (car var)) (cdr var)))
(let ((inhibit-modification-hooks t)
(inhibit-read-only t)
(indent-tabs-mode nil))
(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
(tty-menu-draw pane 0)
(cl-flet ((line-width ()
(save-excursion
(goto-char (point-min))
(goto-char (line-end-position))
(current-column))))
(list (current-buffer)
(line-width)
(count-lines (point-min) (point-max))))))))
(defun tty-menu-make-element (item)
(cl-labels ((separator? (name) (string-prefix-p "--" name))
(button? (props) (plist-get props :button))
(radio? (props) (eq (car (button? props)) :radio))
(toggle? (props) (eq (car (button? props)) :toggle)))
;; COND* complains about unknown pattern (PREDICATE symbol) if
;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
;; symbol)) instead.
(cond*
((match* (cons 'menu-item
(cons (constrain name (separator? name))
props))
item)
(apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
((match* (list 'menu-item name) item)
(make-instance 'tty-menu-item :name name :enable nil))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (radio? props)))))
item)
(apply #'make-instance 'tty-menu-radio
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (toggle? props)))))
item)
(apply #'make-instance 'tty-menu-checkbox
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding props)))
item)
(apply #'make-instance 'tty-menu-item
(cl-list* :name name :binding binding props)))
((match* (cons (constrain name (separator? name)) _)
item)
(make-instance 'tty-menu-separator :name name))
((match* (cons name
(cons help
binding))
item)
(make-instance 'tty-menu-item :name name :binding binding :help help))
((match* (cons name binding) item)
(make-instance 'tty-menu-item :name name :binding binding))
(t (error "No match for menu item %S" item)))))
(defun tty-menu-keymap-name (keymap default)
(let ((name (last keymap)))
(or (and (stringp (car name)) (car name))
default)))
(defun tty-menu-make-pane-buffer (keymap)
(cl-labels
((pane-buffer-name ()
(format " *tty-menu-%s*" (tty-menu-keymap-name keymap "<no-name>")))
(make-pane ()
(make-instance
'tty-menu-pane
:buffer (get-buffer-create (pane-buffer-name))
:items (cl-loop for b being the key-bindings of keymap
collect (tty-menu-make-element b)))))
(tty-menu-create-buffer (make-pane))))
(defvar tty-menu-frame-parameters
`((visibility . nil)
(background-color . "grey20")
(foreground-color . "white")
(width . 0) (height . 0)
(min-width . t) (min-height . t)
(no-accept-focus . t)
(no-focus-on-map . t)
(border-width . 0)
(child-frame-border-width . 1)
(left-fringe . 0)
(right-fringe . 0)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(tty-menu-bar-lines . 0)
(tool-bar-lines . 0)
(tab-bar-lines . 0)
(no-other-frame . t)
(no-other-window . t)
(no-delete-other-windows . t)
(unsplittable . t)
(undecorated . t)
(cursor-type . nil)
(no-special-glyphs . t)
(desktop-dont-save . t)))
(defun tty-menu-frame-parameters ()
(let ((params (copy-sequence tty-menu-frame-parameters))
(fg (face-attribute 'tty-menu-enabled-face :foreground))
(bg (face-attribute 'tty-menu-enabled-face :background)))
(when (stringp fg)
(setf (alist-get 'foreground-color params) fg))
(when (stringp bg)
(setf (alist-get 'background-color params) bg))
params))
(defun tty-menu-make-fully-visible (f1 f2 x y)
(let* ((f1-edges (frame-edges f1))
(f1-width (frame-width f1))
(f1-height (frame-height f1))
(f1-x (nth 0 f1-edges))
(f1-y (nth 1 f1-edges))
(f2-width (frame-width f2))
(f2-height (frame-height f2))
(new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
(new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
;; Ensure F2 is fully contained within F1
(setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
(setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
;; Move and resize F2
(set-frame-position f2 new-x new-y)
(set-frame-size f2 f2-width f2-height)))
(defun tty-menu-frame-absolute-position (frame x y)
"Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
(let ((current-frame frame)
(abs-x x)
(abs-y y))
(while (frame-parent current-frame)
(let ((edges (frame-edges current-frame)))
(setq abs-x (+ abs-x (nth 0 edges)))
(setq abs-y (+ abs-y (nth 1 edges)))
(setq current-frame (frame-parent current-frame))))
(cons abs-x abs-y)))
(defun tty-menu-create-frame (keymap where)
(cl-destructuring-bind (buffer width height)
(tty-menu-make-pane-buffer keymap)
(cl-destructuring-bind (parent-frame x y) where
;; We want to show the menu using a root frame as parent because
;; that doesn't clip the frame. Means that we have to translate
;; coordinates to absolute.
(when (frame-parent parent-frame)
(cl-destructuring-bind (ax . ay)
(tty-menu-frame-absolute-position parent-frame x y)
(setq x ax y ay)
(setq parent-frame (frame-root-frame parent-frame))))
(let* ((minibuffer (minibuffer-window parent-frame))
(window-min-height 1)
(window-min-width 1)
(after-make-frame-functions nil)
(frame (make-frame `((parent-frame . ,parent-frame)
(name . ,(buffer-name buffer))
(minibuffer . ,minibuffer)
,@(tty-menu-frame-parameters))))
(win (frame-root-window frame)))
(set-window-buffer win buffer)
(set-window-dedicated-p win t)
(set-frame-size frame width height)
(set-frame-position frame x y)
(tty-menu-make-fully-visible parent-frame frame x y)
(make-frame-visible frame)
(raise-frame frame)
(select-frame-set-input-focus frame)
frame))))
(defun tty-menu-mouse-select-item (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(unless (eq (window-frame win) (tty-top-frame))
(throw 'tty-menu-item-selected nil))
(when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
(tty-menu-select-item item 'mouse))))
(defun tty-menu-key-select-item ()
(interactive)
(when-let* ((item (get-text-property (point) 'tty-menu-item)))
(tty-menu-select-item item 'key)))
(defun tty-menu-mouse-moved (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(when (eq (window-frame win) (tty-top-frame))
(let ((item (get-text-property (posn-point end) 'tty-menu-item)))
(when (and item (tty-menu-selectable-p item))
(goto-char (posn-point end)))))))
(defun tty-menu-next-line ()
(interactive)
(cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
then (next-single-property-change next 'tty-menu-item)
while next
for item =3D (get-text-property next 'tty-menu-item)
until (tty-menu-selectable-p item)
finally (when next (goto-char next))))
(defun tty-menu-previous-line ()
(interactive)
(cl-loop for prev =3D (previous-single-property-change
(point) 'tty-menu-item nil (point-min))
then (previous-single-property-change
prev 'tty-menu-item nil (point-min))
while prev
for item =3D (get-text-property prev 'tty-menu-item)=20
if (tty-menu-selectable-p item) do (goto-char prev) and return t
else if (eq prev (point-min)) return t))
(defun tty-menu-close-pane ()
(interactive)
(throw 'tty-menu-item-selected nil))
(defun tty-menu-isearch (forward)
(isearch-mode forward nil nil)
(while isearch-mode
(let* ((key (read-key-sequence nil nil t nil nil nil)))
(when-let* ((cmd (lookup-key isearch-mode-map key)))
(if (and (eq cmd #'isearch-printing-char)
(stringp key))
(isearch-printing-char (aref key 0))
(call-interactively cmd))))))
(defun tty-menu-isearch-forward ()
(interactive)
(tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
(interactive)
(tty-menu-isearch nil))
(defvar-keymap tty-menu-keymap
:doc "Keymap for menu interaction."
"<up>" #'tty-menu-previous-line
"<down>" #'tty-menu-next-line
"<left>" #'tty-menu-close-pane
"C-b" #'tty-menu-close-pane
"C-g" #'keyboard-quit
"C-j" #'tty-menu-key-select-item
"C-n" #'tty-menu-next-line
"C-p" #'tty-menu-previous-line
"C-r" #'tty-menu-isearch-backward
"C-s" #'tty-menu-isearch-forward
"RET" #'tty-menu-key-select-item
"SPC" #'tty-menu-key-select-item
"<return>" #'tty-menu-key-select-item
"<mouse-movement>" #'tty-menu-mouse-moved
"<mouse-1>" #'tty-menu-mouse-select-item)
(defun tty-menu-show-selected-item ()
(unless tty-menu-selection-ov
(setq tty-menu-selection-ov (make-overlay 1 1))
(overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
(move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))
(defun tty-menu-global-menu ()
(keymap-lookup global-map "<menu-bar>"))
(defun tty-menu-position (pos)
(interactive)
(cond*
((match* 'nil pos) nil)
((match* 't pos)
(cl-destructuring-bind (frame x . y) (mouse-position)
;; mouse-position sometimes returns nil for x and y which I
;; think should not happen.
(list frame (or x 10) (or y 10))))
((match* (eventp e) pos)
(let* ((end (event-end e))
(win (posn-window end))
(x (car (posn-x-y end)))
(y (cdr (posn-x-y end))))
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y)))))
((match* (cons (cons (numberp x)
(numberp y))
(cons (windowp win)
_))
pos)
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y))))
((match* (cons (list (numberp x) (numberp y))
(cons (framep frame) _))
pos)
(list frame x y))
((match* (cons (cons (numberp x) (numberp y))
(cons (framep frame) _))
pos)
(list frame x y))
((match* (cons (numberp x) (numberp y)) pos)
(list (selected-frame) x y))
(t (error "%S does not match in tty-menu-position" pos))))
(defun tty-menu-where (how)
(cl-ecase how
(mouse (tty-menu-position t))
(key (let* ((posn (posn-at-point (line-end-position)))
(xy (posn-x-y posn))
(win (posn-window posn)))
(tty-menu-position (list xy win))))))
(defun tty-menu-loop (keymap where)
(let ((frame (tty-menu-create-frame keymap where)))
(unwind-protect
;; Inner loop handling mouse movement over the pane,
;; moving with the keyboard on the pane. The loop is
;; left by a throw when a menu-item is selected.
(cl-loop
named outer-loop
while t
for res =3D (catch 'tty-menu-item-selected
(while t
(tty-menu-show-selected-item)
(let* ((track-mouse t)
(key (read-key-sequence nil))
(cmd (lookup-key tty-menu-keymap key)))
(when (commandp cmd)
(call-interactively cmd)))))
do
;; If the selected item was for a sub-pane, call ourselves
;; recursively with the sub-pane.
(cond* ((match* (cons selected how) res)
(with-slots (binding) selected
(if (keymapp binding)
(tty-menu-loop binding (tty-menu-where how))
;; Return a list because x-popup-menu does.
(cl-return-from outer-loop (list binding)))))
((match* 'nil res)
(cl-return-from outer-loop nil))))
(when frame
(delete-frame frame)))))
(defun frame-with-name (name)
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-find-if (lambda (f) (equal (frame-name f) name))
(frame-list))))
(defun tty-menu-delete-menu-frames ()
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-loop for frame in (frame-list)
when (string-prefix-p " *tty-menu-" (frame-name frame))
do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
(when-let* ((where (tty-menu-position position)))
(cond ((keymapp menu)
(tty-menu-loop menu where))
((consp menu)
(cl-loop with outer =3D (make-sparse-keymap "outer")
for keymap in menu
for name =3D (tty-menu-keymap-name keymap "?")
do (define-key outer (vector (intern name)) keymap)
finally (tty-menu-loop outer where)))
(t (error "Not a menu: %S" menu)))))
;;;###autoload
(define-minor-mode tty-menu-mode
"Global minor mode for displaying menus with tty child frames."
:global t :group 'menu
(unless (display-graphic-p)
(if tty-menu-mode
(remove-function (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu))
(add-function :override (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu)))
(provide 'tty-menu)
;;; Local Variables:
;;; fill-column: 80
;;; End:
--=-=-=--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:27:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:27:08 2025
Received: from localhost ([127.0.0.1]:43353 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1th5Su-0004ke-8w
for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:27:08 -0500
Received: from mout.gmx.net ([212.227.15.19]:43237)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1th5Sr-0004jy-Or
for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:27:06 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1739100416; x=1739705216; i=rudalics@HIDDEN;
bh=ad1GqqGEz/V/VliK40LUx68MwUaj4UvBcPru1J6g6cI=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=AzQMH3c4alq0z9eBsn/N5XeSYEayQVtY7M7c+Ch3nvKu9tr/CgsYIo0DkuetwPYC
nvdKBvYsR3jW8ynf1vBTNIP2TucLtBE55h4GcvTYcyu5YfVzW2jXfZx4rORrBnSpb
aoQSQ0B23hZIEqgD6K2DFYnJCWajyzjPtLT0AikNvf0Z8lFH8IDNriDOmyDlNav/5
YU5080VAMZ+XxJLLm+/aiwhPOBa++30kXS0HC1RP52SnnxEc9JKAo2IRr7tEB0xma
qYhc6DZHZnhk2W7/I0LWBLVyGCQuHdbSd38/pN2FE27+9/V/+5b06/0abHPkCo6Rv
vCXZDWuAtBkv5h6imQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.220]) by mail.gmx.net (mrgmx004
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MulqD-1tQFKl1MYt-00wr94; Sun, 09
Feb 2025 12:26:56 +0100
Message-ID: <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
Date: Sun, 9 Feb 2025 12:26:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
<m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
<m2frknml43.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2frknml43.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:u6yab7u6fkmIdnKEPnF7aBZW3+VnOL7agI3GXhM05oiKvzZqru7
d4p5ebiuF1KOAFD4TI8ekhHaC5FitAgM6CPBAXr4zGU5SE+PqU1Ii9qeZfqdJEBhBk/jseA
7qsj/A7EA1Xbotum10iwYdIw6XlGzZzgGySKy8TlorAYKtv+zlOibQGZ6nVMYtRVWitmqtd
eX1irIVn0apuZdDLwN18g==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:oGk5YOF1AAU=;1hiKD19WQQNSclWicvJR9mbTbR7
OlF7vv+gPppoQdgieZm9qZ8/DzbQkwsU+G+L5AQlGw1JQOHtrhrsVZYsYM12oCdu0MMXUSn6b
I47S5zti7UL5iXswFiGwDth7HryV10Zn104SwX7vic8I9CP1LaIvUMzEcBmuJtjWPYK5tBBHC
TMqJiZ/eaydMh0gBDdWuLPZEg0xtoioZdbJSEbKatXNKvfNplkgOh/NOPdjhapeIyH3yD39ZI
N59NS1J5swc0dYfYFuNUdZ/KJ4feXNsGKg1KoFGUm+lw6OLwUj59H8jskQpCVYcOPTAQHpaml
OBU8Ec1n1TLLbzDzoVVc5J9bzivqzKfH0sK0lV5inFfSCjETGj/Yn+pek2PNX7akILn3ieiCs
MSxkw4lCka9+i1fPuMHgDrccm10+JmzUhefFSl8yrYfV2n0BZQNf5bRvksC5fjts3oVKnvXAZ
lrW60vwCI+S2BRWhngx/gVT7Rza0ECPzgyCz4i9x3sfNi3YOD0J+fozNOmRPnb99Tf8XDt7aC
6Zm6oFEAv8tOLTbZia1rVMAgZRlrKITM6oJBT52DPX+qdbYauBPw6b4WKZS7mf7hHcKTwVZ0w
Xtl5XOqBJ8abrxjNWGAmHJJCMWdTHGP9wc9JWPhHY3MRGha+uxPsHhHXTy4fiNnFyB4SZXBL8
RQC8Rh3+1Y77JxUuOsh+dDAOHKCXjAcHMF7GMmyDltg+crlhbGbeGFfhb5ER/ExNuzviBz24S
2xTIdmsfWLyhToRuhwdHvdqK1ReBxAR0liyn9yqZRLEww6J7C3WMqhqiLmXRz9MR74co/ZQxP
D05jOukkRl0yELj0xi+n1/+pRF2dfSGoUSZaQofzhuvGE4/R+FFVkHinU1NuUF+vkInwEkm2W
8dq1Lk7VWEvsrHL76GZCNw+Ygl5SaglCCk8v+q96NEGeR8NAoRP7JLZA9ruzcm1/CuBCAmSuu
OlIlC6Uuj3ESbUhVzA/A9j/OadAAi+8bHMV1PRw2uZAezuRiMVA8gAFbrjCtnrPZ4YxuEMBlN
jaU3EVmmVBQBodimVKHtyenhNb7fM4bXhrslG5tcK89U/00rKUpxNFt/RJwooPSLeGGMAK5IZ
vdwc+4cL1IxYRpPAXF+toI3mElHuHHLQqtym/gS/yQoUwhdUQy/aO5c1BiKznJBtPNHWfg292
5UWWjjbN6Ky2vN/SFuQlSlHxjxC5p+aCgYZqxVcFW7TWbe+pkRDStiFybWQxFml7kw9Mqaz5b
VRy2anM0s8JXJ8kSWhL4mHDqqZipJglc2j2xO0j4M+chtrcYAtDAwYU8xC5CVBVv5j637pq/U
dZFMz7yHahuvhbs4xMZJBESDkBKVKW1pBwx5p0VYVL4Xc532D/MtQAdX60LI+H9I0AsxtwFji
85hW6Z6hLn+uRWmfHSNFzXFr2PgBtCLsgZfWyDdKdxWFkvuItjP7twAE/5LEkktRPla9LzXnF
ZiuKFSg==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
> Wrong version. Please use this one:
Can you send me one I can load with emacs -Q -nw?
Here it complains about a void defclass.
martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:08:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:08:24 2025
Received: from localhost ([127.0.0.1]:43316 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1th5Am-0003o5-6r
for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:08:24 -0500
Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]:52250)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1th5Aj-0003no-LQ
for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:08:22 -0500
Received: by mail-wm1-x335.google.com with SMTP id
5b1f17b1804b1-4363ae65100so40858215e9.0
for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 03:08:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1739099295; x=1739704095; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=apZJnunvGoGDxHdOWip0zrjVdSBDc4/2d3yVwnuy+Mc=;
b=YYApe+E+0uJdHyQ0d1A1sNPnI6X05Yil9zyhY1EEjv3KHRwnTvLFSjIzyznOYeqGhK
5e/FAftgxv9r4ohG/wkIMHvDi+Umjmqf4d2DbrONo1/sQHdfcIs7P+aI9yPRRy6ySy4k
m99cjlqHEoIS35xo4Z0cJa2BS/kFxV1BnkYUaJoSmk+ntYbG2EQQijJ/tH0HJvikMMt9
cZqk6qgsJKrl63lMN9kj9pWExLG9SpgYJMsfRUH9atqOC3UvUa+cdmPV9BJixjvbuZHw
yKmMhL6UbXEOk08PY8m135DQ2mR9ewaF2ss7oayVZJvFgM1HnnDDMbNIDzckDQj4CTr/
7RBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1739099295; x=1739704095;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=apZJnunvGoGDxHdOWip0zrjVdSBDc4/2d3yVwnuy+Mc=;
b=Vs8bhvFtNbmCooPii6gBi78XNjXOyGNcT9Z2sXUxaWX5LY2KTrsc1zhPNwwkJH6uYg
oMiUIfWQzNDn0OyJjZjCMGPcYyFaHIe4ocysKt36WSWvnnmDlfOYvjXSnKgfDD0NzgOo
v8OR26Ff/zpLKam8tfz5TqqdP9mLbDHAdEex3HDRIIJ3sicCCnn3DVPdUgvlsLYxvlu6
XIIqh/ZabcjbG/jQgoj6uLQuI2TBiL0coU5oGNw7+9SNj0vu6nSkyNRFpHeu0AmAwDXM
d8mTViI/vmNKpjsQpHN58Hi+yMq+xPwenttvEnbXMIEZLz7yg5IPRHe4Bi8Dv7NNq0iX
BBZg==
X-Forwarded-Encrypted: i=1;
AJvYcCU+fdFe+evU0WOBiZEpJJAK5/wdlMJ1bng/u70YULubdq1VvcMRA08OiZvsOhUSPdFGZWfrvQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwjzgjJpBYLUbfv7X9GxT7sekJPFlcLYhgkLNzwqcLLEdAgyCam
aYi0HTDs/A7+VHK/IJeVtgzl8AaWTd9Fw4ILYRD5fCCpopn63aQdA4COFA==
X-Gm-Gg: ASbGnctl0V1+i33hWnZ3h35soRBNH1eRQRmId/bYmXCFm7eErF37oi6vEjWRjBB5rv5
XCCK28oNCu64YLBhOegWqAHWze+DYj5zX8yD7e/EYfOflF7uywsV+5lrit6750Oug9HV5PSJW12
XF1coJAr2RSJBKieTBv44rOdqtxF9ObpijywwyuPF9qDpUAtBYMeGkgk/cxI1hy609Uo3gs5abM
nK6vilauH/WCPgCMmb1OElIyiMG1lMJCP92p+dEOTdtRb0Kugw9bPPRTW2kcTe1j7pS9XKBsHDz
sYq4MRS6FxE7P5E+0YqgMPBaR/JWtaF8mUeBfXz3jdKngXq76ILWS/aUDnpoKrJIBDX7wr1jgCQ
eNkWEtrMhKIWD0qWMkcfu91p9
X-Google-Smtp-Source: AGHT+IEYBvv2iKB2lfGXar6+jdgIDUvVOfqP0DOOlEmWoHu5eLL4yH1VZfbj+kGFuVSCmiAMyGBx0A==
X-Received: by 2002:a5d:64af:0:b0:38d:d371:e01d with SMTP id
ffacd0b85a97d-38dd371e466mr3644773f8f.49.1739099294702;
Sun, 09 Feb 2025 03:08:14 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
[2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-38dc3a10fffsm8457403f8f.12.2025.02.09.03.08.12
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 09 Feb 2025 03:08:14 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <m2jz9zmlfg.fsf@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
<m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
<m2jz9zmlfg.fsf@HIDDEN>
Date: Sun, 09 Feb 2025 12:08:12 +0100
Message-ID: <m2frknml43.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
>> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>>
>>> I take everything back. I think it would be much much better to do that
>>> all in Lisp.
>>
>> FWIW, a proof-of-concept, only showing a frame with a menu. 200 loc with
>> half of it copied from tty-tip.el.
>
> I'm not sure if it's worth it, but I did a bit more. You can try it out
> with something like
>
> (tty-menu-popup-menu t menu-bar-file-menu)
Wrong version. Please use this one:
--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable
;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp
;; Copyright (C) 2025 Gerd M=C3=B6llmann
;; This file is not part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
;;; Todo
;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu. Close it by moving the selection out.
;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)
;; menu-bar-menu doesn't work (list of keymaps?)
(eval-when-compile (require 'cl-lib))
(defclass tty-menu-element () ()
:documentation "Base class for elements of a menu.")
(defclass tty-menu-pane (tty-menu-element)
((items :initarg :items :initform nil :type t)
(buffer :initarg :buffer :type buffer)
(layout :type list))
:documentation "Class for menu panes.")
(defclass tty-menu-item (tty-menu-element)
((name :initarg :name :type string)
(enable :initarg :enable :initform t :type t)
(help :initarg :help :initform nil :type t)
(visible :initarg :visible :initform t :type t)
(key-sequence :initarg :key-sequence :initform nil :type t)
(keys :initarg :keys :initform nil :type t)
(filter :initarg :filter :initform nil :type t)
(button :initarg :button :initform nil :type t)
(selected :initarg :selected :initform nil :type t)
(binding :initarg :binding :initform nil :type t)))
(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())
(defclass tty-menu-separator (tty-menu-item)
((sep :initform "-" :type string :reader tty-menu-sep)))
(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
(with-slots (name sep enable) item
(setf enable nil)
(cl-multiple-value-bind (ch disp)
(pcase name
("--space" (cl-values ?\s nil))
("--double-line" (cl-values ?=3D 'box-double-horizontal))
(_ (cl-values ?- 'box-horizontal)))
(setf sep
(make-string 1
(or (and disp
(let ((c (display-table-slot
standard-display-table disp)))
(and (characterp c) c)))
ch))))))
(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")
(defvar tty-menu-triangle "=E2=96=B7")
(defvar tty-menu-radio-on "=E2=9C=94")
(defvar tty-menu-radio-off "")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=F0=90=84=82")
(defun tty-menu-selectable-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-visible-p (item)
(eval (slot-value item 'visible)))
(defun tty-menu-enabled-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-ninsert (n x)
(cl-loop repeat n do (insert x)))
(cl-defgeneric tty-menu-button-string (item)
(:method ((_ tty-menu-item)) "")
(:method ((r tty-menu-radio))
(format tty-menu-button-format
(if (slot-value r 'selected)
tty-menu-radio-on tty-menu-radio-off)))
(:method ((c tty-menu-checkbox))
(format tty-menu-button-format
(if (slot-value c 'selected)
tty-menu-checkbox-on tty-menu-checkbox-off)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-name-string (item)
(:method ((item tty-menu-item))
(format tty-menu-name-format (slot-value item 'name)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-key-string (item)
(:method ((item tty-menu-item))
(format tty-menu-key-format
(with-slots (binding) item
(cond ((commandp binding)
(key-description (where-is-internal binding nil t)))
((keymapp binding)
tty-menu-triangle)
(t (format "?? %S" binding))))))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-draw-button (item pane)
(:method ((_item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width ?\s))))
(:method ((item tty-menu-button) _pane)
(with-slots (selected button) item
(cl-destructuring-bind (_ . form) button
(setf selected (eval form))
(insert (tty-menu-button-string item)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-name (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width _ _) layout
(with-slots (name) item
(insert (tty-menu-name-string item))
(indent-to (+ left-border button name-width))))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ name-width _ _) layout
(tty-menu-ninsert name-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-key (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width key-width _) la=
yout
(insert (tty-menu-key-string item))
(indent-to (+ left-border button name-width key-width)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ _ key-width _) layout
(tty-menu-ninsert key-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-finish (item pane)
(:method ((item tty-menu-item) _)
(let* ((enabled (tty-menu-enabled-p item))
(face (if enabled 'tty-menu-enabled-face
'tty-menu-disabled-face)))
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
(put-text-property (pos-bol) (pos-eol) 'face face))
(when-let* ((help (slot-value item 'help)))
(put-text-property (pos-bol) (pos-eol) 'help-echo help)))
(:method ((_item tty-menu-separator) _)
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
(put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))
(cl-defgeneric tty-menu-layout (pane)
(:method ((pane tty-menu-pane))
(with-slots (items layout) pane
(cl-loop
with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
for i in items
maximize (string-width (tty-menu-button-string i)) into button
maximize (string-width (tty-menu-name-string i)) into name
maximize (string-width (tty-menu-key-string i)) into key
finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))
(defun tty-menu-try-place-point (selectable old-line)
(goto-char (point-min))
(if (nth old-line selectable)
(forward-line old-line)
(let ((next (cl-loop for i from (1+ old-line)
to (1- (length selectable))
when (nth i selectable) return i))
(prev (cl-loop for i downfrom (1- old-line) to 0
when (nth i selectable) return i)))
(cond (next (forward-line next))
(prev (forward-line prev))))))
(cl-defgeneric tty-menu-draw (item pane)
(:method ((pane tty-menu-pane) line)
(with-slots (buffer items) pane
(with-current-buffer buffer
(let ((old-line (or line (1- (line-number-at-pos)))))
(erase-buffer)
(tty-menu-layout pane)
(let ((selectable
(cl-loop for i in items
when (tty-menu-visible-p i)
do (tty-menu-draw i pane)
and collect (tty-menu-selectable-p i))))
(tty-menu-try-place-point selectable old-line))))))
(:method :around ((item tty-menu-item) pane)
(let ((start (point)))
(insert (format tty-menu-left-border-format ""))
(cl-call-next-method)
(insert (format tty-menu-right-border-format ""))
(tty-menu-draw-finish item pane)
(insert ?\n)
(put-text-property start (point) 'tty-menu-item item)))
(:method ((item tty-menu-item) pane)
(tty-menu-draw-button item pane)
(tty-menu-draw-name item pane)
(tty-menu-draw-key item pane)))
(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)
(cl-defgeneric tty-menu-select-item (item how)
(:method ((item tty-menu-item) how)
(when-let* ((enabled (tty-menu-enabled-p item)))
(throw 'tty-menu-item-selected (cons item how))))
(:method ((_item tty-menu-separator) _))
(:method ((item tty-menu-button) _)
(with-slots (binding) item
(when (commandp binding)
(call-interactively binding))
(tty-menu-draw tty-menu-pane-drawn nil))))
(defun tty-menu-create-buffer (pane)
"Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
(with-slots (buffer) pane
(with-current-buffer buffer
(dolist (var '((mode-line-format . nil)
(header-line-format . nil)
(tab-line-format . nil)
(tab-bar-format . nil)
(frame-title-format . "")
(truncate-lines . t)
(cursor-in-non-selected-windows . nil)
(cursor-type . nil)
(show-trailing-whitespace . nil)
(display-line-numbers . nil)
(left-fringe-width . nil)
(right-fringe-width . nil)
(left-margin-width . 0)
(right-margin-width . 0)
(fringes-outside-margins . 0)
(scroll-conservatively . 1)))
(set (make-local-variable (car var)) (cdr var)))
(let ((inhibit-modification-hooks t)
(inhibit-read-only t)
(indent-tabs-mode nil))
(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
(tty-menu-draw pane 0)
(cl-flet ((line-width ()
(save-excursion
(goto-char (point-min))
(goto-char (line-end-position))
(current-column))))
(list (current-buffer)
(line-width)
(count-lines (point-min) (point-max))))))))
(defun tty-menu-make-element (item)
(cl-labels ((separator? (name) (string-prefix-p "--" name))
(button? (props) (plist-get props :button))
(radio? (props) (eq (car (button? props)) :radio))
(toggle? (props) (eq (car (button? props)) :toggle)))
;; COND* complains about unknown pattern (PREDICATE symbol) if
;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
;; symbol)) instead.
(cond*
((match* (cons 'menu-item
(cons (constrain name (separator? name))
props))
item)
(apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
((match* (list 'menu-item name) item)
(make-instance 'tty-menu-item :name name :enable nil))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (radio? props)))))
item)
(apply #'make-instance 'tty-menu-radio
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (toggle? props)))))
item)
(apply #'make-instance 'tty-menu-checkbox
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding props)))
item)
(apply #'make-instance 'tty-menu-item
(cl-list* :name name :binding binding props)))
((match* (cons (constrain name (separator? name)) _)
item)
(make-instance 'tty-menu-separator :name name))
((match* (cons name
(cons help
binding))
item)
(make-instance 'tty-menu-item :name name :binding binding :help help))
((match* (cons name binding) item)
(make-instance 'tty-menu-item :name name :binding binding))
(t (error "No match for menu item %S" item)))))
(defun tty-menu-keymap-name (keymap default)
(let ((name (last keymap)))
(or (and (stringp (car name)) (car name))
default)))
(defun tty-menu-make-pane-buffer (keymap)
(cl-labels
((pane-buffer-name ()
(format " *tty-menu-%s*" (tty-menu-keymap-name keymap "<no-name>")))
(make-pane ()
(make-instance
'tty-menu-pane
:buffer (get-buffer-create (pane-buffer-name))
:items (cl-loop for b being the key-bindings of keymap
collect (tty-menu-make-element b)))))
(tty-menu-create-buffer (make-pane))))
(defvar tty-menu-frame-parameters
`((visibility . nil)
(background-color . "grey20")
(foreground-color . "white")
(width . 0) (height . 0)
(min-width . t) (min-height . t)
(no-accept-focus . t)
(no-focus-on-map . t)
(border-width . 0)
(child-frame-border-width . 1)
(left-fringe . 0)
(right-fringe . 0)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(tty-menu-bar-lines . 0)
(tool-bar-lines . 0)
(tab-bar-lines . 0)
(no-other-frame . t)
(no-other-window . t)
(no-delete-other-windows . t)
(unsplittable . t)
(undecorated . t)
(cursor-type . nil)
(no-special-glyphs . t)
(desktop-dont-save . t)))
(defun tty-menu-frame-parameters ()
(let ((params (copy-sequence tty-menu-frame-parameters))
(fg (face-attribute 'tty-menu-enabled-face :foreground))
(bg (face-attribute 'tty-menu-enabled-face :background)))
(when (stringp fg)
(setf (alist-get 'foreground-color params) fg))
(when (stringp bg)
(setf (alist-get 'background-color params) bg))
params))
(defun tty-menu-make-fully-visible (f1 f2 x y)
(let* ((f1-edges (frame-edges f1))
(f1-width (frame-width f1))
(f1-height (frame-height f1))
(f1-x (nth 0 f1-edges))
(f1-y (nth 1 f1-edges))
(f2-width (frame-width f2))
(f2-height (frame-height f2))
(new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
(new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
;; Ensure F2 is fully contained within F1
(setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
(setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
;; Move and resize F2
(set-frame-position f2 new-x new-y)
(set-frame-size f2 f2-width f2-height)))
(defun tty-menu-frame-absolute-position (frame x y)
"Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
(let ((current-frame frame)
(abs-x x)
(abs-y y))
(while (frame-parent current-frame)
(let ((edges (frame-edges current-frame)))
(setq abs-x (+ abs-x (nth 0 edges)))
(setq abs-y (+ abs-y (nth 1 edges)))
(setq current-frame (frame-parent current-frame))))
(cons abs-x abs-y)))
(defun tty-menu-create-frame (keymap where)
(cl-destructuring-bind (buffer width height)
(tty-menu-make-pane-buffer keymap)
(cl-destructuring-bind (parent-frame x y) where
;; We want to show the menu using a root frame as parent because
;; that doesn't clip the frame. Means that we have to translate
;; coordinates to absolute.
(when (frame-parent parent-frame)
(cl-destructuring-bind (ax . ay)
(tty-menu-frame-absolute-position parent-frame x y)
(setq x ax y ay)
(setq parent-frame (frame-root-frame parent-frame))))
(let* ((minibuffer (minibuffer-window parent-frame))
(window-min-height 1)
(window-min-width 1)
(after-make-frame-functions nil)
(frame (make-frame `((parent-frame . ,parent-frame)
(name . ,(buffer-name buffer))
(minibuffer . ,minibuffer)
,@(tty-menu-frame-parameters))))
(win (frame-root-window frame)))
(set-window-buffer win buffer)
(set-window-dedicated-p win t)
(set-frame-size frame width height)
(set-frame-position frame x y)
(tty-menu-make-fully-visible parent-frame frame x y)
(make-frame-visible frame)
(raise-frame frame)
(select-frame-set-input-focus frame)
frame))))
(defun tty-menu-mouse-select-item (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(unless (eq (window-frame win) (tty-top-frame))
(throw 'tty-menu-item-selected nil))
(when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
(tty-menu-select-item item 'mouse))))
(defun tty-menu-key-select-item ()
(interactive)
(when-let* ((item (get-text-property (point) 'tty-menu-item)))
(tty-menu-select-item item 'key)))
(defun tty-menu-mouse-moved (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(when (eq (window-frame win) (tty-top-frame))
(let ((item (get-text-property (posn-point end) 'tty-menu-item)))
(when (and item (tty-menu-selectable-p item))
(goto-char (posn-point end)))))))
(defun tty-menu-next-line ()
(interactive)
(cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
then (next-single-property-change next 'tty-menu-item)
while next
for item =3D (get-text-property next 'tty-menu-item)
until (tty-menu-selectable-p item)
finally (when next (goto-char next))))
(defun tty-menu-previous-line ()
(interactive)
(cl-loop for prev =3D (previous-single-property-change
(point) 'tty-menu-item nil (point-min))
then (previous-single-property-change
prev 'tty-menu-item nil (point-min))
while prev
for item =3D (get-text-property prev 'tty-menu-item)=20
if (tty-menu-selectable-p item) do (goto-char prev) and return t
else if (eq prev (point-min)) return t))
(defun tty-menu-close-pane ()
(interactive)
(throw 'tty-menu-item-selected nil))
(defun tty-menu-isearch (forward)
(isearch-mode forward nil nil)
(while isearch-mode
(let* ((key (read-key-sequence nil nil t nil nil nil)))
(when-let* ((cmd (lookup-key isearch-mode-map key)))
(if (and (eq cmd #'isearch-printing-char)
(stringp key))
(isearch-printing-char (aref key 0))
(call-interactively cmd))))))
(defun tty-menu-isearch-forward ()
(interactive)
(tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
(interactive)
(tty-menu-isearch nil))
(defvar-keymap tty-menu-keymap
:doc "Keymap for menu interaction."
"<up>" #'tty-menu-previous-line
"<down>" #'tty-menu-next-line
"<left>" #'tty-menu-close-pane
"C-b" #'tty-menu-close-pane
"C-g" #'keyboard-quit
"C-j" #'tty-menu-key-select-item
"C-n" #'tty-menu-next-line
"C-p" #'tty-menu-previous-line
"C-r" #'tty-menu-isearch-backward
"C-s" #'tty-menu-isearch-forward
"RET" #'tty-menu-key-select-item
"SPC" #'tty-menu-key-select-item
"<return>" #'tty-menu-key-select-item
"<mouse-movement>" #'tty-menu-mouse-moved
"<mouse-1>" #'tty-menu-mouse-select-item)
(defun tty-menu-show-selected-item ()
(unless tty-menu-selection-ov
(setq tty-menu-selection-ov (make-overlay 1 1))
(overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
(move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))
(defun tty-menu-global-menu ()
(keymap-lookup global-map "<menu-bar>"))
(defun tty-menu-position (pos)
(interactive)
(cond*
((match* 'nil pos) nil)
((match* 't pos)
(cl-destructuring-bind (frame x . y) (mouse-position)
;; mouse-position sometimes returns nil for x and y which I
;; think should not happen.
(list frame (or x 10) (or y 10))))
((match* (eventp e) pos)
(let* ((end (event-end e))
(win (posn-window end))
(x (car (posn-x-y end)))
(y (cdr (posn-x-y end))))
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y)))))
((match* (cons (cons (numberp x)
(numberp y))
(cons (windowp win)
_))
pos)
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y))))
((match* (cons (list (numberp x) (numberp y))
(cons (framep frame) _))
pos)
(list frame x y))
((match* (cons (cons (numberp x) (numberp y))
(cons (framep frame) _))
pos)
(list frame x y))
((match* (cons (numberp x) (numberp y)) pos)
(list (selected-frame) x y))
(t (error "%S does not match in tty-menu-position" pos))))
(defun tty-menu-where (how)
(cl-ecase how
(mouse (tty-menu-position t))
(key (let* ((posn (posn-at-point (line-end-position)))
(xy (posn-x-y posn))
(win (posn-window posn)))
(tty-menu-position (list xy win))))))
(defun tty-menu-loop (keymap where)
(let ((frame (tty-menu-create-frame keymap where)))
(unwind-protect
;; Inner loop handling mouse movement over the pane,
;; moving with the keyboard on the pane. The loop is
;; left by a throw when a menu-item is selected.
(cl-loop
named outer-loop
while t
for res =3D (catch 'tty-menu-item-selected
(while t
(tty-menu-show-selected-item)
(let* ((track-mouse t)
(key (read-key-sequence nil))
(cmd (lookup-key tty-menu-keymap key)))
(when (commandp cmd)
(call-interactively cmd)))))
do
;; If the selected item was for a sub-pane, call ourselves
;; recursively with the sub-pane.
(cond* ((match* (cons selected how) res)
(with-slots (binding) selected
(if (keymapp binding)
(tty-menu-loop binding (tty-menu-where how))
;; Return a list because x-popup-menu does.
(cl-return-from outer-loop (list binding)))))
((match* 'nil res)
(cl-return-from outer-loop nil))))
(when frame
(delete-frame frame)))))
(defun frame-with-name (name)
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-find-if (lambda (f) (equal (frame-name f) name))
(frame-list))))
(defun tty-menu-delete-menu-frames ()
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-loop for frame in (frame-list)
when (string-prefix-p " *tty-menu-" (frame-name frame))
do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
(when-let* ((where (tty-menu-position position)))
(cond ((keymapp menu)
(tty-menu-loop menu where))
((consp menu)
(cl-loop with outer =3D (make-sparse-keymap "outer")
for keymap in menu
for name =3D (tty-menu-keymap-name keymap "?")
do (define-key outer (vector (intern name)) keymap)
finally (tty-menu-loop outer where)))
(t (error "Not a menu: %S" menu)))))
;;;###autoload
(define-minor-mode tty-menu-mode
"Global minor mode for displaying menus with tty child frames."
:global t :group 'menu
(unless (display-graphic-p)
(if tty-menu-mode
(remove-function (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu))
(add-function :override (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu)))
(provide 'tty-menu)
;;; Local Variables:
;;; fill-column: 80
;;; End:
--=-=-=--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:01:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:01:36 2025
Received: from localhost ([127.0.0.1]:43294 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1th54B-0003W0-Ks
for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:01:35 -0500
Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:59679)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1th548-0003VW-8M
for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:01:33 -0500
Received: by mail-wr1-x433.google.com with SMTP id
ffacd0b85a97d-38dc962f1b9so1184592f8f.3
for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 03:01:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1739098886; x=1739703686; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=khmS/yNzQU9dOK+jDT55XTorzDw6FTCft8aIu7I099k=;
b=LPzKfPnd0MDwm9sQd+5hRMtUUh2ALCAh8CiTiKEvYmYvBFcQG3ZlcT1tj3IuTq+Z64
CRXKAfwGs4QOjAJq3dSgzOqVvbmcutJfFZAPQ/mWF+bYnDyZfBBLAwEba9eQ0kERlWDE
us9DwE7X2VpusvRnb9gxMtOAB8iDlfSzeex/QcTnhybLDOZtEVE0NpI4D6zq5udRdNRL
cFEyfPH0XU/2gaYwYqVef/z1exBUiCif1EbiemgwkI1iw/yEmCqLwSo3wGZmqmeztDsc
PbBG558bfS31QW71nMWBYW9OeTZSKdgnYPXotnqRIkDq3AdJKHtOofWwWyuaJ+bzwqlJ
gDbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1739098886; x=1739703686;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=khmS/yNzQU9dOK+jDT55XTorzDw6FTCft8aIu7I099k=;
b=bm5MwmVz/qSUoPP5skKAkJrD6w8vyzlLnPn/DeBYRxnEP32xtRXXzr95ME3WCHH/HF
130GYvmZH+w3AQCQ+mFXM13AcaGt0ZFUi8eZuqUvXkrhB2LPS/QxHvcR29hmtTupb82q
miRLKU5ItNe4V3DIEZw6AhF9bo6ixMIDwNdJEhQLvlfFVNqKFPSLhFyp8vSazkE4Cxu+
72+qRM637mGrh4YsnsiGA12/WZHCJ9+EHV8qvVV0h8p6xGmpByDrQmo4YqB8sD9qv2s2
4/6ZudgBBwmJnwajKQSmxKV0QcxgIpHAteGONQQbr8mAF+Q2yk3wt3GXLK+S15ROvNfw
0oXg==
X-Forwarded-Encrypted: i=1;
AJvYcCVdyFvSuHjjRJ3hhOC1mVfdF5t/RS9g8xLU8cmQjgYvzbVvqkoIT6XYbrgor8Ne+0QmBdnLVg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YydAlowrS8uKSLUZm0XE/qP7Rpku0S49kjy9WgLr7ugywjBZM5T
CDfzMeX6CsqeylpaiXP9ao0SPGTnv4dq2Bz91IktNn5vEXjcxE/04GhfpA==
X-Gm-Gg: ASbGncsMFHKU2RrUqYbP60oNsF98rfJn1FsijGqIJV76V/9F1wmxTHAyAdVOlj3d52o
IznPNgzFNBh7X9a3s1bJcCQR+hwmqKaIaFcV+WkGERQZv4eCPJg9/U5VcPiQgBOJGPFUooNf4Ts
gS6Obp3kkyJA1jtspI+cg05DiWENvQZ4O10hfpTTjd1IQ2E01mKnK/Cq+TNVFHH9WCdmvGRYFzA
XFgD5C92poe78CeuGzOtG2aYwCzO7cSzsHUF8aSWQUjavrsBESm5Ao7xKJHwfdvNys04xBXOsZx
qTlVhZWH6z6KhvW5NCBZfNy9rYyxx6OYJLQEF/fGAAcqxGxsT823EfnjKVJs3r89JZROfzZ6oNx
b6ZrN3h4YJdbcJJkssAhNVho1
X-Google-Smtp-Source: AGHT+IE/3MB+GmHYaOGziTymJEYGlkmGbiewoC0lDgdD3EhoygMqu41qFUgdFxUXft4t7/+Ie9dNMQ==
X-Received: by 2002:adf:e981:0:b0:385:f7d2:7e9b with SMTP id
ffacd0b85a97d-38dc90e1758mr5434384f8f.30.1739098885337;
Sun, 09 Feb 2025 03:01:25 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
[2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-38dbde1dfaesm9503067f8f.90.2025.02.09.03.01.23
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 09 Feb 2025 03:01:24 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <m2msf6ezfq.fsf@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
<m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
Date: Sun, 09 Feb 2025 12:01:23 +0100
Message-ID: <m2jz9zmlfg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
>> I take everything back. I think it would be much much better to do that
>> all in Lisp.
>
> FWIW, a proof-of-concept, only showing a frame with a menu. 200 loc with
> half of it copied from tty-tip.el.
I'm not sure if it's worth it, but I did a bit more. You can try it out
with something like
(tty-menu-popup-menu t menu-bar-file-menu)
--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable
;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp
;; Copyright (C) 2025 Gerd M=C3=B6llmann
;; This file is not part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
;;; Todo
;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu. Close it by moving the selection out.
;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)
;; menu-bar-menu doesn't work (list of keymaps?)
(eval-when-compile (require 'cl-lib))
(defclass tty-menu-element () ()
:documentation "Base class for elements of a menu.")
(defclass tty-menu-pane (tty-menu-element)
((items :initarg :items :initform nil :type t)
(buffer :initarg :buffer :type buffer)
(layout :type list))
:documentation "Class for menu panes.")
(defclass tty-menu-item (tty-menu-element)
((name :initarg :name :type string)
(enable :initarg :enable :initform t :type t)
(help :initarg :help :initform nil :type t)
(visible :initarg :visible :initform t :type t)
(key-sequence :initarg :key-sequence :initform nil :type t)
(keys :initarg :keys :initform nil :type t)
(filter :initarg :filter :initform nil :type t)
(button :initarg :button :initform nil :type t)
(selected :initarg :selected :initform nil :type t)
(binding :initarg :binding :initform nil :type t)))
(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())
(defclass tty-menu-separator (tty-menu-item)
((sep :initform "-" :type string :reader tty-menu-sep)))
(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
(with-slots (name sep enable) item
(setf enable nil)
(cl-multiple-value-bind (ch disp)
(pcase name
("--space" (cl-values ?\s nil))
("--double-line" (cl-values ?=3D 'box-double-horizontal))
(_ (cl-values ?- 'box-horizontal)))
(setf sep
(make-string 1
(or (and disp
(let ((c (display-table-slot
standard-display-table disp)))
(and (characterp c) c)))
ch))))))
(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")
(defvar tty-menu-triangle "=E2=96=B7")
(defvar tty-menu-radio-on "=E2=9C=94")
(defvar tty-menu-radio-off "")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=F0=90=84=82")
(defun tty-menu-selectable-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-visible-p (item)
(eval (slot-value item 'visible)))
(defun tty-menu-enabled-p (item)
(eval (slot-value item 'enable)))
(defun tty-menu-ninsert (n x)
(cl-loop repeat n do (insert x)))
(cl-defgeneric tty-menu-button-string (item)
(:method ((_ tty-menu-item)) "")
(:method ((r tty-menu-radio))
(format tty-menu-button-format
(if (slot-value r 'selected)
tty-menu-radio-on tty-menu-radio-off)))
(:method ((c tty-menu-checkbox))
(format tty-menu-button-format
(if (slot-value c 'selected)
tty-menu-checkbox-on tty-menu-checkbox-off)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-name-string (item)
(:method ((item tty-menu-item))
(format tty-menu-name-format (slot-value item 'name)))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-key-string (item)
(:method ((item tty-menu-item))
(format tty-menu-key-format
(with-slots (binding) item
(cond ((commandp binding)
(key-description (where-is-internal binding nil t)))
((keymapp binding)
tty-menu-triangle)
(t (format "?? %S" binding))))))
(:method ((_ tty-menu-separator)) ""))
(cl-defgeneric tty-menu-draw-button (item pane)
(:method ((_item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width ?\s))))
(:method ((item tty-menu-button) _pane)
(with-slots (selected button) item
(cl-destructuring-bind (_ . form) button
(setf selected (eval form))
(insert (tty-menu-button-string item)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ button-width _ _ _) layout
(tty-menu-ninsert button-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-name (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width _ _) layout
(with-slots (name) item
(insert (tty-menu-name-string item))
(indent-to (+ left-border button name-width))))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ name-width _ _) layout
(tty-menu-ninsert name-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-key (item pane)
(:method ((item tty-menu-item) pane)
(with-slots (layout) pane
(cl-destructuring-bind (left-border button name-width key-width _) la=
yout
(insert (tty-menu-key-string item))
(indent-to (+ left-border button name-width key-width)))))
(:method ((item tty-menu-separator) pane)
(with-slots (layout) pane
(cl-destructuring-bind (_ _ _ key-width _) layout
(tty-menu-ninsert key-width (tty-menu-sep item))))))
(cl-defgeneric tty-menu-draw-finish (item pane)
(:method ((item tty-menu-item) _)
(let* ((enabled (tty-menu-enabled-p item))
(face (if enabled 'tty-menu-enabled-face
'tty-menu-disabled-face)))
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
(put-text-property (pos-bol) (pos-eol) 'face face))
(when-let* ((help (slot-value item 'help)))
(put-text-property (pos-bol) (pos-eol) 'help-echo help)))
(:method ((_item tty-menu-separator) _)
(put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
(put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))
(cl-defgeneric tty-menu-layout (pane)
(:method ((pane tty-menu-pane))
(with-slots (items layout) pane
(cl-loop
with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
for i in items
maximize (string-width (tty-menu-button-string i)) into button
maximize (string-width (tty-menu-name-string i)) into name
maximize (string-width (tty-menu-key-string i)) into key
finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))
(defun tty-menu-try-place-point (selectable old-line)
(goto-char (point-min))
(if (nth old-line selectable)
(forward-line old-line)
(let ((next (cl-loop for i from (1+ old-line)
to (1- (length selectable))
when (nth i selectable) return i))
(prev (cl-loop for i downfrom (1- old-line) to 0
when (nth i selectable) return i)))
(cond (next (forward-line next))
(prev (forward-line prev))))))
(cl-defgeneric tty-menu-draw (item pane)
(:method ((pane tty-menu-pane) line)
(with-slots (buffer items) pane
(with-current-buffer buffer
(let ((old-line (or line (1- (line-number-at-pos)))))
(erase-buffer)
(tty-menu-layout pane)
(let ((selectable
(cl-loop for i in items
when (tty-menu-visible-p i)
do (tty-menu-draw i pane)
and collect (tty-menu-selectable-p i))))
(tty-menu-try-place-point selectable old-line))))))
(:method :around ((item tty-menu-item) pane)
(let ((start (point)))
(insert (format tty-menu-left-border-format ""))
(cl-call-next-method)
(insert (format tty-menu-right-border-format ""))
(tty-menu-draw-finish item pane)
(insert ?\n)
(put-text-property start (point) 'tty-menu-item item)))
(:method ((item tty-menu-item) pane)
(tty-menu-draw-button item pane)
(tty-menu-draw-name item pane)
(tty-menu-draw-key item pane)))
(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)
(cl-defgeneric tty-menu-select-item (item how)
(:method ((item tty-menu-item) how)
(when-let* ((enabled (tty-menu-enabled-p item)))
(throw 'tty-menu-item-selected (cons item how))))
(:method ((_item tty-menu-separator) _))
(:method ((item tty-menu-button) _)
(with-slots (binding) item
(when (commandp binding)
(call-interactively binding))
(tty-menu-draw tty-menu-pane-drawn nil))))
(defun tty-menu-create-buffer (pane)
"Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
(with-slots (buffer) pane
(with-current-buffer buffer
(dolist (var '((mode-line-format . nil)
(header-line-format . nil)
(tab-line-format . nil)
(tab-bar-format . nil)
(frame-title-format . "")
(truncate-lines . t)
(cursor-in-non-selected-windows . nil)
(cursor-type . nil)
(show-trailing-whitespace . nil)
(display-line-numbers . nil)
(left-fringe-width . nil)
(right-fringe-width . nil)
(left-margin-width . 0)
(right-margin-width . 0)
(fringes-outside-margins . 0)
(scroll-conservatively . 1)))
(set (make-local-variable (car var)) (cdr var)))
(let ((inhibit-modification-hooks t)
(inhibit-read-only t)
(indent-tabs-mode nil))
(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
(tty-menu-draw pane 0)
(cl-flet ((line-width ()
(save-excursion
(goto-char (point-min))
(goto-char (line-end-position))
(current-column))))
(list (current-buffer)
(line-width)
(count-lines (point-min) (point-max))))))))
(defun tty-menu-make-element (item)
(cl-labels ((separator? (name) (string-prefix-p "--" name))
(button? (props) (plist-get props :button))
(radio? (props) (eq (car (button? props)) :radio))
(toggle? (props) (eq (car (button? props)) :toggle)))
;; COND* complains about unknown pattern (PREDICATE symbol) if
;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
;; symbol)) instead.
(cond*
((match* (cons 'menu-item
(cons (constrain name (separator? name))
props))
item)
(apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
((match* (list 'menu-item name) item)
(make-instance 'tty-menu-item :name name :enable nil))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (radio? props)))))
item)
(apply #'make-instance 'tty-menu-radio
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding
(constrain props (toggle? props)))))
item)
(apply #'make-instance 'tty-menu-checkbox
(cl-list* :name name :binding binding props)))
((match* (cons 'menu-item
(cons name
(cons binding props)))
item)
(apply #'make-instance 'tty-menu-item
(cl-list* :name name :binding binding props)))
((match* (cons (constrain name (separator? name)) _)
item)
(make-instance 'tty-menu-separator :name name))
((match* (cons name
(cons help
binding))
item)
(make-instance 'tty-menu-item :name name :binding binding :help help))
((match* (cons name binding) item)
(make-instance 'tty-menu-item :name name :binding binding))
(t (error "No match for menu item %S" item)))))
(defun tty-menu-keymap-name (keymap default)
(let ((name (last keymap)))
(or (and (stringp (car name)) (car name))
default)))
(defun tty-menu-make-pane-buffer (keymap)
(cl-labels
((pane-buffer-name ()
(format " *tty-menu-%s*" (tty-menu-keymap-name keymap "<no-name>")))
(make-pane ()
(make-instance
'tty-menu-pane
:buffer (get-buffer-create (pane-buffer-name))
:items (cl-loop for b being the key-bindings of keymap
collect (tty-menu-make-element b)))))
(tty-menu-create-buffer (make-pane))))
(defvar tty-menu-frame-parameters
`((visibility . nil)
(background-color . "grey20")
(foreground-color . "white")
(width . 0) (height . 0)
(min-width . t) (min-height . t)
(no-accept-focus . t)
(no-focus-on-map . t)
(border-width . 0)
(child-frame-border-width . 1)
(left-fringe . 0)
(right-fringe . 0)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(tty-menu-bar-lines . 0)
(tool-bar-lines . 0)
(tab-bar-lines . 0)
(no-other-frame . t)
(no-other-window . t)
(no-delete-other-windows . t)
(unsplittable . t)
(undecorated . t)
(cursor-type . nil)
(no-special-glyphs . t)
(desktop-dont-save . t)))
(defun tty-menu-frame-parameters ()
(let ((params (copy-sequence tty-menu-frame-parameters))
(fg (face-attribute 'tty-menu-enabled-face :foreground))
(bg (face-attribute 'tty-menu-enabled-face :background)))
(when (stringp fg)
(setf (alist-get 'foreground-color params) fg))
(when (stringp bg)
(setf (alist-get 'background-color params) bg))
params))
(defun tty-menu-make-fully-visible (f1 f2 x y)
(let* ((f1-edges (frame-edges f1))
(f1-width (frame-width f1))
(f1-height (frame-height f1))
(f1-x (nth 0 f1-edges))
(f1-y (nth 1 f1-edges))
(f2-width (frame-width f2))
(f2-height (frame-height f2))
(new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
(new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
;; Ensure F2 is fully contained within F1
(setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
(setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
;; Move and resize F2
(set-frame-position f2 new-x new-y)
(set-frame-size f2 f2-width f2-height)))
(defun tty-menu-frame-absolute-position (frame x y)
"Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
(let ((current-frame frame)
(abs-x x)
(abs-y y))
(while (frame-parent current-frame)
(let ((edges (frame-edges current-frame)))
(setq abs-x (+ abs-x (nth 0 edges)))
(setq abs-y (+ abs-y (nth 1 edges)))
(setq current-frame (frame-parent current-frame))))
(cons abs-x abs-y)))
(defun tty-menu-create-frame (keymap where)
(cl-destructuring-bind (buffer width height)
(tty-menu-make-pane-buffer keymap)
(cl-destructuring-bind (parent-frame x y) where
;; We want to show the menu using a root frame as parent because
;; that doesn't clip the frame. Means that we have to translate
;; coordinates to absolute.
(when (frame-parent parent-frame)
(cl-destructuring-bind (ax . ay)
(tty-menu-frame-absolute-position parent-frame x y)
(setq x ax y ay)
(setq parent-frame (frame-root-frame parent-frame))))
(let* ((minibuffer (minibuffer-window parent-frame))
(window-min-height 1)
(window-min-width 1)
(after-make-frame-functions nil)
(frame (make-frame `((parent-frame . ,parent-frame)
(name . ,(buffer-name buffer))
(minibuffer . ,minibuffer)
,@(tty-menu-frame-parameters))))
(win (frame-root-window frame)))
(set-window-buffer win buffer)
(set-window-dedicated-p win t)
(set-frame-size frame width height)
(set-frame-position frame x y)
(tty-menu-make-fully-visible parent-frame frame x y)
(make-frame-visible frame)
(raise-frame frame)
(select-frame-set-input-focus frame)
frame))))
(defun tty-menu-mouse-select-item (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(unless (eq (window-frame win) (tty-top-frame))
(throw 'tty-menu-item-selected nil))
(when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
(tty-menu-select-item item 'mouse))))
(defun tty-menu-key-select-item ()
(interactive)
(when-let* ((item (get-text-property (point) 'tty-menu-item)))
(tty-menu-select-item item 'key)))
(defun tty-menu-mouse-moved (event)
(interactive "e")
(let* ((end (event-end event))
(win (posn-window end)))
(when (eq (window-frame win) (tty-top-frame))
(let ((item (get-text-property (posn-point end) 'tty-menu-item)))
(when (and item (tty-menu-selectable-p item))
(goto-char (posn-point end)))))))
(defun tty-menu-next-line ()
(interactive)
(cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
then (next-single-property-change next 'tty-menu-item)
while next
for item =3D (get-text-property next 'tty-menu-item)
until (tty-menu-selectable-p item)
finally (when next (goto-char next))))
(defun tty-menu-previous-line ()
(interactive)
(cl-loop for prev =3D (previous-single-property-change
(point) 'tty-menu-item nil (point-min))
then (previous-single-property-change
prev 'tty-menu-item nil (point-min))
while prev
for item =3D (get-text-property prev 'tty-menu-item)=20
if (tty-menu-selectable-p item) do (goto-char prev) and return t
else if (eq prev (point-min)) return t))
(defun tty-menu-close-pane ()
(interactive)
(throw 'tty-menu-item-selected nil))
(defun tty-menu-isearch (forward)
(isearch-mode forward nil nil)
(while isearch-mode
(let* ((key (read-key-sequence nil nil t nil nil nil)))
(when-let* ((cmd (lookup-key isearch-mode-map key)))
(if (and (eq cmd #'isearch-printing-char)
(stringp key))
(isearch-printing-char (aref key 0))
(call-interactively cmd))))))
(defun tty-menu-isearch-forward ()
(interactive)
(tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
(interactive)
(tty-menu-isearch nil))
(defvar-keymap tty-menu-keymap
:doc "Keymap for menu interaction."
"<up>" #'tty-menu-previous-line
"<down>" #'tty-menu-next-line
"<left>" #'tty-menu-close-pane
"C-b" #'tty-menu-close-pane
"C-g" #'keyboard-quit
"C-j" #'tty-menu-key-select-item
"C-n" #'tty-menu-next-line
"C-p" #'tty-menu-previous-line
"C-r" #'tty-menu-isearch-backward
"C-s" #'tty-menu-isearch-forward
"RET" #'tty-menu-key-select-item
"SPC" #'tty-menu-key-select-item
"<return>" #'tty-menu-key-select-item
"<mouse-movement>" #'tty-menu-mouse-moved
"<mouse-1>" #'tty-menu-mouse-select-item)
(defun tty-menu-show-selected-item ()
(unless tty-menu-selection-ov
(setq tty-menu-selection-ov (make-overlay 1 1))
(overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
(move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))
(defun tty-menu-global-menu ()
(keymap-lookup global-map "<menu-bar>"))
(defun tty-menu-position (pos)
(interactive)
(cond*
((match* 'nil pos) nil)
((match* 't pos)
(cl-destructuring-bind (frame x . y) (mouse-position)
;; mouse-position sometimes returns nil for x and y which I
;; think should not happen.
(list frame (or x 10) (or y 10))))
((match* (eventp e) pos)
(let* ((end (event-end e))
(win (posn-window end))
(x (car (posn-x-y end)))
(y (cdr (posn-x-y end))))
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y)))))
((match* (cons (cons (numberp x)
(numberp y))
(cons (windowp win)
_))
pos)
(cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
(list (window-frame win) (+ wx x) (+ wy y))))
((match* (cons (list (numberp x) (numberp y))
(cons (framep frame) _))
pos)
(list frame x y))
((match* (cons (numberp x) (numberp y)) pos)
(list (selected-frame) x y))
(t (error "%S does not match in tty-menu-position" pos))))
(defun tty-menu-where (how)
(cl-ecase how
(mouse (tty-menu-position t))
(key (let* ((posn (posn-at-point (line-end-position)))
(xy (posn-x-y posn))
(win (posn-window posn)))
(tty-menu-position (list xy win))))))
(defun tty-menu-loop (keymap where)
(let ((frame (tty-menu-create-frame keymap where)))
(unwind-protect
;; Inner loop handling mouse movement over the pane,
;; moving with the keyboard on the pane. The loop is
;; left by a throw when a menu-item is selected.
(cl-loop
named outer-loop
while t
for res =3D (catch 'tty-menu-item-selected
(while t
(tty-menu-show-selected-item)
(let* ((track-mouse t)
(key (read-key-sequence nil))
(cmd (lookup-key tty-menu-keymap key)))
(when (commandp cmd)
(call-interactively cmd)))))
do
;; If the selected item was for a sub-pane, call ourselves
;; recursively with the sub-pane.
(cond* ((match* (cons selected how) res)
(with-slots (binding) selected
(if (keymapp binding)
(tty-menu-loop binding (tty-menu-where how))
;; Return a list because x-popup-menu does.
(cl-return-from outer-loop (list binding)))))
((match* 'nil res)
(cl-return-from outer-loop nil))))
(when frame
(delete-frame frame)))))
(defun frame-with-name (name)
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-find-if (lambda (f) (equal (frame-name f) name))
(frame-list))))
(defun tty-menu-delete-menu-frames ()
(cl-flet ((frame-name (frame)
(frame-parameter frame 'name)))
(cl-loop for frame in (frame-list)
when (string-prefix-p " *tty-menu-" (frame-name frame))
do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
(when-let* ((where (tty-menu-position position)))
(cond ((keymapp menu)
(tty-menu-loop menu where))
((consp menu)
(cl-loop with outer =3D (make-sparse-keymap "outer")
for keymap in menu
for name =3D (tty-menu-keymap-name keymap "?")
do (define-key outer (vector (intern name)) keymap)
finally (tty-menu-loop outer where)))
(t (error "Not a menu: %S" menu)))))
;;;###autoload
(define-minor-mode tty-menu-mode
"Global minor mode for displaying menus with tty child frames."
:global t :group 'menu
(unless (display-graphic-p)
(if tty-menu-mode
(remove-function (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu))
(add-function :override (symbol-function 'x-popup-menu)
#'tty-menu-popup-menu)))
(provide 'tty-menu)
;;; Local Variables:
;;; fill-column: 80
;;; End:
--=-=-=--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 3 Feb 2025 08:33:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 03 03:33:16 2025
Received: from localhost ([127.0.0.1]:37668 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tertM-0006D7-IA
for submit <at> debbugs.gnu.org; Mon, 03 Feb 2025 03:33:16 -0500
Received: from mout.gmx.net ([212.227.17.22]:58925)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tertJ-0006Cm-Mk
for 75056 <at> debbugs.gnu.org; Mon, 03 Feb 2025 03:33:14 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738571586; x=1739176386; i=rudalics@HIDDEN;
bh=hSwzX4crwrlkljMB/auKTsoFn4ufk8inMSuOBe3f/aE=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=Pc4vWlNLiqdfSuqJy3DHfB0/WtOid3Fk8IIZEX6p8oC540MoWBDw3mr57/FdPVqr
ubDT7zNltg1vkQIeHAoBxzWPYi4lfJtLl9Quw4MH/Fs4NIfduLKDwPXOZGDV1F0cO
UfQroK6uYmWa3wXg3qHoKp55rwE1sVjT1WwBhHVAzPOZbIvTl4M44TXlCkZDy0qzQ
J1l9L2fpcc17aVtj/tb19EnX5Jrbb/2F3nPLSzLh2gDBHETLA9i7Tucyx4facCTPE
BEWFURuKUWXU34jfCdiDlwB3z8gYL5KvEWuFSoP1up4V9oXXs/8N30+Bm/vxG/Jv0
derDRMnRvYiV5+hXzg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([46.125.249.108]) by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MDQic-1tXg600iAA-009dvu; Mon, 03
Feb 2025 09:33:06 +0100
Message-ID: <fa5ab88b-9aaf-46e2-a7a0-7482ad151ac5@HIDDEN>
Date: Mon, 3 Feb 2025 09:33:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2tt9dkl7x.fsf@HIDDEN>
<e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> <m2o6zjy5go.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2o6zjy5go.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:SMIloIGtzdnyNu0GZ+andwi+tVtrfAJKOMfKe4NvYwlyuVRITfR
k7Zr+39ecK88Wn3Tl5GbpVu3raysDQBeimivcXMV19pLQeoDpmhUE0AbDcb3wj3cmptEizI
Q2zL934M89pI9BJoOVuXXZwRYivwGbz0n657n4WxNAdfZ7SiBtIOxHin+0s7xy24zYy/Vyq
mCHYqn318H5Rqv7AJhGNg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:etnVwVT9i8E=;Zfr9zrPn/Xu1GweeIoqec3ZOMSz
jp9SbkGFHPQNkFLnz1RXWT0nxsMAKvQKJw6Siy/F8T5EhAoZIdcSeWxpiFnoKZ8mo1IsHxVkJ
KRV2/PQ/Rv1kQyHVmvbFL9WdWB6aKTD1WPAOmqvswWTT+SZcUOQq9C/k53mTAJ5oW0WGxVe1N
CZ1otAa7BkfRB8ooUTpN+DJIVFOTDp46PsJi6NuB5SlhruVv3achl9RhkwKvcudav8ALQBTIi
slWZVDozAqywmp7vCEKz605/GxyUDXSklr9lcmn8RdPy5LxDmnayc6VgeNLeSQ1jX/9/zfjRk
XN007AeRrOOmSb6BJgR2kFLYB28zkzhoEtdVZAtaEFEjByZr7Kg+b9YHLy4bVVxh/tRFzmzBk
wsBFQB7c2HxKVeM1Z0P25KTP0/j3WkuCFlykLrftG0MdimIjTLcFYYSbzAb5lUinKp0D9jAEd
ZGPH7S9ie2zz0OdUNWRPQfgUPYN3yGwIrxVHt03ReKYZ6UYamByE1FKX85ripMQ5MTHFZG7Pk
iiTb6hJYWXPT01VxPf5xt382bLDFujW8FDs+EZXGoWhdi45zeXLfH9Ld5r7JSdRjxo/gHptMQ
X4P00Ru3TOcflwfBnpQITPZTI+Wk5Y/vGuVM/DQyt4Vgnjiuo/oWtTrf1HdtBavWEpyeTT9Ir
fUlLAvHxaLSAu9kQrmMbAB93u4ABleT6s8TKH5niWQ/3AyhRPmqWxB4cFvbPyLomEy6qV0ma8
48NXXAuj2i2Zvs1DMa+e5+FyOQOsctjcb1gOIIgELZYh/uBo6EDN/JdqKdH+K6Zay5GV4dokk
mBCZ/xqE1vmEVr0w/t9rrXTi2jSZBZ30QTJ3VVc3eGgiXCgy45mRRXIHLFLimYfTkiEgWuf3Z
YDrizjCkKLj0usSDnBj/7L76RLELdBKer7Tz0bQWDVCOoKapkPIIGyffAIznToImDXHE8ECX2
upofgt8B0e2iand94HMbtRgQYOT/pLTNpexyKByw1fvYYKZeJFvAOjIIrGShXr9MKZiWwDomo
oB7g9MS6FbmAf19HvYHWqUmwTj8ELRzifRzXeCjK/PyBr2rqjehr42rszKGiMp0yRekfrYSRw
aPoh8p7XXCE3umdwM88wMsW3qsLg4CrsWZGQeQOAj8Ut303GGJBDBd5a0HsiajEkjtpi7JJIx
wE0ibkNYvWNU2xxKXbxA6qpWe7+9noUaJDJaju41N2rcvVIuPQP822npytez47bnPIdUVYK+s
YSU0z0SsNHcrmxPunn2qj3rC/d/+9ILuPeKoMZypUqx+TsjyLpo9XShs3IljqxqTHsYroL8ku
QCavdhYbQHHvtJJTIbekF820Kvqcp4bdHL8Z1zfkIx2kVDvQFPnIaBfI2QITND8G3Gp
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
> Fix pushed to master.
Thanks. I won't check it because I probably could not reproduce it
anyway.
martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 3 Feb 2025 05:15:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 03 00:15:15 2025
Received: from localhost ([127.0.0.1]:37252 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1teonj-00022D-M8
for submit <at> debbugs.gnu.org; Mon, 03 Feb 2025 00:15:15 -0500
Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]:55569)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1teong-0001xa-6H
for 75056 <at> debbugs.gnu.org; Mon, 03 Feb 2025 00:15:13 -0500
Received: by mail-ej1-x62e.google.com with SMTP id
a640c23a62f3a-ab6ed8a5a04so638325366b.3
for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 21:15:12 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738559706; x=1739164506; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=OuL0Kpb8YJ+D6JZQpAlbq+88jNkNzogasw9TWj7d5nY=;
b=Glj/0iDckBu50W+trln1r3QP8xlrn8R+kqs8whi9kujsnEY2jzpXLL69WznMVTonAS
jGaxRq3WMdbEenINy75Ec42EjRADHqJRofiS174wbXC7AARZ6MIkePwSOYtTwz5tQt2D
ek8Hm7abRYigwi2Jy9su+AnlukGxwPclutKmwPy1GQCmmCFezHjOX5gdJhFHa8eqvfYg
uJUYQ2R9O/kthZ85C77khOMFr9qRVGab1R0QTaJ7pliwXmepYGPNMNgUK1B460Aoccon
ROEI7YPYKM8KABeWHVycMff5wD5uoQPyyHBRE5ugc7gzB4WDwLk7KiLW8Zwp0d6whllT
woRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738559706; x=1739164506;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=OuL0Kpb8YJ+D6JZQpAlbq+88jNkNzogasw9TWj7d5nY=;
b=e8lYFeQ+GZBDXAunsCEzjNdcp0ofCPv8CTAsO9A39hHhzG53ZkHcijsvR3g8sAjI86
OkNxwwVrm/wA8iI9aHDZuYi5HnheLn2vO5T+yB5KInEF3hL1Hmj2J7oBRfBiQp9bOEpR
GrE9BkEytH2/SP4eBYHXnuvnYmcDue4dIgR73xagmwtXDuRssQ7xAEuUlAkdKursRLzU
OQ4MjibiDHtqIs7OiXemIToQDqtOrSFpKFyvjjudCeKvQGzHVSDlhsNyGAkGVzzUJ0jL
+WSuUKgRm+AyUVn+zCkDRNkn/fF7VYuI8//6+UDc5OnC6wucwdGijn5NBKQr3LzfGRmW
yA7w==
X-Forwarded-Encrypted: i=1;
AJvYcCU/Ye7oqUxU+hVzvSm/yNd2zNfl7OjXA5D0ooOLZFoRx8t5s4I/R3W1V3Nf2Y3x6WWrjm77ZA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yzcsk2Lzb5IKLR56ZeonPz0N1qyP7GUiiQYLxkvrel/DckwM2Pe
8VyNsqUIUsr4uNP4zKq0SmE5Y7Mo1bu0X1sVlQya0JG6S1t4qvrGcTI/rw==
X-Gm-Gg: ASbGncvu4srmCVs4YeBluj7AeszD5svCdUfZGadbGc7JojrI2/v1EGzer5GiuPo9hAo
SGIZKquJ2rXtYrzEnCPrrWKIXZ9lnEMDM8mabLCVGsgIZ4K4WLY0cif0AlrcKoEaGkWtZ2DPkWN
nVftpWLSGD8YK/Ejk43MmbNYUxCyRD253QN6v2p1IDURFv8rel/AtcJQGsQSNnH5vL1YDxV0azU
8TqEI4h9H2iZleTku7uiGaDPSkLlSqiSxep5mZ/cE4YyAAdCv8mYLKsAdfOa0dvWJomNS088mKn
pdFYGQvFfSkXXo10R93AzLty7nz9/LQ+SPYDZ9PWGkUaS8Jv0etLlOKRxCMApgKyys2PMu6vg14
DK3SS7q0bECXU7+0Ls1Qbj2Zs
X-Google-Smtp-Source: AGHT+IHaBzt6mRbmjiakSuGvwTVspL9mlsqgjNmRRNL0eXk9Bec4oV5PnK+cXFdGK7Yd5J5dPaAx2A==
X-Received: by 2002:a17:907:940f:b0:ab7:b7d:62b with SMTP id
a640c23a62f3a-ab70b7d06b9mr868148266b.6.1738559705401;
Sun, 02 Feb 2025 21:15:05 -0800 (PST)
Received: from pro2 (p200300e0b7285e007cabc7148d4ef104.dip0.t-ipconnect.de.
[2003:e0:b728:5e00:7cab:c714:8d4e:f104])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e47f18e8sm683279866b.76.2025.02.02.21.15.03
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 02 Feb 2025 21:15:04 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> (martin rudalics's
message of "Sun, 2 Feb 2025 09:53:12 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m2tt9dkl7x.fsf@HIDDEN>
<e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
Date: Mon, 03 Feb 2025 06:15:03 +0100
Message-ID: <m2o6zjy5go.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> Fix pushed to master.
>
> Confirmed, thanks.
>
> Next issue: Please look at how the mode line of the orange window
> overlaps the yellow window in the attached screenshot. It happened
> after I mouse-clicked the mode line of the yellow window to bring it to
> foreground.
>
> Schon wieder was passiert, martin
Fix pushed to master.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 19:39:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 14:39:16 2025
Received: from localhost ([127.0.0.1]:36374 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tefoK-0002Wi-8z
for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 14:39:16 -0500
Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]:43071)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tefoH-0002WL-Gw
for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 14:39:14 -0500
Received: by mail-ed1-x530.google.com with SMTP id
4fb4d7f45d1cf-5d9837f201aso8915922a12.0
for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 11:39:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738525147; x=1739129947; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=O+vN5Da1g85hHQmrxt9sgUqwWBzvw0tQsuhBP7VX750=;
b=lbAkQ+9ol71CSwxRTBzPwG1sgXeAPzQgsetf7tvqI7+cnniLP0Ott8e3F5z/VdB7Uw
6oBFcYwpCsDfTOIXPkVdHMuY5HGrhi8WP8U+eLeTTieGFcaNdIUbLDbYzw5mWYcHv/aT
ib8lOjuLapxQNJTfvTh2I9TaPRngP4Sdsw4X9IgIpozrovbHS+Yudw57SprxzgV4HIwk
rXI27/9Lqt4wM+7b2F0+4MP6Z8Bw2WTC87/ppL0+yYA/sc3avTp+Obd7+zeXLatKDUT0
L+YGutL5XDcAgzW0/iYY+MjXobpz6G8bwYsqaABd2qm2DDvoJ4xn20H3ZEQ7/PoPvVZS
ekJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738525147; x=1739129947;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=O+vN5Da1g85hHQmrxt9sgUqwWBzvw0tQsuhBP7VX750=;
b=ImjSLnpU9ZHiaGTGE8DVs0Bvqd4JzZ5to3equ0kqcLWCERe2/j1uV+32zNjFGcuKaD
8ZEZdPxqgWUjesMhPvpKgvKY8sZ+yFBYd9sUz/DmywhnbBWwfaKho7NQiOW+GDlCxRp+
byaE8bRm4MIR/yyqtZ0YSNbQhoYh72tED1ZdE6vMHMuHP7KQFX1PyMfScZvx+UV/9Rqc
+fJR/nBgFQDLrr98MlGASwjimSCjVisq4mk4mX14Aa1Ci8QfeBY9Kae0MWvNJBF2gVDC
w1xHA1tp023m6L/yJK5vHJqWuguGEiKxJYm2GfGVl3s4YYNRaUg0mW0hE831t9m9fLYg
VLcg==
X-Forwarded-Encrypted: i=1;
AJvYcCV9w19mRSfTNocBZR3U2ThB1ydUvlvctDbfQOEufyLyhrYcjkWQYVRjaumNpwCwCsign0wI9w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwDIYAeDzEcCD3Ge2yfiYihz8qD6XlGgsmjxOp/xU9u+E4ZXV+E
OEz+OuYaFZat4aX32YU+pvKv9fajNZ1u7JetWgodRuvTXdrhPPjdspHNEQ==
X-Gm-Gg: ASbGncs9avXZSFPz6zu2wyjt5zSbFTTKTdeGtf6dwS8CazuXwRwjtdAgaYjvUIkvj2V
nCbn8U7m+UNmaAb8znD/LnfJph7VLE+k3mzdszsZNC3/WDBUNw/en7Tmx9fSsun+MqAOB5eOQtP
P738cQI5a828HBTms2MwLuGr5VLXozCqY368rd7YWySlI2meagyxn4gTumIRXuuh4Cbni8XClfi
ziMXllpnyQhq0K1k4UgwvYje8Be9mQVf2CmrI9i7TfTT5alnk5oz9ueEoktzqwhUAJ8XkGIRazM
t/XN8TXbb/JRv4+GEqFLREuOCnOohHxW3WWXlpI7Yw4b7K10pjG+dJwNUvASdCslclToQTIjQLH
mZ+FGmXzkafX/IQJX4VCOPmnr
X-Google-Smtp-Source: AGHT+IHq66nLiSHQ5j3B+i4gWMLkcNehVI+u+46PAx/zn2eSSxgJljsE9hJ6QmuJs/bbs80HjROdjg==
X-Received: by 2002:a17:906:6a09:b0:aab:8311:951f with SMTP id
a640c23a62f3a-ab6e0bc1e0fmr1858225066b.6.1738525146493;
Sun, 02 Feb 2025 11:39:06 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
[2003:e0:b71e:2e00:b17d:1337:b17d:e790])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e4a562f2sm630496666b.173.2025.02.02.11.39.05
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 02 Feb 2025 11:39:06 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> (martin rudalics's
message of "Sun, 2 Feb 2025 18:37:46 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN>
Date: Sun, 02 Feb 2025 20:39:05 +0100
Message-ID: <m21pwgyw4m.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> Also, moving child frames is pretty nice too!
>
> The attached patch now also resizes child frames by dragging their edges
> or corners. One thing that does not work is that when another child
> frame is beneath an edge, Emacs selects the child frame beneath the edge
> before I can start dragging. I think that frame/child frame selection
> with the mouse is not perfect in the current state in three regards:
>
> - When I do down-mouse-1 in the non-selected root frame, Emacs does
> 'mouse-set-point' there. I think it should do so only for a mouse-1
> so I can back out before releasing the mouse button and obviously use
> the down-mouse-1 for dragging.
>
> - When I have two overlapping child frames and do down-mouse-1 on a
> border of the frame above and that border covers the frame beneath,
> Emacs should never select the frame beneath here. Not even after I
> release the button.
>
> - Clicking into a child frame anywhere but on a bar does not select it.
> This is uncomfortable and at least does not mimic the behavior of GUI
> frames on all window managers I know.
>
> I'll look into these tomorrow. Pointers welcome.
Thanks!
Works well for me. Only dragging the edges of a child frame doesn't seem
to work like in a GUI.
With the mouse bindings I'm afraid I can't help much. I agree that the
current use of down-mouse-N is generally not such a great idea. Example:
menus on the mode-line. The default binding of down-mouse-1 for opening
the menu is a PITA for trackpad users using tap-to-click, and prevents
keyboard interaction with the menu because lifting the finger closes the
menu.
Likewise, it would be nice if one could drag the child frames without
having to hold the finger pressed on the trackpad. (In contrast to
dragging a region, which can be done with a 3-finger drag.) Very
inconvenient, and a bit inconsistent.
How that all is currently wired is a bit of a mystery to me. There are
a number of keymaps involved, and it is unclear to me which exact
purpose each one has, and where mouse key bindings are exactly put in
and why: input-decode-map, function-key-map, key-translation-map,
global-map, maybe others?
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 17:38:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 12:38:08 2025
Received: from localhost ([127.0.0.1]:36109 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tedv4-0001yP-Sj
for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 12:38:08 -0500
Received: from mout.gmx.net ([212.227.17.22]:46239)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tedv0-0001xq-U7
for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 12:38:04 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738517868; x=1739122668; i=rudalics@HIDDEN;
bh=0MKRhyfLSuj1oz5sI4LFoQM5dmSyWf/7Q5Yk4Ps5EF8=;
h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
Subject:To:Cc:References:From:In-Reply-To:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=JTCTo73XhnlyjhWp/WMGcv2vZ4Zykzqmu7Yv0R+VClAX1eAyro6POSlMd7sG7Go0
9+1fTVyvbXl13H6C4VsUOCi8qJDt03eNxNFAO5n2JFj560rMtmPMgfapemmQJoeiv
zE30ZC5rP1NT5kp9oS7EhtJjt4QXb6VTqq/txOLVpaDPS4rqTWsFbgbCaL5GHQn3u
CX52zTDBwIB8EaLSMKlvBmR/YcOuGuxDu1XlKt1uVyDuQ4WWWxc1FfNk77LLzPS7e
2YYhvXwS4UWVxBlJbxTkRZwYjgBeBe16DWxbOzTR0fn+TgudHBgZdNTQBqd5RFn0P
06duIPNsS/eInEwIMA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.190]) by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MoO6C-1t7Twx3HVA-00q7fF; Sun, 02
Feb 2025 18:37:47 +0100
Content-Type: multipart/mixed; boundary="------------OonywoDpVCk8BD8QQlfCUFVy"
Message-ID: <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN>
Date: Sun, 2 Feb 2025 18:37:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m28qqrlkyg.fsf@HIDDEN>
X-Provags-ID: V03:K1:tkpHil7sAe7FsDPlv6R0HNAYlBiMIdl6ZfSrJHtFxXWXKoGwryU
Ge3dKHHvJqO71cl4ZS06686shiiFe3QkuxDc/Hxj9NCs7ibiqMV7scalsyRYT2CTIee5TS+
tKyon4SsA/6lwJT4ZVSbxHnkmPrdxMkJsgY1M2EUjzA6tijUhz+pIx8A/Q1NSlVOAaTvukg
wB8ye6fqf4ELF540qZOZg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:Cgsjpg3dY4s=;ecLdNIXJEueaJsKEnYk1fq8BV2u
f5v744wmTpOSzudjW4Wc+fzbIf06f8UH9FC3gdzjH4SCvCHf22yKBhoujXxwXzLQwBWxMHWv8
2yvmljXo9ndAZj7KI3qfZz8A/T0nAy2wLyvSXHJY5eeZQGT0J75wyzih2WkMo3gLI0HVe3rXN
B+DEACEaMaHOkA4cwNTAtzkde9thJatcqxpC2avv+4Trpw47ZmoOGQeQSx6LH5D2uZ4pHStNA
vjuftXboxauc1D3PpbvdiqHZlc7sQHnElf+vGyT8Q8Gmk2g9G7J4nQNrS8g+7YYHZO3Yd0lZd
RnHNfn8qQiqo6ojcm1nGWzruYEDf9vNsp1Dg5zr5zglO4yDrMQmA9ZoPvvADf8VzzX1nLy9eJ
vMuY3GGyxLFj+cdcSLJan6fCd9uOxMMmRmkvQfjdUOz8BS2MK8mvIXDvpK7Umlkyp/pKC5HpX
UdxNa5+5ODiHFDwXaK6r5DjfiCJEEnKEBoEIMF+845jXx7rCiOd/KYTkaJHcmQk3M/hORPOeW
bRH1ETQXwJlovKZ0ZqlWcYm3sSEFVp6VUxPk1RF/fYwuz0uo5AlsgUjKq0Udct5EsvbEj59mE
nBXy4TfJakv2iqH0m2mWTC64syI+7r5aBYp62Tj3vi8Cl31ACrRbPVrcyBujjXm3g5u7C7of7
pJO+dR4qJRFfe8QMLZNTJDhy6tt+j+5w6FU5Lup699FO4fbQ7FBcawN2NOWs+XZvXxDeWRQ7V
NR2FDxAyZmjn9JrSNZnYQQpbiZNVEjkgi3cfqCj6+sH2/Mlrnbo8V4PuSGl+VyJf/yo0hi2zY
L6jDiVLVCMwM5UBwvh4E/Bpc425y1jluRz0AoEqODnSenv0QxXSCjuKn4VtiZKbCfH2qXdMZf
6WaSUaJoCd0oRU+4hmL+GmNz2Se5DSk+jGicYmzFKJJwwX2chHb7a42y+VGLsOzmya6kx8RWA
nKPqapUd5Ysb7E5Jt/be9TFMaSpG3j8hKko4kk/HnaHldylf9/hg+BJ/iNBb1UKwTee7XYbti
hQJDPrXIhPKZLhywLs3dnD99Izkv0Jyd1f5ewB/2wtuA2z50aYiUk9aDP8BI+ihL0/oaZUnKl
PuU0CFrFFBKe14uxAFz12EoqbzhzUnw8XGkvprsp6QG4BtY+lt+K9jfnn/Np5qzZ/jJFYg9CN
cPOQrYDes3URALRwZ2onqBNhLcf8aVS3jyb1kV5NRFOh/9J6Agp66hw4gLRNY7B7iZxBgtEPD
BIKw0GIzSx/GfsXStDq+WI1+e+NEWDIy2xho+JRoxUjq20K3XeTh2tZBvapyBqAMpiDf0zHkX
Fxe+vsf0Ozbnc77sGoUdDaW3c0DRP880ASsISINVGQ5IgAG4f9mkU0Rt8Tdojzzt8Nt
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
This is a multi-part message in MIME format.
--------------OonywoDpVCk8BD8QQlfCUFVy
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
> Also, moving child frames is pretty nice too!
The attached patch now also resizes child frames by dragging their edges
or corners. One thing that does not work is that when another child
frame is beneath an edge, Emacs selects the child frame beneath the edge
before I can start dragging. I think that frame/child frame selection
with the mouse is not perfect in the current state in three regards:
- When I do down-mouse-1 in the non-selected root frame, Emacs does
'mouse-set-point' there. I think it should do so only for a mouse-1
so I can back out before releasing the mouse button and obviously use
the down-mouse-1 for dragging.
- When I have two overlapping child frames and do down-mouse-1 on a
border of the frame above and that border covers the frame beneath,
Emacs should never select the frame beneath here. Not even after I
release the button.
- Clicking into a child frame anywhere but on a bar does not select it.
This is uncomfortable and at least does not mimic the behavior of GUI
frames on all window managers I know.
I'll look into these tomorrow. Pointers welcome.
martin
--------------OonywoDpVCk8BD8QQlfCUFVy
Content-Type: text/x-patch; charset=UTF-8;
name="child-frame-menubar-drag-resize.diff"
Content-Disposition: attachment;
filename="child-frame-menubar-drag-resize.diff"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvbWVudS1iYXIuZWwgYi9saXNwL21lbnUtYmFyLmVsCmluZGV4
IDEzOTExMTA5ZmQ3Li4xNDY5ZGY2MzE2ZiAxMDA2NDQKLS0tIGEvbGlzcC9tZW51LWJhci5l
bAorKysgYi9saXNwL21lbnUtYmFyLmVsCkBAIC0yNjkxLDUzICsyNjkxLDc0IEBAIHBvcHVw
LW1lbnUKIAkJCSAoZmlsdGVyICh3aGVuIChzeW1ib2xwIG1hcCkKIAkJCQkgICAocGxpc3Qt
Z2V0IChnZXQgbWFwICdtZW51LXByb3ApIDpmaWx0ZXIpKSkpCiAJCSAgICAoaWYgZmlsdGVy
IChmdW5jYWxsIGZpbHRlciAoc3ltYm9sLWZ1bmN0aW9uIG1hcCkpIG1hcCkpKSkpCi0JIChm
cmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorCSAoc2VsZWN0ZWQtZnJhbWUgKHNlbGVjdGVkLWZy
YW1lKSkKKwkgKGZyYW1lIChpZiAoYW5kIChlcSAoZnJhbWVwIHNlbGVjdGVkLWZyYW1lKSB0
KSAoZnJhbWUtcGFyZW50KQorCQkJIGZyb20tbWVudS1iYXIKKwkJCSAoemVyb3AgKG9yIChm
cmFtZS1wYXJhbWV0ZXIgbmlsICdtZW51LWJhci1saW5lcykgMCkpKQorCQkgICAgOzsgSWYg
dGhlIHNlbGVjdGVkIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lCisJCSAgICA7OyB3aXRo
b3V0IGl0cyBvd24gbWVudSBiYXIgYW5kIHdlIGFyZSBjYWxsZWQgZnJvbQorCQkgICAgOzsg
dGhlIG1lbnUgYmFyLCB0aGUgbWVudSBiYXIgbXVzdCBiZSBvbiB0aGUgcm9vdAorCQkgICAg
OzsgZnJhbWUgb2YgdGhlIHNlbGVjdGVkIGZyYW1lLgorCQkgICAgKGZyYW1lLXJvb3QtZnJh
bWUpCisJCSAgKHNlbGVjdGVkLWZyYW1lKSkpCiAJIGV2ZW50IGNtZCkKLSAgICAoaWYgZnJv
bS1tZW51LWJhcgotCShsZXQqICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKLQkgICAgICAg
KG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSAoY2FyIHh5KSAoY2RyIHh5KSkp
KQotCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyht
ZW51LWJhcikKLQkJCQkJCSB4eSAwKSkpKQotICAgICAgKHNldHEgcG9zaXRpb24gKHBvcHVw
LW1lbnUtbm9ybWFsaXplLXBvc2l0aW9uIHBvc2l0aW9uKSkpCi0gICAgOzsgVGhlIGxvb3Bp
bmcgYmVoYXZpb3Igd2FzIHRha2VuIGZyb20gbG1lbnUncyBwb3B1cC1tZW51LXBvcHVwCi0g
ICAgKHdoaWxlIChhbmQgbWFwIChzZXRxIGV2ZW50Ci0JCQkgIDs7IG1hcCBjb3VsZCBiZSBh
IHByZWZpeCBrZXksIGluIHdoaWNoIGNhc2UKLQkJCSAgOzsgd2UgbmVlZCB0byBnZXQgaXRz
IGZ1bmN0aW9uIGNlbGwKLQkJCSAgOzsgZGVmaW5pdGlvbi4KLQkJCSAgKHgtcG9wdXAtbWVu
dSBwb3NpdGlvbiAoaW5kaXJlY3QtZnVuY3Rpb24gbWFwKSkpKQotICAgICAgOzsgU3RyYW5n
ZWx5IHgtcG9wdXAtbWVudSByZXR1cm5zIGEgbGlzdC4KLSAgICAgIDs7IG1vdXNlLW1ham9y
LW1vZGUtbWVudSB3YXMgdXNpbmcgYSB3ZWlyZDoKLSAgICAgIDs7IChrZXktYmluZGluZyAo
YXBwbHkgJ3ZlY3RvciAoYXBwZW5kICcobWVudS1iYXIpIG1lbnUtcHJlZml4IGV2ZW50cykp
KQotICAgICAgKHNldHEgY21kCi0JICAgIChjb25kCi0JICAgICAoKGFuZCBmcm9tLW1lbnUt
YmFyCi0JCSAgIChjb25zcCBldmVudCkKLQkJICAgKG51bWJlcnAgKGNhciBldmVudCkpCi0J
CSAgIChudW1iZXJwIChjZHIgZXZlbnQpKSkKLQkgICAgICAobGV0ICgoeCAoY2FyIGV2ZW50
KSkKLQkJICAgICh5IChjZHIgZXZlbnQpKQotCQkgICAgbWVudS1zeW1ib2wpCi0JCShzZXRx
IG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSB4IHkpKQotCQkoc2V0cSBwb3Np
dGlvbiAobGlzdCBtZW51LXN5bWJvbCAobGlzdCBmcmFtZSAnKG1lbnUtYmFyKQotCQkJCQkJ
IGV2ZW50IDApKSkKLQkJKHNldHEgbWFwCi0JCSAgICAgIChrZXktYmluZGluZyAodmVjdG9y
ICdtZW51LWJhciBtZW51LXN5bWJvbCkpKSkpCi0JICAgICAoKGFuZCAobm90IChrZXltYXBw
IG1hcCkpIChsaXN0cCBtYXApKQotCSAgICAgIDs7IFdlIHdlcmUgZ2l2ZW4gYSBsaXN0IG9m
IGtleW1hcHMuICBTZWFyY2ggdGhlbSBhbGwKLQkgICAgICA7OyBpbiBzZXF1ZW5jZSB1bnRp
bCBhIGZpcnN0IGJpbmRpbmcgaXMgZm91bmQuCi0JICAgICAgKGxldCAoKG1vdXNlLWNsaWNr
IChhcHBseSAndmVjdG9yIGV2ZW50KSkKLQkJICAgIGJpbmRpbmcpCi0JCSh3aGlsZSAoYW5k
IG1hcCAobnVsbCBiaW5kaW5nKSkKLQkJICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWln
bm9yZS10b28tbG9uZyAoY2FyIG1hcCkgbW91c2UtY2xpY2spKQotCQkgIChzZXRxIG1hcCAo
Y2RyIG1hcCkpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcpKQotCSAgICAgKHQKLQkgICAg
ICA7OyBXZSB3ZXJlIGdpdmVuIGEgc2luZ2xlIGtleW1hcC4KLQkgICAgICAobG9va3VwLWtl
eSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQotICAgICAgOzsgQ2xlYXIgb3V0IGVj
aG9pbmcsIHdoaWNoIHBlcmhhcHMgc2hvd3MgYSBwcmVmaXggYXJnLgotICAgICAgKG1lc3Nh
Z2UgIiIpCi0gICAgICA7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1Ym1hcC4K
LSAgICAgIChzZXRxIG1hcCAoaWYgKGtleW1hcHAgY21kKSBjbWQpKSkKKyAgICAod2l0aC1z
ZWxlY3RlZC1mcmFtZSBmcmFtZQorICAgICAgKGlmIGZyb20tbWVudS1iYXIKKwkgIChsZXQq
ICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKKwkJIChtZW51LXN5bWJvbCAobWVudS1iYXIt
bWVudS1hdC14LXkgKGNhciB4eSkgKGNkciB4eSkpKSkKKwkgICAgKHNldHEgcG9zaXRpb24g
KGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCSAgIHh5
IDApKSkpCisJKHNldHEgcG9zaXRpb24gKHBvcHVwLW1lbnUtbm9ybWFsaXplLXBvc2l0aW9u
IHBvc2l0aW9uKSkpCisKKyAgICAgIDs7IFRoZSBsb29waW5nIGJlaGF2aW9yIHdhcyB0YWtl
biBmcm9tIGxtZW51J3MgcG9wdXAtbWVudS1wb3B1cAorICAgICAgKHdoaWxlIChhbmQgbWFw
IChzZXRxIGV2ZW50CisJCQkgICAgOzsgbWFwIGNvdWxkIGJlIGEgcHJlZml4IGtleSwgaW4g
d2hpY2ggY2FzZQorCQkJICAgIDs7IHdlIG5lZWQgdG8gZ2V0IGl0cyBmdW5jdGlvbiBjZWxs
CisJCQkgICAgOzsgZGVmaW5pdGlvbi4KKwkJCSAgICAoeC1wb3B1cC1tZW51IHBvc2l0aW9u
IChpbmRpcmVjdC1mdW5jdGlvbiBtYXApKSkpCisJOzsgU3RyYW5nZWx5IHgtcG9wdXAtbWVu
dSByZXR1cm5zIGEgbGlzdC4KKwk7OyBtb3VzZS1tYWpvci1tb2RlLW1lbnUgd2FzIHVzaW5n
IGEgd2VpcmQ6CisJOzsgKGtleS1iaW5kaW5nIChhcHBseSAndmVjdG9yIChhcHBlbmQgJyht
ZW51LWJhcikgbWVudS1wcmVmaXggZXZlbnRzKSkpCisJKHNldHEgY21kCisJICAgICAgKGNv
bmQKKwkgICAgICAgKChhbmQgZnJvbS1tZW51LWJhcgorCQkgICAgIChjb25zcCBldmVudCkK
KwkJICAgICAobnVtYmVycCAoY2FyIGV2ZW50KSkKKwkJICAgICAobnVtYmVycCAoY2RyIGV2
ZW50KSkpCisJCShsZXQgKCh4IChjYXIgZXZlbnQpKQorCQkgICAgICAoeSAoY2RyIGV2ZW50
KSkKKwkJICAgICAgbWVudS1zeW1ib2wpCisJCSAgKHNldHEgbWVudS1zeW1ib2wgKG1lbnUt
YmFyLW1lbnUtYXQteC15IHggeSkpCisJCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1z
eW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCQkgZXZlbnQgMCkpKQorCQkg
IChpZiAobm90IChlcSBmcmFtZSBzZWxlY3RlZC1mcmFtZSkpCisJCSAgICAgIDs7IElmIHdl
IGFyZSB1c2luZyB0aGUgbWVudSBiYXIgZnJvbSB0aGUgcm9vdAorCQkgICAgICA7OyBmcmFt
ZSwgbG9vayB1cCB0aGUga2V5IGJpbmRpbmcgaW4gdGhlIGtleW1hcHMKKwkJICAgICAgOzsg
b2YgdGhlIGluaXRpYWxseSBzZWxlY3RlZCB3aW5kb3cncyBidWZmZXIgdG8KKwkJICAgICAg
OzsgbWFrZSBzdXJlIHRoYXQgbmF2aWdhdGluZyB0aGUgbWVudSBiYXIgd2l0aCB0aGUKKwkJ
ICAgICAgOzsga2V5Ym9hcmQgd29ya3MgYXMgaW50ZW5kZWQuCisJCSAgICAgIChzZXRxIG1h
cAorCQkJICAgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJhciBtZW51LXN5bWJvbCkg
bmlsIG5pbAorCQkJCQkgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBzZWxlY3RlZC1mcmFtZSkp
KQorCQkgICAgKHNldHEgbWFwCisJCQkgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJh
ciBtZW51LXN5bWJvbCkpKSkpKQorCSAgICAgICAoKGFuZCAobm90IChrZXltYXBwIG1hcCkp
IChsaXN0cCBtYXApKQorCQk7OyBXZSB3ZXJlIGdpdmVuIGEgbGlzdCBvZiBrZXltYXBzLiAg
U2VhcmNoIHRoZW0gYWxsCisJCTs7IGluIHNlcXVlbmNlIHVudGlsIGEgZmlyc3QgYmluZGlu
ZyBpcyBmb3VuZC4KKwkJKGxldCAoKG1vdXNlLWNsaWNrIChhcHBseSAndmVjdG9yIGV2ZW50
KSkKKwkJICAgICAgYmluZGluZykKKwkJICAod2hpbGUgKGFuZCBtYXAgKG51bGwgYmluZGlu
ZykpCisJCSAgICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWlnbm9yZS10b28tbG9uZyAo
Y2FyIG1hcCkgbW91c2UtY2xpY2spKQorCQkgICAgKHNldHEgbWFwIChjZHIgbWFwKSkpCisJ
CSAgYmluZGluZykpCisJICAgICAgICh0CisJCTs7IFdlIHdlcmUgZ2l2ZW4gYSBzaW5nbGUg
a2V5bWFwLgorCQkobG9va3VwLWtleSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQor
CTs7IENsZWFyIG91dCBlY2hvaW5nLCB3aGljaCBwZXJoYXBzIHNob3dzIGEgcHJlZml4IGFy
Zy4KKwkobWVzc2FnZSAiIikKKwk7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1
Ym1hcC4KKwkoc2V0cSBtYXAgKGlmIChrZXltYXBwIGNtZCkgY21kKSkpKQorCiAgICAgOzsg
SWYgdGhlIHVzZXIgZGlkIG5vdCBjYW5jZWwgYnkgcmVmdXNpbmcgdG8gc2VsZWN0LAogICAg
IDs7IGFuZCBpZiB0aGUgcmVzdWx0IGlzIGEgY29tbWFuZCwgcnVuIGl0LgogICAgICh3aGVu
IChhbmQgKG51bGwgbWFwKSAoY29tbWFuZHAgY21kKSkKQEAgLTI4MDgsMTQgKzI4MjksMjcg
QEAgbWVudS1iYXItb3BlbgogSWYgRlJBTUUgaXMgbmlsIG9yIG5vdCBnaXZlbiwgdXNlIHRo
ZSBzZWxlY3RlZCBmcmFtZS4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxpc3QgbmlsIChwcmVm
aXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpKSkKLSAgKGxldCAoKHR5cGUg
KGZyYW1lcCAob3IgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpKSkKKyAgKGxldCogKCh0eXBl
IChmcmFtZXAgKG9yIGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKSkKKwkgcm9vdAorCSAoZnJh
bWUgKGlmIChhbmQgKGVxIHR5cGUgdCkgKGZyYW1lLXBhcmVudCBmcmFtZSkKKwkJCSAobnVs
bCB0dHktbWVudS1vcGVuLXVzZS10bW0pCisJCQkgKHplcm9wIChvciAoZnJhbWUtcGFyYW1l
dGVyIGZyYW1lICdtZW51LWJhci1saW5lcykgMCkpCisJCQkgKHNldHEgcm9vdCAoZnJhbWUt
cm9vdC1mcmFtZSkpCisJCQkgKG5vdCAoemVyb3AKKwkJCSAgICAgICAob3IgKGZyYW1lLXBh
cmFtZXRlciByb290ICdtZW51LWJhci1saW5lcykgMCkpKSkKKwkJICAgIDs7IElmIEZSQU1F
IGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgaXRzIG93bgorCQkgICAgOzsgbWVudSBi
YXIsICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIGZhbHNlIGFuZAorCQkgICAgOzsgRlJB
TUUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyLCB1c2UgdGhhdCByb290CisJCSAgICA7
OyBmcmFtZSdzIG1lbnUgYmFyLgorCQkgICAgcm9vdAorCQkgIGZyYW1lKSkpCiAgICAgKGNv
bmQKICAgICAgKChlcSB0eXBlICd4KSAoeC1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAg
KChlcSB0eXBlICd3MzIpICh3MzItbWVudS1iYXItb3BlbiBmcmFtZSkpCiAgICAgICgoZXEg
dHlwZSAnaGFpa3UpIChoYWlrdS1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChlcSB0
eXBlICdwZ3RrKSAocGd0ay1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChhbmQgKG51
bGwgdHR5LW1lbnUtb3Blbi11c2UtdG1tKQotCSAgIChub3QgKHplcm9wIChvciAoZnJhbWUt
cGFyYW1ldGVyIG5pbCAnbWVudS1iYXItbGluZXMpIDApKSkpCisJICAgKG5vdCAoemVyb3Ag
KG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ21lbnUtYmFyLWxpbmVzKSAwKSkpKQogICAg
ICAgOzsgTWFrZSBzdXJlIHRoZSBtZW51IGJhciBpcyB1cCB0byBkYXRlLiAgT25lIHNpdHVh
dGlvbiB3aGVyZQogICAgICAgOzsgdGhpcyBpcyBpbXBvcnRhbnQgaXMgd2hlbiB0aGlzIGZ1
bmN0aW9uIGlzIGludm9rZWQgYnkgbmFtZQogICAgICAgOzsgdmlhIE0teCwgaW4gd2hpY2gg
Y2FzZSB0aGUgbWVudSBiYXIgaW5jbHVkZXMgdGhlICJNaW5pYnVmIgpAQCAtMjgzMSw3ICsy
ODY1LDcgQEAgbWVudS1iYXItb3BlbgogICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50
LWxvY2FsLW1hcCkgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpCiAJCSAgICAgKGNkYXIgKG1p
bm9yLW1vZGUta2V5LWJpbmRpbmcgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpKQogICAgICAg
ICAgICAgICAgICAgICAgKG1vdXNlLW1lbnUtYmFyLW1hcCkpCi0JCSAgICAocG9zbi1hdC14
LXkgeCAwIG5pbCB0KSBuaWwgdCkpKQorCQkgICAgKHBvc24tYXQteC15IHggMCBmcmFtZSB0
KSBuaWwgdCkpKQogICAgICAodCAod2l0aC1zZWxlY3RlZC1mcmFtZSAob3IgZnJhbWUgKHNl
bGVjdGVkLWZyYW1lKSkKICAgICAgICAgICAodG1tLW1lbnViYXIpKSkpKSkKIApkaWZmIC0t
Z2l0IGEvbGlzcC9tb3VzZS5lbCBiL2xpc3AvbW91c2UuZWwKaW5kZXggYjA1MTE1YjIzN2Qu
LjVkNGQzMGFmNWU3IDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVsCisrKyBiL2xpc3AvbW91
c2UuZWwKQEAgLTExMDYsNyArMTEwNiwxMCBAQCBtb3VzZS1kcmFnLWZyYW1lLXJlc2l6ZQog
CSAoZHJhZy1ib3R0b20gKG1lbXEgcGFydCAnKGJvdHRvbS1yaWdodCBib3R0b20gYm90dG9t
LWxlZnQpKSkKIAkgOzsgSW5pdGlhbCAiZmlyc3QiIG1vdXNlIHBvc2l0aW9uLiAgV2hpbGUg
ZHJhZ2dpbmcgd2UgYmFzZSBhbGwKIAkgOzsgY2FsY3VsYXRpb25zIGFnYWluc3QgdGhhdCBw
b3NpdGlvbi4KLQkgKGZpcnN0LXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24p
KQorCSAodHR5ICh0dHktdHlwZSBmcmFtZSkpCisJIChmaXJzdC14LXkgKGlmIHR0eQorCQkJ
KG1vdXNlLXBvc2l0aW9uLWluLXJvb3QtZnJhbWUpCisJCSAgICAgIChtb3VzZS1hYnNvbHV0
ZS1waXhlbC1wb3NpdGlvbikpKQogICAgICAgICAgKGZpcnN0LXggKGNhciBmaXJzdC14LXkp
KQogICAgICAgICAgKGZpcnN0LXkgKGNkciBmaXJzdC14LXkpKQogICAgICAgICAgKGV4aXRm
dW4gbmlsKQpAQCAtMTExNCw3ICsxMTE3LDkgQEAgbW91c2UtZHJhZy1mcmFtZS1yZXNpemUK
ICAgICAgICAgICAobGFtYmRhIChldmVudCkKICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSAi
ZSIpCiAgICAgICAgICAgICAod2hlbiAoY29uc3AgZXZlbnQpCi0gICAgICAgICAgICAgIChs
ZXQqICgobGFzdC14LXkgKG1vdXNlLWFic29sdXRlLXBpeGVsLXBvc2l0aW9uKSkKKyAgICAg
ICAgICAgICAgKGxldCogKChsYXN0LXgteSAoaWYgdHR5CisJCQkJICAgKG1vdXNlLXBvc2l0
aW9uLWluLXJvb3QtZnJhbWUpCisJCQkJIChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlv
bikpKQogCQkgICAgIChsYXN0LXggKGNhciBsYXN0LXgteSkpCiAJCSAgICAgKGxhc3QteSAo
Y2RyIGxhc3QteC15KSkKIAkJICAgICAobGVmdCAoLSBsYXN0LXggZmlyc3QteCkpCkBAIC0x
MjIzLDEwICsxMjI4LDEzIEBAIG1vdXNlLWRyYWctZnJhbWUtbW92ZQogICAgICAgICAgKHBh
cmVudC1ib3R0b20gKGFuZCBwYXJlbnQtZWRnZXMgKG50aCAzIHBhcmVudC1lZGdlcykpKQog
CSA7OyBJbml0aWFsICJmaXJzdCIgbW91c2UgcG9zaXRpb24uICBXaGlsZSBkcmFnZ2luZyB3
ZSBiYXNlIGFsbAogCSA7OyBjYWxjdWxhdGlvbnMgYWdhaW5zdCB0aGF0IHBvc2l0aW9uLgot
CSAoZmlyc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCi0gICAgICAg
ICAoZmlyc3QteCAoY2FyIGZpcnN0LXgteSkpCi0gICAgICAgICAoZmlyc3QteSAoY2RyIGZp
cnN0LXgteSkpCi0gICAgICAgICA7OyBgc25hcC13aWR0aCcgKG1heWJlIGFsc28gYSB5ZXQg
dG8gYmUgcHJvdmlkZWQgYHNuYXAtaGVpZ2h0JykKKwkgKHR0eSAodHR5LXR5cGUgZnJhbWUp
KQorCSAoZmlyc3QteC15IChpZiB0dHkKKwkJCShtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZy
YW1lKQorCQkgICAgICAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKKwkgKGZp
cnN0LXggKGNhciBmaXJzdC14LXkpKQorCSAoZmlyc3QteSAoY2RyIGZpcnN0LXgteSkpCisJ
IDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxzbyBhIHlldCB0byBiZSBwcm92aWRlZCBgc25h
cC1oZWlnaHQnKQogICAgICAgICAgOzsgY291bGQgYmVjb21lIGZsb2F0cyB0byBoYW5kbGUg
cHJvcG9ydGlvbmFsaXR5IHdydCBQQVJFTlQuCiAgICAgICAgICA7OyBXZSBkb24ndCBkbyBh
bnkgY2hlY2tzIG9uIHRoaXMgcGFyYW1ldGVyIHNvIGZhci4KICAgICAgICAgIChzbmFwLXdp
ZHRoIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ3NuYXAtd2lkdGgpKQpAQCAtMTI0Miw3ICsx
MjUwLDkgQEAgbW91c2UtZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgKGxhbWJkYSAoZXZl
bnQpCiAgICAgICAgICAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgICAgICAgICAgKHdoZW4g
KGNvbnNwIGV2ZW50KQotICAgICAgICAgICAgICAobGV0KiAoKGxhc3QteC15IChtb3VzZS1h
YnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChsZXQqICgobGFzdC14
LXkgKGlmIHR0eQorCQkJCSAgIChtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lKQorCQkJ
CSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKIAkJICAgICAobGFzdC14IChj
YXIgbGFzdC14LXkpKQogCQkgICAgIChsYXN0LXkgKGNkciBsYXN0LXgteSkpCiAJCSAgICAg
KGxlZnQgKC0gbGFzdC14IGZpcnN0LXgpKQpAQCAtMTM3Myw3ICsxMzgzLDggQEAgbW91c2Ut
ZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgt
IHBhcmVudC1ib3R0b20gbmF0aXZlLWhlaWdodCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG1pbiAobWF4IHRvcCBwYXJlbnQtdG9wKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKC0gcGFyZW50LWJvdHRvbSBwYXIpKSkpKSkKLSAgICAgICAgICAgICAg
ICA7OyBVc2UgYG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzJyBzaW5jZSBgbGVmdCcgYW5kIGB0
b3AnCisKKwkJOzsgVXNlICdtb2RpZnktZnJhbWUtcGFyYW1ldGVycycgc2luY2UgJ2xlZnQn
IGFuZCAndG9wJwogICAgICAgICAgICAgICAgIDs7IG1heSB3YW50IHRvIG1vdmUgRlJBTUUg
b3V0IG9mIGl0cyBQQVJFTlQuCiAgICAgICAgICAgICAgICAgKG1vZGlmeS1mcmFtZS1wYXJh
bWV0ZXJzIGZyYW1lIGAoKGxlZnQgLiAoKyAsbGVmdCkpICh0b3AgLiAoKyAsdG9wKSkpKSkp
KSkKIAkgKG9sZC10cmFjay1tb3VzZSB0cmFjay1tb3VzZSkpCmRpZmYgLS1naXQgYS9zcmMv
ZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IGNhYzliMGE0YWNkLi5iOWE2OWY5YzFiMSAx
MDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTE0NDksMTcg
KzE0NDksMzggQEAgZ2V0X2Z1dHVyZV9mcmFtZV9wYXJhbSAoTGlzcF9PYmplY3QgcGFyYW1l
dGVyLAogI2VuZGlmCiAKIGludAotdHR5X2NoaWxkX3Bvc19wYXJhbSAoc3RydWN0IGZyYW1l
ICpjaGlsZCwgTGlzcF9PYmplY3Qga2V5LAotCQkgICAgIExpc3BfT2JqZWN0IHBhcmFtcywg
aW50IGRmbHQpCit0dHlfY2hpbGRfcG9zX3BhcmFtIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3Bf
T2JqZWN0IGtleSwKKwkJICAgICBMaXNwX09iamVjdCBwYXJhbXMsIGludCBwb3MpCiB7Cisg
IHN0cnVjdCBmcmFtZSAqcCA9IFhGUkFNRSAoZi0+cGFyZW50X2ZyYW1lKTsKICAgTGlzcF9P
YmplY3QgdmFsID0gRmFzc3EgKGtleSwgcGFyYW1zKTsKKwogICBpZiAoQ09OU1AgKHZhbCkp
CiAgICAgewogICAgICAgdmFsID0gWENEUiAodmFsKTsKLSAgICAgIGlmIChGSVhOVU1QICh2
YWwpKQotCXJldHVybiBYRklYTlVNICh2YWwpOworCisgICAgICBpZiAoVFlQRV9SQU5HRURf
RklYTlVNUCAoaW50LCB2YWwpKQorCXsKKwkgIHBvcyA9IFhGSVhOVU0gKHZhbCk7CisKKwkg
IGlmIChwb3MgPCAwKQorCSAgICAvKiBIYW5kbGUgbmVnYXRpdmUgdmFsdWUuICovCisJICAg
IHBvcyA9IG1heCAoRVEgKGtleSwgUXRvcCkKKwkJICAgICAgID8gcC0+cGl4ZWxfaGVpZ2h0
IC0gZi0+cGl4ZWxfaGVpZ2h0IC0gcG9zCisJCSAgICAgICA6IHAtPnBpeGVsX3dpZHRoIC0g
Zi0+cGl4ZWxfd2lkdGggLSBwb3MsCisJCSAgICAgICAwKTsKKwl9CisgICAgICBlbHNlIGlm
IChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUXBsdXMpCisJICAgICAgICYmIENP
TlNQIChYQ0RSICh2YWwpKQorCSAgICAgICAmJiBUWVBFX1JBTkdFRF9GSVhOVU1QIChpbnQs
IFhDQVIgKFhDRFIgKHZhbCkpKSkKKwlwb3MgPSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwp
KSk7CisgICAgICBlbHNlIGlmIChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUW1p
bnVzKQorCSAgICAgICAmJiBDT05TUCAoWENEUiAodmFsKSkKKwkgICAgICAgJiYgUkFOR0VE
X0ZJWE5VTVAgKC1JTlRfTUFYLCBYQ0FSIChYQ0RSICh2YWwpKSwgSU5UX01BWCkpCisJcG9z
ID0gLSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwpKSk7CiAgICAgfQotICByZXR1cm4gZGZs
dDsKKworICByZXR1cm4gcG9zOwogfQogCiBpbnQKQEAgLTI4MzgsNyArMjg1OSw3IEBAIERF
RlVOICgiZGVsZXRlLWZyYW1lIiwgRmRlbGV0ZV9mcmFtZSwgU2RlbGV0ZV9mcmFtZSwgMCwg
MiwgIiIsCiAgIHJldHVybiBkZWxldGVfZnJhbWUgKGZyYW1lLCAhTklMUCAoZm9yY2UpID8g
UXQgOiBRbmlsKTsKIH0KIAwKLSNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KKwogLyoqCiAg
KiBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFydDoKICAqCkBAIC0yODYxLDcgKzI4ODIsMTEg
QEAgREVGVU4gKCJkZWxldGUtZnJhbWUiLCBGZGVsZXRlX2ZyYW1lLCBTZGVsZXRlX2ZyYW1l
LCAwLCAyLCAiIiwKIGVudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKIGZyYW1lX2ludGVybmFs
X2JvcmRlcl9wYXJ0IChzdHJ1Y3QgZnJhbWUgKmYsIGludCB4LCBpbnQgeSkKIHsKLSAgaW50
IGJvcmRlciA9IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZik7CisgIGludCBib3Jk
ZXIgPSAoRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChmKQorCQk/IEZSQU1FX0lOVEVS
TkFMX0JPUkRFUl9XSURUSCAoZikKKwkJOiAoaXNfdHR5X2NoaWxkX2ZyYW1lIChmKSAmJiAh
RlJBTUVfVU5ERUNPUkFURUQgKGYpKQorCQk/IDEKKwkJOiAwKTsKICAgaW50IG9mZnNldCA9
IEZSQU1FX0xJTkVfSEVJR0hUIChmKTsKICAgaW50IHdpZHRoID0gRlJBTUVfUElYRUxfV0lE
VEggKGYpOwogICBpbnQgaGVpZ2h0ID0gRlJBTUVfUElYRUxfSEVJR0hUIChmKTsKQEAgLTI5
MzAsNyArMjk1NSw3IEBAIGZyYW1lX2ludGVybmFsX2JvcmRlcl9wYXJ0IChzdHJ1Y3QgZnJh
bWUgKmYsIGludCB4LCBpbnQgeSkKIAogICByZXR1cm4gcGFydDsKIH0KLSNlbmRpZgorCiAK
IC8qIFJldHVybiBtb3VzZSBwb3NpdGlvbiBpbiBjaGFyYWN0ZXIgY2VsbCB1bml0cy4gICov
CiAKQEAgLTY0NzgsNiArNjUwMywzNyBAQCBERUZVTiAoImZyYW1lLXBvaW50ZXItdmlzaWJs
ZS1wIiwgRmZyYW1lX3BvaW50ZXJfdmlzaWJsZV9wLAogICByZXR1cm4gZGVjb2RlX2FueV9m
cmFtZSAoZnJhbWUpLT5wb2ludGVyX2ludmlzaWJsZSA/IFFuaWwgOiBRdDsKIH0KIAorREVG
VU4gKCJtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lIiwgRm1vdXNlX3Bvc2l0aW9uX2lu
X3Jvb3RfZnJhbWUsCisgICAgICAgU21vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUsIDAs
IDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gbW91c2UgcG9zaXRpb24gaW4gc2VsZWN0
ZWQgZnJhbWUncyByb290IGZyYW1lLgorCitSZXR1cm4gdGhlIHBvc2l0aW9uIG9mIGBtb3Vz
ZS1wb3NpdGlvbicgaW4gY29vcmRpbmF0ZXMgb2YgdGhlIHJvb3QgZnJhbWUKK29mIHRoZSBm
cmFtZSByZXR1cm5lZCBieSAnbW91c2UtcG9zaXRpb24nLiAgKi8pCisgICh2b2lkKQorewor
ICBMaXNwX09iamVjdCBwb3MgPSBtb3VzZV9wb3NpdGlvbiAodHJ1ZSk7CisgIExpc3BfT2Jq
ZWN0IGZyYW1lID0gWENBUiAocG9zKTsKKyAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChm
cmFtZSk7CisgIGludCB4ID0gWEZJWE5VTSAoWENBUiAoWENEUiAocG9zKSkpICsgZi0+bGVm
dF9wb3M7CisgIGludCB5ID0gWEZJWE5VTSAoWENEUiAoWENEUiAocG9zKSkpICsgZi0+dG9w
X3BvczsKKworICBpZiAoIUZSQU1FUCAoZnJhbWUpKQorICAgIHJldHVybiBRbmlsOworICBl
bHNlCisgICAgeworICAgICAgZiA9IEZSQU1FX1BBUkVOVF9GUkFNRSAoZik7CisKKyAgICAg
IHdoaWxlIChmKQorCXsKKwkgIHggPSB4ICsgZi0+bGVmdF9wb3M7CisJICB5ID0geSArIGYt
PnRvcF9wb3M7CisJICBmID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKKwl9CisKKyAgICAg
IHJldHVybiBGY29ucyAobWFrZV9maXhudW0gKHgpLCBtYWtlX2ZpeG51bSAoeSkpOworICAg
IH0KK30KKwogREVGVU4gKCJmcmFtZS0tc2V0LXdhcy1pbnZpc2libGUiLCBGZnJhbWVfX3Nl
dF93YXNfaW52aXNpYmxlLAogICAgICAgIFNmcmFtZV9fc2V0X3dhc19pbnZpc2libGUsIDIs
IDIsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQgRlJBTUUncyB3YXMtaW52aXNpYmxlIGZsYWcg
aWYgV0FTLUlOVklTSUJMRSBpcyBub24tbmlsLgpAQCAtNzI1MCw2ICs3MzA2LDcgQEAgZm9j
dXMgKHdoZXJlIGEgZnJhbWUgaW1tZWRpYXRlbHkgbG9zZXMgZm9jdXMgd2hlbiBpdCdzIGxl
ZnQgYnkgdGhlIG1vdXNlCiAgIGRlZnN1YnIgKCZTZnJhbWVfcG9zaXRpb24pOwogICBkZWZz
dWJyICgmU3NldF9mcmFtZV9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZTZnJhbWVfcG9pbnRl
cl92aXNpYmxlX3ApOworICBkZWZzdWJyICgmU21vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJh
bWUpOwogICBkZWZzdWJyICgmU2ZyYW1lX19zZXRfd2FzX2ludmlzaWJsZSk7CiAgIGRlZnN1
YnIgKCZTZnJhbWVfd2luZG93X3N0YXRlX2NoYW5nZSk7CiAgIGRlZnN1YnIgKCZTc2V0X2Zy
YW1lX3dpbmRvd19zdGF0ZV9jaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmggYi9z
cmMvZnJhbWUuaAppbmRleCBmZWE4YmFhNzMzMi4uNmJhY2YyYTNjNDkgMTAwNjQ0Ci0tLSBh
L3NyYy9mcmFtZS5oCisrKyBiL3NyYy9mcmFtZS5oCkBAIC0zMSw2ICszMSwxOSBAQCAjZGVm
aW5lIEVNQUNTX0ZSQU1FX0gKICAgdmVydGljYWxfc2Nyb2xsX2Jhcl9yaWdodAogfTsKIAor
ZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFydAorICB7CisgICBJTlRFUk5BTF9CT1JERVJfTk9O
RSwKKyAgIElOVEVSTkFMX0JPUkRFUl9MRUZUX0VER0UsCisgICBJTlRFUk5BTF9CT1JERVJf
VE9QX0xFRlRfQ09STkVSLAorICAgSU5URVJOQUxfQk9SREVSX1RPUF9FREdFLAorICAgSU5U
RVJOQUxfQk9SREVSX1RPUF9SSUdIVF9DT1JORVIsCisgICBJTlRFUk5BTF9CT1JERVJfUklH
SFRfRURHRSwKKyAgIElOVEVSTkFMX0JPUkRFUl9CT1RUT01fUklHSFRfQ09STkVSLAorICAg
SU5URVJOQUxfQk9SREVSX0JPVFRPTV9FREdFLAorICAgSU5URVJOQUxfQk9SREVSX0JPVFRP
TV9MRUZUX0NPUk5FUiwKKyAgfTsKKwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogCiBl
bnVtIGZ1bGxzY3JlZW5fdHlwZQpAQCAtNTMsMTkgKzY2LDYgQEAgI2RlZmluZSBFTUFDU19G
UkFNRV9ICiAgIHpfZ3JvdXBfYWJvdmVfc3VzcGVuZGVkLAogfTsKIAotZW51bSBpbnRlcm5h
bF9ib3JkZXJfcGFydAotICB7Ci0gICBJTlRFUk5BTF9CT1JERVJfTk9ORSwKLSAgIElOVEVS
TkFMX0JPUkRFUl9MRUZUX0VER0UsCi0gICBJTlRFUk5BTF9CT1JERVJfVE9QX0xFRlRfQ09S
TkVSLAotICAgSU5URVJOQUxfQk9SREVSX1RPUF9FREdFLAotICAgSU5URVJOQUxfQk9SREVS
X1RPUF9SSUdIVF9DT1JORVIsCi0gICBJTlRFUk5BTF9CT1JERVJfUklHSFRfRURHRSwKLSAg
IElOVEVSTkFMX0JPUkRFUl9CT1RUT01fUklHSFRfQ09STkVSLAotICAgSU5URVJOQUxfQk9S
REVSX0JPVFRPTV9FREdFLAotICAgSU5URVJOQUxfQk9SREVSX0JPVFRPTV9MRUZUX0NPUk5F
UiwKLSAgfTsKLQogI2lmZGVmIE5TX0lNUExfQ09DT0EKIGVudW0gbnNfYXBwZWFyYW5jZV90
eXBlCiAgIHsKQEAgLTE4NzUsNyArMTg3NSw2IEBAICNkZWZpbmUgRU1BQ1NfQ0xBU1MgIkVt
YWNzIgogZXh0ZXJuIHZvaWQgc2V0X2ZyYW1lX21lbnViYXIgKHN0cnVjdCBmcmFtZSAqZiwg
Ym9vbCBkZWVwX3ApOwogZXh0ZXJuIHZvaWQgZnJhbWVfc2V0X21vdXNlX3BpeGVsX3Bvc2l0
aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBwaXhfeCwgaW50IHBpeF95KTsKIGV4dGVybiB2
b2lkIGZyZWVfZnJhbWVfbWVudWJhciAoc3RydWN0IGZyYW1lICopOwotZXh0ZXJuIGVudW0g
aW50ZXJuYWxfYm9yZGVyX3BhcnQgZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQgKHN0cnVj
dCBmcmFtZSAqZiwgaW50IHgsIGludCB5KTsKIAogI2lmIGRlZmluZWQgSEFWRV9YX1dJTkRP
V1MKIGV4dGVybiB2b2lkIHhfd21fc2V0X2ljb25fcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAq
LCBpbnQsIGludCk7CkBAIC0xOTAxLDYgKzE5MDAsOCBAQCBndWlfc2V0X2JpdG1hcF9pY29u
IChzdHJ1Y3QgZnJhbWUgKmYpCiAjZW5kaWYgLyogIUhBVkVfTlMgKi8KICNlbmRpZiAvKiBI
QVZFX1dJTkRPV19TWVNURU0gKi8KIAorZXh0ZXJuIGVudW0gaW50ZXJuYWxfYm9yZGVyX3Bh
cnQgZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQgKHN0cnVjdCBmcmFtZSAqZiwKKwkJCQkJ
CQkgICAgIGludCB4LCBpbnQgeSk7CiBleHRlcm4gYm9vbCBmcmFtZV9hbmNlc3Rvcl9wIChz
dHJ1Y3QgZnJhbWUgKmFmLCBzdHJ1Y3QgZnJhbWUgKmRmKTsKIAogSU5MSU5FIHZvaWQKZGlm
ZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggMmQ4YzQ1
YzA1ZWUuLjIzNDk2OWExNmYwIDEwMDY0NAotLS0gYS9zcmMva2V5Ym9hcmQuYworKysgYi9z
cmMva2V5Ym9hcmQuYwpAQCAtNTU1Miw3ICs1NTUyLDYgQEAgI2RlZmluZSBJU09fRlVOQ1RJ
T05fS0VZX09GRlNFVCAweGZlMDAKICAgU1lNQk9MX0lOREVYIChRcmlnaHRtb3N0KSwgU1lN
Qk9MX0lOREVYIChRZW5kX3Njcm9sbCksIFNZTUJPTF9JTkRFWCAoUXJhdGlvKQogfTsKIAot
I2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogLyogQW4gYXJyYXkgb2Ygc3ltYm9sIGluZGV4
ZXMgb2YgaW50ZXJuYWwgYm9yZGVyIHBhcnRzLCBpbmRleGVkIGJ5IGFuIGVudW0KICAgIGlu
dGVybmFsX2JvcmRlcl9wYXJ0IHZhbHVlLiAgTm90ZSB0aGF0IFFuaWwgY29ycmVzcG9uZHMg
dG8KICAgIGludGVybmFsX2JvcmRlcl9wYXJ0X25vbmUgYW5kIHNob3VsZCBub3QgYXBwZWFy
IGluIExpc3AgZXZlbnRzLiAgKi8KQEAgLTU1NjMsNyArNTU2Miw2IEBAICNkZWZpbmUgSVNP
X0ZVTkNUSU9OX0tFWV9PRkZTRVQgMHhmZTAwCiAgIFNZTUJPTF9JTkRFWCAoUWJvdHRvbV9y
aWdodF9jb3JuZXIpLCBTWU1CT0xfSU5ERVggKFFib3R0b21fZWRnZSksCiAgIFNZTUJPTF9J
TkRFWCAoUWJvdHRvbV9sZWZ0X2Nvcm5lcikKIH07Ci0jZW5kaWYKIAogLyogQSB2ZWN0b3Is
IGluZGV4ZWQgYnkgYnV0dG9uIG51bWJlciwgZ2l2aW5nIHRoZSBkb3duLWdvaW5nIGxvY2F0
aW9uCiAgICBvZiBjdXJyZW50bHkgZGVwcmVzc2VkIGJ1dHRvbnMsIGJvdGggc2Nyb2xsIGJh
ciBhbmQgbm9uLXNjcm9sbCBiYXIuCkBAIC01NTk4LDYgKzU1OTYsOTQgQEAgI2RlZmluZSBJ
U09fRlVOQ1RJT05fS0VZX09GRlNFVCAweGZlMDAKIAogc3RhdGljIGludCBkb3VibGVfY2xp
Y2tfY291bnQ7CiAKK2VudW0gZnJhbWVfYm9yZGVyX3NpZGUKK3sKKyAgT05fTEVGVCwKKyAg
T05fVE9QLAorICBPTl9SSUdIVCwKKyAgT05fQk9UVE9NLAorICBPTl9OT05FCit9OworCisv
KiBIYW5kbGUgbWFrZV9saXNweV9ldmVudCB3aGVuIGEgdHR5IGNoaWxkIGZyYW1lJ3MgZGVj
b3JhdGlvbnMgc2hhbGwgYmUKKyAgIHVzZWQgaW4gbGlldSBvZiBpbnRlcm5hbCBib3JkZXJz
LiAgUiBkZW5vdGVzIHRoZSByb290IGZyYW1lIHVuZGVyCisgICBpbnZlc3RpZ2F0aW9uLCBN
WCBhbmQgTVkgYXJlIHRoZSBwb3NpdGlvbnMgb2YgdGhlIG1vdXNlIHJlbGF0aXZlIHRvCisg
ICBSLiAgV0lORE9XX09SX0ZSQU1FIGRlbm90ZXMgdGhlIGZyYW1lIHByZXZpb3VzbHkgcmVw
b3J0ZWQgYXMgdGhlCisgICBmcmFtZSB1bmRlciAoTVgsIE1ZKS4gIE5vdGU6IFRoZSBkZWNv
cmF0aW9ucyBvZiBhIGNoaWxkIGZyYW1lIGFyZQorICAgYWx3YXlzIGRyYXduIG91dHNpZGUg
dGhlIGNoaWxkIGZyYW1lLCBzbyBXSU5ET1dfT1JfRlJBTUUgaXMgY2VydGFpbmx5CisgICBu
b3QgdGhlIGZyYW1lIHdlIGFyZSBsb29raW5nIGZvci4gIE5laXRoZXIgaXMgUi4gIEEgY2Fu
ZGlkYXRlIGZyYW1lCisgICBpcyBhbnkgZnJhbWUgYnV0IFdJTkRPV19PUl9GUkFNRSBhbmQg
UiB3aG9zZSByb290IGlzIFIsIHdoaWNoIGlzIG5vdAorICAgZGVjb3JhdGVkIGFuZCBoYXMg
YSAnZHJhZy1pbnRlcm5hbC1ib3JkZXInIHBhcmFtZXRlci4gIElmIHdlIGZpbmQgYQorICAg
c3VpdGFibGUgZnJhbWUsIHNldCBXSU5ET1dfT1JfRlJBTUUgdG8gaXQgYW5kIFBPU04gdG8g
dGhlIHBhcnQgb2YgdGhlCisgICBpbnRlcm5hbCBib3JkZXIgY29ycmVzcG9uZGluZyB0byAo
TVgsIE1ZKSBvbiB0aGUgZnJhbWUgZm91bmQuICAqLworCitzdGF0aWMgdm9pZAorbWFrZV9s
aXNweV90dHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqciwgaW50IG14LCBpbnQgbXksCisJ
CQkgTGlzcF9PYmplY3QgKndpbmRvd19vcl9mcmFtZSwgTGlzcF9PYmplY3QgKnBvc24pCit7
CisgIGVudW0gZnJhbWVfYm9yZGVyX3NpZGUgc2lkZSA9IE9OX05PTkU7CisgIC8qIFdJTkRP
V19PUl9GUkFNRSBpcyB0aGUgd2luZG93IHdoZXJlIChNWCwgTVkpIGlzIGxvY2F0ZWQ6IEl0
cyBmcmFtZQorICAgICBOIGlzIGNlcnRhaW5seSBub3QgdGhlIGZyYW1lIHdlIGNhbiBkcmFn
IGJlY2F1c2UgdGhlIHBvc2l0aW9uIGlzCisgICAgIGluc2lkZS4gIEl0IGNhbiBiZSBhbiBh
cmJpdHJhcnkgZnJhbWUgd2hvc2Ugcm9vdCBpcyBSLiAgKi8KKyAgc3RydWN0IGZyYW1lICpu
ID0gV0lORE9XX1hGUkFNRSAoWFdJTkRPVyAoKndpbmRvd19vcl9mcmFtZSkpOworICBzdHJ1
Y3QgZnJhbWUgKmYgPSBOVUxMOworICBMaXNwX09iamVjdCB0YWlsLCBmcmFtZTsKKyAgaW50
IGl4LCBpeSA9IDA7CisKKyAgRk9SX0VBQ0hfRlJBTUUgKHRhaWwsIGZyYW1lKQorICAgIHsK
KyAgICAgIGYgPSBYRlJBTUUgKGZyYW1lKTsKKworICAgICAgaW50IGxlZnQgPSBmLT5sZWZ0
X3BvczsKKyAgICAgIGludCB0b3AgPSBmLT50b3BfcG9zOworICAgICAgaW50IHJpZ2h0ID0g
bGVmdCArIGYtPnBpeGVsX3dpZHRoOworICAgICAgaW50IGJvdHRvbSA9IHRvcCArIGYtPnBp
eGVsX2hlaWdodDsKKworICAgICAgaWYgKHJvb3RfZnJhbWUgKGYpID09IHIgJiYgZiAhPSBu
ICYmIGYgIT0gcgorCSAgJiYgIUZSQU1FX1VOREVDT1JBVEVEIChmKQorCSAgJiYgIU5JTFAg
KGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdfaW50ZXJuYWxfYm9yZGVyKSkpCisJeworCSAg
aWYgKGxlZnQgPT0gbXggKyAxICYmIG15ID49IHRvcCAmJiBteSA8PSBib3R0b20pCisJICAg
IHsKKwkgICAgICBzaWRlID0gT05fTEVGVDsKKwkgICAgICBpeCA9IDA7CisJICAgICAgaXkg
PSBteSAtIHRvcCArIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGVsc2UgaWYgKHJp
Z2h0ID09IG14ICYmIG15ID49IHRvcCAmJiBteSA8PSBib3R0b20pCisJICAgIHsKKwkgICAg
ICBzaWRlID0gT05fUklHSFQ7CisJICAgICAgaXggPSBmLT5waXhlbF93aWR0aCAtIDE7CisJ
ICAgICAgaXkgPSBteSAtIHRvcCArIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGVs
c2UgaWYgKHRvcCA9PSBteSArIDEgJiYgbXggPj0gbGVmdCAmJiBteCA8PSByaWdodCkKKwkg
ICAgeworCSAgICAgIHNpZGUgPSBPTl9UT1A7CisJICAgICAgaXggPSBteCAtIGxlZnQgKyAx
OworCSAgICAgIGl5ID0gMDsKKwkgICAgICBicmVhazsKKwkgICAgfQorCSAgZWxzZSBpZiAo
Ym90dG9tID09IG15ICYmIG14ID49IGxlZnQgJiYgbXggPD0gcmlnaHQpCisJICAgIHsKKwkg
ICAgICBzaWRlID0gT05fQk9UVE9NOworCSAgICAgIGl4ID0gbXggLSBsZWZ0ICsgMTsKKwkg
ICAgICBpeSA9IGYtPnBpeGVsX2hlaWdodCAtIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0K
Kwl9CisgICAgfQorCisgIGlmIChzaWRlICE9IE9OX05PTkUpCisgICAgeworICAgICAgZW51
bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBwYXJ0CisJPSBmcmFtZV9pbnRlcm5hbF9ib3JkZXJf
cGFydCAoZiwgaXgsIGl5KTsKKworICAgICAgWFNFVEZSQU1FICgqd2luZG93X29yX2ZyYW1l
LCBmKTsKKyAgICAgICpwb3NuID0gYnVpbHRpbl9saXNwX3N5bWJvbCAoaW50ZXJuYWxfYm9y
ZGVyX3BhcnRzW3BhcnRdKTsKKyAgICB9Cit9CisKIC8qIFggYW5kIFkgYXJlIGZyYW1lLXJl
bGF0aXZlIGNvb3JkaW5hdGVzIGZvciBhIGNsaWNrIG9yIHdoZWVsIGV2ZW50LgogICAgUmV0
dXJuIGEgTGlzcC1zdHlsZSBldmVudCBsaXN0LiAgKi8KIApAQCAtNTY3Niw3ICs1NzYyLDE0
IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3Qg
eCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHdpbmRvd19vcl9mcmFtZSA9IFFuaWw7CS8qIHNl
ZSBhYm92ZSAqLwogICAgIH0KIAotICBpZiAoV0lORE9XUCAod2luZG93X29yX2ZyYW1lKSkK
KyAgaWYgKFdJTkRPV1AgKHdpbmRvd19vcl9mcmFtZSkgJiYgaXNfdHR5X2ZyYW1lIChmKQor
ICAgICAgJiYgKGlzX3R0eV9yb290X2ZyYW1lX3dpdGhfdmlzaWJsZV9jaGlsZCAoZikKKwkg
IHx8IGlzX3R0eV9jaGlsZF9mcmFtZSAoZikpKQorICAgIG1ha2VfbGlzcHlfdHR5X3Bvc2l0
aW9uIChyb290X2ZyYW1lIChmKSwgbXgsIG15LCAmd2luZG93X29yX2ZyYW1lLCAmcG9zbik7
CisKKyAgaWYgKCFOSUxQIChwb3NuKSkKKyAgICA7CisgIGVsc2UgaWYgKFdJTkRPV1AgKHdp
bmRvd19vcl9mcmFtZSkpCiAgICAgewogICAgICAgLyogSXQncyBhIGNsaWNrIGluIHdpbmRv
dyBXSU5ET1cgYXQgZnJhbWUgY29vcmRpbmF0ZXMgKFgsWSkgICovCiAgICAgICBzdHJ1Y3Qg
d2luZG93ICp3ID0gWFdJTkRPVyAod2luZG93X29yX2ZyYW1lKTsKQEAgLTU4NzksOSArNTk3
Miw3IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmpl
Y3QgeCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHhyZXQgPSBteDsKICAgICAgIHlyZXQgPSBt
eTsKIAotI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQotICAgICAgaWYgKEZSQU1FX1dJTkRP
V19QIChmKQotCSAgJiYgRlJBTUVfTElWRV9QIChmKQorICAgICAgaWYgKEZSQU1FX0xJVkVf
UCAoZikKIAkgICYmIE5JTFAgKHBvc24pCiAJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JERVJf
V0lEVEggKGYpID4gMAogCSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdf
aW50ZXJuYWxfYm9yZGVyKSkpCkBAIC01ODkxLDcgKzU5ODIsNiBAQCBtYWtlX2xpc3B5X3Bv
c2l0aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHks
CiAKIAkgIHBvc24gPSBidWlsdGluX2xpc3Bfc3ltYm9sIChpbnRlcm5hbF9ib3JkZXJfcGFy
dHNbcGFydF0pOwogCX0KLSNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKZGlmZiAtLWdp
dCBhL3NyYy9rZXltYXAuYyBiL3NyYy9rZXltYXAuYwppbmRleCA1NjkxYjM0YzQwZC4uYzk4
YjgzZGI2OGQgMTAwNjQ0Ci0tLSBhL3NyYy9rZXltYXAuYworKysgYi9zcmMva2V5bWFwLmMK
QEAgLTE2NTIsNyArMTY1Miw4IEBAIERFRlVOICgiY3VycmVudC1hY3RpdmUtbWFwcyIsIEZj
dXJyZW50X2FjdGl2ZV9tYXBzLCBTY3VycmVudF9hY3RpdmVfbWFwcywKICAgICAgICBkb2M6
IC8qIFJldHVybiBhIGxpc3Qgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5bWFwcy4KIE9M
UCBpZiBub24tbmlsIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBvYmV5IGBvdmVycmlkaW5n
LWxvY2FsLW1hcCcgYW5kCiBgb3ZlcnJpZGluZy10ZXJtaW5hbC1sb2NhbC1tYXAnLiAgUE9T
SVRJT04gY2FuIHNwZWNpZnkgYSBjbGljayBwb3NpdGlvbgotbGlrZSBpbiB0aGUgcmVzcGVj
dGl2ZSBhcmd1bWVudCBvZiBga2V5LWJpbmRpbmcnLiAgKi8pCitsaWtlIGluIHRoZSByZXNw
ZWN0aXZlIGFyZ3VtZW50IG9mIGBrZXktYmluZGluZycgb3IgYSBsaXZlIHdpbmRvdyB3aGlj
aAorbWVhbnMgdG8gcmV0dXJuIHRoZSBhY3RpdmUgbWFwcyBmb3IgdGhhdCB3aW5kb3cncyBi
dWZmZXIuICAqLykKICAgKExpc3BfT2JqZWN0IG9scCwgTGlzcF9PYmplY3QgcG9zaXRpb24p
CiB7CiAgIHNwZWNwZGxfcmVmIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKQEAgLTE2ODIs
NiArMTY4MywxNiBAQCBERUZVTiAoImN1cnJlbnQtYWN0aXZlLW1hcHMiLCBGY3VycmVudF9h
Y3RpdmVfbWFwcywgU2N1cnJlbnRfYWN0aXZlX21hcHMsCiAJICBzZXRfYnVmZmVyX2ludGVy
bmFsIChYQlVGRkVSIChYV0lORE9XICh3aW5kb3cpLT5jb250ZW50cykpOwogCX0KICAgICB9
CisgIGVsc2UgaWYgKFdJTkRPV19MSVZFX1AgKHBvc2l0aW9uKSkKKyAgICB7CisgICAgICBp
ZiAoQlVGRkVSUCAoWFdJTkRPVyAocG9zaXRpb24pLT5jb250ZW50cykKKwkgICYmIFhCVUZG
RVIgKFhXSU5ET1cgKHBvc2l0aW9uKS0+Y29udGVudHMpICE9IGN1cnJlbnRfYnVmZmVyKQor
CXsKKwkgIC8qIFNlZSBjb21tZW50IGFib3ZlLiAgKi8KKwkgIHJlY29yZF91bndpbmRfY3Vy
cmVudF9idWZmZXIgKCk7CisJICBzZXRfYnVmZmVyX2ludGVybmFsIChYQlVGRkVSIChYV0lO
RE9XIChwb3NpdGlvbiktPmNvbnRlbnRzKSk7CisJfQorICAgIH0KIAogICBpZiAoIU5JTFAg
KG9scCkKICAgICAgIC8qIFRoZSBkb2Mgc2FpZCB0aGF0IG92ZXJyaWRpbmctdGVybWluYWwt
bG9jYWwtbWFwIHNob3VsZApkaWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMK
aW5kZXggZjMwN2Q3MDkzMTYuLmNmNDhmYTVhNzM0IDEwMDY0NAotLS0gYS9zcmMvdGVybS5j
CisrKyBiL3NyYy90ZXJtLmMKQEAgLTI2MjAsNyArMjYyMCw3IEBAIHR0eV9mcmFtZV9hdCAo
aW50IHgsIGludCB5LCBpbnQgKmN4LCBpbnQgKmN5KQogfQogCiBERUZVTiAoInR0eS1mcmFt
ZS1hdCIsIEZ0dHlfZnJhbWVfYXQsIFN0dHlfZnJhbWVfYXQsIDIsIDIsIDAsCi0gICAgICAg
ZG9jIDogLyogUmV0dXJuIHR0eSBmcmFtZSBjb250YWluaW5nIGFic29sdXRlIHBpeGVsIHBv
c2l0aW9uIChYLCBZKS4KKyAgICAgICBkb2M6IC8qIFJldHVybiB0dHkgZnJhbWUgY29udGFp
bmluZyBhYnNvbHV0ZSBwaXhlbCBwb3NpdGlvbiAoWCwgWSkuCiBWYWx1ZSBpcyBuaWwgaWYg
bm8gZnJhbWUgZm91bmQuICBPdGhlcndpc2UgaXQgaXMgYSBsaXN0IChGUkFNRSBDWCBDWSks
CiB3aGVyZSBGUkFNRSBpcyB0aGUgZnJhbWUgY29udGFpbmluZyAoWCwgWSkgYW5kIENYIGFu
ZCBDWSBhcmUgWCBhbmQgWQogcmVsYXRpdmUgdG8gRlJBTUUuICAqLykKZGlmZiAtLWdpdCBh
L3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggMzZlODJmODczYWIuLjdkNTEzMTJm
NWM3IDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMTE0
Nyw3ICsxMTQ3LDcgQEAgI2RlZmluZSBUSElOX1NQQUNFX1dJRFRIIDEKIAkJCQkgc3RydWN0
IGdseXBoX21hdHJpeCAqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwKIAkJCQkgaW50LCBpbnQp
Owogc3RhdGljIGJvb2wgY3Vyc29yX3Jvd19mdWxseV92aXNpYmxlX3AgKHN0cnVjdCB3aW5k
b3cgKiwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1zdGF0aWMgYm9vbCB1cGRhdGVfbWVudV9iYXIg
KHN0cnVjdCBmcmFtZSAqLCBib29sLCBib29sKTsKK3N0YXRpYyBib29sIHVwZGF0ZV9tZW51
X2JhciAoc3RydWN0IGZyYW1lICosIGJvb2wsIGJvb2wsIHN0cnVjdCB3aW5kb3cgKik7CiBz
dGF0aWMgYm9vbCB0cnlfd2luZG93X3JldXNpbmdfY3VycmVudF9tYXRyaXggKHN0cnVjdCB3
aW5kb3cgKik7CiBzdGF0aWMgaW50IHRyeV93aW5kb3dfaWQgKHN0cnVjdCB3aW5kb3cgKik7
CiBzdGF0aWMgdm9pZCBtYXliZV9wcm9kdWNlX2xpbmVfbnVtYmVyIChzdHJ1Y3QgaXQgKik7
CkBAIC0xNDA2MiwxMyArMTQwNjIsMzIgQEAgcHJlcGFyZV9tZW51X2JhcnMgKHZvaWQpCiAg
ICAgICAvKiBUcnVlIG1lYW5zIHRoYXQgdXBkYXRlX21lbnVfYmFyIGhhcyBydW4gaXRzIGhv
b2tzCiAJIHNvIGFueSBmdXJ0aGVyIGNhbGxzIHRvIHVwZGF0ZV9tZW51X2JhciBzaG91bGRu
J3QgZG8gc28gYWdhaW4uICAqLwogICAgICAgYm9vbCBtZW51X2Jhcl9ob29rc19ydW4gPSBm
YWxzZTsKKyAgICAgIHN0cnVjdCB3aW5kb3cgKnN3ID0gWFdJTkRPVyAoc2VsZWN0ZWRfd2lu
ZG93KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqc2YgPSBXSU5ET1dfWEZSQU1FIChzdyk7Cisg
ICAgICBzdHJ1Y3QgZnJhbWUgKnJmID0gTlVMTDsKKworICAgICAgaWYgKEZSQU1FX1BBUkVO
VF9GUkFNRSAoc2YpICYmICFGUkFNRV9XSU5ET1dfUCAoc2YpCisJICAmJiBGUkFNRV9NRU5V
X0JBUl9MSU5FUyAoc2YpID09IDAKKwkgICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChyZiA9
IHJvb3RfZnJhbWUgKHNmKSkgIT0gMAorCSAgJiYgTklMUCAoRmRlZmF1bHRfdmFsdWUgKFF0
dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKwkvKiBJZiB0aGUgc2VsZWN0ZWQgd2luZG93J3Mg
ZnJhbWUgaXMgYSB0dHkgY2hpbGQgZnJhbWUgd2l0aG91dAorCSAgIG1lbnUgYmFyLCB0aGF0
IGZyYW1lJ3Mgcm9vdCBmcmFtZSBoYXMgYSBtZW51IGJhciBhbmQKKwkgICAndHR5LW1lbnUt
b3Blbi11c2UtdG1tJyBpcyBuaWwsIHVwZGF0ZSB0aGUgbWVudSBiYXIgb2YgdGhlCisJICAg
cm9vdCBmcmFtZSBmcm9tIHRoZSBzZWxlY3RlZCB3aW5kb3cuICAqLworCXNmID0gcmY7Cisg
ICAgICBlbHNlCisJeworCSAgc2YgPSBOVUxMOworCSAgc3cgPSBOVUxMOworCX0KIAogICAg
ICAgcmVjb3JkX3Vud2luZF9zYXZlX21hdGNoX2RhdGEgKCk7CiAKICAgICAgIEZPUl9FQUNI
X0ZSQU1FICh0YWlsLCBmcmFtZSkKIAl7CiAJICBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUg
KGZyYW1lKTsKLQkgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XIChGUkFNRV9TRUxFQ1RF
RF9XSU5ET1cgKGYpKTsKKwkgIHN0cnVjdCB3aW5kb3cgKncKKwkgICAgPSBzZiA9PSBmID8g
c3cgOiBYV0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpKTsKIAogCSAgLyogSWdu
b3JlIHRvb2x0aXAgZnJhbWUuICAqLwogCSAgaWYgKEZSQU1FX1RPT0xUSVBfUCAoZikpCkBA
IC0xNDA4MCw4ICsxNDA5OSw4IEBAIHByZXBhcmVfbWVudV9iYXJzICh2b2lkKQogCSAgICAg
ICYmICFYQlVGRkVSICh3LT5jb250ZW50cyktPnRleHQtPnJlZGlzcGxheSkKIAkgICAgY29u
dGludWU7CiAKLQkgIGlmICghRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKLQkgICAgbWVudV9i
YXJfaG9va3NfcnVuID0gdXBkYXRlX21lbnVfYmFyIChmLCBmYWxzZSwgbWVudV9iYXJfaG9v
a3NfcnVuKTsKKwkgIG1lbnVfYmFyX2hvb2tzX3J1bgorCSAgICA9IHVwZGF0ZV9tZW51X2Jh
ciAoZiwgZmFsc2UsIG1lbnVfYmFyX2hvb2tzX3J1biwgdyk7CiAKIAkgIHVwZGF0ZV90YWJf
YmFyIChmLCBmYWxzZSk7CiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCkBAIC0xNDA5Mywx
MCArMTQxMTIsMjEgQEAgcHJlcGFyZV9tZW51X2JhcnMgKHZvaWQpCiAgICAgfQogICBlbHNl
CiAgICAgewotICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOwor
ICAgICAgc3RydWN0IHdpbmRvdyAqc3cgPSBYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpOwor
ICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFdJTkRPV19YRlJBTUUgKHN3KTsKKyAgICAgIHN0
cnVjdCBmcmFtZSAqcmYgPSBOVUxMOwogCi0gICAgICBpZiAoIUZSQU1FX1BBUkVOVF9GUkFN
RSAoc2YpKQotCXVwZGF0ZV9tZW51X2JhciAoc2YsIHRydWUsIGZhbHNlKTsKKyAgICAgIGlm
IChGUkFNRV9QQVJFTlRfRlJBTUUgKHNmKSAmJiAhRlJBTUVfV0lORE9XX1AgKHNmKQorCSAg
JiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKHNmKSA9PSAwCisJICAmJiBGUkFNRV9NRU5VX0JB
Ul9MSU5FUyAocmYgPSByb290X2ZyYW1lIChzZikpICE9IDAKKwkgICYmIE5JTFAgKEZkZWZh
dWx0X3ZhbHVlIChRdHR5X21lbnVfb3Blbl91c2VfdG1tKSkpCisJLyogSWYgdGhlIHNlbGVj
dGVkIHdpbmRvdydzIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQKKwkgICBt
ZW51IGJhciwgdGhhdCBmcmFtZSdzIHJvb3QgZnJhbWUgaGFzIGEgbWVudSBiYXIgYW5kCisJ
ICAgJ3R0eS1tZW51LW9wZW4tdXNlLXRtbScgaXMgbmlsLCB1cGRhdGUgdGhlIG1lbnUgYmFy
IG9mIHRoZQorCSAgIHJvb3QgZnJhbWUgZnJvbSB0aGUgc2VsZWN0ZWQgd2luZG93LiAgKi8K
KwlzZiA9IHJmOworCisgICAgICB1cGRhdGVfbWVudV9iYXIgKHNmLCB0cnVlLCBmYWxzZSwg
c3cpOwogCiAgICAgICB1cGRhdGVfdGFiX2JhciAoc2YsIHRydWUpOwogI2lmZGVmIEhBVkVf
V0lORE9XX1NZU1RFTQpAQCAtMTQxMTgsMjAgKzE0MTQ4LDE0IEBAIHByZXBhcmVfbWVudV9i
YXJzICh2b2lkKQogICAgdXBkYXRlZCB2YWx1ZSBvZiB0aGlzIGZsYWcsIHRvIHBhc3MgdG8g
dGhlIG5leHQgY2FsbC4gICovCiAKIHN0YXRpYyBib29sCi11cGRhdGVfbWVudV9iYXIgKHN0
cnVjdCBmcmFtZSAqZiwgYm9vbCBzYXZlX21hdGNoX2RhdGEsIGJvb2wgaG9va3NfcnVuKQor
dXBkYXRlX21lbnVfYmFyIChzdHJ1Y3QgZnJhbWUgKmYsIGJvb2wgc2F2ZV9tYXRjaF9kYXRh
LCBib29sIGhvb2tzX3J1biwgc3RydWN0IHdpbmRvdyAqdykKIHsKLSAgTGlzcF9PYmplY3Qg
d2luZG93OwotICBzdHJ1Y3Qgd2luZG93ICp3OwotCiAgIC8qIElmIGNhbGxlZCByZWN1cnNp
dmVseSBkdXJpbmcgYSBtZW51IHVwZGF0ZSwgZG8gbm90aGluZy4gIFRoaXMgY2FuCiAgICAg
IGhhcHBlbiB3aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGFjdGl2YXRlLW1lbnViYXItaG9vayBj
YXVzZXMgYQogICAgICByZWRpc3BsYXkuICAqLwogICBpZiAoaW5oaWJpdF9tZW51YmFyX3Vw
ZGF0ZSkKICAgICByZXR1cm4gaG9va3NfcnVuOwogCi0gIHdpbmRvdyA9IEZSQU1FX1NFTEVD
VEVEX1dJTkRPVyAoZik7Ci0gIHcgPSBYV0lORE9XICh3aW5kb3cpOwotCiAgIGlmIChGUkFN
RV9XSU5ET1dfUCAoZikKICAgICAgID8KICNpZmRlZiBIQVZFX0VYVF9NRU5VX0JBUgpAQCAt
MjEwODgsMjQgKzIxMTEyLDMzIEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdp
bmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAKICAgLyogV2hlbiB3ZSByZWFjaCBhIGZy
YW1lJ3Mgc2VsZWN0ZWQgd2luZG93LCByZWRvIHRoZSBmcmFtZSdzIG1lbnUKICAgICAgYmFy
LCB0b29sIGJhciwgdGFiLWJhciwgYW5kIHRoZSBmcmFtZSdzIHRpdGxlLiAgKi8KLSAgaWYg
KHVwZGF0ZV9tb2RlX2xpbmUKLSAgICAgICYmIEVRIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cg
KGYpLCB3aW5kb3cpKQorICBpZiAodXBkYXRlX21vZGVfbGluZSAmJiBFUSAoRlJBTUVfU0VM
RUNURURfV0lORE9XIChmKSwgd2luZG93KSkKICAgICB7Ci0gICAgICBib29sIHJlZGlzcGxh
eV9tZW51X3A7Ci0KICAgICAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikpCiAJewogI2lmZGVm
IEhBVkVfRVhUX01FTlVfQkFSCi0JICByZWRpc3BsYXlfbWVudV9wID0gRlJBTUVfRVhURVJO
QUxfTUVOVV9CQVIgKGYpOworCSAgaWYgKEZSQU1FX0VYVEVSTkFMX01FTlVfQkFSIChmKSkK
KwkgICAgZGlzcGxheV9tZW51X2JhciAodyk7CiAjZWxzZQotCSAgcmVkaXNwbGF5X21lbnVf
cCA9IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDA7CisJICBpZiAoRlJBTUVfTUVOVV9C
QVJfTElORVMgKGYpID4gMCkKKwkgICAgZGlzcGxheV9tZW51X2JhciAodyk7CiAjZW5kaWYK
IAl9CiAgICAgICBlbHNlCi0gICAgICAgIHJlZGlzcGxheV9tZW51X3AgPSBGUkFNRV9NRU5V
X0JBUl9MSU5FUyAoZikgPiAwOworCXsKKwkgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOwog
Ci0gICAgICBpZiAocmVkaXNwbGF5X21lbnVfcCkKLSAgICAgICAgZGlzcGxheV9tZW51X2Jh
ciAodyk7CisJICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChmKQorCSAgICAgICYmIEZSQU1F
X01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisJICAgICAgJiYgRlJBTUVfTUVOVV9CQVJfTElO
RVMgKHJmID0gcm9vdF9mcmFtZSAoZikpICE9IDAKKwkgICAgICAmJiBOSUxQIChGZGVmYXVs
dF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkpKQorCSAgICAvKiBJZiBGIGlzIGEg
dHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgbWVudSBiYXIsIHRoYXQgZnJhbWUncyByb290CisJ
ICAgICAgIGZyYW1lIGhhcyBhIG1lbnUgYmFyIGFuZCAndHR5LW1lbnUtb3Blbi11c2UtdG1t
JyBpcyBuaWwsCisJICAgICAgIGRpc3BsYXkgdGhlIG1lbnUgYmFyIG9mIHRoZSByb290IGZy
YW1lJ3Mgc2VsZWN0ZWQgd2luZG93LiAgKi8KKwkgICAgZGlzcGxheV9tZW51X2JhciAoWFdJ
TkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChyZikpKTsKKwkgIGVsc2UgaWYgKEZSQU1F
X01FTlVfQkFSX0xJTkVTIChmKSA+IDApCisJICAgIGRpc3BsYXlfbWVudV9iYXIgKHcpOwor
CX0KIAogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogICAgICAgaWYgKEZSQU1FX1dJTkRP
V19QIChmKSkKQEAgLTI3MzQ3LDEwICsyNzM4MCwxOSBAQCBkaXNwbGF5X3R0eV9tZW51X2l0
ZW0gKGNvbnN0IGNoYXIgKml0ZW1fdGV4dCwgaW50IHdpZHRoLCBpbnQgZmFjZV9pZCwKIHsK
ICAgc3RydWN0IGl0IGl0OwogICBzdHJ1Y3QgZnJhbWUgKmYgPSBTRUxFQ1RFRF9GUkFNRSAo
KTsKLSAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKGYtPnNlbGVjdGVkX3dpbmRvdyk7
CiAgIHN0cnVjdCBnbHlwaF9yb3cgKnJvdzsKICAgc2l6ZV90IGl0ZW1fbGVuID0gc3RybGVu
IChpdGVtX3RleHQpOwogCisgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOworCisgIGlmIChG
UkFNRV9QQVJFTlRfRlJBTUUgKGYpICYmICFGUkFNRV9XSU5ET1dfUCAoZikKKyAgICAgICYm
IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisgICAgICAmJiBGUkFNRV9NRU5VX0JB
Ul9MSU5FUyAocmYgPSByb290X2ZyYW1lIChmKSkgIT0gMAorICAgICAgJiYgTklMUCAoRmRl
ZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKyAgICBmID0gcmY7CisK
KyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKGYtPnNlbGVjdGVkX3dpbmRvdyk7CisK
ICAgZWFzc2VydCAoRlJBTUVfVEVSTUNBUF9QIChmKSk7CiAKICAgLyogRG9uJ3Qgd3JpdGUg
YmV5b25kIHRoZSBtYXRyaXgncyBsYXN0IHJvdy4gIFRoaXMgY2FuIGhhcHBlbiBmb3IKQEAg
LTM4NDY2LDYgKzM4NTA4LDcgQEAgc3ltc19vZl94ZGlzcCAodm9pZCkKICAgREVGU1lNIChR
bmhkcmFnLCAibmhkcmFnIik7CiAgIERFRlNZTSAoUXZkcmFnLCAidmRyYWciKTsKICAgREVG
U1lNIChRaG91cmdsYXNzLCAiaG91cmdsYXNzIik7CisgIERFRlNZTSAoUXR0eV9tZW51X29w
ZW5fdXNlX3RtbSwgInR0eS1tZW51LW9wZW4tdXNlLXRtbSIpOwogfQogCiAK
--------------OonywoDpVCk8BD8QQlfCUFVy--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 16:13:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 11:13:20 2025
Received: from localhost ([127.0.0.1]:35936 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tecb1-0006FA-Qt
for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 11:13:20 -0500
Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]:47150)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tecay-0006Eu-Ry
for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 11:13:17 -0500
Received: by mail-ej1-x62d.google.com with SMTP id
a640c23a62f3a-aaeec07b705so578142366b.2
for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 08:13:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738512790; x=1739117590; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=g8XVo99/06dSvX/41vne722OBTTniXuN+35jXCHly7w=;
b=DpImTL0ynPYT9O5hGRLL4hy4QNeIR6hsXx/d0DTKjo8Zs0WgLOxet7xwMsHV7Dc/cc
Opf7qEuSlvNKhh5R9saMtj9FB8WQz3pgmx0cQb7Xo04pvR9yv0MTD+Zp0BBmcWrLZbRb
m0ZJV5zjYrnopNHAYKak7SWv3rZczTBJzLt0lod/zsUotTOSTP4chZjkqzqC5HRYJPxe
MnbiNAkQJUgTAl+xjvTdYJeI4w/x4McEIfFJw8CDSGTPuwHaHfibuJSpEskW0GKFQnYx
/IqdgFmhlfAhjVPmoh8cuP8lin7Oo8KMBBlw46XgAB7q35weAVybdLT6S13gGsn6BFfQ
ydJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738512790; x=1739117590;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=g8XVo99/06dSvX/41vne722OBTTniXuN+35jXCHly7w=;
b=QL1MDzo6EyXPK3j1QHVCJYybcZF7PQL/OIsoUJuBmyDHRr+GXO/hKHML65TgXabU8e
5ab/+j8iUwWmFHBwIS6WiCgFbF+0IphIgRJB0V2AZj6NnNcUVwffMC/uoV3VFm2KYUSS
LZvWngsqT7oqL9wouKf+LMsul2hy1wRWJHFf+pD/e5IbhqkE1D0zFFXzJmwvkGv/RGd4
+Ke9SEw6vDBtvncj6fJ/8fLZm5MC3zTwZKB2c4tcRqr1Kh//kZGXn+fGrVu/lskHl2rG
+96+YQw3pZcEGpmQJimliDv+JnAN9OGnWLVLkzF58Le1u98iMgs/vLcuNOcoPwnOSqQY
aNaQ==
X-Forwarded-Encrypted: i=1;
AJvYcCVkoPsqOVH0JKwpuATqxvnUCJ4zGpx/q7wPV8zZGnKv/WJTNPlmhAKQkXs9QkPIx4dwgEeBWw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YynT9HxORp7xtmDfdwhw4VolcPTCnTS/NdDCWUwfegLtgAJpy/8
gyj/VyazeyLjMiEbIrSmnbeLOfhli3W9YlNuUuNZ2fUPHzYud3yv1fopGg==
X-Gm-Gg: ASbGnctrc4HKE7f0sWcJ8AHn0GkGNJjvO77pRcGSwRGBtUbD5yRlSsIiCVnEz19zZ8C
hRzygzgVgSj2ID6T9kaCnSecKWtmzLDR8w5Af/DM2Lq/ajtIGxxZVonoTJzaeU1wVlG0Wce053O
gQkjVwbi5v3t071OGLMK+th1JIvzRMagH+QHv5YcxyaQ5paHSQ+HHxjfTihOvBy5A0STrW5aFqn
VlRmJdgvmnQT3weiJQhpz1UXsflmJg9SpUkyp4ozyJ67SbKpXgbJq0rfWJpS6SdZpCpvCMkFLUj
RCzLGgEUjsPDY9MOsv3Ob7A4xtSBcXfmRtVaweJvgAfnvYuvYcdOMLtDrvYG/qmeQHomk90quoX
9SXigaf7FnwwaYm/fMpVmqOmD
X-Google-Smtp-Source: AGHT+IGuFRTB4o8W/dl82yhWJReiAp5ktxbq+N3yWCIL9AslK+yP2P7RD2ofpGZcpba9mkUiaduNLw==
X-Received: by 2002:a17:906:730a:b0:ab3:a4f6:7549 with SMTP id
a640c23a62f3a-ab6cfdbdcd9mr2210162066b.45.1738512790279;
Sun, 02 Feb 2025 08:13:10 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
[2003:e0:b71e:2e00:b17d:1337:b17d:e790])
by smtp.gmail.com with ESMTPSA id
4fb4d7f45d1cf-5dc723efc45sm5983487a12.32.2025.02.02.08.13.09
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 02 Feb 2025 08:13:09 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN> (martin rudalics's
message of "Sun, 2 Feb 2025 10:43:41 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m2tt9dkl7x.fsf@HIDDEN>
<e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
<m2jza8vh0y.fsf@HIDDEN>
<5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN>
Date: Sun, 02 Feb 2025 17:13:09 +0100
Message-ID: <m2ikpss4tm.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
> The "All" on the mode line has the final "l" never covered, not even on
> GUI frames.
For the "All" not being displayed correctly I've submitted bug#76014.
Seems to be broken in master for a longer time, and before tty child
frames. Maybe the bug rings a bell for someone.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 10:08:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 05:08:21 2025
Received: from localhost ([127.0.0.1]:33204 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1teWto-0002MH-VI
for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 05:08:21 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:61942)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1teWtn-0002Lz-0w
for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 05:08:19 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
5b1f17b1804b1-4368a293339so40133625e9.3
for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 02:08:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738490892; x=1739095692; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=mwXMZQeVFx58sBK6jeTr6xdHZjo4SuyfO7fiZmskiqs=;
b=flLQHlNcsqKmZZUVa3rWdFs1raRrADfeFYzjGhX5A4iMkIJDhIjfz+Otqw+DM5UjJb
S7VuoWqtiFl3Xs4vmS/h4W27bhqI7smEVKX/N8sXgA9FRTqhdGc5Xs9uJPI2P/Y/DHEO
1RRx4xQD+of8w3BHtFxZ0Nx40mXyjQ/tprQna+6RdczuUrpoH3sAQz+yS7izOQnYChYw
j/fdD/VJknW+6yKrtjgZSdppjO32fU4zpuPWWdlEWdjJhhFyz7KDpz4o+ZA8xK/13IxS
FaQT3AoCtnlUZfn85eOcQ9xyJtehmKUrHC5LxmIx6q+3igH/dyspaD+WYKyqr94GTf87
8+Dw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738490892; x=1739095692;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=mwXMZQeVFx58sBK6jeTr6xdHZjo4SuyfO7fiZmskiqs=;
b=mgWXCJVPE1SFnItIZq9GZa5jhNtAqHSX+qs0nblpQ6WlWUJM/n1MRfQGzJMtdfg5cM
I5CpxK/vL0Me38j5hWu10bNSDA7u7d/HCms9MOVT/UppMVRLEwGIWVfBk9wYcCG0UWJL
xcQBBWxVYxM/dWPBoIUeMAkWBZaDyMuPHm8lP4I9pfVAZarjUXGhZ0oQhte1prnivTyL
+g8sHCJ2rzrhjv7qh13KnNJa5YcEIVsKAuPVn3MPFAFW2K+pm75nJ4kdch7HEzp/Qapd
5bZ3yvT9inUjCcBCE09WgVXUCdJYwztsFuwp43gEobdcBxPeeMQ8oudCUK6blD3m1pEw
dW7A==
X-Forwarded-Encrypted: i=1;
AJvYcCV51EdLY2zGdDaAJZmI4DXIc1mnNEvLsyNTBE1tPWjVDRWJnuZcdm1CqSMiO/pmvEIPTExlFA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxgiYMaVctz7pQrQAki/h2A9VMpoQQpKc+S/0togRD/wltJSi6M
EtvaJ1V2yWiRyZ2RMljjzIq6uyZV8rjhA6Wg1i5OcA6Sytdu7EuH28D8tw==
X-Gm-Gg: ASbGnct9fX4imRqzs36n1syrkxqexpFvCxwQSv8gnBcvBfjBKSMN03XMZI6lwBUEveQ
DTMziiWJaB9GRb9yOEZmEYzxsOYG7Y8exiHsuyY/4GGteNrXXsnbVyN2TnFnRdyYf0GEv34wBEG
ZnKKmbF0IbO1XhnmLxnHBdye0xOByfaicFX0hzFcO6b2Y8gc96ehgLpHvCR+9ORMnp2FTkEmO6x
kCeJLrrfTBO1W/20VSen1q+t+wC/hZ5du7wc6jaOmM0wv4uM4BjbqLDPc6FfSNiOh5ltwwEMRQ4
Kqy7GBLluZi4Es+zgXphFtApYUahbTcIYD/e2Zi8XRQ9fSuR8ia5sjf509kZDvTdeOkJTKH1tH7
gZ+pGWc5HJYN12z+vP2k92CWv
X-Google-Smtp-Source: AGHT+IEgvB2JDpv1HR6u+Dr5F+bgHmIZxEfq9BONXBvUYh/vE4MmO2yLrz/ypsu7qFi84+mSnNwGPQ==
X-Received: by 2002:a5d:5989:0:b0:38c:2745:2dd8 with SMTP id
ffacd0b85a97d-38c51e8e124mr13973824f8f.37.1738490892347;
Sun, 02 Feb 2025 02:08:12 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
[2003:e0:b71e:2e00:b17d:1337:b17d:e790])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-38c5c1cf53asm9386722f8f.87.2025.02.02.02.08.10
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 02 Feb 2025 02:08:11 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN> (martin rudalics's
message of "Sun, 2 Feb 2025 10:43:41 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m2tt9dkl7x.fsf@HIDDEN>
<e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
<m2jza8vh0y.fsf@HIDDEN>
<5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN>
Date: Sun, 02 Feb 2025 11:08:10 +0100
Message-ID: <m2bjvkveut.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> Okay, pretty strange, I don't have an idea what that could be yet.
>> I could reproduce it once here, though.
>
> I was able to reproduce it once here only. It might be connected to
> mouse hovering.
That was a good clue, it's mouse-highlighting! Move the top-most child
frame so that it obscures a part of the mode-line of the other child
that has mouse-face, then move the mouse into that mode-line part.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 09:43:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 04:43:57 2025
Received: from localhost ([127.0.0.1]:33151 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1teWWD-0006bl-2M
for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:43:57 -0500
Received: from mout.gmx.net ([212.227.15.15]:39893)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1teWWA-0006bU-Da
for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:43:55 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738489427; x=1739094227; i=rudalics@HIDDEN;
bh=VT58xpWXhmIHKmoTdRdrFPg2i/IMrCE65DomY0F5h1E=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=sKcf+app6XrmEbVGurqaPWWERVp471DUnqhwl2e6FUPHOSU31t5CZTawIacEmpOb
0ItwFymSGXAQWaGAgbH7mZ9vF4vpybEFDTYLS6/GeGqsWKi4mrd1C+7mcKJ58N5/b
Dty6fChF/RXhVgssiZjTI9Y24FM6Sd9fHP797koz9djDmnD/EPHo6h6p/VWRcZbVW
5ci+E9tSmP3au8Lh/Akpf26KJhxbaTRE5BqYbeJGxh4qOw6LnVdmNhUH3Uv5BWdtS
jW1F0fI6sGkcgXYTqi9UudTygGPxwoPANnFOimN98VtxwjuxsKX+YO5h2K26ezyWy
Myd+7S875ANc5QO+8g==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.190]) by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1M6Db0-1tXtk30K3E-00BiAz; Sun, 02
Feb 2025 10:43:47 +0100
Message-ID: <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN>
Date: Sun, 2 Feb 2025 10:43:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2tt9dkl7x.fsf@HIDDEN>
<e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> <m2jza8vh0y.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2jza8vh0y.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:YwbKP1hWBp9jeitWpdmUfa+DG0VqOB5n+e6Ec9XEcgTELDgOF+S
YLD1Yw6QqteKr6hrYO6fVNpFzCSu+IMDVCzD4A3RSPA5DyGKKMJQefISmdyFoXvz21mnGkA
3wImHQaxYylL4/EeYo+tPoIZWxuOSlT45EIfGPkYtFM49fkjFdt4PU2dgPDfN8xwiVUOBrq
YPBzwpRpTfaCc5iVRuScg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:yS5knWy/bSg=;wn+9kiac3G9B7lsjAbQ2vN6wcwE
JrqX4tuK8+H0lnKhA75x+ofdLT8+JSgQ+/JmpT/gdfNH5vMNve5HbyS2YG6eHyglAxedS79s9
tjaRWqzmS8iKj7PAJa/Yhj+XNrtFXcQqGxbbWekqMm1JpvRkD27tW9c9Zvdw2mp0Oi3/vNzrI
Zt5yri2MUDjs12amhiQjqhVohX9f23wyyfuPYPcAx9UVxUxHzCHLtvjEImSN4fM7SgVdl+sZT
XTCIrCLWMma73ISoWJ5NIXbKrJRt4aWKkTjwMHUkiuG00KrN08DyI/8ycK0RcJi0qvOGRMKQQ
ImBQX22iHNqf77yn+2hkEvBayhd1tCQx8R+N25/3LJJBnpgFM3ns/7DB0fCAgquQe75FeyaJQ
MjhNM+/tVSbRg6vbY8ilAsazgIqfvulRIU49NK/nSVpKnNbXE57awAR92s8hs2iEBFHOvXhlK
RNH8O0DIIWYwkeW2fSe4g0jfMHio7Dq8Cvztp/w7jIZ8vBA6hEaB02SEwHkETxoyMD/e4+mF2
RNkSOdtwTbPWy4ATPqNvvqTz4tkFBGJC6a4z6rv26o3iD5cLN0DDyT4Mmyn3zd/9Ui3KpJKlz
n+Y99PEYk4UKW2CrROAoxakTO4yy6ndhF+s1ZwiwiL8jft6siL250juIy6HdmivPFeJPAqlBP
QK/1tEyZDxX6BeF0TOmLusXCQqQyVnhoaPUG6NylQuMQGGltWeykEbNPMqWoeKfkGgkeVp+9/
XHzb0mQNUqXRIOmzJHY5qLs63qNrn9A30dSIdiR7vvp8F/tVwkpChch9w/yCK3C3p5mTDaawy
SmPgN31XzpUHn1Z+RDrmxd0D5d7sRhdaDFuw9mGKeZaXqXNGZPkaI+NME8qaEky5nLUCy/eZl
qj7PgmqNpNmEQbF7kfhcT68NGlNmwybauSaig+0IJVWaB3A6KzpMt1UnFA9vnvZ8VJAs2/6m+
5J6kRLxDoOYBeNtLnVSafg4qWDdqWKIBDqEbdF337NpVJj1KJx75fJbXIregtliatpt3suZEi
O796B/JfA35GWiEGYKbdNVlOi7PYX/Zn9lp5QJkT8BZuxlOofbgsl3HoZ2SPp/diZ6/6rnun5
AXZt4GIGU2CyI79aaXtaafBp3Pyjx9RwgMleinA0DYcTr+7U5w4If3/K30R+Fhm3TgNncOEMN
axyYEkGrl6EXeJJ8OD3EaDazAgndy1M5NUOuGqHPiY4SSEYUrvLoN7SlqnAhANSSMx821R3YG
Bm0mf+CEC313CaKspNS3RaP5C1dUW+nHxARJy9nV/xe8FAlqcrLFvIfB4f1B3SZQ7bNyBPZfk
WFYVZ8LhoyBG3z7kIj4nYuDzJ+PXVx6nnAy7PZjYzaMdfM=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
ID4gT2theSwgcHJldHR5IHN0cmFuZ2UsIEkgZG9uJ3QgaGF2ZSBhbiBpZGVhIHdoYXQgdGhh
dCBjb3VsZCBiZSB5ZXQuDQogPiBJIGNvdWxkIHJlcHJvZHVjZSBpdCBvbmNlIGhlcmUsIHRo
b3VnaC4NCg0KSSB3YXMgYWJsZSB0byByZXByb2R1Y2UgaXQgb25jZSBoZXJlIG9ubHkuICBJ
dCBtaWdodCBiZSBjb25uZWN0ZWQgdG8NCm1vdXNlIGhvdmVyaW5nLg0KDQogPiBBcmUgdGhl
IGJsYWNrIHN0cmlwZXMgb24gdGhlIG1vZGUtbGluZSBpbiB5b3VyIGltYWdlIG5vcm1hbCB3
aXRoIHlvdXINCiA+IGNvbG9ycz8gSSd2ZSBjaGFuZ2VkIHRoZSBjb2xvcnMgdG8gd2hpbGUg
b24gc3RlaW5ncmF1IGFuZCBtYXVzZ3JhdQ0KID4gYmVjYXVzZSBJIHdhcyBibGluZGVkIGJ5
IHRoZSBicmlnaHQgY29sb3JzLiBXaGVuIEkgcmVwcm9kdWNlZCBpdCwgSQ0KID4gY291bGQg
c2VlIG9uZSBtb2RlLWxpbmUgYmVpbmcgZHJhd24gcGFydGlhbGx5ICJpbnRvIiB0aGUgb3Ro
ZXIgY2hpbGQsDQogPiBidXQgdGhlIGNvbG9ycyBsb29rZWQgb2theS4NCg0KSUlVQyB0aGVz
ZSBhcmUgdGhlIGhvdmVyaW5nIGNvbG9ycyBmb3IgdGhlIG1vdXNlLCBJIG5ldmVyIGNoYW5n
ZWQgdGhlbS4NClRoZSAiQWxsIiBvbiB0aGUgbW9kZSBsaW5lIGhhcyB0aGUgZmluYWwgImwi
IG5ldmVyIGNvdmVyZWQsIG5vdCBldmVuIG9uDQpHVUkgZnJhbWVzLg0KDQogPiBpY2ggd29s
bHRlIGRvY2ggbnVyIGVpbiBiaXNzY2hlbiBDb3JmdSwgbWltaW1pLg0KDQpGw7xyIFNpc3N5
IHdhciBLb3JmdSBpbW1lciBub2NoIGJlc3NlciBhbHMgZGVyIEdlbmZlciBTZWUsIG1hcnRp
bg0K
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 09:21:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 04:21:28 2025
Received: from localhost ([127.0.0.1]:33090 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1teWAR-0005aB-PE
for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:21:28 -0500
Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]:52233)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1teWAQ-0005Zy-1E
for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:21:26 -0500
Received: by mail-ej1-x62b.google.com with SMTP id
a640c23a62f3a-ab68a4ab074so426156466b.0
for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 01:21:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738488079; x=1739092879; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=Tnq+L+s2uktEIGB8HzJyiAq5lCjLUOG0E5Cq2pmw8PE=;
b=MbWrlsSGgALihrPE6XlnK9NEmV8wrbPCgm4Moqrq0lSWRAVreu62RvnEZP8xQ3s5Sz
LbU2HvdBFIHI3yAfRvGd5UsJL7PyhHsSRewXdBMgM9cXdzrvJXgdYiVZDAI9ALh+QLPL
IE/pJLfEM7MbTB3dhyoHp2urRgcFJd9E0n0yZQTqIJEUTIWJkdRQFZ0BpWzooVtzi5Oc
4OzCvDZm2yg/xtvh2ieEF8TWGrfROHW2xHBuBhNSP8VAaDtZEsBeJtv/ksv0ES5GEVN3
aqsGvEGxBwo94cVtW3UvGAh/bIWYZAY54tQVVJQCKsRGGVZ2l2mxVBdanWBcJ0NMtK0T
pKcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738488079; x=1739092879;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=Tnq+L+s2uktEIGB8HzJyiAq5lCjLUOG0E5Cq2pmw8PE=;
b=qHpvf4CiLqRXz36NHvK+ZNPl0w9fXMVpE3FDey0yWBkC7qF9dnHgjoHT030XLfJQfX
A2oD7vCufmQJJ0zMd6txlpM0yytPiRl1exfqdNVYx4XKck/ok3Epw3tV962m5dD2u99a
aTLTl9Fx7cmNOUUW/HD72h+dIEFYpLcYfiVQaADDhkcIbkYl3/6c4NXO0XUv2Z/Fhl4P
cKW+2SskJYSWVrSTsGwPQbdpVOJH3b42UbvBj//45Z2juKQxQ4vWLNAw1TJptKJovQEs
SL4I3dCFvdf5BRfR/snJaKmhd4ZJHYtCWLKMxYmK47wlttWnIegCxJH3MPBZzDIHG7Es
/44Q==
X-Forwarded-Encrypted: i=1;
AJvYcCX6U7RTPt81BbJzyq+DRurwkcdZu+4qVgF172nZXFqH5HRLkk2VYncfuXhAH6D1SWplQpCXFA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywf27y3tjRgTKfllJkfXzY0NQjKqfkeUgf1RYGy9rp66+vagF3o
KbGfc1MwQtGKydKJn2Hv0acReOyTZPOIjnR3GpHtmNNrYVok5RbEwPW37Q==
X-Gm-Gg: ASbGncvXtRpS79AAsLFd6SNlgS2ZWzDPoocLSx4H0x/mUmCj27LK6t/QYhJrms8I9YI
izRXcChTBHZxnPA5waxRJ7O5LQpvUrTxzoxSO//LwLpPhtFLBA7186tpBzH4rqAcqr7Gk1bPi4F
gIueTafQHsSLOTLfAoSN4M0fceQ62iTWC094oeynftwWgqO3LoGwkeR2L6wiQRdFWu5PBUn7Zgl
QR9zDHrHaCXR4xbxWfJXCulzR9YguUUXO2m2Hw8EZ1k1NpYMcbG8KwKk+cfj/eypwbHs94TEaEv
AVhvqn/156vDwGnTluYU7yLD09D686CtTgBa5tCTDGfDc5o1dpEpvTGOqYF1DnBBR4k61ZDqfCn
1posDO41pEmOAqMrrjKjCOJqa
X-Google-Smtp-Source: AGHT+IHarJbhkBsAePyG2E6gITVRpdiKPdwPqRVKhz4N6kkgTqgiDX4ncYZx+T1ezLTwacc8UiBWpg==
X-Received: by 2002:a05:6402:524b:b0:5d9:ad1:dafc with SMTP id
4fb4d7f45d1cf-5dc5efec0c7mr43047255a12.25.1738488079220;
Sun, 02 Feb 2025 01:21:19 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
[2003:e0:b71e:2e00:b17d:1337:b17d:e790])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e4a5a26bsm548699466b.183.2025.02.02.01.21.18
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sun, 02 Feb 2025 01:21:18 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> (martin rudalics's
message of "Sun, 2 Feb 2025 09:53:12 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m2tt9dkl7x.fsf@HIDDEN>
<e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
Date: Sun, 02 Feb 2025 10:21:17 +0100
Message-ID: <m2jza8vh0y.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> Fix pushed to master.
>
> Confirmed, thanks.
>
> Next issue: Please look at how the mode line of the orange window
> overlaps the yellow window in the attached screenshot. It happened
> after I mouse-clicked the mode line of the yellow window to bring it to
> foreground.
>
> Schon wieder was passiert, martin
Okay, pretty strange, I don't have an idea what that could be yet.
I could reproduce it once here, though.
Are the black stripes on the mode-line in your image normal with your
colors? I've changed the colors to while on steingrau and mausgrau
because I was blinded by the bright colors. When I reproduced it, I
could see one mode-line being drawn partially "into" the other child,
but the colors looked okay.
ich wollte doch nur ein bisschen Corfu, mimimi.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 08:53:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 03:53:23 2025
Received: from localhost ([127.0.0.1]:33043 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1teVjG-0004Fp-M2
for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 03:53:22 -0500
Received: from mout.gmx.net ([212.227.17.20]:57081)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1teVjD-0004Fb-HB
for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 03:53:20 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738486393; x=1739091193; i=rudalics@HIDDEN;
bh=IzkA+Z3qV39mYts/TTx+W1nQG8K6n34jl4jHcPuCOg8=;
h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
Subject:To:Cc:References:From:In-Reply-To:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=fcbiBOfJupev9y9ZqYSH1k+MV8DHy5gJvRUuJEJyZrmawzaYqj68OKxBf7IKyYtE
Xpn3E9YnKwZ89ixYMSZXGGTvepwFaV0zK9SjaMmv6hQEQctwFsocmv1yCzKirEqIs
1RtjRRkUQ57bAB9QAohKqeCPlKCVVTdh5pwsfkG4NQ5z6v15WsWox3j3/JnCU9NyV
00R0kJNkNBHTvhZB8Bkh5DYUcmyK6R6HX0Of/vqIyvm+tARV4P4V1nZsetivup/Bk
geevpYqG9tAs+2heUsGIllV00dtIog16/0bD0vXl/JJ+QVnISCUZLv9qO9kRz4adg
dLj/ju1dJW+G2iP6Mg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.190]) by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1M4Jqb-1teEkC0I77-00DiCN; Sun, 02
Feb 2025 09:53:13 +0100
Content-Type: multipart/mixed; boundary="------------B2qoq2pME5vsFCjCIrAhMNGZ"
Message-ID: <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
Date: Sun, 2 Feb 2025 09:53:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2tt9dkl7x.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2tt9dkl7x.fsf@HIDDEN>
X-Provags-ID: V03:K1:737+3bOFz3l6Ue/iGWFt03/QHexOyhBU+6XOCS/vsyhSEw4OsDy
ip7TK4B21m0tBXCRndWcFNhMKBJmEwld5ilTQTmfTLColqkiFs9lJ7w0+cyvE/wFBPEcsXr
0NpBFFzGu3BIDBqy7S6WsS16dYiE5FNVghyL8L0q93bS+bA0vae5Eqg98RVcxfXXxDGbtOG
Zxpxc5ZgDbYT+Nfbnggpg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:Tls/FYHb7Es=;xCf/oB/KlxSXjF+mLUoQ7FYsr7M
MadviLPZkOzu6+G2WdpAv0bM+tHmxlyz5nVRlyK3s6+s9YLjqYWlQAS3yefXQn0jFDbKzX1dT
jfcGWIEb93M23RZ0BKdKLYtoDli4Mc6RoyQSiU7mVdndjAF5/vrR60DZyMjeR8gclW2ziZVT3
rbmkLHrXl+K+pS0d55GWYi+k4oSGhnkf6XjswYoiTQbYd7+FEE2M3C1vlDz15lFul/56dCaru
7dODzfEP5FnXav3MeSSWsB/Rzxr2YbnZOv48GlDqFoDdluOvzS1Yy0JiOdlRyf1z6S0Ke6EZj
7pYry35W7oZ0QswHSBy4mjvS3ROlrC0hVUJ6SpPwE6rdiGm/bXDFfDSVE6V0qPhjANF8PHXDr
r964B+XMmukrXd3avbYAmzG2ZZgi/2UnH391WlNjHgwZ/VVgCctAQHxZ7Ma7DFgoHO8qC0qwc
VD8xlcCsfsVN2/SZoisUoyb73sNeh7ifJ0pBGraK3eImJFf/ykBkmESrKGQl9xV1lOqnfkmeN
6VE/9zyyBcnQn4JamJeBi0UYPznOTTbnWNmNN2VX2NmmXtzKIku+Pwm9vkMfYmivIz1wdxhdC
fDWH7iZ3GNqD9Uk4uKVt9c45vErgj64ExkmAiWCRk7qNxKGM/NzDCAl1HpPtrdjswM51qj5f9
ONIcdT0Q7DWTTAYzhle0/2zkgldgd1BfQ0LU3h2CPPpLAro7mbIsGWY3/kLLEvaicb/wBVz0f
YfHyQQ+MfjoWLIovwJLEENJeR2xK3dbI+96bTz5A8rN85/GiA1quWkz8b+lugmFtll3tIZ9LD
cMDsSG+r5IQy4FfWuSwNHwjcYlYK+iIdH3kMw1ugBpJKLMPxeP9XU//qpGZC/GVmBVVv5eeQi
sOErTFpq0ESaSR57OOyLyivjwsa5YSrlHHDNZBolfVArCJ7upQON6lz/bHgAe3dvLw0vbo30D
HDlmpxrgzyjlyhO/uItyxjdA240kr3wtxTZu47A5CiSbkM6GAcdHhUHT351+sOC80GEMj/+Ug
OC3IRZ7iOpcOYDmVAtjLHq8Chi0ngWjBggE5WFXK7FgHgzfrX1fxJn8gw2t9fpbCBlytjMJSQ
eLxsYUTzyMPRrXf1CYwntikverCcmFrdaDVNVM6PV0ERKjsvyqUPsMCfSnchVpbMwe59srw73
LEGh+AxrWnCkvbY89t2k5ialDbWmYVXhHGQdtfUxPbZQ4kEbRjl9SAr+UqcB+DaSNbmhmOqQO
sNg0zIoFKrmpQfuimy7G3wZYwePAA8XfElm0Hfd0ibeiSp6gFF3+56JvUlWJGyKkfC+M6W/Ne
/wTs09mg4M3QVjz0zHhA/9rt61uRrrVCRThzWnncI/WovnzrXKlCY8nC3NMIt7C9D5j
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
This is a multi-part message in MIME format.
--------------B2qoq2pME5vsFCjCIrAhMNGZ
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
> Fix pushed to master.
Confirmed, thanks.
Next issue: Please look at how the mode line of the orange window
overlaps the yellow window in the attached screenshot. It happened
after I mouse-clicked the mode line of the yellow window to bring it to
foreground.
Schon wieder was passiert, martin
--------------B2qoq2pME5vsFCjCIrAhMNGZ
Content-Type: image/png; name="mode-line.png"
Content-Disposition: attachment; filename="mode-line.png"
Content-Transfer-Encoding: base64
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
4fT6d82GKn3uffV64oY2jaVsbe9O6vfOqtbzn+4oqDOXr4vo+U+36zfag/rZ4QnVhrz639e1
Lrp8Tq9rTspXju8Zp9+XTpS6fE7rfaWuk5LzelXKfIvZX6ffR8W4sC2oxz7Wpp6xjN7sT+vP
fzOmf/uDVfJ7pv/OP7axpuCcSWYO5p+9szYf2EjOrxtO01Wi3mMZNW+60r7tX3L2+Nho/iVp
1uvspoD9kdOr5vzZYtI5ffV99jT7Sx9omPNn/+fjq+zXbl5th3xW/rPf3lBl21vX21eeHik6
r0s7Q7a9db295V0xR+lvuqjWtreut3/0iVW215r987++otHu+a+n2c1V3vxnm1oCdu7zs8vn
81gF7z9+bo2d+/x6O+K3Zm33uU932I9c1zpvuYrJ1+mrmPI5fa2v99v21vX2VWcsXF8e+k+t
9kt/0rFgunuvbLJ337Zm2Y6Lk9d/31xvH/3MaQV15OPn1tiZz62326q9c/7Oifa3K+az7a3r
7Q+vd15mJ8dvoXq1mNdy5ftn76y1u7d02ZLs02J+e/S/rbUfndzmh9dH7Mzn1ttB7+y6Wory
/X+fWGXbW9fbm7vC+c+uPD1i21vX2x9aW7569fbta+x7PtxU0m3+7Uea7O4tXXZjxGv/8flR
O/mX6+wL24IrpnxScdeNUr2cXP+m6sF5LdPHa+o7Zeb15Wd/2mm/deuagu+tv76i0ba3rrd/
58zi98npdc1p+aZepf6eWej7sthXKctXTL1f7utkseetVPk63d/FfB+d6DW1vzOP/3tWh217
63r7k5tq8p9t/8+d9nd+t2XOssz1d+T0urFQukrXe16Fr5df/Im9Y8cO+/Nf+GJRrx07dhTE
Pbf9S85u3nSl7fg2wy97U/rBWwsPQ3Cabqn8HksfWhvW/3p1RBMzhmJ8/80xHRoxd+eL9eHT
qzSRsXXvz4YXTjzDXc8OzjmX5bqzq/Vvb4+rucqrjc0BbWwO5JeavLQzXJA2k7PlsaT2Gp82
tQSUtW1Z1vRyv8UoJl+nSlm+SinHcXHi27+Iq6Xaqw+cNn1X6/qN1frRnnEdGS3+LvqReFb7
hzP60gca9K6Oxd+NO5X8qi+lthqfqgMeXXl6RAOJnH5rXURBr6UzGwPaO5Qu60TZtwbS+vGM
Hp2fHkpKMr1U5VLl95R8iPKf/6hPveNZPXJdq75xRaM++3S/Xj6SXDHlqxSn179f9aX0i57p
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
AMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMRigAAAAAY
jVAEAAAAwGiEIgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEAAAAAoxGK
AAAAABiNUAQAAADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAAAACMRigCAAAAYDRCEQAA
AACjEYoAAAAAGI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABg
NEIRAAAAAKMRigAAAAAYjVAEAAAAwGiEIgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYo
AgAAAGA0QhEAAAAAoxGKAAAAABiNUAQAAADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAA
AACMRigCAAAAYDRCEQAAAACjEYoAAAAAGI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA
0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMRigAAAAAYjVAEAAAAwGiEIgAAAABGIxQBAAAAMBqh
CAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEAAAAAoxGKAAAAABiNUAQAAADAaIQiAAAAAEYjFAEA
AAAwGqEIAAAAgNEIRQAAAACMRigCAAAAYDRCEQAAAACjEYoAAAAAGI1QBAAAAMBohCIAAAAA
RiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMRigAAAAAYjVAEAAAAwGiE
IgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEAAAAAoxGKAAAAABiNUAQA
AADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAAAACMRigCAAAAYDRCEQAAAACjEYoAAAAA
GI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMR
igAAAAAYjVAEAAAAwGiEIgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEA
AAAAoxGKAAAAABiNUAQAAADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAAAACMRigCAAAA
YDRCEQAAAACjEYoAAAAAGI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxG
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
kSMlXdgers+2i+sXFham0tJS1dfX+1TntnA6nfLz82syZJeUlDRa3/bazi61tbUdPlpbSEiI
ezRKX9a3Ne3h6sLbXJdGb3XV+Rrlrs5y7anFULR3714dP37cY9qlQ0jW1tbK4XB4zthuV2Bg
oMdJYnuX84U369ER5bzV0NBw1Y9C5uputmPHDo0dO1ZjxoxRTEyM7rrrLj3//PPu56FcV6gu
beOWNNX2drtds2fPlr+/v7Zu3arU1FTV1NRo/vz5Gj58eKvWw9f6efPFrWi9a6+9VufPn9eB
Awfc0/Ly8pSSkqKoqCgjv8iwZ8+e6tevn8LCwnT//fdL+r8TkUWLFikvL6/NAxFcqWpraxtd
Xe9opaWl+tvf/qbo6GhNmDBBixYt0s6dOxs9Y9hUvYKCgjr8Qfz2en7Dsiw1NDRo27Zt2r59
u09/29zJ85QpUzR48GCtWrXKfWEoLi5ODzzwQKO/d13Y6iyu7tBNncQHBQU1+ky/2p6TcQ3s
s2/fPkm+rW9r2sO1/7e1a2tXna9R7uos155aDEV5eXktprJz58559FmV5H5/8dWj9i7nC2/W
oyPKmSQpKUn5+fkqKSnR1q1bdeDAAf3kJz+R3W5XfHy8OxTl5eUpPj5eI0aM0Ndff+2+6tuv
Xz+dOnXKpytTUVFR7mFZ09PTVVNTo+DgYCUmJjZZ/uLvb+nZs2eTQbQ964e2S05OVnp6usdw
xP7+/ho+fLiuvfZa7dixowtr1zVKS0v197//3WNaZGSkYmJilJGRcdVfYLmc0tJSxcbGdsmy
z507p40bN0q6MLDMpaEoLi5Odrvd48JKVFSUDh482Ol1bU59fX2zo15alqWcnBwNHDjQ51DU
nH79+ungwYPuQCRdePbqUmfOnFFKSorXzwpebj28VVNTo8LCQg0YMMBjdLbQ0FDFxsZq7969
bZp/V7vlllsUHBzsXjdf1tfX9pD+705ic89Ce6urztcod3WWa0/t8kzR/v37tXDhQt12223a
v3+/HA6Hpk2bppKSEo+U197lXBwOh5YtW6bDhw8b0S0pMDDQfaXH6XSqsrLyiuhqN27cOA0c
OFAVFRUqLS11HyAbGho8wmxqaqpGjBghh8Oh5cuXq6ioSE6nUw6HQ0899ZR7dKcJEyZ4fOP3
vHnzlJ2drbS0NGVlZUm6cMu/trZWAQEBWrJkiXJzc9W7d+9mu6uUl5ersLBQMTExuv322zVh
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
g4P1zDPP6IMPPlBYWJiCgoLUv39/nwKRJD366KPq0aOHAgMD9dJLL7VYvqamRl988UWjk+yr
za9+9Sv94Q9/aPN8fN1+ne3JJ5/UggULGk1/5plnNH369FbP90rfD6729u3Zs6f+8Ic/6Npr
r71sue52XLuSzZw5U9988402bdqkp556qtOWe8MNNygrK0svvviixo8fr8mTJ+vFF1/U73//
+w5b5pV+XAOA7iqxT4L3ZROaL9ti97mKiopuc7WrV69ecjqdeuedd1RZWSlJOnPmTJvmWe/F
7br6+nrNnj27Tcu5EowZM0b2y9x2bA1vtl93caXvBya1b3c6rl2pbrzxRq1fv14rV67Utm3b
9M///M+dstzIyEht3LhR+/bt08KFC1VcfOHqocPhUFBQUKfU4Urd7wGgO7qmb1+dOHlSJefP
X7ZcRES4+vXt2+zv2+UM6IEHHtDRo0eVn5+vZcuWqU+fPjpy5IieeeYZZWdne5S94YYbdO+9
9yohIUGZmZl6/fXX27TshIQE/eQnP9GIESNUWlqqDRs26O2335ZlWe4y99xzj3r16qUBAwa4
3996662SpI8//lgffvhhm+rQnClTpuj22293v8/KytL//M//NCrny/YLCQnRfffdp4kTJyog
IECffvqpXnrpJZ/vdrnExsZq6dKlGj16tIKCgnT8+HH97W9/0/bt2yVJTqdTP/7xj9WnTx/d
fPPNqqio0AsvvOD++wcffFANDQ3q0aOHHn/8cT377LM6evSoxzKWLVumoKAgPf/88z7Xz5f1
DQwM1AsvvKDt27frjTfe8HlZvvK23bzZD/z8/PTkk08qOzvb4ypzZGSkfvvb3+rvf/+7Nm3a
5HMdu1P7Xs369u2ru+++W9u2bdNPf/pTpaWladWqVfqv//ovSdIjjzyis2fPust7c1x75JFH
lJ+fr1WrVrmnRUdH68knn9Qrr7yi/fv3u6e3tB+4tGd77NixQ9dcc41yc3P18MMPt1i+vf5/
ly5dqvDwcC1evNgdiCSpsrLSfTGsNfvznDlzNG/ePPXs2VNnzpzRli1btGbNGjU0NPhcR1P2
ewDoDP7+fvreuBv0Veo3Ki4pabJMRES4vnfDDfLza76TXLuMPjd37lw9/vjj2rBhg8rLy7Vr
1y7Nnz9fO3bsUGjo//Xdmzp1qnbs2KEbbrhBqampioiI0N/+9rdWL3fo0KHau3evZs2apT17
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
/cDX9rhSj5OS9P7772vBggWaOXNmiyM2erM/p6ena+nSpUpOTtbhw4fbVLerbb8HgKuFZVkt
fh2Cv7+/bDZbs79vsY+Pv7+/pk+f3ujV3BXJy3nttdd0xx136K677lJUVJTGjx+vxx9/3Of5
uPzud7/TD37wAz344IOKjY3V0KFD9eabb6qoqMhjmNqOEBoaqv79+ys2NlZBQUFKSkpq8mpi
WFiY+vfvr8jISDmdTg0cOLDVVx1/+9vf6qabbtILL7ygQYMGKTw8XMOGDdO//Mu/aNiwYT7P
b+zYsbr//vt1zTXXKDQ0VMOGDdP3vvc9ffvtt02WT09P180336xJkybJ6XQqMTFR4eHhjcq9
+OKLmj9/vubMmdNs1ypvtp+v6xsTE6NTp061amjoi7355psaPXq0nnrqKV177bWaOHGi/vjH
P+rkyZP65JNPWjVPb/aDMWPG6Pe//70eeeQRHThwQP/6r/+qnJwcrV69ulXd8bpb+3pr4sSJ
jbr8XhoefLVnzx5lZWV5NYpaW3l7XEtLS9Ott96qqVOnKjw8XBMnTtSjjz7aaH7e7gcd1R6h
oaEKDw+Xn5+fYmNjm92G7fX/u3btWm3fvl2rV6/WQw89pLFjx2rChAl64IEHNHLkyEblW9qf
165dq3Pnzuntt9/W1KlTlZCQoBEjRri73V26rl213wOAyWw2m6qrq1VWXt7kq8qbrzxoafS5
5kycONFd7qOPPrI++ugjjxEhQkNDLcuyrGXLlrmnBQQEWC+//LJVW1trWZZlFRUVWQsXLrTO
nTvXqtHnJFk/+9nPrDNnzrjr9fXXX1sjR45ssmx7jT63cePGZrfL66+/7nM5b7efJGvmzJnW
gQMH3PNpaGiwUlNTrUGDBvm8HmPHjrWOHz/uUa/t27dbAwYMaLJ8jx49rM8++8yqr693L/vG
G29sVC4gIMDKy8trdvQlb7eLr+vbq1cvq6qqylq3bl2bRzT5zW9+Y50/f9693LS0NGv48OEe
ZbxtN2/WNywszDpy5Ii1YcMGj/kNGTLEKi8vtx5//HHj27ell2v0uaZcfLx67LHHrLKyMq/n
GxISYtXX1zequ69tYVmWFRsba0myDh48aD388MOWdGFktr1793qU9+a4Fhsba23bts1dJj8/
35ozZ4519uxZj+OpL/tBe7aHJCszM7NRWzQ0NFhz5szp0P/fsLAw609/+pNVUVHhXm5BQYE1
fvx4n/dnSdaYMWOsr7/+2mM99u3bd0Xs97x48eJl6qup0ee2b99uffLppx6vz7dvt9LS0loc
fc4WP3KmdcdvN+rpqRVycYZcvgtNW4WFhSk2NlY5OTnt8vCqv7+/+vTpo/LychUWFrZDDa98
MTExioiIUH5+fqPnXHwVHR2tiIgIFRQUuJ9puJzg4GD16tVLZ8+eVWlpaZNlMjIytHr1aj35
5JNtqpuLt+sbERGh0tLSVn1/yKUCAgLUu3dvlZeXe3yx5tWmO7VvV7j55pv12WefaerUqdq8
eXOnLdfb41pERISioqJ06tSpy3Yd8GU/6Kr2aM//X+nCNuzVq5fq6+uVn5/f7Hy93Z+jo6MV
GRmps2fP6nwL35zujSt5vweAK13azs9lC2qcWcrLy1X7/5/5ttvtCnE6G3WbGzpksPvnRz92
au2/z1aXhCJ0b5MnT9amTZs0YMAAZWdnd3V10M5Ma99f//rXuu+++zR48ODLjkyIq5Np+zMA
dBfNhSLpQjCypCYDkdR0KOq0gRbQ/d1yyy2KiorSM888o1WrVnGC0c2Y2r7vvPOO3n33XQJR
N2Pq/gwAJnA6nZJ02YEVLkUoQrt5+eWXFRISoi1btuihhx7q6uqgnZnavkePHu3qKqADmLo/
A4AJfAlDLoQitJuhQ4d2dRXQgWhfdCfszwCAi/k+zi8AAAAAdCNN3imqKG95hCoAAAAA6A64
UwQAAADAaH6SVFPZ9HeRAAAAAEB35cpBdknK+maj/sU2VwHBIV1aKQAAAADoDLVV5cr6ZqMk
ySZJ8SNn8gUcAAAAAIxzZv8m2/8DIhWWEolHEfMAAAAASUVORK5CYII=
--------------B2qoq2pME5vsFCjCIrAhMNGZ--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 04:46:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 01 23:46:23 2025
Received: from localhost ([127.0.0.1]:60840 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1teRsE-0000sh-MF
for submit <at> debbugs.gnu.org; Sat, 01 Feb 2025 23:46:22 -0500
Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]:60864)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1teRsD-0000sR-2t
for 75056 <at> debbugs.gnu.org; Sat, 01 Feb 2025 23:46:21 -0500
Received: by mail-ed1-x52c.google.com with SMTP id
4fb4d7f45d1cf-5d90a5581fcso5810659a12.1
for <75056 <at> debbugs.gnu.org>; Sat, 01 Feb 2025 20:46:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738471574; x=1739076374; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=plIY+3vQdPkru6Sg8qUFd0VX74geYUnau4p7DCRz8yc=;
b=DoI0rdimCpWztJsiOhttS0dGeoUWJf0Y+qFMnZlXBZcc2aoT1aqju+v5Pz58Ceqm1p
sPpftB1W/XzuybMU9jqBNI7AcT94IOSwlicse04ZTYMQRw4xxSnm1W+m8rIVfZnbYY7O
X5GZOpGOz8yF73XSpMFzcgsH/HmpnNXrdNrRBLKiZA+B2Lphj6xmensM/relBsC3aQyt
sn2rNaczLIoDCxauPsVaUNqJ/n07hYmPG+xML2iTck/CD8QcY5yi4jKhm8A1lRPNef12
TH9p3ztnga6k26vevuE/+oMWDcOCkNowSPHggRBaOvKSjakmjJvHrqBmvJQ5QOnxDWBm
TOPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738471574; x=1739076374;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=plIY+3vQdPkru6Sg8qUFd0VX74geYUnau4p7DCRz8yc=;
b=fuK94M7Eqo5qPliemQsT8L5VndktMcB7C52AyIAky4429hDNHwNjGGIuZOJ/ns0k+F
qHcs77n3UYZzeocAxzONWAkQA1gh3RTedtvskb0BHn2V9NjJxE3PP51r11m3AGX/SpTO
gLY7KEasi830ZQn9Ch05mgpZuoFhZf4TvVk410CEnecIbwunUrLcU76Mv1PqgPNNGMRL
rq0Tj15yI6sf/Tz9Er/7N3fIvzIpNp5COpWcI5H1ZAL2JqK2pmf1kMMwK+xFFCK6Mupe
TjDIg8gHMvVj2aJw6sR0RVJXI6fA9eGB/g/vckrqhPeZ6wcaY/fUMTZKiq9wvWNI02Tl
7h4g==
X-Forwarded-Encrypted: i=1;
AJvYcCUUHHzsXLXR1EHzAWaLejGK0q2XIP/1XgO4LVB6aqEFoLxJROIUB0qu3hCSiUeV0R9Ocar0Og==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxStsWFdfm547n1q3tgA3J77PK18de+KZayKyUDDner6ls0DNaV
QOg8cuT8D0O2toYscqWbigQJ94nRZ1Rjcfs6efimbbaZJ7sKv1O70hSVew==
X-Gm-Gg: ASbGncvcoTcw94Q+klnOX9DIgmUylo8DA3RvRPVE67DOUwh6HtKvaZD+uKBVl/H8h15
XInj/C+9S992kIa+aqOWIgBAoEoFJeeVLPfaIltge3nq9G3l15Ffysc/OLDu5+BVTxXj9UcbRHJ
/XFYefrHiGboMtgL9PuWKawWXE5H6UcxmG8ti9C8IeNEKznOm85NA/itYfYBISs/K0rTDudseOS
eTGQCowDJFEiZ7URTZbsJjnDxlOKEAzgl4NQCAOlyULucx6Lhs0OvOyPQnHqwaVvR0PPE0K5Bg0
nF8LEKTbXtsAoxdo6d54AFV7+EcrXSuvTfoEt54mwZfYp/7Xv4DP9m0vYk7K+HRxiRUMNEM2OH/
jnR8K0g3BOXyE62YtOGcL/yma
X-Google-Smtp-Source: AGHT+IH2EaQHsiF2AhdIlrV3/LLc+Uiws9/BcRWDF4Yw/aKHXU7g5GrPA+FVIRZsvVeu+5Bxw0J2Yw==
X-Received: by 2002:a17:907:3e0b:b0:ab3:a3b4:f91c with SMTP id
a640c23a62f3a-ab6cfd0c96amr1786883266b.34.1738471573739;
Sat, 01 Feb 2025 20:46:13 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
[2003:e0:b71e:2e00:b17d:1337:b17d:e790])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e47a7dc4sm524053766b.16.2025.02.01.20.46.11
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 01 Feb 2025 20:46:12 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
<m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Sun, 02 Feb 2025 05:46:10 +0100
Message-ID: <m2tt9dkl7x.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
> One bug I noted now is the following. Do C-l and M-l and drag the
> yellow and orange frames somehow as in before.png with the cursor in the
> yellow frame right before the left edge of the orange frame. Do C-f -
> the cursor appears on top of the left edge of the orange frame as in
> middle.png. Another C-f moves it into the orange frame as in after.png.
>
Fix pushed to master.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 1 Feb 2025 10:23:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 01 05:23:31 2025
Received: from localhost ([127.0.0.1]:56478 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1teAex-0006Rg-Hg
for submit <at> debbugs.gnu.org; Sat, 01 Feb 2025 05:23:31 -0500
Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]:51342)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1teAev-0006RQ-MM
for 75056 <at> debbugs.gnu.org; Sat, 01 Feb 2025 05:23:30 -0500
Received: by mail-ej1-x636.google.com with SMTP id
a640c23a62f3a-ab2aea81cd8so497587066b.2
for <75056 <at> debbugs.gnu.org>; Sat, 01 Feb 2025 02:23:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738405403; x=1739010203; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=415b3b6ok3FTbh8VoB2xwBT7ILSw2G3zMVHPgcWNACw=;
b=RZf8pm8wiDHQ/hHAMuTf7YPBezw3es+WYgrPf8JIEJhm47Zyv3n+aF+4cHSuo8q7lV
32HhoEEljh7QCNbPnvPn1KZnAwv9qJ6ETPPq2MWZRlc7hSPMAlPCnCz1kYkX8R6XOxH/
aeNblE5XDBQoLeSWRFJkZQ4xX1CLqddyDYIsjd9yo3RFEwDVyP9hEfrpAG2B68U9KJmN
Sque1Dr3by/UbEALRpSvyU5wGQWwbDnXqk9hO5kfn5IxlZbT6c6EDNYF6OaridxW4l2c
JVWBVxF2nXIV5UeZyIi+lNGmVL3YXgNQDOGsiq9Mm6FcxmFzeH2alQd14Sr9lJ7Xp8tX
q4zg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738405403; x=1739010203;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=415b3b6ok3FTbh8VoB2xwBT7ILSw2G3zMVHPgcWNACw=;
b=LbjHWapuBFiuvZb7+DPqQb7Hzdarq7YHB91BIah2KHgHSN1Cl12z1JvWWQpX4VhGWt
YbYMugxzioaIfy95+qnNlOK+Ghr+6gIrn+KXC7ExDqs5aW7IKJY77BccVPeTgS3+b/XS
PCGBVgh6e2aow+1NR1P2da0J46oov/KF0iAT0g/30kz/iYQEaODwH8oilgW+bQmKNukI
exwlY3Z5A5QJvO661y9C8S71mhw5/0qgqEQpv1tpSjXx7zWEuif4rrP0BLHen5d6Kr1Z
4uT9Al/tej9uLLd8LoQJZ4l7huBaQPN3QeGCDXCNWZWy68rkDj3OtLFjSho8We9PwVaU
LAJg==
X-Forwarded-Encrypted: i=1;
AJvYcCWC0tvDyd9spO+7nzXBy6NAE/yVzBS+8VFwmT9lPBJqUBZQ1Ryd7b/ubWQTIZ3sIyg4lCceow==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyeNB9V1OWWwOdtskXd0PFrDFwwyZLA0WDARS3e0Lke21miSOoK
5/KP8uwtX2aC5L8S0+50XP6qyLPUkqLSx32JOsDeQbmxR9d1Zjziet4I3g==
X-Gm-Gg: ASbGncsID5FJtvm7x92kGO20Ktl2S7L4cOhOCY8qGAhQagovD3E8IbdCCw1cJXWilAL
qBPGk3qpdL3q7VqZzuNAydeI2ufJDUou5XsK1BsVUJ1MB1K8beT7HwOWz1g/2J1VgkQy87gZxf5
SNSvaOdS03TDOZmE2pTf4aMrbRwccg8ZWPuo8W1Qx3dWAVgdb3MSifYt013QfSTeZzTAE9HlWki
yxVIc8LAq7t+oett6+9vVk8xXMUZEWhykp3jP1bjGlCFkjFsGnKKCAZLgq46/GtXzdh1G9wB2sm
7m4jrg3/bHGjvix/f8NGE37TTtfz1r1SdzPQfE5YEBTcdZySSa5el0r+OROp3RbwK/YXWioaGgG
45TSXxJ559rzqZPVk6rOkTsbo
X-Google-Smtp-Source: AGHT+IEqo0RkaP58r1NU8NI8rXxD5CXxVfLUtvzAsd8BL6XlroczCedZSKPFlfbkTvRxLh/Tb+Hz+A==
X-Received: by 2002:a17:907:1ca7:b0:aa6:becf:b26a with SMTP id
a640c23a62f3a-ab6cfcc67f1mr1627814166b.9.1738405402745;
Sat, 01 Feb 2025 02:23:22 -0800 (PST)
Received: from pro2 (p200300e0b713f400f072b6ab134acb58.dip0.t-ipconnect.de.
[2003:e0:b713:f400:f072:b6ab:134a:cb58])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e4a2fe78sm422689266b.125.2025.02.01.02.23.21
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 01 Feb 2025 02:23:22 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <m2seozjo3c.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
=?utf-8?Q?s?= message of "Fri, 31 Jan 2025 11:04:55 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
<m2seozjo3c.fsf@HIDDEN>
Date: Sat, 01 Feb 2025 11:23:21 +0100
Message-ID: <m2msf6ezfq.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> I take everything back. I think it would be much much better to do that
> all in Lisp.
FWIW, a proof-of-concept, only showing a frame with a menu. 200 loc with
half of it copied from tty-tip.el.
--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable
;; -*- lexical-binding: t -*-
(require 'cl-generic)
(defclass tty-menu--item ()
((name :initarg :name :initform nil :type t)
(key :initarg :key :initform nil :type t)
(binding :initarg :binding :initform nil :type t)
(props :initarg :props :initform nil :type t)))
(defclass tty-menu--separator (tty-menu--item)
((kind :initarg :kind :initform nil :type t)))
(defclass tty-menu--button (tty-menu--item)
((type :initarg :type :initform nil :type t)
(selected :initarg :selected :initform nil :type t)))
(cl-defmethod cl-print-object ((obj tty-menu--item) stream)
(princ "<item " stream)
(with-slots (name) obj
(cl-print-object name stream))
(princ ">" stream))
(cl-defmethod cl-print-object ((obj tty-menu--separator) stream)
(princ "<separator " stream)
(with-slots (kind) obj
(cl-print-object kind stream))
(princ ">" stream))
(cl-defmethod cl-print-object ((obj tty-menu--button) stream)
(princ "<button " stream)
(with-slots (type) obj
(cl-print-object type stream))
(princ ">" stream))
(cl-defgeneric tty-menu--button-width (item)
(:method ((item tty-menu--button)) 5)
0)
(cl-defgeneric tty-menu--width (item)
(:method ((item tty-menu--separator)) 0)
(length (slot-value item 'name)))
(cl-defgeneric tty-menu--insert (item button-width max-width)
(:method ((item tty-menu--separator) button-width max-width)
(insert " " (make-string (1- (+ button-width max-width))
?\-)
" \n"))
(:method ((item tty-menu--button) button-width max-width)
(with-slots (type selected) item
(if (eq type :toggle)
(insert " [" (if selected "x" " ") "]")
(insert " (" (if selected "*" " ") ")"))
(insert " " (slot-value item 'name) " \n")))
(:method ((item tty-menu--item) button-width max-width)
(let ((start (point)))
(insert (make-string button-width ?\s))
(insert (string-pad (slot-value item 'name) max-width)
" \n")
(with-slots (props) item
(when-let* ((help (plist-get props :help)))
(put-text-property start (1- (point)) 'help-echo help)))))
(:method :around (item button-width max-sidth)
(let ((start (point)))
(cl-call-next-method)
(put-text-property start (1- (point)) 'face 'menu)
(put-text-property start (1- (point)) 'mouse-face 'hl-line))))
(defun tty-menu--item-list (keymap)
(cl-labels
((filter-binding (b)
(pcase b
(`(menu-item ,name ,bind . ,props)
(if-let* ((filter (plist-get props :filter)))
`(menu-item ,name ,(funcall filter bind) . ,props)
b))))
(normalize (b)
(pcase b
(`(menu-item . ,_) b)
(`(,name ,h . ,b) `(menu-item ,name ,b :help ,h))
(`(,name . ,b) `(menu-item ,name ,b))))
(make-separator (name props)
(make-instance 'tty-menu--separator :kind name ))
(make-button (name binding props)
(let* ((button (plist-get props :button))
(type (car button))
(selected (eval (cdr button))))
(make-instance 'tty-menu--button :name name :props props
:binding binding :type type :selected selected)))
(make-item (name binding props)
(make-instance 'tty-menu--item :name name
:props props :binding binding))
(item (b)
(cl-destructuring-bind (kind name &optional binding &rest props) b
(cl-assert (eq 'menu-item kind))
(cond ((string-prefix-p "--" name)
(make-separator name props))
((plist-get props :button)
(make-button name binding props))
(t
(make-item name binding props))))))
(cl-loop for b being the key-bindings of keymap
collect (item (filter-binding (normalize b))))))
(defvar tty-menu-frame-parameters
`((visibility . nil)
(background-color . "lightyellow")
(foreground-color . "black")
(width . 0) (height . 0)
(min-width . t) (min-height . t)
(no-accept-focus . t)
(no-focus-on-map . t)
(border-width . 0)
(child-frame-border-width . 1)
(left-fringe . 0)
(right-fringe . 0)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(menu-bar-lines . 0)
(tool-bar-lines . 0)
(tab-bar-lines . 0)
(no-other-frame . t)
(no-other-window . t)
(no-delete-other-windows . t)
(unsplittable . t)
(undecorated . t)
(cursor-type . nil)
(no-special-glyphs . t)
(desktop-dont-save . t)))
(defun tty-menu--make-buffer (keymap)
(with-current-buffer (get-buffer-create " *tty-menu*")
;; Use an empty keymap.
;;(use-local-map (make-keymap))
(dolist (var '((mode-line-format . nil)
(header-line-format . nil)
(tab-line-format . nil)
(tab-bar-format . nil) ;; Emacs 28 tab-bar-format
(frame-title-format . "")
(truncate-lines . t)
(cursor-in-non-selected-windows . nil)
(cursor-type . nil)
(show-trailing-whitespace . nil)
(display-line-numbers . nil)
(left-fringe-width . nil)
(right-fringe-width . nil)
(left-margin-width . 0)
(right-margin-width . 0)
(fringes-outside-margins . 0)
(buffer-read-only . t)))
(set (make-local-variable (car var)) (cdr var)))
(let* ((inhibit-modification-hooks t)
(inhibit-read-only t)
(items (tty-menu--item-list keymap))
(button-width (apply #'max (mapcar #'tty-menu--button-width items)))
(max-width (apply #'max (mapcar #'tty-menu--width items))))
(erase-buffer)
(cl-loop for item in items do
(tty-menu--insert item button-width max-width))
(goto-char (point-min))
(hl-line-mode 1)
(list (current-buffer)
(count-lines (point-min) (point-max))
(+ button-width max-width 2)))))
(defun tty-menu--frame-parameters ()
(let ((params (copy-sequence tty-menu-frame-parameters))
(fg (face-attribute 'menu :foreground))
(bg (face-attribute 'menu :background)))
(when (stringp fg)
(setf (alist-get 'foreground-color params) fg))
(when (stringp bg)
(setf (alist-get 'background-color params) bg))
params))
(defvar tty-menu--frame nil)
(defun tty-menu--create-frame (keymap)
(cl-destructuring-bind (buffer height width)
(tty-menu--make-buffer keymap)
(let* ((minibuffer (minibuffer-window (window-frame)))
(window-min-height 1)
(window-min-width 1)
after-make-frame-functions)
(setq tty-menu--frame
(make-frame
`((parent-frame . ,(selected-frame))
(minibuffer . ,minibuffer)
,@(tty-menu--frame-parameters))))
(let ((win (frame-root-window tty-menu--frame)))
(set-window-buffer win buffer)
(set-window-dedicated-p win t)
(set-frame-size tty-menu--frame width height)
(set-frame-position tty-menu--frame 10 10)
(make-frame-visible tty-menu--frame)))))
(tty-menu--create-frame menu-bar-file-menu)
(provide 'tty-menus)
--=-=-=--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 15:14:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 10:14:07 2025
Received: from localhost ([127.0.0.1]:53758 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdsid-0005E8-1M
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 10:14:07 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:58934)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tdsia-0005DT-H8
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 10:14:05 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1tdsiS-0004sw-Tz; Fri, 31 Jan 2025 10:13:58 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
mime-version; bh=2cvOwNYeeqNQl5REpZnSeFzrVrZueNJKlVo0RQ2dZTE=; b=AAMTW7Mh0AE6
YJ7X0b0lvd4MrGbS+9Nsa6mFB+JI/X1HUmc3MjUOqIgVoKeXU6X5qSNbYMZXS+T1OOX8YD4UdqtCb
Ei1i7ve9d0Q++Zush3n0VF90zPlyeg4AavfQpFLKAoa7vItDg6CvvOOr3V5ndfbfxKg5voVc6wulI
90OIfUnrn0mWiZzFrCaAnERYUPcW8gj0nv1DiY8BKaICAqBILB0tE2OI/75Mz6y2BE9XSvrv8+t45
z/A/GDF8L0kB41ql3RRexTlvmtapEXY6iynUIvWCPL0YJUlzmAm0xaycXgtxMsQiXlxMa50+Gmx4O
V6Q9MjZewL+dvPOTbIUSgg==;
Date: Fri, 31 Jan 2025 17:13:55 +0200
Message-Id: <86h65fhv7w.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <4d472bb3-1e3f-4703-b820-2ec6b52ad729@HIDDEN> (message from
martin rudalics on Fri, 31 Jan 2025 15:41:19 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<m24j1fl6yt.fsf@HIDDEN> <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
<86seozi4j2.fsf@HIDDEN> <4d472bb3-1e3f-4703-b820-2ec6b52ad729@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Date: Fri, 31 Jan 2025 15:41:19 +0100
> Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
>
> > What's "a painter's algorithm"?
>
> I meant what Wikipedia formulates as
>
> The name "painter's algorithm" refers to the technique
> employed by many painters where they begin by painting distant parts of
> a scene before parts that are nearer, thereby covering some areas of
> distant parts.
>
> As for the menu bar it would mean that we draw the (distant) normal
> windows first and then cover them with the (nearer) menu bar items.
The TTY menus are drawn by writing the text directly to the desired
matrix, thus overwriting the characters produced from text displayed
in the frame's windows. If that means we are using the painter's
algorithm, then yes.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 14:41:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 09:41:33 2025
Received: from localhost ([127.0.0.1]:50692 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdsD6-0008Qm-P4
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 09:41:33 -0500
Received: from mout.gmx.net ([212.227.17.20]:48813)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdsD3-0008QT-HV
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 09:41:30 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738334482; x=1738939282; i=rudalics@HIDDEN;
bh=SnwiWPD08SCoMnkxWwLETqQivN24yfKlNztqC1+waZo=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=hxpK6wJvc4UhsJJ0Xwh89UdCK/tYIMo1vDD7Y7kpu+1TJQL1Hh37pkxLVhtIzz/3
LsEm6ncwTJgAHdgeWZNnoOEgyfzSMSksT1FNeHYJXkGg/YjQKhTVgBvzTPECOAIDM
dWXoYSET6kbmriW5kDRIKApXdZJuLAR2sQAr6X68N4OfrQXmVjfgkEbjoPjeopBBJ
Rr9KrsdBAqCWSMX/MUNvnXx3N9dHB2XlvX9v3WGx+vZQEdyiwvaPODXjTWCKDHWYe
K3OMzUY6DcMTnRRTuMQFQGbfUOmnDTj6cXQGigUuSsCKlQh+fn/IMUa2UlaWV3pYQ
X4H9KXR6ShcUG0Yoyg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.96.175]) by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MPGVx-1to0ZL1hiH-00U6zK; Fri, 31
Jan 2025 15:41:22 +0100
Message-ID: <4d472bb3-1e3f-4703-b820-2ec6b52ad729@HIDDEN>
Date: Fri, 31 Jan 2025 15:41:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<m24j1fl6yt.fsf@HIDDEN> <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
<86seozi4j2.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <86seozi4j2.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:+MdmwDNV2SQ/sRqCY3XOLkWTo3rC10dmODKUpY9v0Kzp7Z7uaRw
ALtKAWq5KjqZsB56u1UkyaReK5Ju5fVdIRkACYAU3Hw95hhQxZtoQqp8j1YaqfnB9CleAG8
YQCY4hWhvGpZc7OQD9WIFuhJSZhwrcTYKmXf8sjEM+Drd/WtV6aCBSa4ijlVSMYj7GzcWb7
T8Zq3H/OjvX/K6qfjbHBA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:PiVbXGmxlSE=;p6ggsh28X31PG55Pmgqy1TywoC4
ZVeWAfY+v2WZuh0oGm2icDGJFlgXcoJkmIq/mtygg8NehTbvDgaabCJU0gKPwaEn9WM6NAxO8
JIqtZshnuYJsDR/i/5yEuRFBQvV/w8iwCaHdY5KMp07HnZT0nT8deVmSVUoco3ypnvNuf+31m
zvK6k5dXtl8O410rukyFVnkA5HWmxUP16ZLGaqyVIw6EhBlDd9Tann3zhx8wLKwBDAlaPn/Ra
v2lIZtEcsAkmoufGR1UQj226DLDERKJbae4jIuGnkWP/6+T1oegDO3HlAGnQbURzU0dbbtbh6
qGG9omZD/ZP/Xg8ZDeVYSrtSnY5x/D5jtXrjwDDT9GakpSQk++7MIi6EDfA1WyHnVq4PBJIC7
MatxeDg45aPt/Ob0PIiXnKn3Wux6aqdKNL8nqcwopkK0dVmAEIlX3oNC8ylbnSYLa2pKW6EZZ
0VuwiHjXYC6qkMe8p3eV8sjmUOOUIBFfy4PKKMoroaL4lgBM1250otqPRPpy1hftSpsBc+2q/
+GHNeqIHU5nTvxodKBGaOk0/tiyo3P9yt8suHnHn1FXkjkUW7bgCUOx6UkKnCtJVhUfwsn6s7
2QdV2b9AL1oY798Lo7Xqpk89rJC3ziH+8tMsYhBzWh5s/ayc9GgWHMAmTScTQdvT4w16g997x
mDoX+tSMXYWRprTd4S5Emzf0HHM/iIVPcSY33c9jGHsMIFFiSaCDSlOrwPxUfyp2K0VCQYAXP
LR62+GfAarM93T8vi/XZI6vRnfZH4+koFpOZKkFUnZ4QT7RFvyhDcCKh/DvIF5Ba1PNwSdXSx
O97VQd3C48xvEXUeWi2aeYtcPgUOUVfQTksjpYxKDVVJL840hzN14inyBqaC2jz/wYojPe78U
NJErV02NOAAWTBVAkrqaCSEcBfj7/8CrLJGYXYmhBDCWvR1a066Gohpj3tC0qADsiSk4dP0O5
LFBSsm02BPBqwJbZFqYBykXWMgny3tBPaYvIuw2D25MgPzPlVb2/zD3iNCql0nornXTAEFvBq
oY+I+3YnQewfH7lrwBU2jTB+HwRHM1ZWXXdi2Kr3qQi5f8gW7mmA0TBD/Vw7ltBRP//fNIvYk
Q2fMGtW7VEVg9Tm/pLOvV/dfDfzFDMJeTei0htPq5Y4IP96pZ+yV/GdS9dqRxAU2k7KVS6aLy
dUAoahcoZ/swwP1CnRcYA/ICmm5xJKvmA/Lxmq7Khe0kz88jM9k5J4fiptjfAE7c0VkC5yXOP
qa5RZjlfR/d9SgHZFdi0xPxXUbCq2TbsAEuCCQkma8kAzfkkRvi3aBzm/+J9mrUfg/NCPzWrI
OxGK55KkeKT89t/Q5fwcMbrkA1zIQCgb3XLKYsoyb7OhjM=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
> What's "a painter's algorithm"?
I meant what Wikipedia formulates as
The name "painter's algorithm" refers to the technique
employed by many painters where they begin by painting distant parts of
a scene before parts that are nearer, thereby covering some areas of
distant parts.
As for the menu bar it would mean that we draw the (distant) normal
windows first and then cover them with the (nearer) menu bar items.
martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 12:03:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 07:03:17 2025
Received: from localhost ([127.0.0.1]:50308 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdpjw-000682-LD
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 07:03:17 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:46230)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tdpjt-00067f-SF
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 07:03:14 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1tdpjn-00077D-O8; Fri, 31 Jan 2025 07:03:07 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
Date; bh=yAMfoYYLHnaBLAXcUUOJBGvNN0OrKR6DPq1m9ANiVbE=; b=bzqlDRz1vzAN0BR+aL81
sCnOo7qCIxRgikwgapVJK49RitxldTOTX0qoSVy5OxfmMUj9lsDgyVLGLxJFQg00Mkf0xaI1oCCE2
o7V4hgL2O8woX6FpVZFPPSaKyuZG66SXieLLNpgAViC+BWkJN/MPuu0D256CmljcTGp/io54noJK3
LwZ3DSDLvYAJyKgLxH+sCSK+9yjST2uZZu7WRWfqJZRygttOzwsAJtY4gUN6tudIVDTo6lxgAd9xn
BFoJpOtBQ4jdPyfCARLIa24JB0I5IIk3hoM5JZhBJ8rHfRKR+EBjQSMgo353pSKtMJAEeD5Nc/p6y
mZoexy3z2JAQzw==;
Date: Fri, 31 Jan 2025 14:03:02 +0200
Message-Id: <86r04ji421.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2o6znjn0c.fsf@HIDDEN> (message from Gerd
=?iso-8859-1?Q?M=F6llmann?= on Fri, 31 Jan 2025 11:28:19 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN> <m24j1fl6yt.fsf@HIDDEN>
<eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN> <m2o6znjn0c.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: rudalics@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> Date: Fri, 31 Jan 2025 11:28:19 +0100
>
> martin rudalics <rudalics@HIDDEN> writes:
>
> >> Just came to my mind that one could re-implemented tty menus in Lisp
> >> using child frames.
> >
> > I have never looked into the menu bar drawing code. Does it use a
> > painter's algorithm?
>
> The menu bar itself, the stripe at the top of a frame is pretty special.
> On GUIs without external, i.e. toolkit, menu bar, a window is used to
> display it, on ttys not IIRC.
It's not a window on TTY frames, indeed. See the commentary to
display_menu_bar:
/* Redisplay the menu bar in the frame for window W.
The menu bar of X frames that don't have X toolkit support is
displayed in a special window W->frame->menu_bar_window.
The menu bar of terminal frames is treated specially as far as
glyph matrices are concerned. Menu bar lines are not part of
windows, so the update is done directly on the frame matrix rows
for the menu bar. */
And the corresponding code:
else
#endif /* not USE_X_TOOLKIT and not USE_GTK */
{
/* This is a TTY frame, i.e. character hpos/vpos are used as
pixel x/y. */
init_iterator (&it, w, -1, -1, f->desired_matrix->rows,
MENU_FACE_ID);
it.first_visible_x = 0;
it.last_visible_x = FRAME_COLS (f);
}
> The menus themselves are drawn, simplifying, in these steps
>
> 1. Save away the frame's whole current matrix
>
> 2. Produce a desired matrix that contains the menu
>
> 3. Update the display. Maybe loop for highlighting item.
>
> 4. In the end, restore the display from the current matrix saved in the
> first step.
>
> That's save_and_enable_current_matrix, tty_menu_display,
> restore_desired_matrix and alike. The event loop is somewhere in
> tty_menu_activate IIRC.
Right.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 11:53:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 06:53:01 2025
Received: from localhost ([127.0.0.1]:50281 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdpa1-0005ch-EZ
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 06:53:01 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:59158)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tdpZy-0005cO-37
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 06:52:59 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1tdpZs-0003LS-Fp; Fri, 31 Jan 2025 06:52:52 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
mime-version; bh=Af+3NQr0r7yYRE4jsIXrCW9VJUsY9eQNClaB563Lb9o=; b=XN3XixStDGd1
DK6bX3oqVEkHIdwvKTRqyb46/m8/DgkFPtlu0ws8cAjKDJQzkBC8VUJEAbF3zgqCJMafQfXMuYKaX
nF4GDBqGpudk6bQszsTMITY7xQeCLzb6WhlcJIoY8GLHv1wlP7b+IB/gtCo5V4brIW9uWlme0Ebj6
X+Dvs3f0UYuSIsR1bNY2B5+ggxNU4ECWMkBniwE+vXlCAoO0SNxhoUzFGAChzjKpObjgKAyKfVzGp
SZwrxjMZ2TYo9o9US0N1wTSUEOGQJFhcAe06zH54vjmMuD/dXpaYowt5sRFzDjli9LH+D5+Ocq6Ip
/xI99w9lEkpwkZbgydOnIA==;
Date: Fri, 31 Jan 2025 13:52:49 +0200
Message-Id: <86seozi4j2.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN> (message from
martin rudalics on Fri, 31 Jan 2025 10:44:17 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<m24j1fl6yt.fsf@HIDDEN> <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Date: Fri, 31 Jan 2025 10:44:17 +0100
> Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
>
> > Just came to my mind that one could re-implemented tty menus in Lisp
> > using child frames.
>
> I have never looked into the menu bar drawing code. Does it use a
> painter's algorithm?
What's "a painter's algorithm"?
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 10:28:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 05:28:30 2025
Received: from localhost ([127.0.0.1]:50112 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdoGD-0001Ul-Uu
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:28:30 -0500
Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]:46488)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdoGB-0001UU-3c
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:28:28 -0500
Received: by mail-ej1-x636.google.com with SMTP id
a640c23a62f3a-a9e44654ae3so297380666b.1
for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 02:28:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738319300; x=1738924100; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=lM/kGB4JL4Ov00QQWXvRKa8omrZ3shYiCJVbDtyiVcI=;
b=Sf6ID3UG18eOpw/daYJFhp/P2Sa1uh2nXQaNzYnE+iJ+/9Wefwsg8SbrurK8bOgiUN
8Yoqd6JvFnM6M+bvDB5JTDXbgr10Hf3OD+1jHmpq96lLrSwivBxfsC9s4Ejju6lpI/h3
bJX/NVGaRdd8QAZYW8gU2+8j7ZFhP5smSqa5W+FhjO5rwrdK2DsXMFgLWqM7Dil8+7Ta
xWmVDMcuJMNAffeKucGUc/uZzHOBFS7EbeUaDZvYx082zxGZ1GMqpfgDTI5M11MXUCeK
jO9VTN5Em8egJewaHnUxxNJTgeAcKyW0FTuthyTtDF0Y/Sc9cqiHoD4fFS+b2pWocS+k
2sEQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738319300; x=1738924100;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=lM/kGB4JL4Ov00QQWXvRKa8omrZ3shYiCJVbDtyiVcI=;
b=N48e10u3mBZVObWBiJWSaFh7CJlZpfQ3w3H73+iYclYzA+7VVIZMkmjDcjNJvZqenf
fHNNAXoxkwhn/48nz0XP77JzkmgLDksS+vp1K+JN7tO1IE63NbW2/2MzH+ngT36ffhKu
bcV92PcaT5dGT4EC6PggxZaO5cFaDQQXwpV5hCyfKpbhK3xYP2kBwa0oFZjV8SJ28a3x
uA4t2M5mqU+JwiRPEjYQa7a7HFH5iUwYvZqfzL3MeFMKKdm54L0yQISHKN5xe7q/+9AQ
dxgoOJDWHxEHJjrquady5oTZpXjHclYAqY3BVzqmDl1YYg3CR3XxU9UF4gVoB8oK6yX5
9GQw==
X-Forwarded-Encrypted: i=1;
AJvYcCW9MB3bwuahPylmtDQoC9pUgzdBQrKnLUIOwjW6A0RDJpDR7TpTCXUpHFyHZ13pzJburAKh0w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx+sLSyL+rAhjzEdyvvRMyfbsmh0v1gz0DklrBzIMun+yCTC2JH
F6USkFEKp83EKXhG0GfIWOAVKw9/s1vDW8/I+6a1J2C9UQCgr3/4KUlx1A==
X-Gm-Gg: ASbGncuhukIz75raMN8hWqOYdPl+vJxdC335IiAWEUga5OEx7EUDN+RZDZA1Tx365np
3Q2iBTJNcC2W1OTMk2wASxkfW0FMF/MK0yua3GLkFaed8oTRsYqwhVamyTFHUD1wxjzy0zHwztp
zUS9RipA7p+4s5VPPcUSjzTNBOqzyCLAtJGjDapKCTEP1lYjdGqXC5zlGJT0wXQq7p4YNzVQn5J
QDZLXpHdvt71rl+RqNfCBDUJ0rG0ASuOCN4GSdLMVjn5NNyWXoaTROQ+CfwlDZd+aeFmc9FiX/N
pk/jBCvgXH1fo+W7gXd89gAxefrDAaoSCIo7ONc2cEcb7Gx+PSbKgGujdonCCedFX4I/LNpqRYX
qe2xdDQbZgdjdAl5LkrPhYr03
X-Google-Smtp-Source: AGHT+IH8UsW+gSWU0gDMLuJ9paO/ah+WblA0BlM2Fca1L8W88NMVW8PfK3DpHL87uT1d+9L48hd2kg==
X-Received: by 2002:a17:906:e218:b0:ab6:dd6b:2a3 with SMTP id
a640c23a62f3a-ab6dd6b0549mr587430966b.22.1738319300290;
Fri, 31 Jan 2025 02:28:20 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
[2003:e0:b709:7500:2d7f:5749:bbac:bd35])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e47d0f7fsm273798366b.56.2025.01.31.02.28.19
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 31 Jan 2025 02:28:19 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN> (martin rudalics's
message of "Fri, 31 Jan 2025 10:44:17 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN> <m24j1fl6yt.fsf@HIDDEN>
<eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
Date: Fri, 31 Jan 2025 11:28:19 +0100
Message-ID: <m2o6znjn0c.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> Just came to my mind that one could re-implemented tty menus in Lisp
>> using child frames.
>
> I have never looked into the menu bar drawing code. Does it use a
> painter's algorithm?
The menu bar itself, the stripe at the top of a frame is pretty special.
On GUIs without external, i.e. toolkit, menu bar, a window is used to
display it, on ttys not IIRC. Let's ignore that for a moment.
The menus themselves are drawn, simplifying, in these steps
1. Save away the frame's whole current matrix
2. Produce a desired matrix that contains the menu
3. Update the display. Maybe loop for highlighting item.
4. In the end, restore the display from the current matrix saved in the
first step.
That's save_and_enable_current_matrix, tty_menu_display,
restore_desired_matrix and alike. The event loop is somewhere in
tty_menu_activate IIRC.
I think we could save a lot of complexity with an implementation in
Lisp: Prepare a buffer displaying a menu keymap in a suitable form, with
help-echo, local-map properties and so on, show the buffer in a child
frame, enter an event loop or something and so on.
But it's just an idea I had when thinking of how easy tooltips were to
add in pure Lisp using child frames.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 10:05:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 05:05:05 2025
Received: from localhost ([127.0.0.1]:50072 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdntZ-0000Jw-6I
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:05:05 -0500
Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]:54726)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdntX-0000JF-2U
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:05:03 -0500
Received: by mail-ej1-x629.google.com with SMTP id
a640c23a62f3a-ab6f636d821so174218566b.1
for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 02:05:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738317897; x=1738922697; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=C4PSnN6xnCWWn75leX+HE95JEmwn8FkBYObwqNiD35c=;
b=nOX8k8mzk3HtM9oNbDlTsj9RUq4450ylOjfqjNJSbFWIbgQBXcrF7/OGqXFzkWvXB6
APbNkSkc+DweRQAfjXhpjpbxgpa3NFcLYZuAne07Of8CusqpsUp3lQasWP2v1vQMfKx/
vsgZoL4UEkio6gNvWzrZp3BGwVdJUTtNwMaOJ95rx2jD0HVH9Lbn4B5BGmBnC110okrl
cwFvRb/kxHNOlkWWFKgQi/Adv6ThoL5cqhR/3nZW7haj1QFPCMhfy9SLzcBBzwD55CgL
AOgc3DZySH7Be7o8CaSv4+97h6uw3a4IOX73s4byi5mxhMCsT5cwoTuwGCKaX5zDP7IL
ZOkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738317897; x=1738922697;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=C4PSnN6xnCWWn75leX+HE95JEmwn8FkBYObwqNiD35c=;
b=MsRAi/eC9Ma/grZJfNy8Pwr/c5shCyl7YfPGs75Rc8zFOSIFcacqbTg6zQH09hUAO4
OWYMokyXy41L49mMSMEaGqG+NQfSGQkscfvKjpQTRJfWY+Y1idULxtAQZqpFJ9SxtRsl
FS+uC5A59gFFMjKkSdFlpDYF9PZ42uNuI2cm7kv73EX2dvSIBO1C2UTsBkfuYlVTjyFW
PqLvCo4VLiZuj9UsRXdMGTKSu8ZeVuZkjzB1hjKlvhcYSqgtVA2hwN6gVrL1cL+7ln9U
L25IuwDowrrhP+gm9z/YHPYsIIMAd1WEPr85iuuFgjYxhHIB8+lFRG02sAaZ5yIvCD4W
5c0A==
X-Forwarded-Encrypted: i=1;
AJvYcCU01IJ8usVnps+jvIpvrbDVj7bfT8vgH7NFqO99dD4JiMYxqECkj+d0mTQkNKuenoRKkDpyXg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyMwO/9Tyq5DHDepmjd2NrxbVgHoRse0Yim3aw0l5xQSuwYJVv6
Gl9Wqehvr7uK1ns0KQKfa+nWLsxjd4s85snJVYzAqQaha1CJhtPfR/wONA==
X-Gm-Gg: ASbGncuhX355P7zTPfhtD4CBPHc9k4dZ+MZ7DYcjYKfgezZnORV9NoEPkfQc9/yu/4V
9jIw0tgTvkeA5Dz9B9CadW7JNVMKE3aIcyBnUQLFdURaYrJ6HuKGGUxUNcoZS5x+2rHMDlWu4xi
xfi3rHmD3R9NmyqQ+JZ9nL4IfyseZeuPfb9xvhyB6WWGaKjoQK3feyXPcFenny+dWMmPhASjXJF
EAkcGSpH5qLC5oJgCncesxBJzqGE5cFQQG5xDB7mImYpDuc3i18fzVkxQfZdLSGm6Rju5N7hGdh
KidcvpMrOITZesrj0ESfAOymP24Qib+RhRVB1lWi6ovs9fPLXrNSn23pkKKpLOceS2XUoCFCJG7
tr7bReAZX5s0EhshVDV+jngsS
X-Google-Smtp-Source: AGHT+IFWBtnOlZagy+XKT+jcuEpgCTPWdZQugPnkmHpLQ1ViD/CuNlDwI3CRd3LwQlwiIwsgZCSL/A==
X-Received: by 2002:a17:907:7f90:b0:aa6:9461:a186 with SMTP id
a640c23a62f3a-ab6cfda43e1mr1035067166b.46.1738317896432;
Fri, 31 Jan 2025 02:04:56 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
[2003:e0:b709:7500:2d7f:5749:bbac:bd35])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e47a8485sm266824066b.9.2025.01.31.02.04.55
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 31 Jan 2025 02:04:56 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> (martin rudalics's
message of "Fri, 31 Jan 2025 10:44:09 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
<9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
Date: Fri, 31 Jan 2025 11:04:55 +0100
Message-ID: <m2seozjo3c.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> Could you make sub-menus display and behave more like on a GUI? For
>> example, when I choose Tools -> Spell from the menu bar, the Spell menu
>> replaces the Tools menu on the screen. On a GUI it would display on top
>> of the parent and one could navigate back to the parent with the mouse.
>
> That would be nice but cascading menus on a tty is non-trivial - there
> are already some some very clever hacks to make sure that each menu is
> always drawn in its containing frame. BTW, GTK builds can even enlarge
> the Emacs frame when the menubar gets longer. Note also that GUI builds
> without toolkit cannot cascade menus either.
>
>> Similarly for context menus.
>
> Same difficulties - one might have to move the menu to fit it into its
> frame. Not that it cannot be done but on a GUI context menus (or a
> tooltip) can be easily drawn outside their owning frame when they get
> too large.
>
>> Also the first line of the menu "Spell >" looks weird.
>
> In what sense?
>
>> And keyboard navigation back from a sub-menu to its parent would be
>> nice.
>
> Hmm... via backspace?
I take everything back. I think it would be much much better to do that
all in Lisp.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 10:02:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 05:02:12 2025
Received: from localhost ([127.0.0.1]:50067 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdnqm-0000E2-7f
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:02:12 -0500
Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:52327)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdnqj-0000De-Nu
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:02:10 -0500
Received: by mail-wr1-x435.google.com with SMTP id
ffacd0b85a97d-3862ca8e0bbso1504275f8f.0
for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 02:02:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738317723; x=1738922523; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=F9Fwx/Ga/pjbL6AKhKelvsnbyCZiKXtzLZ6ieKmTPZo=;
b=BCCoySpliQwqru/qU5DRSwL82JjthKVUqHmDyAKxuOTau0hXyg3D0prOLbHDu6Iovl
fG2DIvEnUPLAYeO6B4AqBqkwv9Cf6JiPkAp7oKtXq/GT68wN/KHT/OPbDknqS/yKX6X6
pcz1bJ+cKePcLOiCKo89arXDHgWP7OaCiKV4JNcgQV6tX/6OMjxJ9iAzFXavTPA860v6
y5/FxMsDboiey1jDIESNlx1c+YhgYott0ZNqDhZ+ACOT/OGUOQSnOZvYzkt902B8hpbo
keFhoUO0NKP741DMvrAlq9Na9ont3+NTTzsgkebPh0BMvsQ7Zfxm/GLdTdD1yha1e7B1
QYQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738317723; x=1738922523;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=F9Fwx/Ga/pjbL6AKhKelvsnbyCZiKXtzLZ6ieKmTPZo=;
b=hnnC5lFuFEYNjhXsK5VIye4B5/myReM98yvqwwJQJ/SCoXlYkuDmSqe07ZmyN3za6/
uwvknFnotOzlThAid71MunLZluli63cPEiHtxApGRVO1xw9lfooyiLuNQEH4yEnlAqyf
jTKU64RRdjfCsTqYqBf21/vlE4EQ2et/6v1mpDYHN9LLaeqWftbGRGz+q8EGrW/js7YB
V9q3A0ioQja/mFb3qgtvar1XY11SUE6Lq0jjv85ZKhtCUSo5yFyy9h2vq77o8pYM4nO/
tNThs6Nhi0IKGj8XkF5RnhBhPoKq4uTbBC2ENCHDwOP2JS5NDrTfMeFZ81zYXYzzfhi4
WhOw==
X-Forwarded-Encrypted: i=1;
AJvYcCUEpDnopSQtFCAPki+4e87qWZue4SNAspf7bqzcWMcnx3rs+QC35s4M9ok9gHhUbkQxX2W+YA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzyEU/SO+sCr7yccd4iEvq39NVWP3zi3qGGhncnXaWq+gMlgXns
IZjVA5+SZDqCTQmn3HqVt/m3sSw/ftuaZebOtscw8zbbr95n07+btEuQZQ==
X-Gm-Gg: ASbGncvTFqf3sQYQi2LQOifNuwVqc8F+nAfVGM3SMWptPYo4S6MBQAvP+IFktJ0qnT5
PqTiWJIYN2kJZoaC5LpeZEjclE+MHLkJqof9eUqcQJhwIWjEat7QneZ6xhewfE3ZDGg60mC08sk
tncVvYjX+wexaOn/6MAR8zfWsSGWnF6hJh/wS6LlplsBKYbZ6HG9Z2sn9T+how6GBXby4Ita95f
5kYNp4/Q8QvjyernTc+KkHEqOJck0Z9pmg8Tzoc/+si8uqBCDzKNjpAmQr8iLB6pd/SEYbpIpNc
nR1CNt/BZY6AMxgpM3x7ubTEyliE3VZc4JhNl9c+HUUvRN9zkFKbEo6CYK2UZhT7jeOJHogAGSQ
7pXUOXVfuUaD68SyRf4my0a+/
X-Google-Smtp-Source: AGHT+IGRcUBboGo4dvgVeMUFz2UnROEGse85zZRKbnONxt6FRJRs3dA8gN826JysdgJpK+XfVS0eQQ==
X-Received: by 2002:a5d:6da8:0:b0:38c:5d42:1501 with SMTP id
ffacd0b85a97d-38c5d4217eemr5236569f8f.9.1738317722913;
Fri, 31 Jan 2025 02:02:02 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
[2003:e0:b709:7500:2d7f:5749:bbac:bd35])
by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-ab6e47a7fd9sm268461066b.34.2025.01.31.02.02.02
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 31 Jan 2025 02:02:02 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <3b83f1e5-1f42-42b5-9dbf-db74a5503456@HIDDEN> (martin rudalics's
message of "Fri, 31 Jan 2025 10:43:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m2jzackufc.fsf@HIDDEN>
<3b83f1e5-1f42-42b5-9dbf-db74a5503456@HIDDEN>
Date: Fri, 31 Jan 2025 11:02:01 +0100
Message-ID: <m2zfj7jo86.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> There is little chance that I can change how the borders are drawn, I'm
>> afraid. I started with trying to give tty frames a border_width, and
>> failed spectacularly. It was so bad that I git reset --hard in a rage,
>> which is a really rare event.
>
> What were the problems?
TTY frames not having borders seems to be an implicit assumption
"everywhere", frame matrix sub-allocation, mouse, menus, you name it.
That was simply too much for me after hours of trying. Maybe someone
else with more patience could try again.
>>> Looks good. But _where_ on earth (that is, in the code) do you that and
>>> how is it related to the width of the internal border?
>>
>> See copy_child_glyphs.
> [...]
>> The code is not related to an internal border, and I'm relatively sure
>> tty frames don't have one right now. At least as far as redisplay is
>> concerned, don't know about the frame parameters/values. It's like for
>> border_width.
>
> I see. Your approach is simple but relies on the fact that you draw
> frames using a painter's algorithm. The decoration of a frame above (in
> z-order) obscures the contents (and maybe also decorations) of the
> frames beneath.
Right. Simple. dumb, good :-)
> Basically, what you do is to draw an outer border.
Yes, I'm playing the window manager.
> For mouse-resizing frames we can easily expose that outer border to
> Elisp. But the problem is with the coordinates. An outer border should
> belong to its frame and not the parent. Clicking an outer border with
> the mouse should activate its frame and not the parent. We can fix
> these as well but it will be a bit contrived.
No comparison with introducing borders for tty frames :-).
>>> One bug I noted now is the following. Do C-l and M-l and drag the
>>> yellow and orange frames somehow as in before.png with the cursor in the
>>> yellow frame right before the left edge of the orange frame. Do C-f -
>>> the cursor appears on top of the left edge of the orange frame as in
>>> middle.png. Another C-f moves it into the orange frame as in
>>> after.png.
>
> Note that this is a bug in the cursor setting method. I'm not sure
> whether it's been there ever since or was introduced by your recent
> changes. In either case, please have a look. You don't need my changes
> to reproduce it but it's much easier when you can drag child frames
> around.
I'll take a look, need to find some time.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:44:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:44:29 2025
Received: from localhost ([127.0.0.1]:50032 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdnZd-0007j3-Bh
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:29 -0500
Received: from mout.gmx.net ([212.227.17.22]:56835)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnZb-0007ii-GG
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:28 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738316659; x=1738921459; i=rudalics@HIDDEN;
bh=OSHuGhseV55F12/1QqJhLASXq1TFCxGJtj/dJTGa2Z8=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=BqJW3spgnCWJj/YtiCMKwgd66fQvcB214/navj3HxnfQ9fI92JQ7hKbcbXDdu3lT
QTIeUPxLDE5ifIeCDUlJ/Xr3/5PS0W5xH64XT2S+Usv5RK1JJX4Ii3MNsbwgWrYt+
LpcVh9kJjjPgB7kcFYKuIZRdcqNp/6kkmXpLrKtOda1mHQVOLjNLilSa7X8uEsui/
+njmsYXApzHS2LSEQ5yKT/2QK/J5N+yGD0WKiSzhl3kN6FXlLEVWs2ZVZHYTS7f99
cR1dt82x0ZiuiTQzC+5hKj6yjS10TH2rGcX0SMOWr9rpAHIMWAwhNHMEOjRYlfn0l
jwOW2/i969r5BgcWOw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MkYbu-1tAXca36Vi-00lBOX; Fri, 31
Jan 2025 10:44:18 +0100
Message-ID: <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
Date: Fri, 31 Jan 2025 10:44:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
<m24j1fl6yt.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m24j1fl6yt.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:1UUJqLG7JtGYqUCjjyIj7AKi/maOb3wdDJxfD/HICa52KdgRovN
7f4sBoB/k4JRSdmAV5Xc2WZ5O1X0EmIRVJWNxtLHYq1cgyEluHsYOTheyz3lqs2bVdmkdG+
ExIV7HFpGWKvzEsa6NEW4r4byKZq1ZP6G2Lfr+oc2wWHW3j7FsJ4Or6xt7OEDmnfAT0HRn/
pKj6m9VQ7/aJC0U/rG9Yg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:0es37IlEfaE=;OS3N87pyRSp/vXGetGv1AdUI0Xv
ZApFqHcKfVdF8Deo+UJKmFdNerVjTCpLZoQO+2YGtdVfhI33rFpZ5ZBBJ9+9s5QTQhfzrjP1D
UNc8jinxgmtAN4FiZL5jRmnIOktkerjfVWQZdATqTkw9HJ4Ad5z9+hGE6gK+Ki/onJYb/jfEe
3fHey5tZ31whEPS0223tn3l2ZAmK9+67Ph3vyyzTEK2iCKW3tsqXD2D5yLDPGB6v/5ErH8YGJ
JUM5GGk/CoN+IUaZ6HTZiAukz7RNlblyk7juDBg/Bms/vO2/esE9KSy0SY00oMsJSY5DzTlXw
eoRuDYNI5CAA8JE93qJcCSVMKLuaEsLUsvkHon6zReYxFSBvNix6P6URivREdTTqmKhqMjzrb
wwqrhLHLtwxD+YucpEIp8x5wCFcTJOFngSjbgMOC0g8a4nlx0jt/Cs5753dnCAPmYCpwzSC33
lI5pQbCaC5r9/pewIvKnjp0wz+LhvD0M1Pmnhl7TfG3N4wOk9TWCa8UMBJv1T8aLzJg+BKFB0
EIlExIgazQTcz2znKly0xausKKqFRhJ+NshEQiGclXmeBQBmuWUV6X6hyn5dt6HIwquWAOCV0
SblxhYzAR6sSh6bj11a5vPz5DqQg/qrNxzU6YzzKkgrNyss6bLI4ldb0ClarOcYt5BXctZwvf
i9cR9nWSVYP+z1FerolOeTQeM1077xi6PHTGoLT+sAzRI3V8LUu52tQmuw3DB3G+uRLMuyqE+
5grQjadpS0wp2Z5FuiYO7ln9wrom32VNtACnJ8EUTTGfT8TGihcmBm7lBfUBkqvf78bShXynE
zFteVS7+vUcZuxoiO6pUrKbin1kQwz1KSvzSTX6Djl8ahPKCrKGtTSiSotben3CpzU03c7Ct6
m9Rstu71TS3FSWXCfnyB+gJGDkypifWjla9VrMlrUIvbMR7ixVyinvZ1IO6bOrLBwX7YpJfPb
uvm0UT2duekXiWk1Sq5b49M4AmFmF7xXnA7fmPZs5re4Lov+wnis1nteZ+xhBE6oV5xarq6Ob
LhHI/ZPaSBpgF+ziOvuFDmTJ5XOWh8fcM0PNl+R8gByhNGpN4djhzr+SA6cdOBiJme2ngKLde
H4fb0Kyx36HAhPCZ1eMSaYXSxuIiU55KEHsSQ1oVVXDrLB5QaXUwiD3f4ax3e1KVKHsV4143T
wItHEQWqtPjdlqC/iJIDSKSBfFlmBmG3cgea9NBJjXCv9wN8lO9re7hA9BRgrKUTiu/xTXFBa
qvZWuGd09Gkes+10WxMWKpMCU6ynLx6RMukFQ+apcTIVBhLvIv/xyfxQ6cjXoVuaHlIqPyVrh
JKcd0Y/o0FqzYNCjD1BgfNpUAoe4xJ2uZqPrIxDtCrwvzs=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
> Just came to my mind that one could re-implemented tty menus in Lisp
> using child frames.
I have never looked into the menu bar drawing code. Does it use a
painter's algorithm?
martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:44:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:44:19 2025
Received: from localhost ([127.0.0.1]:50029 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdnZS-0007iX-T0
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:19 -0500
Received: from mout.gmx.net ([212.227.17.21]:50171)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnZR-0007iI-4W
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:17 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738316650; x=1738921450; i=rudalics@HIDDEN;
bh=7NprMe+nQi0qv1jo2wexNhy8ucMw17cb9v/lnkFUHV8=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=Q2HpsHE8XOPWHJq4SJEnhGr8c/DgkhvCql+tAJ+49xgpLPkWlrzLz0716YbR70BU
MYECgYN9ZUMVzjRTnHUq/DvGZUWr5wRiSb/G6e5RPZEc1WT2RvL5aclJUr7wstK8f
zWSKjENXw+qnRs5b+s24lHnSjuLb/9jdVJgbXWeUptu96Cwq2wXqrbnoxWmH45UXK
M5s2ssyzODULadfRkp/gfpIhfZPdCs6K4maGMTF9d9DWTxIjAyZT1od0maKwr7S9o
g2cGkwkQJCK3uVY9AelYgG6pRnHhHUEDS1uueLbhL6PdSwjSP6rj9Euc+64fx8xQ+
mjCtfzbJNuQViAaVwA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1Mj8qj-1szE1n2Wo9-00jRwD; Fri, 31
Jan 2025 10:44:10 +0100
Message-ID: <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
Date: Fri, 31 Jan 2025 10:44:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m28qqrlkyg.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:xGr4xmSQYxXp6csqdYYHWXRl8/jZz0P0F8DrqYn8af5o2Kkr5PP
I8hyGozpYjLDJBgMqRApQkSwCwnKG52ZeKbapk4S+w4I2UrqfkZex9uBf/7PuDoISf/F5U/
4zgqV+mpZNqZmfYszuHCg6RfhvhW6XW6w1sK4FQp7oUP4X/DEFkBXPhK1svE/GPn03VrnNS
iXVsAN96hMlCYVYs4ua6Q==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:CpEXbzKPvM8=;PB+h2aEZhYPal04z1ArUI9g6m5x
/mAZyORlGARxdCs0WGHknawhdb1DC4YeS1miK0mUR49IrPL5F+fhq1IepRwr8i01O7b8UvXYo
3hJjAdJsTXAZPQNd1babUfl7nLfUCIxd6vBP19pAtc1B984JfVmOrLvC8QjDTT88X2w9wkSQb
moVoZ2ggcuthNkl9/bEZMYkYoxvUpIE2wKkqY3os+dcjkO49Qck+LL8YWk4ONYg7h9qy4HjaD
RZe0U6p9MiKv5Q/bkcG/+xK1jqxJVUmU60Z37dhK/mCVq6r5uP4SM6FjTK0JRCf7leD7n1yIA
tZDVV4Vr4szAGCT7RZgtD/9yYzjo8huM4MKVLmAcxBX/BFWxM7+hZHMItOLv6+4aqX3q4ZYmp
LfKffVqBoDbT2duTlTVhczjl+Ay1S2E7z+e49n/FA9o7RaeWNYxZvaJeumpf7Xc8JTqzlANic
mgM8E4/RJDuPfxgRgE7P2Q8Llj6arauI4vEKJdV/FjTkiwlo759k90E7Hocxb/YzgHQmk5aNB
eu8Suq+Y3bo1ReFy3dtMI0yPJQNx6/JKCcbJ0xxpE8OPOnHFjtmj6Rg2XMASYCLrUzRs7r3TW
i5ORKySXyZ+nzXIwV5JW5FZE36ZzUPWcAfjNYsIf1TfAiYsKqbH4D80s9d4PgyWoVOTu5u8lY
EhI+IvjwJjZFeKx3/9lrem8oEZzY/XXM0OW/dYxM0NUsKWfNnYoQJR5Z8bja4/FuwmkfY6oOw
eNGWbh1rTejWQhVfVHA8CfEEuIAdegFw0sUKE8lvIc8vWzXokta6gtn1TnedqLR5MFH5ADRq0
Yqg8/bDk56cG5aJ4h1Qy6HFRzHBB39F7kmqdzAL2HiEq8T3PX/PxGF9O3pCLzjBXfMuYOov9f
pPfsAeEtiHuwYfBLSpocnXfRrnJw/WaMr4d+g+cOm8R8DqzuC2npEECFTNuRKCZyWLb6OrdyS
/6IIaUQmHyTl0Hv1eMjYBfACtxF+BiGh22ae57Uiw0Rz5+TFAYBn0C4RHo1ygvOKm67u3WBHc
7iIqZTvGUZcTuOgrxU4/aaHguYqC/tp8RDdMj5gFd7jEzJTmTruwuhhRLIdKqhRHzSqPuYUwB
uFmsuigRTx1i2veT/7d/4A0lHx7yG18eBC/Qf3ufZ7ub90W21TAWkViw7PSmQJD+iOq6Jhf09
kC0Pugd+EU1Dl9QxZFn1salu9Cv2hz+IURICsw1q8DeqL1KLEQnl76iwGyvL4yepIpcU/AZCS
ZJ3RqS40t1L9/rLGNRl65eEkiG66YmHNZgCM+WimhdQDyhKucl+hBpem/CxlALSCpoDSruDRz
0Xl8U6y8sDbq7EDEPZU3Q+XtB2W+a4nppBcTOspRIPtgzw=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
> Could you make sub-menus display and behave more like on a GUI? For
> example, when I choose Tools -> Spell from the menu bar, the Spell menu
> replaces the Tools menu on the screen. On a GUI it would display on top
> of the parent and one could navigate back to the parent with the mouse.
That would be nice but cascading menus on a tty is non-trivial - there
are already some some very clever hacks to make sure that each menu is
always drawn in its containing frame. BTW, GTK builds can even enlarge
the Emacs frame when the menubar gets longer. Note also that GUI builds
without toolkit cannot cascade menus either.
> Similarly for context menus.
Same difficulties - one might have to move the menu to fit it into its
frame. Not that it cannot be done but on a GUI context menus (or a
tooltip) can be easily drawn outside their owning frame when they get
too large.
> Also the first line of the menu "Spell >" looks weird.
In what sense?
> And keyboard navigation back from a sub-menu to its parent would be
> nice.
Hmm... via backspace?
> Also, moving child frames is pretty nice too!
In particular when debugging child frame behavior.
martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:43:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:43:26 2025
Received: from localhost ([127.0.0.1]:50024 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdnYc-0007gU-9l
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:26 -0500
Received: from mout.gmx.net ([212.227.17.22]:42607)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnYa-0007gE-3l
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:24 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738316594; x=1738921394; i=rudalics@HIDDEN;
bh=P4k0FyLDuGemityU4p1SG9qSoOPdLzJYY7Y+C4BuySA=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=kQx+12wCuSrhTFMcJ1JaMm5x7p2vIxeXAW2pUv22WfNBLeewx8R8Rs0mOZ/6aQQF
7VpJCku57wqnmUgZPfuLJx/F+V7RDacpMzMRXm09c3RbBq8w8qYrWXkqE/3A1b0F0
qLsh3K3bAAtQ5jLp82VgiQwimVEgWFpxxhT6KPPoHiKaMWeSHufP3olwsc94A1gPN
G8xzdl58btXTHxKiLJ8lKlpCvtXYNuLc4SGaqVBY868jP337acvJ13jo9zmrC13Fl
x2Kpd5kuRTOu0AdYdn+SonAFZtxAfLko3Ql48rNcCgggodTPpnqpN0QEzJMF/LHHi
kNZyaJh+7xkwcPS/cA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MCKBm-1tnBCq2F86-005Duf; Fri, 31
Jan 2025 10:43:14 +0100
Message-ID: <acc56a39-c247-4d92-8428-e56a5e9fea4a@HIDDEN>
Date: Fri, 31 Jan 2025 10:43:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2cyg4kou2.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2cyg4kou2.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:RbQWI6/bxvKIWlv7x0YKEpXYAbJ8+CzXeNp1C8vrR9EZCpkFCN7
/LMmVmMnJTjeEz7EWUkDrkGaetHyeVhknvp18RKNWTalIA96khnWH9ioXHbGgZgGAadLuZk
v9hwu45ZhZvG74I5vbWEq4iiq4bFMFKE6PzrZHFLQ+SAU33VaQosAEhywL6KRl8jx6BZ8zw
vTblg7KJCOe9ov5nW/a0g==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:FrplHoOwxn0=;yPzFbHm3Fdmt9+guhhn0bsbv9GR
/4jP0O73GnLlbRqfiyS4SCNgPNxuJoS02d57AdET/1HnAfrIsxZ3tANALjr2N4MC7Mcdw4yeI
4cJYqCukzdKzg2ulaPgiEZDJJ0K7+4ZAmG9QK/r6/TZDF/ArY7ED2C8f7/tjM8pTfhnmQbn2N
oJD3uzSy7TGqXrHMhsoULp8ja1Y6HBg1Xd/o/avmYDK8ZItP39BlecFgE6m+3XnzLggLA1ZTI
OJwyhJ8kuXNcgTAt0PSgEG3vXjQqZlaTCpJcsf4jrPa0/Cz7yd+oG6zMTLwYkTd/WX9IZ7d3p
h6txHtrPo0jiq/NJFqyq/1Hwqs/I6y/wxJJK4hKuT3xdf6Qt7XFqOOJBUrBNIHUjF1bKNtPF6
2+WXv5CneMEhIMHEpPeb6C0saAW7VCZ8M3UaN3hBVun/DEKeDowvkgnS03C3eDUS7T3gd8MR1
EZ64rC6qkNZgePfs/RcALzNsvk+p7iNH6C+wZMZm6o1dBRCa7ABxhDB1J2CGmdPbIvxzDbg0e
L9ThXVvXUQij4Y9zjg0TNsB8WiUrFmvAA3OAhBq52G+wVOTXVC6aK/wMSqsgbytm/NKntEBL/
zlWvry4P6ZPsOgOy35mhxqzVUmv/g2Ut10FkEUDzdb0WRm+ZA5DJuGJn/otgaIaodqKYaF+FZ
gXlujC8GyhN0BQVmtXHXN26DHdBJDHPPKOgJAcYjcyiOY+C8W2aYIPzCNP23KrUcggDr0+FxG
dQ/tdebwGt71lJN/1RMrz5UVj08KUDBvVgegx6pT+Ixk5MvRQZkxINM1Cfw1hDvvIY8XhCgxL
YXgTKXjSVc2nOhX4A43/PQhn/GfEC6tKSXbE+1eRJvbYpvnB8HFds2Q1Lb2GP8JLtYWiz+JEX
kJHgyCwvIykGU1lqcbF8aI4Wwgdg+h25NRUx8cAKH28JEdnZMX+lEGJW3rCbqJ+bV5lgfayEj
Yt69FsCXicGdDxQ6kVkFZNx/HMMxf2tXpT7Pk5mlxTP1oyxQNSX2fHIv5ErSQ+Q44WQH7UooI
21Pp0AfPaq31tR9ECKLTSW+OLYWs/rAqpWkJQrR5yD8vd9AmboQm9z+2TR2EClX8BVAXWunDR
twaJ9Y2TPAXsvOZTxO5TnU4uhbqrNR42rbezhUKMt1aAk003BCbWBWvYspqYwiY1s1AtCuWxS
OuQ3rN/B+iMyOa9ASm/o955Pya8MXdzwaxcZo0sL2MNPvFtUr06SK+Fp/QWomhc9YU7n/+yEa
Z1J+N7Q5xYHcuWbCEwMmR0BCGP6c/lOHwOEgieGWKVKUR4oLFEvv3nTR0pJNHXa7Dzd1Uth7j
jbVRZcWo1W7yYBRn2mrM3lrK8eNzJNm6iMTvqsSYFJ00bY=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
>> I attach my latest achievements both in the menu bar and mouse drag
>> child frame departments.
>
> Please find a patch attached that makes it build without window-system,
> which also shows that internal borders are new in the tty world.
Thanks. I tried my recent changes with a GTK build only so I can check
immediately whether they negatively affect the behavior on the GUI.
martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:43:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:43:13 2025
Received: from localhost ([127.0.0.1]:50021 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdnYO-0007g0-QT
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:13 -0500
Received: from mout.gmx.net ([212.227.17.20]:34793)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnYM-0007fh-OU
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:11 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738316583; x=1738921383; i=rudalics@HIDDEN;
bh=nNBF/JvD5K4rDIDp5rVWb6HeVtibyk5DzVnIrWHmHxk=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=dZb+i3Ti/KLbJiZBsHmQO/VoMezQ3NE3pWmi9WkfM8iUb9ybT8O8wzM85A6yB5Wy
RhEkzOdAqyk/i1eubbz/jZpw795/6aq/LnlmWBdOlNkTUCwmuHvsTkrlF8Mko25Un
4tkm4Q4xRb3d1xrEtjcQ1vLfNHKA6q983AiwBK+kqwu6e+ozF8dIKYEko3sMikFpT
qkdc5lOjGikB5cMQcyh+6wK1Ik9cil6QdyYdWm5hlG19LeBSxZyD5Csw1LaYEpDLt
g+fEjzL2ItTdOzWwWF/tI0wm/y+Ynqkq4UhJJVmWQv5oHUb4kPdNTM5qTmiTaVRLv
023VxdCvflyleDaxkA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MJVHU-1ttG2R1I08-00LJCi; Fri, 31
Jan 2025 10:43:03 +0100
Message-ID: <3b83f1e5-1f42-42b5-9dbf-db74a5503456@HIDDEN>
Date: Fri, 31 Jan 2025 10:43:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2jzackufc.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2jzackufc.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:q4kgKyo31cVn4egArAWHBw89pdViThuC8kMj18GpX0pSm6rDsbZ
HA9lDPGDwFCns8mvHoUAG872nsQFwndWk5zGx+BeM+YvPZjlFp40uX49OO0imEKcWhLlzIn
hixbFQ0BQ+SJIo85BTWNtaB0r3qAxBA5gj077hJZcVBR040eYPuYHF8dROMuhqHtYYWWBOW
ToYlnk0dvAt+wRZHNvkhw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:4gXaQqFGSKE=;wDIVz9RL2OzxclXfoz83bECE2cs
ziqIc2oFmdpTfFu9I87ZVhFlACfKysUQW0IBqIu7KjCGBZh8LMjtpwka56VfKx3OCp9C+TsfX
A6ff9CoZi25I4xtArE+nnzE0abOIsPvrSJRZuTwngC38N7GIx9vQyt4V0G+OI0OrbkaDSpWq7
rJrPvJNCD+WKM3h1KOuX1AAk2rJPytGuDxV8CVxMslN3uS8RO5Gqwkivfp0N7FAxoxAq1Vk3C
54N5Z1a4+NCcqLoRmH7UylEG243TupR2mYnpxQrCTAZqT/ulx9044FeTp9vm9doq5D0b0O4yX
nQ3yahRXicpX8plBcuOqdJU728S76hgmYd8OlTg53rLp4tOOtWFA9rAVyOrMx19+aNsYBwm6l
vJAlA6VbHjWb84mI1+YxAqVQPI+G3FkU3Dx0eCUQ+NE5J2drte9oGl4HDJkdtX+EE+SR+l0ZL
BWeu7aJL2VjRmyozkp6BI7Pr4igfHdF4G6nRk8ngBJsymPLojDEaed50iCI32bxFGTPTaH3f9
kPJInVVD7VjhPCbYd3HBtuNUGhRzdYUxuLGPfDrvggVNmqLBkFlSNoNGXnoj8gqzwBPtbmoS/
fIkIwZBHGTX0tFsvZ+pRViTqeLEDLRiZp9GianSVhSJTf9jcmsq8P46T3WGwqPiG/eSUb8+3I
V/8WTiQpzy6/GrnxUdNcBnrwZVJhjhS3cd7TA1CvdH6ksFm5iDMPZnT8pP9EKAHvuANCbvtpW
LbrtDp5k7/EuEBXk8x0mRBgeDjP7oau+mmFGO8nUcRuSH5hUEYXrXGXNw4pI63I+J/FvoMqZj
5hYolykH7cM7ZlD1xN33pbBNgzxGZjO6eRTw2oMG25K4UZ5aaz4ii+FADbHF2KjCGRUr39yto
tQrKmleyibVOlsOOJ55Yocjs/RXV3tosHUsGVVwd5kht7Dt2K9/ZZSJHJ7lmN8eBk/AdCaqN/
hcsLR62GNYDtVWjX+0/Fh/pMMUGt8IU+NgjTIIgFYAc2gbQy+38bpZyXikL3rPDcVnXjRpNAI
uPHF08CJvk6akDDMjfuRoaYIhw7pPYmzhrlpGfT1nNuwdc9VB5WHGUVP1cQkrwYgkDr9OZcIG
sSGaUY7Jm4JrgafB1OtTDoc+8eMWA8DzIMl8bFAMZjqE04RIqK7wA8PYA+k4JSISYqPgeMZps
t9xDCZjaxNtjQn6LKXFJspSgDdlpEi9gWUgtTeT62Nl7XgodhNRX/on6l7yfZ5YaxrnA51W8s
nMHRfxZkiK+uuEKmHWX0O56bPyGUX1x+XFI6ERUmOWH4Aa+ZnPdPn+ZScTmrXui5aOMn3Y0nQ
pgVd83L8HCS6alHz7jyZa4+vyIy6fI3CSutZwCi9jacyWs=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
> There is little chance that I can change how the borders are drawn, I'm
> afraid. I started with trying to give tty frames a border_width, and
> failed spectacularly. It was so bad that I git reset --hard in a rage,
> which is a really rare event.
What were the problems?
>> Looks good. But _where_ on earth (that is, in the code) do you that and
>> how is it related to the width of the internal border?
>
> See copy_child_glyphs.
[...]
> The code is not related to an internal border, and I'm relatively sure
> tty frames don't have one right now. At least as far as redisplay is
> concerned, don't know about the frame parameters/values. It's like for
> border_width.
I see. Your approach is simple but relies on the fact that you draw
frames using a painter's algorithm. The decoration of a frame above (in
z-order) obscures the contents (and maybe also decorations) of the
frames beneath.
Basically, what you do is to draw an outer border. For mouse-resizing
frames we can easily expose that outer border to Elisp. But the problem
is with the coordinates. An outer border should belong to its frame and
not the parent. Clicking an outer border with the mouse should activate
its frame and not the parent. We can fix these as well but it will be a
bit contrived.
>> One bug I noted now is the following. Do C-l and M-l and drag the
>> yellow and orange frames somehow as in before.png with the cursor in the
>> yellow frame right before the left edge of the orange frame. Do C-f -
>> the cursor appears on top of the left edge of the orange frame as in
>> middle.png. Another C-f moves it into the orange frame as in
>> after.png.
Note that this is a bug in the cursor setting method. I'm not sure
whether it's been there ever since or was introduced by your recent
changes. In either case, please have a look. You don't need my changes
to reproduce it but it's much easier when you can drag child frames
around.
martin
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 08:32:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 03:32:11 2025
Received: from localhost ([127.0.0.1]:49858 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdmRf-00043k-1C
for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 03:32:11 -0500
Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]:54555)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdmRX-00042p-PS
for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 03:32:04 -0500
Received: by mail-ed1-x532.google.com with SMTP id
4fb4d7f45d1cf-5dc10fe4e62so3219445a12.1
for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 00:32:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738312317; x=1738917117; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=PlN+4lLvCZ8EaPlw0XsePn/hGvlCNxbaOIV+WwRbKPY=;
b=dG1673fNZUGV9mK5ptsJhSWcG72UwdeQa0XLUWnmDrrT0+lezQk9QO0et5iETnSA5H
DOTXe+A7jw5Te8VOUj65Z1NM4guqKIR+YuWNGDw3YudoPXH8V3tnwISZziEy5BQrDb14
Rj0IpbDJlibVTU4iGupa9xySaAHSTI8jEQ6GV96gKfTtrYkqi+YJEBSDq7bqdTeCnp9U
rSP7dTxo+2I4ZbF/gPuI1oXO9uMlwzDX7EfkDiVRy38GkdNWkn8oR7Zsq1QlUgrOWTWb
oMrDqTpGjA8TkPibm/CbvF4WHtnUh6NCu1t0Jd7PpLspokcNfvITKZ2Y9JX8SkvZrgJ2
xF0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738312317; x=1738917117;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
:to:cc:subject:date:message-id:reply-to;
bh=PlN+4lLvCZ8EaPlw0XsePn/hGvlCNxbaOIV+WwRbKPY=;
b=USdpk1Hq07+NTGEDBh8gA6ZwR7wuohHZiYiZ1GZpsOFDrP0fBxN3/CNANXN/+nx6yn
i663gaMlNWr15cIh6YGQ2Wn7MBwGSR8SnVlV6OQyfC/mpx48IvVW5GxVIQI9Ws1TxwxT
eUGgoOTMeV3CRleknEwgarJoxA3ZUdTY4TZvmJ3U0Yrcn59XqFTBSJrqZ8ZSarGEolwR
hmMbFwI8mJHCT0PCRpehHRy9THtN/XFh/1DFwyfo4RCAp6SXRyVVz+pfWW67gVOmis/m
fywCkbc734WN0RhIY1jqqBqb5GiBbvpxUjcxQAMG38Lz9tCHmc5mzNheUD2jgUnuzHbZ
oSxw==
X-Forwarded-Encrypted: i=1;
AJvYcCUUqa6K1Uf7F9qZ28DOnFrhMlm0WJXSeKYyMjYTDpbvppmrTDcLyF8XSGU7PgBiZtFL+YXm9g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx+GMviCSzCPdBkIKwrA7D781vSkGSvKBMxMuRwYf8ByEUrNXJR
iawgWjT3hcWvugNU7TVXc0jp3IzzqD0wkzUZy6TVQ7kzjIfKF+NzafZegQ==
X-Gm-Gg: ASbGncs9oygnpBW6dJNO5PwgQCuDTeWPqcV4ux37vWs2qXvTcZrAW4axq0tcGRJEKKt
LbBOKBsij4htZImqfMplh4fs3F3+oeHVzd959GOFhEXJesV1YCHsotUUGpY9rEgNKM0Yrx9P5au
ThsfxSHQrHrtSaoJu7Mxg5+0XAxk/n4Y1AUKTc/zey36qCUOmtuz/dOHIMWGYB45lauMEkjJVO/
JG+FUbB/jAn0eprd3oMC09qnoDWcHclD+wb8S74VigYYCDlhI/JdlD3Bg0I/y5/GEBG70yn/c01
LZhaWI4v+s3gywHo6lBRNInM6BU3ll+6Qd7h/m3T5QcLWOLGXzPaSWzNXPX9+cXFR/TWUAExbDy
Dni2NnGgPsv4n1q5AzOaQ1C7u
X-Google-Smtp-Source: AGHT+IE2nfdWNoQr5houEHcNNjyoNd7eQV9xUkPWmUiHfOIAuLnblnOMEvbq+HDAlXNOqa0Dgrd9Gw==
X-Received: by 2002:a05:6402:5023:b0:5dc:7b59:445b with SMTP id
4fb4d7f45d1cf-5dc7b594606mr3622276a12.28.1738312316631;
Fri, 31 Jan 2025 00:31:56 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
[2003:e0:b709:7500:2d7f:5749:bbac:bd35])
by smtp.gmail.com with ESMTPSA id
4fb4d7f45d1cf-5dc724aa0a8sm2353430a12.55.2025.01.31.00.31.55
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 31 Jan 2025 00:31:55 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <m28qqrlkyg.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
=?utf-8?Q?s?= message of "Fri, 31 Jan 2025 04:29:43 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
<m28qqrlkyg.fsf@HIDDEN>
Date: Fri, 31 Jan 2025 09:31:54 +0100
Message-ID: <m24j1fl6yt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> If you are looking for ideas:
Just came to my mind that one could re-implemented tty menus in Lisp
using child frames.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 03:29:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 22:29:57 2025
Received: from localhost ([127.0.0.1]:48778 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdhjB-00085F-1d
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 22:29:57 -0500
Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:53599)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdhj7-000850-Do
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 22:29:54 -0500
Received: by mail-wm1-x32e.google.com with SMTP id
5b1f17b1804b1-4361f796586so16633965e9.3
for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 19:29:53 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738294186; x=1738898986; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=GOVZu42/re+XXRGeObBAwE0nQC4hX5SVZHKNzdkjGPQ=;
b=W2XgtDPHr49VXNqhlyVbq+jfEwOMDB6kgIdf2VVCzmCBSPq+TH6lcbxSsuzRDSOLub
Zmiy7Uml54b+2RgkhD87Iyb6ipJGMe5o+YSUst3tzGZULn6ttLINeLUnC/8O/YfHTcOA
9P3XB12dANqlmWph956Jq/9tXyvCkd5oJ2pcVad8ONpkYwtCMDbhGq+sgoC703lQ3xrh
bNK0e6foSt0qizcJHWF+r2Eb/9ZQeFRBZ+euXE8icI0jcIegZpOeJ1/85bDWo3XnVTp2
hKy5GU6OYdgd8ty61W6RrPBvMnOkvb+BxgyCMnEFbFx1MJl/SjcsRAzgY6KPBeGdteTN
55Cw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738294186; x=1738898986;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
:to:cc:subject:date:message-id:reply-to;
bh=GOVZu42/re+XXRGeObBAwE0nQC4hX5SVZHKNzdkjGPQ=;
b=mK79BbmxDfOY/EXtYRAb2whxR5DatNpoT+SZ2vUvVxPs/ZahoXj98Pgwqogn38KIzo
DGcqQuj7SjMqVB8JCmbxcnosg53yzZVBygLRla2MgGxbPVtJFi5CBHxyyRjekSunTW9u
cZiIhWjjMq78UB3FdC63263M1jYTJp+MkR6aDv/OHRpeYcEHUshsrizE40sgcce8rdTL
GoXVRlGiKhHXu1AhuhWvUN77sNSe8wkjqhKftun6zzI1iiyByYo7ItwbmJjhb734//Cw
w7QBpmUX9sQQjFOdbPCb2dd6mFaq6oeNTLVFIx/UfQzfsnFZ7ETYEWB0/TV7l83OH2Bf
ezrQ==
X-Forwarded-Encrypted: i=1;
AJvYcCVjtqfN1uHzFni8acIONZisMG1XfOnnJG+Q8cb5x84PULC3dVv4koYIAD/x1khSWSou5am/XA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxkRe5Kx2/UoyM8VKhvKFSrTHIoJDYh7JA/+VQTjryJx1Cmn7W+
Tcf0+7yJdKTYd1Ue2zYDN9766B4CNSyuyBjeNWxveQRznnjdT3HC4o8nUQ==
X-Gm-Gg: ASbGncsjo+yaEcEfhqnFOKGQd8A6VrVqnek2MVf3mllciAHv2xHX5Qva7pyD/J1Dwji
9C5C4jVd5synYeoDrsuSBjjSUcqEkiptoSlKKNB1+awYN4aBr2ilVeqCj6MhDfI6nQb0f/1Vpz3
ZBIv2jF170oTL0GwlHv6S/W4ETIQQoBJylFN8fa9xETCMqGs5Jyyj9h75y92T2C9p5n0QIZRmWB
LeiXsCsI0tSxRrmcPx9z3e0DPrMq8ofKhwwHrTCXHvdIKIZ+ex/zNDv4FwUfzub/5FTfQcNNMxI
6HdW/cj/oZIt03kx4yjhMNSB+nYW5ch2aO8HG5v1aNUaJ0IZBsVpUB3Ia8gup7d9lowmtnhob6r
mb9nG+fa9CHEGzvYDywug4i5S
X-Google-Smtp-Source: AGHT+IGMhz54z+ON+mr8DQ2KelOce/6Pf6R4/O6ImWtoXQuxKApeaE1nvixafdLtBz9irNtDQvKkMw==
X-Received: by 2002:a05:600c:3488:b0:434:f5c0:329f with SMTP id
5b1f17b1804b1-438dc3cb2a8mr104210805e9.14.1738294186043;
Thu, 30 Jan 2025 19:29:46 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
[2003:e0:b709:7500:2d7f:5749:bbac:bd35])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-438dcc2e239sm76214885e9.18.2025.01.30.19.29.44
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Thu, 30 Jan 2025 19:29:44 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
<m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Fri, 31 Jan 2025 04:29:43 +0100
Message-ID: <m28qqrlkyg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
> I attach my latest achievements both in the menu bar and mouse drag
> child frame departments. Menu bars now accept navigation with the
> keyboard which was pretty non-trivial to do. Mouse dragging works with
> header and mode lines - the attached tty-child-frames.el should provide
> the necessary ingredients via C-l and M-l.
Congratulations, impressive! And quite funny to see something like that
on a terminal =F0=9F=98=82.
If you are looking for ideas:
Could you make sub-menus display and behave more like on a GUI? For
example, when I choose Tools -> Spell from the menu bar, the Spell menu
replaces the Tools menu on the screen. On a GUI it would display on top
of the parent and one could navigate back to the parent with the mouse.
Similarly for context menus.=20
Also the first line of the menu "Spell >" looks weird.
And keyboard navigation back from a sub-menu to its parent would be
nice.
Unbelievable =F0=9F=98=82 Nice!
Also, moving child frames is pretty nice too!
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 20:51:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 15:51:30 2025
Received: from localhost ([127.0.0.1]:48137 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdbVZ-00049D-Oh
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 15:51:30 -0500
Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:50681)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdbVW-00048y-TH
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 15:51:27 -0500
Received: by mail-wm1-x333.google.com with SMTP id
5b1f17b1804b1-436a39e4891so9116565e9.1
for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 12:51:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738270280; x=1738875080; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=oBwyAJX/hb7B5Qof28FPKqUGAZZqG+Z19CgtlNY/hHU=;
b=E+1X15X5Ndgbwk7QCls6hMaGgxbsl8NZwT7G6lKxvfUIb8Ax68lmF4IAgQgYqVRFqJ
laFC2PdH+0YZtKtBMmE4nFg9MM3B1phXt6S1IfzGBEZ1YYOqEYOctZFivD3COHpY0aFf
CmqD9cSiXjdPYtdRZDHdz3MnJldhuQbiSjZBb4SR74ouGYKOhr/I+KvqRNVNVX2LU951
bs/DeNUEn7xBFlte1s50LcnwQgJn9o1obzHOSZbHmVSkNO3XHPbX4S1/U+qbS2ENQ7QU
CSg4CRH2vantAJaMryc4tTRCl+UjKlphvwdctj0cbqoLN5QJhcpF7otCLJDW40J2igUK
mQGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738270280; x=1738875080;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=oBwyAJX/hb7B5Qof28FPKqUGAZZqG+Z19CgtlNY/hHU=;
b=IBKPVXhQRmJintjijr6QaS8naH7vCNspsVR4D2Tul4Olnge9v3++5/V7J/VIy0zxgy
Aye27m60olPeOnFAVlcwMiOWKgHknyzRHVDtpl6q5lpqS2ovPoD3BFfU2WUHDu/Ghihd
6ae2lddhU4WO1UzxJbkO1/uQeA6zaZj4OjPhqLNGD8CWp7HWxmfq0laqXacbVlWiSaop
xk+lPGw/8t8WyVYQR9VNQscYuUCFg9t13bdCCSpIvBjaX+nXKOzAC8PGVDPxZGQia+NN
kaPn8mLh/LmYN60XKdv4n+h1Y4O2Tcb/lGKyeAOsYFOToV/02elGXTIntjgJWeXacGbx
53IA==
X-Forwarded-Encrypted: i=1;
AJvYcCXb6ZxxmEIbvkbOe8LHJC/xc36vNWzeqLPOJb8ZC6He/RzGTYm2dCIsYgyPgWEe1uVY9x22NA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzewErddZtJwqHUWi6nFqLoeA2fSZ5t0HiHFO9dzQdXTa+FoB7a
erACTqHOuZNrB4gN4h9XcFdqAV4j+ifP9nfUdgUlJpciaRa/skoQChabQg==
X-Gm-Gg: ASbGncu5tuLanf5so7PEa0o2T6PdrmYklRQqyofFBjSHx3gwXJu24T2cYsewzaLPWni
mraAb4Clpka3wD0DFc0MAWGm6w+d8ndnJ50GEnHWWm1i/wzL0tFL7Mpzl3h0+npMvFkYyrUbVIo
pzL2PCqBCC2dhKdB1+UoLQ5vRnAhnF32l62GLsP/stnVUyrUvGyx7EnvCLHynU+TK05ZELlZ0h6
Rlj9zW0bi3e6ahum8m55dplSrC0AjWq7IpE8yuNn7UrJcl7xtHON6e2PO2FEw3jJZ8Xc7pJjgIj
64lKBYB2SyHExdTG+yC1c+BTU/ghQMvgOJ2BrTr63FC24c+CcNkCWyY29PtEPgZ8f844L6mkYJa
P+DVHbbkGT1/JQe6IxrUChxwI
X-Google-Smtp-Source: AGHT+IGF+/bzo5gdGLL0DoHLOVSbOZeooZHRvJIDUZGeUdkA4buxLvMl0nYxSizOPaBXwS4hmS/nTQ==
X-Received: by 2002:a05:6000:1563:b0:385:ee40:2d75 with SMTP id
ffacd0b85a97d-38c51960d9amr7412880f8f.20.1738270279813;
Thu, 30 Jan 2025 12:51:19 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
[2003:e0:b720:a900:dc01:849c:b197:321a])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-38c5c1cf571sm2883277f8f.82.2025.01.30.12.51.17
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Thu, 30 Jan 2025 12:51:19 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
<m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Thu, 30 Jan 2025 21:51:17 +0100
Message-ID: <m2cyg4kou2.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: text/plain
martin rudalics <rudalics@HIDDEN> writes:
> I attach my latest achievements both in the menu bar and mouse drag
> child frame departments.
Please find a patch attached that makes it build without window-system,
which also shows that internal borders are new in the tty world.
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
filename=0001-Make-it-compile-without-window-system.patch
From 3300c540eb4d94701af9f7dedb1b3bf7f9100553 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@HIDDEN>
Date: Thu, 30 Jan 2025 21:45:03 +0100
Subject: [PATCH] Make it compile without window system
---
src/frame.c | 4 ++--
src/frame.h | 29 +++++++++++++++--------------
2 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/src/frame.c b/src/frame.c
index 23cf096ed30..022936c5699 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2859,7 +2859,7 @@ DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "",
return delete_frame (frame, !NILP (force) ? Qt : Qnil);
}
-#ifdef HAVE_WINDOW_SYSTEM
+
/**
* frame_internal_border_part:
*
@@ -2951,7 +2951,7 @@ frame_internal_border_part (struct frame *f, int x, int y)
return part;
}
-#endif
+
/* Return mouse position in character cell units. */
diff --git a/src/frame.h b/src/frame.h
index 90524e5eb2b..e2f0a2dd754 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -31,6 +31,19 @@ #define EMACS_FRAME_H
vertical_scroll_bar_right
};
+enum internal_border_part
+ {
+ INTERNAL_BORDER_NONE,
+ INTERNAL_BORDER_LEFT_EDGE,
+ INTERNAL_BORDER_TOP_LEFT_CORNER,
+ INTERNAL_BORDER_TOP_EDGE,
+ INTERNAL_BORDER_TOP_RIGHT_CORNER,
+ INTERNAL_BORDER_RIGHT_EDGE,
+ INTERNAL_BORDER_BOTTOM_RIGHT_CORNER,
+ INTERNAL_BORDER_BOTTOM_EDGE,
+ INTERNAL_BORDER_BOTTOM_LEFT_CORNER,
+ };
+
#ifdef HAVE_WINDOW_SYSTEM
enum fullscreen_type
@@ -53,19 +66,6 @@ #define EMACS_FRAME_H
z_group_above_suspended,
};
-enum internal_border_part
- {
- INTERNAL_BORDER_NONE,
- INTERNAL_BORDER_LEFT_EDGE,
- INTERNAL_BORDER_TOP_LEFT_CORNER,
- INTERNAL_BORDER_TOP_EDGE,
- INTERNAL_BORDER_TOP_RIGHT_CORNER,
- INTERNAL_BORDER_RIGHT_EDGE,
- INTERNAL_BORDER_BOTTOM_RIGHT_CORNER,
- INTERNAL_BORDER_BOTTOM_EDGE,
- INTERNAL_BORDER_BOTTOM_LEFT_CORNER,
- };
-
#ifdef NS_IMPL_COCOA
enum ns_appearance_type
{
@@ -1848,6 +1848,8 @@ #define FRAME_SMALLEST_FONT_HEIGHT(f) \
Frame Parameters
***********************************************************************/
+extern enum internal_border_part frame_internal_border_part (struct frame *f, int x, int y);
+
#ifdef HAVE_WINDOW_SYSTEM
/* The class of this X application. */
@@ -1893,7 +1895,6 @@ #define EMACS_CLASS "Emacs"
extern void set_frame_menubar (struct frame *f, bool deep_p);
extern void frame_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y);
extern void free_frame_menubar (struct frame *);
-extern enum internal_border_part frame_internal_border_part (struct frame *f, int x, int y);
#if defined HAVE_X_WINDOWS
extern void x_wm_set_icon_position (struct frame *, int, int);
--
2.48.1
--=-=-=--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 18:50:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 13:50:45 2025
Received: from localhost ([127.0.0.1]:47811 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdZci-0003mb-Qf
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:50:45 -0500
Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:44367)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdZce-0003mF-M6
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:50:42 -0500
Received: by mail-wm1-x32d.google.com with SMTP id
5b1f17b1804b1-43618283d48so9243455e9.1
for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 10:50:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738263034; x=1738867834; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=plflhmZn8jeHHkPp1Rcr0EoMsy/Elm4e+Lo0ctwjASk=;
b=Ka1ceAijQXics9C7oTPLgjfyKi55VQjp0S9Yy4ZqEeiim7mHHK5KFWSxjj/X98BnLg
WH2O7fZ/GlAv4ao3nZWrPB6dm+lE3YlflHeUIzpqeq1BaTBxrpYS5OqORVoRu3IsR1YG
3K5d7qEgYmViS0Esv/u9nH4jeIj/DjSU83tdHdFSQly3/Q8jXYei2JR0AkTqDf+l3uPI
oV8lfCtbdn7LbtIf+JwMsZRdDYY7EtXCAtG2Pd3AOBXNeFbIp2nbPUXwt35jsyIwE2sv
6XAgDICTDpTxGabyh0MAxM0bQqECG3Ya36W5oQrsJT95vYMXicCEMoVUiTIY5DRE1KhH
Q2uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738263034; x=1738867834;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
:to:cc:subject:date:message-id:reply-to;
bh=plflhmZn8jeHHkPp1Rcr0EoMsy/Elm4e+Lo0ctwjASk=;
b=hAOg1IIgLMKgG7CCpMdsbOhzdawNYN1c12nUL4IlFoiG0Z17aCakuBeEXahyqprv83
G8y/GxmifLxbO17V4WY0iAPPMNkyC0GPorc/IXyX05aeDpQS7kXrpgfv9l6g6CslCybX
wxY3D+VHYBrfZb5rH+PUa1ak2X/x1cC6+hv/ztDKU1XPvCUdLkGDdGPuNNA/vAqBaqBt
UCZAqTq1wMK6fUxvtivrsJ95Y6BJGB4HUOVgpP/rzHkGcFERsrFhM3HzZMoRgGjLUyRj
rr9FFwEyOWwQjweB8lfZMwDtCDla3OM2cr6eJh1step3QQWjL8BYzMj02FhG+SqafIxK
MgSA==
X-Forwarded-Encrypted: i=1;
AJvYcCU00CEdEgSSQVkrXPK8hKfhNhjoDP4G/fojP935kyAvky2HNWwqRH2O9qFHHKFxvRMg+38d9w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxedZM32Ky5AvX8+MIha0HksoqE+5cM3AI2KMwEErdBZ7FMYiCU
/YrW5tRvkX0gUao3B3YcGVKbJAp88r7/Gf2atY18iA8hxqcZeGEhYa5B0WGZ
X-Gm-Gg: ASbGncv8sksgzYSk0v+qvuYEjpvv1jtX1ZkBzDAy6KYL6WYz8fIahwaMt89mANKbA9d
d0XDdd3zVKIbAK34nD3/IR1fX9hGinhIQw4NC+uixplOkFCEVZPxOZ2KDJxDAoYnU1iqueOk3Pb
dqWm2NUEVBtsbIItYjWLgiTzxD9Sr9JSaa3BcDk8URG0owE98tnug4wOHGT6zm7r4/pTcTpkE3v
PbLhfTEmzAvtNkOQgsN5j7Wm4+deSRTHP8fxu9q3vpuEKob2fCavHOW/zP9sql1Y8d4EotBMr+T
sX1C/iVqQNbRzeJCg5EgTWkhf+P4MjBXfdBm614JcQRmvxr51S9UWjh88GioBDO0rbgR2+7PMqG
6ENbZZTbUuwCQFoian4jAVhG7
X-Google-Smtp-Source: AGHT+IFqK2PMUK6l0cqyiNXED9rA/5+2nrDPLLR6YPIc9ysxE85o9eolGIUyZKD2bXYWsVVAjVj0Ag==
X-Received: by 2002:a05:600c:1f18:b0:436:1b08:4c78 with SMTP id
5b1f17b1804b1-438dc43093cmr81980365e9.31.1738263033498;
Thu, 30 Jan 2025 10:50:33 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
[2003:e0:b720:a900:dc01:849c:b197:321a])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-438dcc26b15sm67454655e9.11.2025.01.30.10.50.32
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Thu, 30 Jan 2025 10:50:32 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
<m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
<m2ed0k8zkw.fsf@HIDDEN>
<ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Thu, 30 Jan 2025 19:50:31 +0100
Message-ID: <m2jzackufc.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>>>>> Also when I want to move a child frame to the left of its parent via
>>>>>
>>>>> (modify-frame-parameters nil '((left . 0)))
>>>>>
>>>>> the left border disappears. Is that intended?
>>>>
>>>> If I understand that correctly, then probably yes. The borders are dra=
wn
>>>> around the frame, so the left border is at left - 1, the right at left=
+
>>>> width + 1, and so on.
>>>
>>> I see.
>>>
>>>> Whatever is outside of the terminal is clipped.
>
> Troublesome. Please revise that. When I want to resize a child frame
> with the mouse, I have to drag its internal border. But as it stands,
> the internal border is part of the underlying or root frame and the
> whole make_lispy_position mechanism is broken on ttys.
You drag a child frame with the mouse, what the heck? :-)
There is little chance that I can change how the borders are drawn, I'm
afraid. I started with trying to give tty frames a border_width, and
failed spectacularly. It was so bad that I git reset --hard in a rage,
which is a really rare event.
>> _Much_ nicer than the default IMO. I still wished Emacs would do that by
>> default, but here were objections.
>
> Looks good. But _where_ on earth (that is, in the code) do you that and
> how is it related to the width of the internal border?
See copy_child_glyphs.
dispnew.c:
3729 /* Draw borders around the child frame. */
3730 if (!FRAME_UNDECORATED (child))
3731 {
3732 /* Horizontal line above. */
3733 if (r.y > 0)
3734 produce_box_line (root, child, r.x, r.y - 1, r.w, true);
3735=20
3736 for (int y =3D r.y; y < r.y + r.h; ++y)
3737 {
3738 struct glyph_row *root_row =3D prepare_desired_root_row (ro=
ot, y);
3739 if (root_row)
3740 produce_box_sides (BOX_VERTICAL, BOX_VERTICAL, root_row, =
r.x, r.w,
3741 root, child);
3742 }
3743=20
3744 /* Horizontal line below. */
3745 if (r.y + r.h < root->desired_matrix->matrix_h)
3746 produce_box_line (root, child, r.x, r.y + r.h, r.w, false);
3747 }
The code is not related to an internal border, and I'm relatively sure
tty frames don't have one right now. At least as far as redisplay is
concerned, don't know about the frame parameters/values. It's like for
border_width.
> I attach my latest achievements both in the menu bar and mouse drag
> child frame departments. Menu bars now accept navigation with the
> keyboard which was pretty non-trivial to do. Mouse dragging works with
> header and mode lines - the attached tty-child-frames.el should
> provide the necessary ingredients via C-l and M-l.
=F0=9F=91=8D
> One bug I noted now is the following. Do C-l and M-l and drag the
> yellow and orange frames somehow as in before.png with the cursor in the
> yellow frame right before the left edge of the orange frame. Do C-f -
> the cursor appears on top of the left edge of the orange frame as in
> middle.png. Another C-f moves it into the orange frame as in
> after.png.
Thanks.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 18:00:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 13:00:14 2025
Received: from localhost ([127.0.0.1]:47679 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdYpq-0006tB-J7
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:00:14 -0500
Received: from mout.gmx.net ([212.227.15.15]:34201)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdYpn-0006nB-HY
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:00:12 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738260004; x=1738864804; i=rudalics@HIDDEN;
bh=6JPlwbHVZ6Jk3ulxNZjGb9hQH6o8SKz8/PQHJcMvGZs=;
h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
Subject:To:Cc:References:From:In-Reply-To:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=YqOpGYPZi+8y+d4Sj5AX1ZYwzYjrJy9ZawaHlmEY6o/gwc+oPPD5SnQ8Et9cZIzN
5VM5kO+cHBOZ9actNhTa8RSv55gQnWfYkrqQo3huL7PLJBirGto3LBU8I9vAARG8x
ZQkNkmzSqSscup6fCU5lvHL7z3zZOfxY0itVrOh93RQdGqcDxD4UAc7zusRaTGhuj
3Dzx+gXpnz0R+GZsGmkbLTW8ng1/MofaW/HKhuOGT6ejns4LZdhJe9cpxViyMaBdt
ZfxmREOhaiLoeDICVzRWK8ICjDXf+Hv63J31LzsXdCqjk75PxmMisrP7gRqk9Y91b
1wXPnLnLYSwFWdLHQA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.131]) by mail.gmx.net (mrgmx004
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MJE6L-1tsC6b2Yv5-00Seg7; Thu, 30
Jan 2025 19:00:03 +0100
Content-Type: multipart/mixed; boundary="------------pcXrWObKEpuSLXjwgerBofRu"
Message-ID: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Thu, 30 Jan 2025 19:00:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
<81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2ed0k8zkw.fsf@HIDDEN>
X-Provags-ID: V03:K1:5Tvluu+nXbzsdtyR52V8c+UkpvJpQ/mIULQy/71rJ48jpWkd6Hs
II5Rasgh9mRORrOwC3N61AjsR1FOkgpW28VB0iAkwrBrnk3I67cba/451148mXd2iNwnPOy
f9szr8VW4T628/SJDoeu5Ef2VssUUMX8qcHJXumT7y5KtmUgMi2c64ia6iUlGqRaX7JBfAp
8sCJCOoq6zog/Po6M4D/A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:qjjDpr7NV+0=;yyO3PNQbJUr4eAcO+rYG+dJNfF/
tm8NT/BFfVGwL7Z+IsTYuVlKr121IDDheLkMgs9YXuQbKC11IcC4xvL2TFlwdE0ojQl0rE1BR
R2qmZ3Zm73aMPRefFEP0V1XFVwdWhBT8iLlho28TgqK6SVF9ngRhOXvhC2QBKtLSH9nD4EpvH
KKY/dBFfKSOyUmgqUJw01pMGosydhgDuk8t+k1eVE4J/5Xv1qwQBXFYT/XFL6P1Gdbc6Oq1s9
5A5T5jgcoPf/MvtQVo2SqlqhfC3r2OfCrbc1mpVMjKneVs4BIHmxKnhNs4zUK9Cs318NjmkVe
ArqVGQ3SZNGmLFso6WuNolXX5qGLrGEx9IxXKnCoyiwaQ7ZXJ+c1A1tExQPDmlap8Ktyv2StD
tCv8QO2OB9oCfffZ3+0HhLk9B8yQSqUHkvR+G/C6jsuv/C3Fhe2c0aa+duLDEbLVKSjHXxgP6
MMiqb/VoM2OI29J5NOoRWpLWvmA8/MvKnvDp9q0ut7YtLNxiwosee6MxfhsS1ZVUMHpoGEkxR
VSAoEm1Xqzz06caaqBVBqeqyAOkzw/ri2y88wJP03MejdNzynEr/FbNui0GOl35YFxwru0g+O
qDHJMfLMuYUvafQOhLrXVWlZY2LhnkjR3IMDGfmDOZG0jWkiuxmIh0JFFeAA4mW7CrnEsLGxQ
ZJ9n3dYw5XoC88lNa5RJClshSxXWFyr4136IY7Woge7ET6r7hAec9P74KvigncEJBe00E5d/b
9i7f6N0GueLYg2Ddzd29qA8U8KD7/X+dk3Eff58Rh9wP3urARJDBGdHZ1e1//CKkLLtFtEtXs
79WWd7fjw1hm1JHAcJXorzGWXmPDli9JCOV4/qOkyEuBJ8JvEp107ddqxV0FvaClllvB4le0q
sWBAIaMOHtje/YWwHg/YhdXUrSWwLik5qMpMXF5/RG/6+JXKFC9XmtdnKll4ZjT5NlEDEUzmF
kxB2cIEuyQl8Lb4oeJU5C4RP+5P0KO425oFUQvuIlxWf/GLgU8kW9WQpVTL/Bh+YYOKud39aZ
NZtetl7vrq3SouzyboGCFD5yeUEqU8DlCq5TXbOULjRHA2+GsxAm2Q1j66dRh5nSOPhIkKvOK
KaHMrwHZncme8YsEPLjxLONDanTGxYcaklhbkydnELkzG5WPjCFAV87PaoZfdSJ0DHJiryUpn
2m4S41EGYKRgH6iIO5v5VIRee7TCq+BR8+TgBRTq1jGQ6lW11XDrOsz8iroztbTeVF0yYhOJz
3lmTY8YyKISVl9oS7T+2kRzmDBPEkJ3hePTqOXU9YVHl+P+47NcMlkOL4fKCD06B10c8ierSo
6h8pX/39pQ6Cni1L3EDwvCluowKq2vqeTkK1a2moZS4MMo=
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
This is a multi-part message in MIME format.
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
>>>> Also when I want to move a child frame to the left of its parent via
>>>>
>>>> (modify-frame-parameters nil '((left . 0)))
>>>>
>>>> the left border disappears. Is that intended?
>>>
>>> If I understand that correctly, then probably yes. The borders are drawn
>>> around the frame, so the left border is at left - 1, the right at left +
>>> width + 1, and so on.
>>
>> I see.
>>
>>> Whatever is outside of the terminal is clipped.
Troublesome. Please revise that. When I want to resize a child frame
with the mouse, I have to drag its internal border. But as it stands,
the internal border is part of the underlying or root frame and the
whole make_lispy_position mechanism is broken on ttys.
> _Much_ nicer than the default IMO. I still wished Emacs would do that by
> default, but here were objections.
Looks good. But _where_ on earth (that is, in the code) do you that and
how is it related to the width of the internal border?
I attach my latest achievements both in the menu bar and mouse drag
child frame departments. Menu bars now accept navigation with the
keyboard which was pretty non-trivial to do. Mouse dragging works with
header and mode lines - the attached tty-child-frames.el should provide
the necessary ingredients via C-l and M-l.
One bug I noted now is the following. Do C-l and M-l and drag the
yellow and orange frames somehow as in before.png with the cursor in the
yellow frame right before the left edge of the orange frame. Do C-f -
the cursor appears on top of the left edge of the orange frame as in
middle.png. Another C-f moves it into the orange frame as in after.png.
martin
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: text/x-patch; charset=UTF-8; name="tty-menubar-and-drag.diff"
Content-Disposition: attachment; filename="tty-menubar-and-drag.diff"
Content-Transfer-Encoding: base64
ZGlmZiAtLWdpdCBhL2xpc3AvbWVudS1iYXIuZWwgYi9saXNwL21lbnUtYmFyLmVsCmluZGV4
IDI4YWI2MGYxZDJkLi5mMWY2N2NjMGJmYyAxMDA2NDQKLS0tIGEvbGlzcC9tZW51LWJhci5l
bAorKysgYi9saXNwL21lbnUtYmFyLmVsCkBAIC0yNjkxLDUzICsyNjkxLDc0IEBAIHBvcHVw
LW1lbnUKIAkJCSAoZmlsdGVyICh3aGVuIChzeW1ib2xwIG1hcCkKIAkJCQkgICAocGxpc3Qt
Z2V0IChnZXQgbWFwICdtZW51LXByb3ApIDpmaWx0ZXIpKSkpCiAJCSAgICAoaWYgZmlsdGVy
IChmdW5jYWxsIGZpbHRlciAoc3ltYm9sLWZ1bmN0aW9uIG1hcCkpIG1hcCkpKSkpCi0JIChm
cmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorCSAoc2VsZWN0ZWQtZnJhbWUgKHNlbGVjdGVkLWZy
YW1lKSkKKwkgKGZyYW1lIChpZiAoYW5kIChlcSAoZnJhbWVwIHNlbGVjdGVkLWZyYW1lKSB0
KSAoZnJhbWUtcGFyZW50KQorCQkJIGZyb20tbWVudS1iYXIKKwkJCSAoemVyb3AgKG9yIChm
cmFtZS1wYXJhbWV0ZXIgbmlsICdtZW51LWJhci1saW5lcykgMCkpKQorCQkgICAgOzsgSWYg
dGhlIHNlbGVjdGVkIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lCisJCSAgICA7OyB3aXRo
b3V0IGl0cyBvd24gbWVudSBiYXIgYW5kIHdlIGFyZSBjYWxsZWQgZnJvbQorCQkgICAgOzsg
dGhlIG1lbnUgYmFyLCB0aGUgbWVudSBiYXIgbXVzdCBiZSBvbiB0aGUgcm9vdAorCQkgICAg
OzsgZnJhbWUgb2YgdGhlIHNlbGVjdGVkIGZyYW1lLgorCQkgICAgKGZyYW1lLXJvb3QtZnJh
bWUpCisJCSAgKHNlbGVjdGVkLWZyYW1lKSkpCiAJIGV2ZW50IGNtZCkKLSAgICAoaWYgZnJv
bS1tZW51LWJhcgotCShsZXQqICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKLQkgICAgICAg
KG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSAoY2FyIHh5KSAoY2RyIHh5KSkp
KQotCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyht
ZW51LWJhcikKLQkJCQkJCSB4eSAwKSkpKQotICAgICAgKHNldHEgcG9zaXRpb24gKHBvcHVw
LW1lbnUtbm9ybWFsaXplLXBvc2l0aW9uIHBvc2l0aW9uKSkpCi0gICAgOzsgVGhlIGxvb3Bp
bmcgYmVoYXZpb3Igd2FzIHRha2VuIGZyb20gbG1lbnUncyBwb3B1cC1tZW51LXBvcHVwCi0g
ICAgKHdoaWxlIChhbmQgbWFwIChzZXRxIGV2ZW50Ci0JCQkgIDs7IG1hcCBjb3VsZCBiZSBh
IHByZWZpeCBrZXksIGluIHdoaWNoIGNhc2UKLQkJCSAgOzsgd2UgbmVlZCB0byBnZXQgaXRz
IGZ1bmN0aW9uIGNlbGwKLQkJCSAgOzsgZGVmaW5pdGlvbi4KLQkJCSAgKHgtcG9wdXAtbWVu
dSBwb3NpdGlvbiAoaW5kaXJlY3QtZnVuY3Rpb24gbWFwKSkpKQotICAgICAgOzsgU3RyYW5n
ZWx5IHgtcG9wdXAtbWVudSByZXR1cm5zIGEgbGlzdC4KLSAgICAgIDs7IG1vdXNlLW1ham9y
LW1vZGUtbWVudSB3YXMgdXNpbmcgYSB3ZWlyZDoKLSAgICAgIDs7IChrZXktYmluZGluZyAo
YXBwbHkgJ3ZlY3RvciAoYXBwZW5kICcobWVudS1iYXIpIG1lbnUtcHJlZml4IGV2ZW50cykp
KQotICAgICAgKHNldHEgY21kCi0JICAgIChjb25kCi0JICAgICAoKGFuZCBmcm9tLW1lbnUt
YmFyCi0JCSAgIChjb25zcCBldmVudCkKLQkJICAgKG51bWJlcnAgKGNhciBldmVudCkpCi0J
CSAgIChudW1iZXJwIChjZHIgZXZlbnQpKSkKLQkgICAgICAobGV0ICgoeCAoY2FyIGV2ZW50
KSkKLQkJICAgICh5IChjZHIgZXZlbnQpKQotCQkgICAgbWVudS1zeW1ib2wpCi0JCShzZXRx
IG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSB4IHkpKQotCQkoc2V0cSBwb3Np
dGlvbiAobGlzdCBtZW51LXN5bWJvbCAobGlzdCBmcmFtZSAnKG1lbnUtYmFyKQotCQkJCQkJ
IGV2ZW50IDApKSkKLQkJKHNldHEgbWFwCi0JCSAgICAgIChrZXktYmluZGluZyAodmVjdG9y
ICdtZW51LWJhciBtZW51LXN5bWJvbCkpKSkpCi0JICAgICAoKGFuZCAobm90IChrZXltYXBw
IG1hcCkpIChsaXN0cCBtYXApKQotCSAgICAgIDs7IFdlIHdlcmUgZ2l2ZW4gYSBsaXN0IG9m
IGtleW1hcHMuICBTZWFyY2ggdGhlbSBhbGwKLQkgICAgICA7OyBpbiBzZXF1ZW5jZSB1bnRp
bCBhIGZpcnN0IGJpbmRpbmcgaXMgZm91bmQuCi0JICAgICAgKGxldCAoKG1vdXNlLWNsaWNr
IChhcHBseSAndmVjdG9yIGV2ZW50KSkKLQkJICAgIGJpbmRpbmcpCi0JCSh3aGlsZSAoYW5k
IG1hcCAobnVsbCBiaW5kaW5nKSkKLQkJICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWln
bm9yZS10b28tbG9uZyAoY2FyIG1hcCkgbW91c2UtY2xpY2spKQotCQkgIChzZXRxIG1hcCAo
Y2RyIG1hcCkpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcpKQotCSAgICAgKHQKLQkgICAg
ICA7OyBXZSB3ZXJlIGdpdmVuIGEgc2luZ2xlIGtleW1hcC4KLQkgICAgICAobG9va3VwLWtl
eSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQotICAgICAgOzsgQ2xlYXIgb3V0IGVj
aG9pbmcsIHdoaWNoIHBlcmhhcHMgc2hvd3MgYSBwcmVmaXggYXJnLgotICAgICAgKG1lc3Nh
Z2UgIiIpCi0gICAgICA7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1Ym1hcC4K
LSAgICAgIChzZXRxIG1hcCAoaWYgKGtleW1hcHAgY21kKSBjbWQpKSkKKyAgICAod2l0aC1z
ZWxlY3RlZC1mcmFtZSBmcmFtZQorICAgICAgKGlmIGZyb20tbWVudS1iYXIKKwkgIChsZXQq
ICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKKwkJIChtZW51LXN5bWJvbCAobWVudS1iYXIt
bWVudS1hdC14LXkgKGNhciB4eSkgKGNkciB4eSkpKSkKKwkgICAgKHNldHEgcG9zaXRpb24g
KGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCSAgIHh5
IDApKSkpCisJKHNldHEgcG9zaXRpb24gKHBvcHVwLW1lbnUtbm9ybWFsaXplLXBvc2l0aW9u
IHBvc2l0aW9uKSkpCisKKyAgICAgIDs7IFRoZSBsb29waW5nIGJlaGF2aW9yIHdhcyB0YWtl
biBmcm9tIGxtZW51J3MgcG9wdXAtbWVudS1wb3B1cAorICAgICAgKHdoaWxlIChhbmQgbWFw
IChzZXRxIGV2ZW50CisJCQkgICAgOzsgbWFwIGNvdWxkIGJlIGEgcHJlZml4IGtleSwgaW4g
d2hpY2ggY2FzZQorCQkJICAgIDs7IHdlIG5lZWQgdG8gZ2V0IGl0cyBmdW5jdGlvbiBjZWxs
CisJCQkgICAgOzsgZGVmaW5pdGlvbi4KKwkJCSAgICAoeC1wb3B1cC1tZW51IHBvc2l0aW9u
IChpbmRpcmVjdC1mdW5jdGlvbiBtYXApKSkpCisJOzsgU3RyYW5nZWx5IHgtcG9wdXAtbWVu
dSByZXR1cm5zIGEgbGlzdC4KKwk7OyBtb3VzZS1tYWpvci1tb2RlLW1lbnUgd2FzIHVzaW5n
IGEgd2VpcmQ6CisJOzsgKGtleS1iaW5kaW5nIChhcHBseSAndmVjdG9yIChhcHBlbmQgJyht
ZW51LWJhcikgbWVudS1wcmVmaXggZXZlbnRzKSkpCisJKHNldHEgY21kCisJICAgICAgKGNv
bmQKKwkgICAgICAgKChhbmQgZnJvbS1tZW51LWJhcgorCQkgICAgIChjb25zcCBldmVudCkK
KwkJICAgICAobnVtYmVycCAoY2FyIGV2ZW50KSkKKwkJICAgICAobnVtYmVycCAoY2RyIGV2
ZW50KSkpCisJCShsZXQgKCh4IChjYXIgZXZlbnQpKQorCQkgICAgICAoeSAoY2RyIGV2ZW50
KSkKKwkJICAgICAgbWVudS1zeW1ib2wpCisJCSAgKHNldHEgbWVudS1zeW1ib2wgKG1lbnUt
YmFyLW1lbnUtYXQteC15IHggeSkpCisJCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1z
eW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCQkgZXZlbnQgMCkpKQorCQkg
IChpZiAobm90IChlcSBmcmFtZSBzZWxlY3RlZC1mcmFtZSkpCisJCSAgICAgIDs7IElmIHdl
IGFyZSB1c2luZyB0aGUgbWVudSBiYXIgZnJvbSB0aGUgcm9vdAorCQkgICAgICA7OyBmcmFt
ZSwgbG9vayB1cCB0aGUga2V5IGJpbmRpbmcgaW4gdGhlIGtleW1hcHMKKwkJICAgICAgOzsg
b2YgdGhlIGluaXRpYWxseSBzZWxlY3RlZCB3aW5kb3cncyBidWZmZXIgdG8KKwkJICAgICAg
OzsgbWFrZSBzdXJlIHRoYXQgbmF2aWdhdGluZyB0aGUgbWVudSBiYXIgd2l0aCB0aGUKKwkJ
ICAgICAgOzsga2V5Ym9hcmQgd29ya3MgYXMgaW50ZW5kZWQuCisJCSAgICAgIChzZXRxIG1h
cAorCQkJICAgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJhciBtZW51LXN5bWJvbCkg
bmlsIG5pbAorCQkJCQkgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBzZWxlY3RlZC1mcmFtZSkp
KQorCQkgICAgKHNldHEgbWFwCisJCQkgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJh
ciBtZW51LXN5bWJvbCkpKSkpKQorCSAgICAgICAoKGFuZCAobm90IChrZXltYXBwIG1hcCkp
IChsaXN0cCBtYXApKQorCQk7OyBXZSB3ZXJlIGdpdmVuIGEgbGlzdCBvZiBrZXltYXBzLiAg
U2VhcmNoIHRoZW0gYWxsCisJCTs7IGluIHNlcXVlbmNlIHVudGlsIGEgZmlyc3QgYmluZGlu
ZyBpcyBmb3VuZC4KKwkJKGxldCAoKG1vdXNlLWNsaWNrIChhcHBseSAndmVjdG9yIGV2ZW50
KSkKKwkJICAgICAgYmluZGluZykKKwkJICAod2hpbGUgKGFuZCBtYXAgKG51bGwgYmluZGlu
ZykpCisJCSAgICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWlnbm9yZS10b28tbG9uZyAo
Y2FyIG1hcCkgbW91c2UtY2xpY2spKQorCQkgICAgKHNldHEgbWFwIChjZHIgbWFwKSkpCisJ
CSAgYmluZGluZykpCisJICAgICAgICh0CisJCTs7IFdlIHdlcmUgZ2l2ZW4gYSBzaW5nbGUg
a2V5bWFwLgorCQkobG9va3VwLWtleSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQor
CTs7IENsZWFyIG91dCBlY2hvaW5nLCB3aGljaCBwZXJoYXBzIHNob3dzIGEgcHJlZml4IGFy
Zy4KKwkobWVzc2FnZSAiIikKKwk7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1
Ym1hcC4KKwkoc2V0cSBtYXAgKGlmIChrZXltYXBwIGNtZCkgY21kKSkpKQorCiAgICAgOzsg
SWYgdGhlIHVzZXIgZGlkIG5vdCBjYW5jZWwgYnkgcmVmdXNpbmcgdG8gc2VsZWN0LAogICAg
IDs7IGFuZCBpZiB0aGUgcmVzdWx0IGlzIGEgY29tbWFuZCwgcnVuIGl0LgogICAgICh3aGVu
IChhbmQgKG51bGwgbWFwKSAoY29tbWFuZHAgY21kKSkKQEAgLTI4MDgsMTQgKzI4MjksMjcg
QEAgbWVudS1iYXItb3BlbgogSWYgRlJBTUUgaXMgbmlsIG9yIG5vdCBnaXZlbiwgdXNlIHRo
ZSBzZWxlY3RlZCBmcmFtZS4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxpc3QgbmlsIChwcmVm
aXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpKSkKLSAgKGxldCAoKHR5cGUg
KGZyYW1lcCAob3IgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpKSkKKyAgKGxldCogKCh0eXBl
IChmcmFtZXAgKG9yIGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKSkKKwkgcm9vdAorCSAoZnJh
bWUgKGlmIChhbmQgKGVxIHR5cGUgdCkgKGZyYW1lLXBhcmVudCBmcmFtZSkKKwkJCSAobnVs
bCB0dHktbWVudS1vcGVuLXVzZS10bW0pCisJCQkgKHplcm9wIChvciAoZnJhbWUtcGFyYW1l
dGVyIGZyYW1lICdtZW51LWJhci1saW5lcykgMCkpCisJCQkgKHNldHEgcm9vdCAoZnJhbWUt
cm9vdC1mcmFtZSkpCisJCQkgKG5vdCAoemVyb3AKKwkJCSAgICAgICAob3IgKGZyYW1lLXBh
cmFtZXRlciByb290ICdtZW51LWJhci1saW5lcykgMCkpKSkKKwkJICAgIDs7IElmIEZSQU1F
IGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgaXRzIG93bgorCQkgICAgOzsgbWVudSBi
YXIsICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIGZhbHNlIGFuZAorCQkgICAgOzsgRlJB
TUUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyLCB1c2UgdGhhdCByb290CisJCSAgICA7
OyBmcmFtZSdzIG1lbnUgYmFyLgorCQkgICAgcm9vdAorCQkgIGZyYW1lKSkpCiAgICAgKGNv
bmQKICAgICAgKChlcSB0eXBlICd4KSAoeC1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAg
KChlcSB0eXBlICd3MzIpICh3MzItbWVudS1iYXItb3BlbiBmcmFtZSkpCiAgICAgICgoZXEg
dHlwZSAnaGFpa3UpIChoYWlrdS1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChlcSB0
eXBlICdwZ3RrKSAocGd0ay1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChhbmQgKG51
bGwgdHR5LW1lbnUtb3Blbi11c2UtdG1tKQotCSAgIChub3QgKHplcm9wIChvciAoZnJhbWUt
cGFyYW1ldGVyIG5pbCAnbWVudS1iYXItbGluZXMpIDApKSkpCisJICAgKG5vdCAoemVyb3Ag
KG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ21lbnUtYmFyLWxpbmVzKSAwKSkpKQogICAg
ICAgOzsgTWFrZSBzdXJlIHRoZSBtZW51IGJhciBpcyB1cCB0byBkYXRlLiAgT25lIHNpdHVh
dGlvbiB3aGVyZQogICAgICAgOzsgdGhpcyBpcyBpbXBvcnRhbnQgaXMgd2hlbiB0aGlzIGZ1
bmN0aW9uIGlzIGludm9rZWQgYnkgbmFtZQogICAgICAgOzsgdmlhIE0teCwgaW4gd2hpY2gg
Y2FzZSB0aGUgbWVudSBiYXIgaW5jbHVkZXMgdGhlICJNaW5pYnVmIgpAQCAtMjgzMSw3ICsy
ODY1LDcgQEAgbWVudS1iYXItb3BlbgogICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50
LWxvY2FsLW1hcCkgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpCiAJCSAgICAgKGNkYXIgKG1p
bm9yLW1vZGUta2V5LWJpbmRpbmcgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpKQogICAgICAg
ICAgICAgICAgICAgICAgKG1vdXNlLW1lbnUtYmFyLW1hcCkpCi0JCSAgICAocG9zbi1hdC14
LXkgeCAwIG5pbCB0KSBuaWwgdCkpKQorCQkgICAgKHBvc24tYXQteC15IHggMCBmcmFtZSB0
KSBuaWwgdCkpKQogICAgICAodCAod2l0aC1zZWxlY3RlZC1mcmFtZSAob3IgZnJhbWUgKHNl
bGVjdGVkLWZyYW1lKSkKICAgICAgICAgICAodG1tLW1lbnViYXIpKSkpKSkKIApkaWZmIC0t
Z2l0IGEvbGlzcC9tb3VzZS5lbCBiL2xpc3AvbW91c2UuZWwKaW5kZXggNmZlNjkxNjkzYjQu
LmVhNjg5MDkxNDZlIDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVsCisrKyBiL2xpc3AvbW91
c2UuZWwKQEAgLTExMDYsNyArMTEwNiwxMCBAQCBtb3VzZS1kcmFnLWZyYW1lLXJlc2l6ZQog
CSAoZHJhZy1ib3R0b20gKG1lbXEgcGFydCAnKGJvdHRvbS1yaWdodCBib3R0b20gYm90dG9t
LWxlZnQpKSkKIAkgOzsgSW5pdGlhbCAiZmlyc3QiIG1vdXNlIHBvc2l0aW9uLiAgV2hpbGUg
ZHJhZ2dpbmcgd2UgYmFzZSBhbGwKIAkgOzsgY2FsY3VsYXRpb25zIGFnYWluc3QgdGhhdCBw
b3NpdGlvbi4KLQkgKGZpcnN0LXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24p
KQorCSAodHR5ICh0dHktdHlwZSBmcmFtZSkpCisJIChmaXJzdC14LXkgKGlmIHR0eQorCQkJ
KG1vdXNlLXBvc2l0aW9uLWluLXJvb3QtZnJhbWUpCisJCSAgICAgIChtb3VzZS1hYnNvbHV0
ZS1waXhlbC1wb3NpdGlvbikpKQogICAgICAgICAgKGZpcnN0LXggKGNhciBmaXJzdC14LXkp
KQogICAgICAgICAgKGZpcnN0LXkgKGNkciBmaXJzdC14LXkpKQogICAgICAgICAgKGV4aXRm
dW4gbmlsKQpAQCAtMTExNCw3ICsxMTE3LDkgQEAgbW91c2UtZHJhZy1mcmFtZS1yZXNpemUK
ICAgICAgICAgICAobGFtYmRhIChldmVudCkKICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSAi
ZSIpCiAgICAgICAgICAgICAod2hlbiAoY29uc3AgZXZlbnQpCi0gICAgICAgICAgICAgIChs
ZXQqICgobGFzdC14LXkgKG1vdXNlLWFic29sdXRlLXBpeGVsLXBvc2l0aW9uKSkKKyAgICAg
ICAgICAgICAgKGxldCogKChsYXN0LXgteSAoaWYgdHR5CisJCQkJICAgKG1vdXNlLXBvc2l0
aW9uLWluLXJvb3QtZnJhbWUpCisJCQkJIChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlv
bikpKQogCQkgICAgIChsYXN0LXggKGNhciBsYXN0LXgteSkpCiAJCSAgICAgKGxhc3QteSAo
Y2RyIGxhc3QteC15KSkKIAkJICAgICAobGVmdCAoLSBsYXN0LXggZmlyc3QteCkpCkBAIC0x
MjIzLDEwICsxMjI4LDEzIEBAIG1vdXNlLWRyYWctZnJhbWUtbW92ZQogICAgICAgICAgKHBh
cmVudC1ib3R0b20gKGFuZCBwYXJlbnQtZWRnZXMgKG50aCAzIHBhcmVudC1lZGdlcykpKQog
CSA7OyBJbml0aWFsICJmaXJzdCIgbW91c2UgcG9zaXRpb24uICBXaGlsZSBkcmFnZ2luZyB3
ZSBiYXNlIGFsbAogCSA7OyBjYWxjdWxhdGlvbnMgYWdhaW5zdCB0aGF0IHBvc2l0aW9uLgot
CSAoZmlyc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCi0gICAgICAg
ICAoZmlyc3QteCAoY2FyIGZpcnN0LXgteSkpCi0gICAgICAgICAoZmlyc3QteSAoY2RyIGZp
cnN0LXgteSkpCi0gICAgICAgICA7OyBgc25hcC13aWR0aCcgKG1heWJlIGFsc28gYSB5ZXQg
dG8gYmUgcHJvdmlkZWQgYHNuYXAtaGVpZ2h0JykKKwkgKHR0eSAodHR5LXR5cGUgZnJhbWUp
KQorCSAoZmlyc3QteC15IChpZiB0dHkKKwkJCShtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZy
YW1lKQorCQkgICAgICAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKKwkgKGZp
cnN0LXggKGNhciBmaXJzdC14LXkpKQorCSAoZmlyc3QteSAoY2RyIGZpcnN0LXgteSkpCisJ
IDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxzbyBhIHlldCB0byBiZSBwcm92aWRlZCBgc25h
cC1oZWlnaHQnKQogICAgICAgICAgOzsgY291bGQgYmVjb21lIGZsb2F0cyB0byBoYW5kbGUg
cHJvcG9ydGlvbmFsaXR5IHdydCBQQVJFTlQuCiAgICAgICAgICA7OyBXZSBkb24ndCBkbyBh
bnkgY2hlY2tzIG9uIHRoaXMgcGFyYW1ldGVyIHNvIGZhci4KICAgICAgICAgIChzbmFwLXdp
ZHRoIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ3NuYXAtd2lkdGgpKQpAQCAtMTI0Miw3ICsx
MjUwLDkgQEAgbW91c2UtZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgKGxhbWJkYSAoZXZl
bnQpCiAgICAgICAgICAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgICAgICAgICAgKHdoZW4g
KGNvbnNwIGV2ZW50KQotICAgICAgICAgICAgICAobGV0KiAoKGxhc3QteC15IChtb3VzZS1h
YnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChsZXQqICgobGFzdC14
LXkgKGlmIHR0eQorCQkJCSAgIChtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lKQorCQkJ
CSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKIAkJICAgICAobGFzdC14IChj
YXIgbGFzdC14LXkpKQogCQkgICAgIChsYXN0LXkgKGNkciBsYXN0LXgteSkpCiAJCSAgICAg
KGxlZnQgKC0gbGFzdC14IGZpcnN0LXgpKQpAQCAtMTM3Myw3ICsxMzgzLDggQEAgbW91c2Ut
ZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgt
IHBhcmVudC1ib3R0b20gbmF0aXZlLWhlaWdodCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG1pbiAobWF4IHRvcCBwYXJlbnQtdG9wKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKC0gcGFyZW50LWJvdHRvbSBwYXIpKSkpKSkKLSAgICAgICAgICAgICAg
ICA7OyBVc2UgYG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzJyBzaW5jZSBgbGVmdCcgYW5kIGB0
b3AnCisKKwkJOzsgVXNlIGBtb2RpZnktZnJhbWUtcGFyYW1ldGVycycgc2luY2UgYGxlZnQn
IGFuZCBgdG9wJwogICAgICAgICAgICAgICAgIDs7IG1heSB3YW50IHRvIG1vdmUgRlJBTUUg
b3V0IG9mIGl0cyBQQVJFTlQuCiAgICAgICAgICAgICAgICAgKG1vZGlmeS1mcmFtZS1wYXJh
bWV0ZXJzIGZyYW1lIGAoKGxlZnQgLiAoKyAsbGVmdCkpICh0b3AgLiAoKyAsdG9wKSkpKSkp
KSkKIAkgKG9sZC10cmFjay1tb3VzZSB0cmFjay1tb3VzZSkpCmRpZmYgLS1naXQgYS9zcmMv
ZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IDRmM2MxZWZjNGE3Li5jODRkYTNiYjQ5OCAx
MDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTE0NDksMTcg
KzE0NDksMzggQEAgZ2V0X2Z1dHVyZV9mcmFtZV9wYXJhbSAoTGlzcF9PYmplY3QgcGFyYW1l
dGVyLAogI2VuZGlmCiAKIGludAotdHR5X2NoaWxkX3Bvc19wYXJhbSAoc3RydWN0IGZyYW1l
ICpjaGlsZCwgTGlzcF9PYmplY3Qga2V5LAotCQkgICAgIExpc3BfT2JqZWN0IHBhcmFtcywg
aW50IGRmbHQpCit0dHlfY2hpbGRfcG9zX3BhcmFtIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3Bf
T2JqZWN0IGtleSwKKwkJICAgICBMaXNwX09iamVjdCBwYXJhbXMsIGludCBwb3MpCiB7Cisg
IHN0cnVjdCBmcmFtZSAqcCA9IFhGUkFNRSAoZi0+cGFyZW50X2ZyYW1lKTsKICAgTGlzcF9P
YmplY3QgdmFsID0gRmFzc3EgKGtleSwgcGFyYW1zKTsKKwogICBpZiAoQ09OU1AgKHZhbCkp
CiAgICAgewogICAgICAgdmFsID0gWENEUiAodmFsKTsKLSAgICAgIGlmIChGSVhOVU1QICh2
YWwpKQotCXJldHVybiBYRklYTlVNICh2YWwpOworCisgICAgICBpZiAoVFlQRV9SQU5HRURf
RklYTlVNUCAoaW50LCB2YWwpKQorCXsKKwkgIHBvcyA9IFhGSVhOVU0gKHZhbCk7CisKKwkg
IGlmIChwb3MgPCAwKQorCSAgICAvKiBIYW5kbGUgbmVnYXRpdmUgdmFsdWUuICovCisJICAg
IHBvcyA9IG1heCAoRVEgKGtleSwgUXRvcCkKKwkJICAgICAgID8gcC0+cGl4ZWxfaGVpZ2h0
IC0gZi0+cGl4ZWxfaGVpZ2h0IC0gcG9zCisJCSAgICAgICA6IHAtPnBpeGVsX3dpZHRoIC0g
Zi0+cGl4ZWxfd2lkdGggLSBwb3MsCisJCSAgICAgICAwKTsKKwl9CisgICAgICBlbHNlIGlm
IChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUXBsdXMpCisJICAgICAgICYmIENP
TlNQIChYQ0RSICh2YWwpKQorCSAgICAgICAmJiBUWVBFX1JBTkdFRF9GSVhOVU1QIChpbnQs
IFhDQVIgKFhDRFIgKHZhbCkpKSkKKwlwb3MgPSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwp
KSk7CisgICAgICBlbHNlIGlmIChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUW1p
bnVzKQorCSAgICAgICAmJiBDT05TUCAoWENEUiAodmFsKSkKKwkgICAgICAgJiYgUkFOR0VE
X0ZJWE5VTVAgKC1JTlRfTUFYLCBYQ0FSIChYQ0RSICh2YWwpKSwgSU5UX01BWCkpCisJcG9z
ID0gLSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwpKSk7CiAgICAgfQotICByZXR1cm4gZGZs
dDsKKworICByZXR1cm4gcG9zOwogfQogCiBpbnQKQEAgLTY0NzgsNiArNjQ5OSwzNyBAQCBE
RUZVTiAoImZyYW1lLXBvaW50ZXItdmlzaWJsZS1wIiwgRmZyYW1lX3BvaW50ZXJfdmlzaWJs
ZV9wLAogICByZXR1cm4gZGVjb2RlX2FueV9mcmFtZSAoZnJhbWUpLT5wb2ludGVyX2ludmlz
aWJsZSA/IFFuaWwgOiBRdDsKIH0KIAorREVGVU4gKCJtb3VzZS1wb3NpdGlvbi1pbi1yb290
LWZyYW1lIiwgRm1vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUsCisgICAgICAgU21vdXNl
X3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUsIDAsIDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1
cm4gbW91c2UgcG9zaXRpb24gaW4gc2VsZWN0ZWQgZnJhbWUncyByb290IGZyYW1lLgorCitS
ZXR1cm4gdGhlIHBvc2l0aW9uIG9mIGBtb3VzZS1wb3NpdGlvbicgaW4gY29vcmRpbmF0ZXMg
b2YgdGhlIHJvb3QgZnJhbWUKK29mIHRoZSBmcmFtZSByZXR1cm5lZCBieSAnbW91c2UtcG9z
aXRpb24nLiAgKi8pCisgICh2b2lkKQoreworICBMaXNwX09iamVjdCBwb3MgPSBtb3VzZV9w
b3NpdGlvbiAodHJ1ZSk7CisgIExpc3BfT2JqZWN0IGZyYW1lID0gWENBUiAocG9zKTsKKyAg
c3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChmcmFtZSk7CisgIGludCB4ID0gWEZJWE5VTSAo
WENBUiAoWENEUiAocG9zKSkpICsgZi0+bGVmdF9wb3M7CisgIGludCB5ID0gWEZJWE5VTSAo
WENEUiAoWENEUiAocG9zKSkpICsgZi0+dG9wX3BvczsKKworICBpZiAoIUZSQU1FUCAoZnJh
bWUpKQorICAgIHJldHVybiBRbmlsOworICBlbHNlCisgICAgeworICAgICAgZiA9IEZSQU1F
X1BBUkVOVF9GUkFNRSAoZik7CisKKyAgICAgIHdoaWxlIChmKQorCXsKKwkgIHggPSB4ICsg
Zi0+bGVmdF9wb3M7CisJICB5ID0geSArIGYtPnRvcF9wb3M7CisJICBmID0gRlJBTUVfUEFS
RU5UX0ZSQU1FIChmKTsKKwl9CisKKyAgICAgIHJldHVybiBGY29ucyAobWFrZV9maXhudW0g
KHgpLCBtYWtlX2ZpeG51bSAoeSkpOworICAgIH0KK30KKwogREVGVU4gKCJmcmFtZS0tc2V0
LXdhcy1pbnZpc2libGUiLCBGZnJhbWVfX3NldF93YXNfaW52aXNpYmxlLAogICAgICAgIFNm
cmFtZV9fc2V0X3dhc19pbnZpc2libGUsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQg
RlJBTUUncyB3YXMtaW52aXNpYmxlIGZsYWcgaWYgV0FTLUlOVklTSUJMRSBpcyBub24tbmls
LgpAQCAtNzI1MCw2ICs3MzAyLDcgQEAgZm9jdXMgKHdoZXJlIGEgZnJhbWUgaW1tZWRpYXRl
bHkgbG9zZXMgZm9jdXMgd2hlbiBpdCdzIGxlZnQgYnkgdGhlIG1vdXNlCiAgIGRlZnN1YnIg
KCZTZnJhbWVfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU3NldF9mcmFtZV9wb3NpdGlvbik7
CiAgIGRlZnN1YnIgKCZTZnJhbWVfcG9pbnRlcl92aXNpYmxlX3ApOworICBkZWZzdWJyICgm
U21vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUpOwogICBkZWZzdWJyICgmU2ZyYW1lX19z
ZXRfd2FzX2ludmlzaWJsZSk7CiAgIGRlZnN1YnIgKCZTZnJhbWVfd2luZG93X3N0YXRlX2No
YW5nZSk7CiAgIGRlZnN1YnIgKCZTc2V0X2ZyYW1lX3dpbmRvd19zdGF0ZV9jaGFuZ2UpOwpk
aWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5Ym9hcmQuYwppbmRleCA4NTBi
NWUwNjQ4MC4uOGRlNjFmOGMwMmEgMTAwNjQ0Ci0tLSBhL3NyYy9rZXlib2FyZC5jCisrKyBi
L3NyYy9rZXlib2FyZC5jCkBAIC01NTUyLDcgKzU1NTIsNiBAQCAjZGVmaW5lIElTT19GVU5D
VElPTl9LRVlfT0ZGU0VUIDB4ZmUwMAogICBTWU1CT0xfSU5ERVggKFFyaWdodG1vc3QpLCBT
WU1CT0xfSU5ERVggKFFlbmRfc2Nyb2xsKSwgU1lNQk9MX0lOREVYIChRcmF0aW8pCiB9Owog
Ci0jaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAvKiBBbiBhcnJheSBvZiBzeW1ib2wgaW5k
ZXhlcyBvZiBpbnRlcm5hbCBib3JkZXIgcGFydHMsIGluZGV4ZWQgYnkgYW4gZW51bQogICAg
aW50ZXJuYWxfYm9yZGVyX3BhcnQgdmFsdWUuICBOb3RlIHRoYXQgUW5pbCBjb3JyZXNwb25k
cyB0bwogICAgaW50ZXJuYWxfYm9yZGVyX3BhcnRfbm9uZSBhbmQgc2hvdWxkIG5vdCBhcHBl
YXIgaW4gTGlzcCBldmVudHMuICAqLwpAQCAtNTU2Myw3ICs1NTYyLDYgQEAgI2RlZmluZSBJ
U09fRlVOQ1RJT05fS0VZX09GRlNFVCAweGZlMDAKICAgU1lNQk9MX0lOREVYIChRYm90dG9t
X3JpZ2h0X2Nvcm5lciksIFNZTUJPTF9JTkRFWCAoUWJvdHRvbV9lZGdlKSwKICAgU1lNQk9M
X0lOREVYIChRYm90dG9tX2xlZnRfY29ybmVyKQogfTsKLSNlbmRpZgogCiAvKiBBIHZlY3Rv
ciwgaW5kZXhlZCBieSBidXR0b24gbnVtYmVyLCBnaXZpbmcgdGhlIGRvd24tZ29pbmcgbG9j
YXRpb24KICAgIG9mIGN1cnJlbnRseSBkZXByZXNzZWQgYnV0dG9ucywgYm90aCBzY3JvbGwg
YmFyIGFuZCBub24tc2Nyb2xsIGJhci4KQEAgLTU4NzksOSArNTg3Nyw3IEBAIG1ha2VfbGlz
cHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgeCwgTGlzcF9PYmpl
Y3QgeSwKICAgICAgIHhyZXQgPSBteDsKICAgICAgIHlyZXQgPSBteTsKIAotI2lmZGVmIEhB
VkVfV0lORE9XX1NZU1RFTQotICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKQotCSAgJiYg
RlJBTUVfTElWRV9QIChmKQorICAgICAgaWYgKEZSQU1FX0xJVkVfUCAoZikKIAkgICYmIE5J
TFAgKHBvc24pCiAJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpID4gMAog
CSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdfaW50ZXJuYWxfYm9yZGVy
KSkpCkBAIC01ODkxLDcgKzU4ODcsNiBAQCBtYWtlX2xpc3B5X3Bvc2l0aW9uIChzdHJ1Y3Qg
ZnJhbWUgKmYsIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHksCiAKIAkgIHBvc24gPSBi
dWlsdGluX2xpc3Bfc3ltYm9sIChpbnRlcm5hbF9ib3JkZXJfcGFydHNbcGFydF0pOwogCX0K
LSNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9rZXltYXAu
YyBiL3NyYy9rZXltYXAuYwppbmRleCA5OTI5MWU3MmIzZi4uNmNiZTJmZWJkZDEgMTAwNjQ0
Ci0tLSBhL3NyYy9rZXltYXAuYworKysgYi9zcmMva2V5bWFwLmMKQEAgLTE2NTksNyArMTY1
OSw4IEBAIERFRlVOICgiY3VycmVudC1hY3RpdmUtbWFwcyIsIEZjdXJyZW50X2FjdGl2ZV9t
YXBzLCBTY3VycmVudF9hY3RpdmVfbWFwcywKICAgICAgICBkb2M6IC8qIFJldHVybiBhIGxp
c3Qgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5bWFwcy4KIE9MUCBpZiBub24tbmlsIGlu
ZGljYXRlcyB0aGF0IHdlIHNob3VsZCBvYmV5IGBvdmVycmlkaW5nLWxvY2FsLW1hcCcgYW5k
CiBgb3ZlcnJpZGluZy10ZXJtaW5hbC1sb2NhbC1tYXAnLiAgUE9TSVRJT04gY2FuIHNwZWNp
ZnkgYSBjbGljayBwb3NpdGlvbgotbGlrZSBpbiB0aGUgcmVzcGVjdGl2ZSBhcmd1bWVudCBv
ZiBga2V5LWJpbmRpbmcnLiAgKi8pCitsaWtlIGluIHRoZSByZXNwZWN0aXZlIGFyZ3VtZW50
IG9mIGBrZXktYmluZGluZycgb3IgYSBsaXZlIHdpbmRvdyB3aGljaAorbWVhbnMgdG8gcmV0
dXJuIHRoZSBhY3RpdmUgbWFwcyBmb3IgdGhhdCB3aW5kb3cncyBidWZmZXIuICAqLykKICAg
KExpc3BfT2JqZWN0IG9scCwgTGlzcF9PYmplY3QgcG9zaXRpb24pCiB7CiAgIHNwZWNwZGxf
cmVmIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKQEAgLTE2ODksNiArMTY5MCwxNiBAQCBE
RUZVTiAoImN1cnJlbnQtYWN0aXZlLW1hcHMiLCBGY3VycmVudF9hY3RpdmVfbWFwcywgU2N1
cnJlbnRfYWN0aXZlX21hcHMsCiAJICBzZXRfYnVmZmVyX2ludGVybmFsIChYQlVGRkVSIChY
V0lORE9XICh3aW5kb3cpLT5jb250ZW50cykpOwogCX0KICAgICB9CisgIGVsc2UgaWYgKFdJ
TkRPV19MSVZFX1AgKHBvc2l0aW9uKSkKKyAgICB7CisgICAgICBpZiAoQlVGRkVSUCAoWFdJ
TkRPVyAocG9zaXRpb24pLT5jb250ZW50cykKKwkgICYmIFhCVUZGRVIgKFhXSU5ET1cgKHBv
c2l0aW9uKS0+Y29udGVudHMpICE9IGN1cnJlbnRfYnVmZmVyKQorCXsKKwkgIC8qIFNlZSBj
b21tZW50IGFib3ZlLiAgKi8KKwkgIHJlY29yZF91bndpbmRfY3VycmVudF9idWZmZXIgKCk7
CisJICBzZXRfYnVmZmVyX2ludGVybmFsIChYQlVGRkVSIChYV0lORE9XIChwb3NpdGlvbikt
PmNvbnRlbnRzKSk7CisJfQorICAgIH0KIAogICBpZiAoIU5JTFAgKG9scCkKICAgICAgIC8q
IFRoZSBkb2Mgc2FpZCB0aGF0IG92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwIHNob3Vs
ZApkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCBhODAxY2Fh
ZTA2Zi4uYjQ0ZmYzZDU2MmMgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94
ZGlzcC5jCkBAIC0xMTQ3LDcgKzExNDcsNyBAQCAjZGVmaW5lIFRISU5fU1BBQ0VfV0lEVEgg
MQogCQkJCSBzdHJ1Y3QgZ2x5cGhfbWF0cml4ICosIHB0cmRpZmZfdCwgcHRyZGlmZl90LAog
CQkJCSBpbnQsIGludCk7CiBzdGF0aWMgYm9vbCBjdXJzb3Jfcm93X2Z1bGx5X3Zpc2libGVf
cCAoc3RydWN0IHdpbmRvdyAqLCBib29sLCBib29sLCBib29sKTsKLXN0YXRpYyBib29sIHVw
ZGF0ZV9tZW51X2JhciAoc3RydWN0IGZyYW1lICosIGJvb2wsIGJvb2wpOworc3RhdGljIGJv
b2wgdXBkYXRlX21lbnVfYmFyIChzdHJ1Y3QgZnJhbWUgKiwgYm9vbCwgYm9vbCwgc3RydWN0
IHdpbmRvdyAqKTsKIHN0YXRpYyBib29sIHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21h
dHJpeCAoc3RydWN0IHdpbmRvdyAqKTsKIHN0YXRpYyBpbnQgdHJ5X3dpbmRvd19pZCAoc3Ry
dWN0IHdpbmRvdyAqKTsKIHN0YXRpYyB2b2lkIG1heWJlX3Byb2R1Y2VfbGluZV9udW1iZXIg
KHN0cnVjdCBpdCAqKTsKQEAgLTE0MDYyLDEzICsxNDA2MiwzMiBAQCBwcmVwYXJlX21lbnVf
YmFycyAodm9pZCkKICAgICAgIC8qIFRydWUgbWVhbnMgdGhhdCB1cGRhdGVfbWVudV9iYXIg
aGFzIHJ1biBpdHMgaG9va3MKIAkgc28gYW55IGZ1cnRoZXIgY2FsbHMgdG8gdXBkYXRlX21l
bnVfYmFyIHNob3VsZG4ndCBkbyBzbyBhZ2Fpbi4gICovCiAgICAgICBib29sIG1lbnVfYmFy
X2hvb2tzX3J1biA9IGZhbHNlOworICAgICAgc3RydWN0IHdpbmRvdyAqc3cgPSBYV0lORE9X
IChzZWxlY3RlZF93aW5kb3cpOworICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFdJTkRPV19Y
RlJBTUUgKHN3KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOworCisgICAgICBp
ZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChzZikgJiYgIUZSQU1FX1dJTkRPV19QIChzZikKKwkg
ICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChzZikgPT0gMAorCSAgJiYgRlJBTUVfTUVOVV9C
QVJfTElORVMgKHJmID0gcm9vdF9mcmFtZSAoc2YpKSAhPSAwCisJICAmJiBOSUxQIChGZGVm
YXVsdF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkpKQorCS8qIElmIHRoZSBzZWxl
Y3RlZCB3aW5kb3cncyBmcmFtZSBpcyBhIHR0eSBjaGlsZCBmcmFtZSB3aXRob3V0CisJICAg
bWVudSBiYXIsIHRoYXQgZnJhbWUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyIGFuZAor
CSAgICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIG5pbCwgdXBkYXRlIHRoZSBtZW51IGJh
ciBvZiB0aGUKKwkgICByb290IGZyYW1lIGZyb20gdGhlIHNlbGVjdGVkIHdpbmRvdy4gICov
CisJc2YgPSByZjsKKyAgICAgIGVsc2UKKwl7CisJICBzZiA9IE5VTEw7CisJICBzdyA9IE5V
TEw7CisJfQogCiAgICAgICByZWNvcmRfdW53aW5kX3NhdmVfbWF0Y2hfZGF0YSAoKTsKIAog
ICAgICAgRk9SX0VBQ0hfRlJBTUUgKHRhaWwsIGZyYW1lKQogCXsKIAkgIHN0cnVjdCBmcmFt
ZSAqZiA9IFhGUkFNRSAoZnJhbWUpOwotCSAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cg
KEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoZikpOworCSAgc3RydWN0IHdpbmRvdyAqdworCSAg
ICA9IHNmID09IGYgPyBzdyA6IFhXSU5ET1cgKEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoZikp
OwogCiAJICAvKiBJZ25vcmUgdG9vbHRpcCBmcmFtZS4gICovCiAJICBpZiAoRlJBTUVfVE9P
TFRJUF9QIChmKSkKQEAgLTE0MDgwLDggKzE0MDk5LDggQEAgcHJlcGFyZV9tZW51X2JhcnMg
KHZvaWQpCiAJICAgICAgJiYgIVhCVUZGRVIgKHctPmNvbnRlbnRzKS0+dGV4dC0+cmVkaXNw
bGF5KQogCSAgICBjb250aW51ZTsKIAotCSAgaWYgKCFGUkFNRV9QQVJFTlRfRlJBTUUgKGYp
KQotCSAgICBtZW51X2Jhcl9ob29rc19ydW4gPSB1cGRhdGVfbWVudV9iYXIgKGYsIGZhbHNl
LCBtZW51X2Jhcl9ob29rc19ydW4pOworCSAgbWVudV9iYXJfaG9va3NfcnVuCisJICAgID0g
dXBkYXRlX21lbnVfYmFyIChmLCBmYWxzZSwgbWVudV9iYXJfaG9va3NfcnVuLCB3KTsKIAog
CSAgdXBkYXRlX3RhYl9iYXIgKGYsIGZhbHNlKTsKICNpZmRlZiBIQVZFX1dJTkRPV19TWVNU
RU0KQEAgLTE0MDkzLDEwICsxNDExMiwyMSBAQCBwcmVwYXJlX21lbnVfYmFycyAodm9pZCkK
ICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNU
RURfRlJBTUUgKCk7CisgICAgICBzdHJ1Y3Qgd2luZG93ICpzdyA9IFhXSU5ET1cgKHNlbGVj
dGVkX3dpbmRvdyk7CisgICAgICBzdHJ1Y3QgZnJhbWUgKnNmID0gV0lORE9XX1hGUkFNRSAo
c3cpOworICAgICAgc3RydWN0IGZyYW1lICpyZiA9IE5VTEw7CiAKLSAgICAgIGlmICghRlJB
TUVfUEFSRU5UX0ZSQU1FIChzZikpCi0JdXBkYXRlX21lbnVfYmFyIChzZiwgdHJ1ZSwgZmFs
c2UpOworICAgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoc2YpICYmICFGUkFNRV9XSU5E
T1dfUCAoc2YpCisJICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAoc2YpID09IDAKKwkgICYm
IEZSQU1FX01FTlVfQkFSX0xJTkVTIChyZiA9IHJvb3RfZnJhbWUgKHNmKSkgIT0gMAorCSAg
JiYgTklMUCAoRmRlZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKwkv
KiBJZiB0aGUgc2VsZWN0ZWQgd2luZG93J3MgZnJhbWUgaXMgYSB0dHkgY2hpbGQgZnJhbWUg
d2l0aG91dAorCSAgIG1lbnUgYmFyLCB0aGF0IGZyYW1lJ3Mgcm9vdCBmcmFtZSBoYXMgYSBt
ZW51IGJhciBhbmQKKwkgICAndHR5LW1lbnUtb3Blbi11c2UtdG1tJyBpcyBuaWwsIHVwZGF0
ZSB0aGUgbWVudSBiYXIgb2YgdGhlCisJICAgcm9vdCBmcmFtZSBmcm9tIHRoZSBzZWxlY3Rl
ZCB3aW5kb3cuICAqLworCXNmID0gcmY7CisKKyAgICAgIHVwZGF0ZV9tZW51X2JhciAoc2Ys
IHRydWUsIGZhbHNlLCBzdyk7CiAKICAgICAgIHVwZGF0ZV90YWJfYmFyIChzZiwgdHJ1ZSk7
CiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCkBAIC0xNDExOCwyMCArMTQxNDgsMTQgQEAg
cHJlcGFyZV9tZW51X2JhcnMgKHZvaWQpCiAgICB1cGRhdGVkIHZhbHVlIG9mIHRoaXMgZmxh
ZywgdG8gcGFzcyB0byB0aGUgbmV4dCBjYWxsLiAgKi8KIAogc3RhdGljIGJvb2wKLXVwZGF0
ZV9tZW51X2JhciAoc3RydWN0IGZyYW1lICpmLCBib29sIHNhdmVfbWF0Y2hfZGF0YSwgYm9v
bCBob29rc19ydW4pCit1cGRhdGVfbWVudV9iYXIgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBz
YXZlX21hdGNoX2RhdGEsIGJvb2wgaG9va3NfcnVuLCBzdHJ1Y3Qgd2luZG93ICp3KQogewot
ICBMaXNwX09iamVjdCB3aW5kb3c7Ci0gIHN0cnVjdCB3aW5kb3cgKnc7Ci0KICAgLyogSWYg
Y2FsbGVkIHJlY3Vyc2l2ZWx5IGR1cmluZyBhIG1lbnUgdXBkYXRlLCBkbyBub3RoaW5nLiAg
VGhpcyBjYW4KICAgICAgaGFwcGVuIHdoZW4sIGZvciBpbnN0YW5jZSwgYW4gYWN0aXZhdGUt
bWVudWJhci1ob29rIGNhdXNlcyBhCiAgICAgIHJlZGlzcGxheS4gICovCiAgIGlmIChpbmhp
Yml0X21lbnViYXJfdXBkYXRlKQogICAgIHJldHVybiBob29rc19ydW47CiAKLSAgd2luZG93
ID0gRlJBTUVfU0VMRUNURURfV0lORE9XIChmKTsKLSAgdyA9IFhXSU5ET1cgKHdpbmRvdyk7
Ci0KICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKQogICAgICAgPwogI2lmZGVmIEhBVkVfRVhU
X01FTlVfQkFSCkBAIC0yMTA4OCwyNCArMjExMTIsMzMgQEAgcmVkaXNwbGF5X3dpbmRvdyAo
TGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAogICAvKiBXaGVu
IHdlIHJlYWNoIGEgZnJhbWUncyBzZWxlY3RlZCB3aW5kb3csIHJlZG8gdGhlIGZyYW1lJ3Mg
bWVudQogICAgICBiYXIsIHRvb2wgYmFyLCB0YWItYmFyLCBhbmQgdGhlIGZyYW1lJ3MgdGl0
bGUuICAqLwotICBpZiAodXBkYXRlX21vZGVfbGluZQotICAgICAgJiYgRVEgKEZSQU1FX1NF
TEVDVEVEX1dJTkRPVyAoZiksIHdpbmRvdykpCisgIGlmICh1cGRhdGVfbW9kZV9saW5lICYm
IEVRIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpLCB3aW5kb3cpKQogICAgIHsKLSAgICAg
IGJvb2wgcmVkaXNwbGF5X21lbnVfcDsKLQogICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChm
KSkKIAl7CiAjaWZkZWYgSEFWRV9FWFRfTUVOVV9CQVIKLQkgIHJlZGlzcGxheV9tZW51X3Ag
PSBGUkFNRV9FWFRFUk5BTF9NRU5VX0JBUiAoZik7CisJICBpZiAoRlJBTUVfRVhURVJOQUxf
TUVOVV9CQVIgKGYpKQorCSAgICBkaXNwbGF5X21lbnVfYmFyICh3KTsKICNlbHNlCi0JICBy
ZWRpc3BsYXlfbWVudV9wID0gRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID4gMDsKKwkgIGlm
IChGUkFNRV9NRU5VX0JBUl9MSU5FUyAoZikgPiAwKQorCSAgICBkaXNwbGF5X21lbnVfYmFy
ICh3KTsKICNlbmRpZgogCX0KICAgICAgIGVsc2UKLSAgICAgICAgcmVkaXNwbGF5X21lbnVf
cCA9IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDA7CisJeworCSAgc3RydWN0IGZyYW1l
ICpyZiA9IE5VTEw7CiAKLSAgICAgIGlmIChyZWRpc3BsYXlfbWVudV9wKQotICAgICAgICBk
aXNwbGF5X21lbnVfYmFyICh3KTsKKwkgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYpCisJ
ICAgICAgJiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID09IDAKKwkgICAgICAmJiBGUkFN
RV9NRU5VX0JBUl9MSU5FUyAocmYgPSByb290X2ZyYW1lIChmKSkgIT0gMAorCSAgICAgICYm
IE5JTFAgKEZkZWZhdWx0X3ZhbHVlIChRdHR5X21lbnVfb3Blbl91c2VfdG1tKSkpCisJICAg
IC8qIElmIEYgaXMgYSB0dHkgY2hpbGQgZnJhbWUgd2l0aG91dCBtZW51IGJhciwgdGhhdCBm
cmFtZSdzIHJvb3QKKwkgICAgICAgZnJhbWUgaGFzIGEgbWVudSBiYXIgYW5kICd0dHktbWVu
dS1vcGVuLXVzZS10bW0nIGlzIG5pbCwKKwkgICAgICAgZGlzcGxheSB0aGUgbWVudSBiYXIg
b2YgdGhlIHJvb3QgZnJhbWUncyBzZWxlY3RlZCB3aW5kb3cuICAqLworCSAgICBkaXNwbGF5
X21lbnVfYmFyIChYV0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKHJmKSkpOworCSAg
ZWxzZSBpZiAoRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID4gMCkKKwkgICAgZGlzcGxheV9t
ZW51X2JhciAodyk7CisJfQogCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAgICAgICBp
ZiAoRlJBTUVfV0lORE9XX1AgKGYpKQpAQCAtMjczNDcsMTAgKzI3MzgwLDE5IEBAIGRpc3Bs
YXlfdHR5X21lbnVfaXRlbSAoY29uc3QgY2hhciAqaXRlbV90ZXh0LCBpbnQgd2lkdGgsIGlu
dCBmYWNlX2lkLAogewogICBzdHJ1Y3QgaXQgaXQ7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IFNF
TEVDVEVEX0ZSQU1FICgpOwotICBzdHJ1Y3Qgd2luZG93ICp3ID0gWFdJTkRPVyAoZi0+c2Vs
ZWN0ZWRfd2luZG93KTsKICAgc3RydWN0IGdseXBoX3JvdyAqcm93OwogICBzaXplX3QgaXRl
bV9sZW4gPSBzdHJsZW4gKGl0ZW1fdGV4dCk7CiAKKyAgc3RydWN0IGZyYW1lICpyZiA9IE5V
TEw7CisKKyAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikgJiYgIUZSQU1FX1dJTkRPV19Q
IChmKQorICAgICAgJiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID09IDAKKyAgICAgICYm
IEZSQU1FX01FTlVfQkFSX0xJTkVTIChyZiA9IHJvb3RfZnJhbWUgKGYpKSAhPSAwCisgICAg
ICAmJiBOSUxQIChGZGVmYXVsdF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkpKQor
ICAgIGYgPSByZjsKKworICBzdHJ1Y3Qgd2luZG93ICp3ID0gWFdJTkRPVyAoZi0+c2VsZWN0
ZWRfd2luZG93KTsKKwogICBlYXNzZXJ0IChGUkFNRV9URVJNQ0FQX1AgKGYpKTsKIAogICAv
KiBEb24ndCB3cml0ZSBiZXlvbmQgdGhlIG1hdHJpeCdzIGxhc3Qgcm93LiAgVGhpcyBjYW4g
aGFwcGVuIGZvcgpAQCAtMzg0NjUsNiArMzg1MDcsNyBAQCBzeW1zX29mX3hkaXNwICh2b2lk
KQogICBERUZTWU0gKFFuaGRyYWcsICJuaGRyYWciKTsKICAgREVGU1lNIChRdmRyYWcsICJ2
ZHJhZyIpOwogICBERUZTWU0gKFFob3VyZ2xhc3MsICJob3VyZ2xhc3MiKTsKKyAgREVGU1lN
IChRdHR5X21lbnVfb3Blbl91c2VfdG1tLCAidHR5LW1lbnUtb3Blbi11c2UtdG1tIik7CiB9
CiAKIAo=
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: text/x-emacs-lisp; charset=UTF-8; name="tty-child-frames.el"
Content-Disposition: attachment; filename="tty-child-frames.el"
Content-Transfer-Encoding: base64
Ozs7ICAtKi0gbGV4aWNhbC1iaW5kaW5nOnQgLSotCihzdGFuZGFyZC1kaXNwbGF5LXVuaWNv
ZGUtc3BlY2lhbC1nbHlwaHMpCjs7IChzZXRxICB0dHktbWVudS1vcGVuLXVzZS10bW0gdCkK
KHVubGVzcyB3aW5kb3ctc3lzdGVtICh4dGVybS1tb3VzZS1tb2RlIDEpKQoKOzsgKHRhYi1i
YXItbW9kZSAxKQo7OyAoc2V0cSBkaXNwbGF5LWxpbmUtbnVtYmVycyB0KQo7OyAoc2V0cSB0
cnVuY2F0ZS1saW5lcyB0KQo7OyAoc2V0cSBhdXRvLWhzY3JvbGwtbW9kZSB0KQo7OyAoc2V0
cSBhdXRvLWhzY3JvbGwtbW9kZSAnY3VycmVudC1saW5lKQoKKGRlZnZhciByb290LWZyYW1l
IChzZWxlY3RlZC1mcmFtZSkpCihkZWZ2YXIgdHR5LTEgbmlsKQooZGVmdmFyIHR0eS0yIG5p
bCkKCihkZWZ1biB0dHktMSAoKQogIChpbnRlcmFjdGl2ZSkKICAoc2V0cSB0dHktMQoJKG1h
a2UtZnJhbWUKCSBgKChwYXJlbnQtZnJhbWUgLiAscm9vdC1mcmFtZSkKCSAgIChsZWZ0IC4g
NDApICh0b3AgLiAxMCkKCSAgICh3aWR0aCAuIDAuMykgKGhlaWdodCAuIDAuNSkKCSAgICh0
b29sLWJhci1saW5lcyAuIDApCgkgICAobWVudS1iYXItbGluZXMgLiAwKQoJICAgKG1pbmli
dWZmZXIgLiBuaWwpCgkgICAoZHJhZy1pbnRlcm5hbC1ib3JkZXIgLiB0KQoJICAgKGRyYWct
d2l0aC1oZWFkZXItbGluZSAuIHQpCgkgICAoZHJhZy13aXRoLW1vZGUtbGluZSAuIHQpCgkg
ICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4gMikKCSAgIChib3JkZXItd2lkdGggLiAwKQoJ
ICAgKGJhY2tncm91bmQtY29sb3IgLiAieWVsbG93IikpKSkKICAobGV0ICgod2luZG93IChm
cmFtZS1yb290LXdpbmRvdyB0dHktMSkpKQogICAgKHNldC13aW5kb3ctcGFyYW1ldGVyCiAg
ICAgd2luZG93ICdoZWFkZXItbGluZS1mb3JtYXQgJygiICIgKDpldmFsIChidWZmZXItbmFt
ZSkpKSkpCiAgKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMgdHR5LTEpKQoKKGRlZnVu
IHR0eS0yICgpCiAgKGludGVyYWN0aXZlKQogIChzZXRxIHR0eS0yCgkobWFrZS1mcmFtZQoJ
IGAoKHBhcmVudC1mcmFtZSAuICxyb290LWZyYW1lKQoJICAgKGxlZnQgLiAxMCkgKHRvcCAu
IDEwKQoJICAgKHdpZHRoIC4gMC42KSAoaGVpZ2h0IC4gMC4zKQoJICAgKHRvb2wtYmFyLWxp
bmVzIC4gMCkKCSAgIChtZW51LWJhci1saW5lcyAuIDApCgkgICAobWluaWJ1ZmZlciAuIG5p
bCkKCSAgIChkcmFnLWludGVybmFsLWJvcmRlciAuIHQpCgkgICAoZHJhZy13aXRoLWhlYWRl
ci1saW5lIC4gdCkKCSAgIChkcmFnLXdpdGgtbW9kZS1saW5lIC4gdCkKCSAgIChpbnRlcm5h
bC1ib3JkZXItd2lkdGggLiAyKQoJICAgKGJvcmRlci13aWR0aCAuIDApCgkgICAoYmFja2dy
b3VuZC1jb2xvciAuICJvcmFuZ2UiKSkpKQogIChsZXQgKCh3aW5kb3cgKGZyYW1lLXJvb3Qt
d2luZG93IHR0eS0yKSkpCiAgICAoc2V0LXdpbmRvdy1wYXJhbWV0ZXIKICAgICB3aW5kb3cg
J2hlYWRlci1saW5lLWZvcm1hdCAnKCIgIiAoOmV2YWwgKGJ1ZmZlci1uYW1lKSkpKSkKICAo
c2VsZWN0LWZyYW1lLXNldC1pbnB1dC1mb2N1cyB0dHktMikpCgooZGVmdW4gdHR5LXRvZ2ds
ZS0xICgpCiAgKGludGVyYWN0aXZlKQogIChpZiAoZnJhbWUtbGl2ZS1wIHR0eS0xKQogICAg
ICAoaWYgKGZyYW1lLXZpc2libGUtcCB0dHktMSkKCSAgKG1ha2UtZnJhbWUtaW52aXNpYmxl
IHR0eS0xKQoJKG1ha2UtZnJhbWUtdmlzaWJsZSB0dHktMSkpCiAgICAodHR5LTEpKSkKCihk
ZWZ1biB0dHktdG9nZ2xlLTIgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGlmIChmcmFtZS1saXZl
LXAgdHR5LTIpCiAgICAgIChpZiAoZnJhbWUtdmlzaWJsZS1wIHR0eS0yKQoJICAobWFrZS1m
cmFtZS1pbnZpc2libGUgdHR5LTIpCgkobWFrZS1mcmFtZS12aXNpYmxlIHR0eS0yKSkKICAg
ICh0dHktMikpKQoKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCBsKV0gJ3R0eS10b2dnbGUt
MSkKKGdsb2JhbC1zZXQta2V5IFsobWV0YSBsKV0gJ3R0eS10b2dnbGUtMikK
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: image/png; name="before.png"
Content-Disposition: attachment; filename="before.png"
Content-Transfer-Encoding: base64
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
CBaLhZzcXEJDQpwjqCXupnqBvVnrcw15bEidrQ9vb28MBgNjr76ahYuX8NHcT3j0oQebrp6f
A86nvAghhBDnqgZNOWW1WjGVl5OWns7vq9dyz/QHiYmO4aYbrgegvNyEXqdDo6nYzfoNGzh+
4oR9+0BDIMdPnrR/jo9rRdfOnfnP7A8pLy8HoKSklJTUtIYks1Y2m1KRD5OJg4eS+O7H/zGw
fz9V6akrf7VZuHQZRSUlACz77TeKCgvpl9jX7TJoCWVY1bIVK2nXti1dOnfC39/P/jf+mtEs
XvYrVmvdd2uysrLIzc0DICAggK6dO1Nmcnw0KSE+nvbt2vLRp59jPfMuUUbGKVVprF5mjaW5
j4UrDamzDfX4ww/z088LSDp8+Jyv5550PuVFCCGEOFc1aFD02ZdfcelVo7j59jv55IsvGDni
Sua8+5b9Zf2B/fvTuWNHrr1pEtdPuoVFS39l7OjR9u0nTbieBYuXMmHyrXz5zbcA/POlF8g4
dYqrxoxn7A03Mfb6CWz/66+GJLNWn86bx5DhV3HZyNE88benSUzs6/Byc23pqSt/NdLAhGvH
MfHW27nm+ht56933eeHZv9sfl3KnDFpCGVa1YPESxo0e5bR86MWDUWw2NmzaVGccaekZTLzt
dq6bOJnrJk7m9zVrue/uu5zC/eOlF9h/4ABXXD2GK68Zxwv/+IeqNLoqs8bSnMfClXrXWQ/o
3Kkjo0eN5F9vvo2iKOd0Pfe08ykvQgghxLlIE9lrtDLpxUW8OqKk0XaSm5uHTq9zOb1s5SNQ
4WFhDi/KFxYWUVpWSkhwMF5eXo2WNrVqS09t+auN2WwmPz+fsLAwl490qS2Dc6UM3WG12cjN
zcVLr8dY5f0YV3Jz87DarISFhqp+NK6mMmssLe1Y1LfONoYLuZ5Xdz7lRQghhDgXPLXcn2+f
H9M0gyIhhBBCCCGEaGkqB0WN/xW5EEIIIYQQQrRgMigSQgghhBBCXNBkUCSEEEIIIYS4oMmg
SAghhBBCCHFBk0GREEIIIYQQ4oKmd7UwIyOjqdMhhBBCCCGEEI0uOjraaZnLQVG79h0aPTFC
CCGEEEIIUR/bNq5F42Oo17aqB0UAiqLUaydCCCGEEEII0Vg0Go3H45R3ioQQQgghhBAXNBkU
CSGEEEIIIc4biqK4/dSbDIqEEEIIIYQQ542SkhKKS0rcGhjJoEgIIYRtwIhGAAAgAElEQVQQ
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
hiUQUnCH1hgcjDHGNtgYb9iSvMiWbUnPH6puEBJGNpIF/r5e5/jY+t2v7v3e35Wu7/v+llvf
e3nViL5jB6LnhAb9bbUaMb7/WBpM/f38jRibtG078fe92/PVYBmK30vgXdl9Dhgexw4koyb1
XjbxfXzIZsu67gPxxy0+8bgpH0teu+enL9STpPHCU7/dk9H8QveHWr79z9GW03PbnUf7npSg
oit5638N7mfrDHQ9D/Rx63HC+3GStn6n+zib6Z9Kzv6F5PX73nFGuSFYL0nS8mL3Llrn/GIy
69PJ1r/+aWh8GLTv7T6ua9KlvZef6u/vsQPduwdOu6b38vqzknELe+/aNhQmXNQ78EZO7D7W
p+Unvec4mM9XAzJEP39Av0QRMDz2re4+E9dZ13Wfxanpo8mS3z3163v9vuTovuSj3+m+zoaZ
3e/Ez3/Hbklt27pffI2e073bzqyfTy76f/q/ztoxyZhzusdVj+p+odTfu8oDHTdQI8Z2X9/I
xqSmIRkz9/1vTWld1x0qU6/uPiakYVb3eu/xk99Pmq7qPv3z2Pndl40/L1n8v3f/3aOqpvts
Vj277vSMfaeBrueBPm4DvR/JwNff0ZbuLUMLf6v7Z3Hzf+s7ZqDrJTm5n4ONf5rMvi2ZeUv/
t9tj1KTk1m3J8q+8+5iBqqpJzrqh759T2eLx6re6j8E69xe7dz2cfHmy9N+f+txe+sPuXcQW
/mb3+hu3qPvMc0ebe58GeyjUjkk+8hfdP0ujZyeXfSPp7Oh9u4P9fDVQg/17Cbwru88Bw+Ol
LyeTLkk+8T+7vz6yO/lfX+o+De+paN+T/PDa7jMv9Vxn0v35IRv//Kdfr/k/kqv+Jvm5LT+9
/JnPJ9f+uPf1Xb2yewvC292ysfvvzf/tp2c/G+i4gerv+n721VO/vh4v/t/dJzv45OP/fGxI
V/fxTHue7r5856PJj27pPjX0gl//52/qSvb+0093KauqST57tPcxQdc/2/33S3+UPP9//nT5
QNfzQB+3gd6Pk11/m/9b9/fsf7n3Vq0eA1kv73a7J/o52Pbd7mPMjjYne/6+7+32qB6Z1DV1
bzV5v2rqkk/8Xd/lj1514jn058U/6D7m5rJvJZfXdgfms7/SHRenYvPd3XGy9N//NAD3Ptv9
s9H+1qld50Ct/3+7g+jnXuv+mTr8ZvLj23rvtjfYz1cDNdi/l8C7qppywU1dn/39lfnydT89
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
Z87MtGnTTriFtLOzc0DXOdBxH0QNDQ1JkrvvvrvfN1TOZNdcc0127NiRDRs29Lmss7Mzra2t
mTt3buWNmPnz51f2EqAMoggoUk1NTW688cZs3bo1a9eu7XXZiBEjcuzYsSTJ0aNHM3LkyCxf
vjwHDhzo825z25ED6eg8lvPmXpG5sy7IjKlzs3XHy9nTvC21NSNO25ajd7Nv377s27ev8nVX
V1e2bduW+fPnp6qqasi2JBw4cCAtLS1ZtGhRamtrM3PmzOzZsyevvfZaRowY0Wvs3r17M23a
tEycODFTp07N0aNHc/DgwYwePbrXuOnTp+eKK67ItGnT0tXVlTfeeCNPPfVUnxd35513XpYt
W5YJEybk+PHjaW1tzebNm7NmzZocOXLkpMY1NTXloosuyowZMzJ27NgcOXIkO3bsyKpVq7J3
797KddXU1OQTn/hEFi1alM7Ozjz33HPZuHFjbrrpprz55pt5/PHHh+R+nMx6Lk1VVVUWLlyY
J598MqNGjcrixYtP226jH1Q9UfT23WtLMHbs2CxZsiQPPPBAv5dXV1dXnhdXr16dcePGpamp
KS+88EKampp6jR05cmQuvvjizJ49OzU1NdmyZUtWr17d542choaGLF++PNOmTUtNTU1aW1vz
0ksv5fXXXz/pcVVVVZk7d27mzp2bCRMmpL29PVu3bs2aNWs+1JH+QSOKgCKNHTs2y5cvz+TJ
k/tE0datW3Peeefl8OHDOfvss7N+/frccMMNfbYSJckbuzbmjV0bc81ln82r257PjCnz8+yL
/zPbd286XXflpNTU1GTRokV57bXXhnTXqmeeeSbPPvtsvvSlL6WzszNjx47N888/n2eeeabP
2P3792fatGmZNGlSpk6dmj179qSxsbHXmLPPPjuf//znU1tbm6NHj6a6ujpNTU2ZP39+/uIv
/qLyIu/888/Pbbfd1ut7m5qaMnv27Dz33HOVZQMdN2PGjFx55ZVJut9Nrq6uzvTp07N06dL8
+Z//eeVg+xUrVuTyyy+vfN/111+fyy67LI2Njb1etAz2/TiZ9Vyas88+Ow0NDXnllVcyfvz4
LF68OE888cRwT2tYjR49OkeOHCluS+y8efNSVVXV7y6UPV577bXccMMNqa6uzvz587N79+4c
OnSoVxSNGjUqd911V+rr6/PCCy+kq6srV111VebNm5dvf/vblXFVVVX5pV/6pVRXV2f9+vXp
6Oio/P6+M3YGMq6hoSG33nprNm7cmO3bt6ehoSHXXnttZs+e/a6hx8kTRUCRWlpacu+99/Z6
t7/HypUrc+ONN+b222/PP/7jP2bs2LH9biXqsWjOJVm26JP5xnf/r1yw4Krc+olfz91/+3tp
O7J/SO9DVVVVxo0b12tZV1dXDhw40GtZfX19rrrqqowaNSpnn3123nrrrTz00ENDOrek+9iL
qVOn5tvf/nYuu+yyrFixItu3b+/zTmlLS0u6uroyefLkTJkyJa+88kqmTZvW64XbDTfckNra
2qxduzbf//73U11dnTvuuCNz587NZZddVtkS03Piht27d+e//tf/WomOMWPG9Do5xkDH/eQn
P0lHR0e2bNmSgwcPZty4cfmlX/qlTJgwIeeff35+/OMfp66uLsuXL0+SrFu3Lg8//HAaGxtz
55139lkng30/TmY9l2bx4sXZsWNH9u/fn5dffjkf/ehH09TUVPQuUQ0NDRk5cmR+53d+J3V1
dTl48GDWrVuXJ554IkePDu9W7aHUswX1RGdmfOONN9LV1ZXZs2dn7ty52bhxY2pqanqN+cQn
PpHRo0fnz/7szyrH761bty6/+qu/mvnz51f+jxg/fnyampry7W9/u7Lrcn8GOu7QoUP54z/+
415vsOzYsSO33nprVq5cWdmzgfdHFAHFeuWVV/pd3traWjmDV21tbX7zN38zK1euzLhx4zJ+
/Pjs2LGj1wv213esz0M//v/SevCtPPviwzlwaF8Otw/97ikjRozIv/23/7bXsvb29nz5y1/u
tay2tjZTp07NyJEjM2rUqIwcOTKNjY194mmw/dM//VOOHTuWV199NQcPHszevXv73X2ppqYm
+/bty+zZszN69Ojs27cvNTU1lXU8evToTJs2LUn3SSTOOeecJN0vCubOnZuZM2dWrqtny01T
U1M+9alP5bnnnsuWLVv6bBUb6LiOjo5s3LgxZ511VubPn5/a2tocPnw4EyZMqOyK1NTUVNlV
7fHHH8/BgwcrLzYvueSSynUNxf04mfVckqqqqixevDj/9E//lCR58803c/DgwSxevLjoKHru
uefS2tqalpaWVFVV5ZxzzsnHPvaxTJ48udeWjjPNuHHjTngCiqT7DaVNmzZl4cKFOffcc/MP
//APWbJkSa8x5513XrZs2ZLRo0dXdu/teSNq1qxZlSg6ePBgWlpa8slPfjLt7e3Ztm1bv7c5
0HFJ95bqqqqqjB07tnL6/Z43xvp7c4+TJ4qAQXfDDTdUTqvc4+677x7wC7WB7tY12OP6s2zZ
shw4cCAjRozIr/zKr2TXrl0ZP358vvWtb1XGHG4/lJc2/68kSfvRw3l+w4/6va73u17e6fjx
4/nmN7/Za1l/9/XAgQP5q7/6qyTdAXLdddflC1/4Qr7+9a9n//6h25q1ffv2bN++PUmyc+fO
PPzww/2Oq6ury86dOysvQN75+S9jxoyp/PvGG2/s8/0jR46s/Pvpp5+u7Bp53nnn5bzzzsve
vXvzve99L2+88cZJj7voooty4403Vm6jo6Mj1dXdn3teVVWVpHtXzB5vPy7onS/ChuJ+JANf
zyXpOQbsggsuyIIFC5J0v4mwePHiPPXUU8M8u+HT3t6el156qfL19u3bc/z48Vx//fWZNGnS
Gfviuq6urtexle/mlVdeyc0335xjx45l27ZtvaKouro6Y8aMqfw+vtPbnweOHz+ev/zLv8wN
N9yQX/7lX8727dvz93//931O8jDQcbW1tbn++utzwQUXJOmOqZ7n+p7nId4/UQQMuueffz6v
vfZar2XvPIj82LFjqa+v77WstrY2I0eO7LUrwGCPOxm1tbX5mZ/5mfzgBz/INddck4cffjgv
vvhivvCFL+Siiy7K82/2v6Xp3QxkvZyMzs7Okz67WEdHR1atWpWPfOQjmT17dl588cVTvv3B
UltbmzfeeKPyQuOdUfT2XV6+//3vV3Zb6fH2kyd0dnbmBz/4QZ5++ulccsklWbZsWSZNmpRf
/MVfzFe+8pXKMTsDGVdbW5ubb745NTU1efzxx/Pss8/m6NGjue2223L++edXbvPw4cOVf9fX
16etrS1J+pzoYCjuB/1bsmRJ9u/fn5/85CeVZTt37szy5cszYcIEH7z6Nj2RPX78+DM2io4d
O9brw3ffTc8uc+vXr+/zBlNXV1c6Ozvz5JNP5sc//vF7XteBAwfyP/7H/8jEiRNz5ZVX5o47
7siqVavy6KOPnvS4a6+9NgsWLMh//+//vfIGSFNTU37t135tIHefARJFwKDbuXPne2792Ldv
X6ZMmdJrWc/Xb7311pCNOxnLli3LoUOHsmHDhtx6662Vd/7379+f8ePHJwP/6KMkA1svp0PP
cUgflP3Qa2pqsnbt2rz11lvp6urqFRlJdzi2tLSksbExc+bM6bUP/ciRI3ttgZk3b1527dqV
1tbWPP744/nJT36Sf/Nv/k1qa2szZcqUSkwMZNyECRMqxxSsW7cuR48eTV1dXWbNmtVrfnv3
7k1XV1eqqqpy8cUX5+mnn05tbW0WLlw45PeD/i1evDjr1q3Lj3700622NTU1Of/887NkyZI8
/fTTwzi7D5bJkycn6btl80xy4MCByv08kba2tnzta1/r9QZFj66urmzfvj1z584dUBT12Ldv
X1auXJmk+wQq74yigYybM2dOXnzxxUoQJal8fAGDRxQBw2Lt2rW5/fbbc80112Tt2rWpr6/P
9ddfn9bW1l5bUwZ7XI/6+vr863/9r7N+/fp+dzfq2UrUc0KCvXv3ZsqUKdm2bVuampry/PPP
D/YqGRLXXXdddu7cmd27d+fYsWNpamrKihUrsn///g/UhzXu37+/sivfxIkT+1z++OOP57bb
bssFF1yQhQsXZu/evRkxYkQmTpyYZ599No888kiS5LLLLqt8Cv2BAwcqu7R0dnb2iuOBjGtt
bc2xY8cyYsSI3HXXXdmxY0emT59eOZbo7XPfuHFjFixYkBUrVuTCCy9MQ0NDn3FDcT/oa/r0
6WlsbOyzC1JHR0deffXVPlE0cuTIyuNVU1OTiRMn5uDBg31OPDDQccNp9uzZvXbDTLo/kLTn
jYarrroqe/furRxXNXv27FxzzTV59dVXz9itREn3MWXnnXdeamtr3/PMeyfaivjkk0/m85//
fG688cY8++yzlZOvzJs3L6+++mplvU6fPj1nnXVWNm3alLa2towfPz6zZs3q87s70HGtra2Z
M2dOGhsbc/To0Zx99tm55pprTnFt8G5EETAsXnrppfzwhz/MRz/60Xz0ox9N0n3A+T333NPr
P63BHtejpqYmDQ0NvfYDf7uLL744bW1tlZMxPPLII/n0pz+dK6+8MgcPHszzzz+f2umDsy6G
UmdnZ2666aaMGjUqSfe7nZs3b87f/d3ffWC2FA3Eiy++mGPHjuXqq6/OtGnTMn1698rfv39/
3nzzp5vsdu7cWTlhQ8+B0Hv37s3jjz/e6/ipgYw7evRoVq5cmU996lMZM2ZM5s6dm7Vr1+aN
N97IzTff3Gt+Dz30UEaPHp0ZM2akqakpmzZtyuHDh3vtZjcU94O+Fi9enMOHD2fr1q19Llu/
fn0+/elPp7GxMS0tLbnzzjszf/78XmN+4zd+I0nywgsv5Hvf+16SDHjccLvqqqv6LLv77rsr
66Krqyu33HJLZVeyo0eP5rnnnjvjT1W+adOm3HDDDTnnnHNOeFru97J58+bce++9WbFiRT7y
kY8k6V6nO3bs6HPino9+9KO9nie2bt1a2RJ0suMeffTR3H777fmt3/qtJMmuXbvywAMP5Jd/
+ZdP+b7QV9WUC27q+uzvr8yXr2urLGwYPeYE3wJ9/fMHQFcsW9a9L+5zzzkA8Eyw7OV3LLjz
n/e1vqf34/uz991y0tddXV2dcePG5ejRo5VjMU7HuKT7MyeOHj064BMxVFdXp76+vnIsSN3s
vi+6+nNk6+wBjRsqVVVVGTNmTGpqanLo0KEPVQz1p66uLvX19ZXH+J2PX1VVVUaPHp0RI0ak
ra3tXU/DO9BxPT9TbW1t77lVYOzYsens7MyhQ4fymc98JosXL8769evz13/910N2P+Bk9Pxc
JWV9iOu//Jf/MsePH88999wzKNdXX1+furq6HDp06F2fF+rr6zNq1Kj3fO4Y6LieXWz7e9y+
/9l3fI7eu/w/XfW5d736D53Vq55K1agx+d6DfWPzRG695eYsWrig8vXvPtKQ+/7DzbYUAcOr
s7NzQCcbGOxxSU76RWbPi90Pm/4+u+jD7MiRI/3u89+jq6trQC/2BjpuID9TV111VVpbW7Nz
584cPXo0S5curWxZePsWoLcbrPsBJ6PUn6tHH300d911V2bOnNnnDI6n4vDhw32OfzyVMScz
rsTH7XQSRQDwPs2dOzdnn312n+UtLS1Z/c5N6cBpt2PHjnzve9/LpEmTBiWKOPOIIgB4n154
4YV0dXWlsbExtbW1OXDgQDZv3pxnnnlmQO8AA0Nv3bp1wz0FPsBEEQC8T2vWrMmaNWuGexoA
nCJRBAyaPgd60u3KF4Z7BgDACVQP9wQAAACGkygCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKFrtcE8A+BC7s2u4ZwAA8L7ZUgQAABTNliLg5N1TNdwzAAAY
NLYUAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUT
RQAAQNFqh3sCwAffc4uGewZ8EC1b1pUkee65ql7Lly8fjtkAwKmzpQgAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKVjvcE6As+/c/MdxTAE7RuHGfGO4pAMCQsKUIAAAomigCAACKJooAAICiiSIAAKBooggY
dkeOHMmxY8eGexrDrrOzM83NzWlubk5HR8eAv8/6A4D3x9nn+MB65JFHctZZZ2Xp0qW9lq9c
uTLz58/PwoULh2TcmWLDhg156aWX+r3sYx/7WCZNmlT5uqWlJT/60Y+yY8eONDY25oorrsjZ
Z599WuZ5+PDh3H333ZkzZ05uuumm03KbH1SHDh3KvffemyT59Kc/nSlTprzn91h/APD+2VLE
B9Zf/uVf5kc/+lGf5X/yJ3+SZ599dsjGnSmeffbZfO1rX8vf/M3f9Pmzd+/eyrgnnngiX/jC
F/JXf/VX2bx5cx566KHcddddeeyxx4Z0fp2dnUmS+vr6JElDQ0OSnNQWkg+SJ554InfffXda
WlpOy+2daesPAIaTLUVwBhs1alS+/e1vn3DM9OnT87nPfS633357ampq0tXVlT/4gz/In/zJ
n2TFihVDNrdVq1Zly5YtmTlzZmpqarJv376sXLkyb775Zm677bZeW7I+DHbu3JnDhw9XYuX9
qq4+8XtWZ9r6A4DhJIrgXRw/fjxf+cpXsnTp0lx33XXDPZ0hs3Dhwl67DlZVVeXyyy/Pk08+
mQMHDmTs2LFDcrujR4/O2LFjs2XLlnR0dGTnzp2ZMGFCpk+f3mdrx8aNG/Pyyy+ntbU1tbW1
GTNmTGbNmpVFixZl1KhRlXHt7e1Zs2ZNtm3blvb29owaNSpTp07NJZdcUtmS8sgjj+TIkSNJ
kgkTJuSKK67IqlWrsm3bttTU1OS6667LhAkT0tzcnPXr12f37t05dOhQRo0alcmTJ+eiiy5K
Y2Njku6fkVdeeSU7d+6sbCF64oknMmLEiCTJkiVLMm/evJOa39vHPvbYY9m1a1fq6+uzaNGi
LFmy5JTWHwBwYqII3sVbb72VlStXZtu2bWd0FPVn165dGTlyZMaMGTNkt3HRRRfl/PPPz3e/
+91UVVWlra0tixcvzkUXXdRr3KuvvppHH32017J9+/blzTff7BUJR48ezd/8zd+ktbW119jm
5uZceeWVla937dqVAwcOJOneutPa2pqtW7cmSWpraysRuGvXrjz//PNJurfatLa2Zvfu3dm4
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
ewoAAHBCthQBAABFs6WIIfHcc1XDPQUAABgQW4oAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaLXDPQHODMuXD/cMAADg1NhSBAAAFE0U
AQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAA
QNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0
UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQB
AABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA
0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRR
BAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEA
AEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDR
RBEAAFA0UQQAABRNFCE2sskAACAASURBVAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNF
AABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAA
UDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRN
FAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UA
AEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQ
NFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0U
AQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAA
QNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0
UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQB
AABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA
0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRR
BAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEA
AEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDR
RBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEE
AAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAA
RRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFE
EQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQA
ABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABF
E0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQR
AABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAA
FE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUT
RQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEA
AFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAU
TRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNF
AABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAA
UDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRN
FAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UA
AEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQ
NFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0U
AQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAA
QNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0
UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQB
AABFE0UAAEDRat/tgltuueV0zgMAAOA9Pfjgg4N+nbYUAQAARRNFAABA0UQRAABQNFEEAAAU
7V1PtADvVFVVlfr6+nR0dKS9vX24pzOsqqurM3HixCRJS0tLjh8//p7fY/0NrTFjxqSurq7y
dUdHR5qbm095HOUYOXJkjh8/ns7OzuGeCkPgw/z4er6C02dQoujCCy9Mc3Nztm7d2mv58uXL
s2PHjrz55ptDMu5MMX369MyYMaPfy9avX5+DBw/2WT5v3ryMHTs2a9asGerpVTQ0NOS3f/u3
s2HDhtx3332n7XY/iMaNG5df//VfT5J885vfHNDPpPX3/lRXV+eKK67I7t27s3Hjxj6XX375
5bnoootSX1+f6urqNDc356tf/eopjxsudXV1Wbp0aV555ZW0trYO+PsWLVqUKVOm5B//8R9z
+PDhIZzhB8OcOXNSV1eXl19+udfyk11/tbW1+Xf/7t9l3759+cY3vjFU0z1pY8aMyeLFi/ss
b29vz9q1a4dhRh9OH9THd6D/7w/0+erCCy/MyJEjU1VVlba2tuzatSt79uwZ0vvQY9SoUbng
gguybt26tLW1nZbbhKEwKFF09dVXZ8OGDX0i5rrrrsvTTz9decE42OPOFPPmzcvVV1+dlpaW
Ppdt3769VxTNnz8/V199daZPn55Dhw6dliiqqalJR0dH2tra0tXVlUOHDiXp/s+mo6MjXV1d
Qz6HwfSzP/uzWbBgQe6+++7s3bt3yG/vTFt/w+Xcc8/NihUr0tzc3G8UPfbYY3nssceSJJ/6
1Kcyd+7cfq9noOOGy5gxY3LTTTelubl5wFE0YcKE3Hbbbamtrc2LL754xkdRY2NjfuEXfiH3
339/n8tOdv11dHRk69at2bdv31BM9ZSNGDEiM2fOzNixYzNnzpzs378/u3btys6dO9/X9V55
5ZVpbGzMD37wg0Ga6fAY6P34oD6+A/1/f6DPV1dffXVGjRqVgwcPpqGhIaNHj86WLVty//33
9/vG6mBqb2/P/Pnzc8455+Sv//qvh/S2YCjZfe4D4tixY+/5bvWsWbPy2c9+NmvWrMlrr72W
Cy+88LTMbcWKFVm4cGE2b96cjo6OTJkyJXfeeWfmzJmTb33rW9m9e/dpmcdgmTVrVkaPHp2a
mppBub73ipozbf0Nl8WLF+eNN97IzJkzM23atBO+OBzobjIfxt1p+nPjjTfm9ddf/8AF3lC5
5pprsmPHjmzYsOF9X1dXV1fuueeeQZjV4Gpubs4DDzyQJPnd3/3drFmzJj/60Y/e9/WeddZZ
g/bcN5wGej8+qI9vMrD/99/uvZ6v1q5dm4cffjhJ9/9z/+Jf/It8/vOfzze+8Y0hf6579NFH
82u/9ms599xzs3nz5iG9LRgqZ0QU1dTU5MYbb8zWrVvP6N0Ktm3blv/yX/5LDh48mCuvvPK0
3e6BAwfS0tKSRYsWpba2NjNnzsyePXvy2muvZcSIEb3GnnfeeVm2bFkmTJiQ48ePp7W1NZs3
b86aNWty5MiRyrj6+vpceeWVOffcc9PQ0JC2tra8+eabeeqpp3LgwIEkye23317Zl3rPnj15
/PHHc+211+bcc8/NsWPHcv/992fPnj1pamrKRRddlBkzZmTs2LE5cuRIduzYkVWrVlW2BI0Y
MSJLly7NrFmzMmnSpCTdH1B89OjRJMnq1avz0ksvndT8etTV1eXnf/7nM3PmzLS1teX555/P
6tWrT2n90b+qqqosXLgwTz75ZEaNGpXFixe/73fMzxSLFy/OrFmzcv/99xcRRWPHjs2SJUsq
wXCqzj333CxcuLDydUtLS1atWtXv2IaGhixfvjzTpk1LTU1NWltb89JLL+X111+vjLn00kvT
0tKSw4cP59JLL019fX3eeOON/MM//EPleWYoXHrppWlubs7BgwdzySWXZOzYsdm3b19WrVqV
/fv3J+l+/lu+fHllq9OxY8dy4403Vq7j4Ycf7vXmzsiRI3PxxRdn9uzZqampyZYtW7J69epe
x05edtllvY6rXL16dT7+8Y+nqakpLS0tefTRR3Ps2LFUVVVl7ty5mTt3biZMmJD29vZs3bo1
a9as6feF+sKFC7No0aKMHj06hw4dypYtW/KTn/wkXV1dJ3U/TubxHTduXC655JJMmTIlR48e
zYYNG/LSSy/1WicDWc8fJNu2bct3vvOd/Oqv/mouvPDCXnuVDOT+9jjR4/F2e/bsydatW3Pp
pZeKIj60zogoGjt2bJYvX57Jkyef0VGUpLIZvKqq6rTd5jPPPJNnn302X/rSl9LZ2ZmxY8fm
+eefzzPPPNNr3Pnnn5/bbrut17KmpqbMnj07zz33XGXZqFGj8sUvfrESJ0n37jCTJ0/Oo48+
Wlk2ffr0NDY2JklmzpyZiRMnZv78+UmS48ePVw42nTFjRiUSOzs7U11dnenTp2fp0qX58z//
8zQ3N2f8+PG55ZZbes1t5syZlX9v2rTppOfX49Zbb824ceOSJBMnTvz/2zv3sKiq/f+/ZxiY
YZhhuF9UEJGLCKEFJ0vRNES5mVbeOponSY9YiXVOHj3nmN8nTyfLjLQ6ZpbhNbXsCZXjSdG8
IKkkCo6oBATqcBcDmeE+s35/8Jsdmxlgb5hhVNbredbzMIvP3uuz1l77s/dnXT4bQ4YMQVNT
E/Ly8ni1H6Vrhg4dCqlUil9++QUKhQJBQUE4efKkpdWyONbW1pg6dSp+/PFH1qDDw4yfnx8E
AoHRJZR8aGpqQkNDA2xtbREQEICGhgajL80CgQAvvfQShEIhrl+/Dq1Wy9i1jk5RQEAAsyle
qVRCrVbjiSeeQEBAAL766iuzjdQHBARALBZDoVAgLy8P5eXlGD16NIKCgrB582a0tLRAJBLB
w8ODqY9AIIBYLDZ6PrFYjISEBNja2iI3NxeEEIwfPx5+fn7Ys2cPI6fRaCCXy+Hl5YWAgAB4
eXlBoVBApVJBLpejtbUVQLtDOWPGDBQUFKC0tBRSqRRRUVHw9vY2cGzj4+MRFhaGX3/9FVVV
VZBKpQgPD2ee63zqwfX6uri4ICEhAXV1dcjPz4ednR1mzJiBwMBA1vJMLu18v1FRUYGysjIE
BgYyThHX+gI9X4/O5OfnY9KkSRAKhQ/NLDxlYPFQOEW1tbXYu3dvv+wPMRcCgYB5sdZDCDGY
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
ETUgin4dPAAAAABJRU5ErkJggg==
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: image/png; name="middle.png"
Content-Disposition: attachment; filename="middle.png"
Content-Transfer-Encoding: base64
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
uaxfvx6z2cxll13GtGnTvP6t+qZNm/joo49ITU2lQ4cO3H777U5h1OS3tLSUDz74gLS0NNau
XUtgYCAPPPCAff3bb7+NVuvePBeffPIJEydOdHjc6/777+fZZ5/ls88+s1+gvvfeeyQlJREW
FsacOXPIzc1l4MCBPPzwwwQHB7udPneOb2pqKrNnz2bXrl32x/smTpzocBfmvffeo3379sTE
xDBnzhzS0tLo2LEjjz76KAkJCQ7xZWdn8/7777N9+3ZMJhNt2rThhhtuYNiwYW6VnSsajYab
b76ZJ554gvT0dPvyV199lZiYGIc7H7m5uTz77LPcc8899OrVC6g8HhkZGRw5csT+edWqVQCM
GDGCcePGuRUO1NX7t956i5SUFKDyWEybNo0XXniBPXv2kJSUxKuvvkpgYKDXy68uauqBO+HU
ao78unN+qEmfmvPXG9Scl+62a56szzabjRUrVvDzzz9z5MgRDAYDl156KbfffrvLd3wWLlzI
jz/+SGZmJtHR0VxxxRXcdNNNaLXac6b98zRP9qvNVU+FEMJbPDL7XFhYGNHR0eh0OpYuXcp3
333XqPgKCgoYNGgQr7zyCh06dKB79+689NJLXHvttZ5Ibq2WL1/OkCFD2LRpEwMGDKCgoIAb
brjBKZya/JpMJrZv305WVhZWqxWLxUJxcbH9z11HjhwhKyuL4cOHOyz38/Nj4MCB/PHHH/Zl
CxYs4KmnnuLmm28mMTGRrl278tZbb3HFFVdgNpvdTp/a47t//3769OnD4sWL6du3L0ajkalT
p3LLLbc4hFuwYAGzZs1i7NixBAUF0a9fP3744QeGDBnisG9FUbj00kuZN28eHTt2pG/fvmRm
ZrJu3Tq3y682mzdvBuCiiy6yL/vmm29Yvny5Q7jCwkLeffdd+8CmatuDBw+Sl5cHVD4eV1V+
JpPJ7XBq631sbCwGg4EdO3bwzjvvcNttt/Hrr7/Srl07MjMz7QOipig/V9TWA7Xh1Gqu/Ko9
P9SmT8356w1qzkt32g1P1+ecnBymTJlCXl4eAwYMICoqipkzZ3LnnXc65WXatGmMGzeOkydP
0rlzZywWC++++659oHMutH+e5ul+tbnqqRBCeE10r9HKQ/NtSmlJsf0PUBRFUWbNmqUEBgYq
J0+edPhLS0tTajNx4kRl4MCBta6vcv/99yvt27d3uW7GjBlKdHS0curUKfuyHTt2KBqNRlm8
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
xqCIiIiIiIiWNQZFRERERES0rDEoIiIiIiKiZY1BERERERERLWsMioiIiIiIaFljUERERERE
RMsagyIiIiIiIlrWGBQREREREdGyxqCIiIiIiIiWNQZFRERERES0rDEoIiIiIiKiZY1BERER
ERERLWsMioiIiIiIaFljUERERERERMsagyKqG1mVsOmZHnQeCNa7KkRERES0jDEooroR8oCc
laBkpXpXhYiIiIiWMbneFaDlK2fTsf/a49DlfL2rQkRERETLGIMiqitdYUBERERERPXF4XNE
RERERLSsMSgiIiIiIqJljUEREREREREta5xTRERz2nK43jWgRemwAADYMuVl44e1rwoREc1N
+PN612DxYk8REREREREtawyKiIiIiIhoWWNQREREREREyxqDIiIiIiIiWtYYFBERERER0bLG
1edoWbCkZXhHnLP+XZfzCHfGa1gjIiIiIlosGBTRsmBJKWg65ituW1MKdDkPzaIDAHJ2bdkH
Rc29DbCkZQxsGq93VYiIiIhqikERLQsJfxoHr+4vbm/+5XmYOC+G4fNDdazV4uKIWiEY9a4F
ERERUe0xKKK68p/wwBmxYmDTBIxztMjNpqsWJS0j2OeFPW6BLuURbUlisi0BCJXn6R1xwjfi
hJyRoVk1xINphNvjxTybjvlgTSoAANWRw3h3FK1vNMIWt0C1axjaMIG8VNh3URMQOOGFK2yD
YAiI+9MY747CkM46NgbgGXfAM+4o9IxJeST8aYQ64zDEU/noAgL9XihpGa4JG/Kygc4DwWIW
AxvH57XPREREREsBgyKqq0C/B85JG06unkTOrs07XTXYEhas2d2OnENDpDkJWZXQ/UozvCNO
9G0drSjPrv1BBPq8iAVTyHhUyFkJwT4vwh1nhuzlrBqUrARnyA7vqBPOSRssKQXJxgyUtFQM
iKSciDXPdkDOiQh1FIKqljca4Bl3oHfbcDE/WZXQ80ozok1JJH0ZyFkJ7QcDcIXt6LuosB+C
LsAetRb+DwGCAYiaifVXPsIuJSIiokXv3/jLplkMiqiu+i8cgzWlzBnomE1XDR0HA8jZdBy5
chD5Uz0qsWAKK//YisnOOKJNqbLyc4VtCPR5MbhhAmMrI7Omm2xPYLI9gUCfF137g8g4RRy5
cgDGlPtZ65FGKKqEQ1edgGbVT703jnW7uuAdcxTrp1l1HLimr6RnLeXLomdfM05sHkNeMqBb
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
g3ub7xVdB5K973Byh/btg/eE9Hi280B+br0Gcj8G22Bul8lLklFnJWu/+s5jB/vfx2Dq3DO4
UdrTdfhZ7U6WjtZ3PsZvKB6vBmowf/+Aw4giADhZJn6gstJwyV9Wjlk50umgATjpRBEAnCzv
+2JSOyrZ8kjy1L8d7tkA8CZRBAAny4NnD/cMADgCp+QGAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKFrtcE8AOH38yrduG+4pDIr6GesH9foOrJ8xqNcHAIf6/sce
GO4pvOdZKQIAAIomigAAgKKJIgAAoGiiCAAAKJoTLQAwZKqqqtLQ0JCurq60t7cP93ROW7bz
iRk9enTq6+v7Pu/q6srOnTtPeBzw3iWKgGFx4YUXZufOnVm/vv+Z3hYtWpTNmzdn06ZNQzJu
IKqqqnPO7MUZ23RGXnrlqbzRWvnempoRuXD+1Vnx8pNp79h/2PfdedMf5pmXfp4VLz854Ns6
UVOmTMnUqVOP+LWVK1dm7969fZ+PGzcu8+fPz9ixY7Nv3768/PLL2bJly5DPMUkaGxvzB3/w
B1m1alW+9a1v9fvahAkTMnv27CTJ/v378/zzz6e2tjYXX3xxkqS7uztPPfXUSZnne92xtnPJ
qqurc8UVV2Tr1q1ZvXr1YV+//PLLc9FFF6WhoSHV1dXZuXNnPve5z53wuOFSX1+f888/Py+9
9FJ27dp11HE1NTW55JJLDrt8+/btWbt27VBO8ZQwa9as1NfX58UXX+y7bNSoUTnnnHNy8ODB
LF++vO/y8ePHZ86cOWlra8uKFSuGY7qcZKIIGBbXXHNNVq1adVjEXH/99Xn88cf7Imawxw3E
h973kZx5xuy8/Noz+fVb/vd8/YE/yc7dW3PRgg/k3DmXZ9nKHx/x+7q6u9J5sGPAt/NuzJ07
N9dcc01aW1sP+9rGjRv7ouiKK67Iddddl507d2bHjh1ZsGBBrr322jzwwAP9ngAMtpqamnR1
daWtrS09PT3Zt29fkqS2tjZdXV3p6enJ1KlTc/PNNydJ2tra8vzzz6elpaXvsvb2dlH0Dgay
nUs2e/bsLFmyJDt37jxiFD3yyCN55JFHkiS33HJL5syZc8TrGei44TJ69OjcfPPN2blz5zGj
qKmpKTfffHN2796drq6uvstffPHF0z6Kmpub8/GPfzz3339/v8vHjh3b95izbt26vsfURYsW
5corr8ymTZtEUSFEEcDbLDxrcR746Zfy6uaVmTJxTs6edVmWrvhRLj//pvzD43/bb+z8mZdk
5pnn5LUtL6ar62BGN47N+87Xa2SCAAAgAElEQVS7MbOmnJPv/vjzQxpJnZ2d7/hq9apVq7Jt
27asWbMmSWU3q49+9KP50Ic+NKRRtGTJkixYsCBr165NV1dXJk6cmDvvvDOzZs3KV77ylWzd
urXf/WhsbExDQ0MmTZqUJDl48OCQze10cjzbuUQLFy7Mhg0bMm3atEyePPmYK6Td3d0Dus6B
jjsVNTY2Jkm+9rWvHfEFldPZtddem82bN2fVqlWHfa27uzu7du3KnDlz+l6ImTdvXrZt23ay
p8kwEkVAkWpqanLTTTdl/fr1efbZZ/t9bUTtyHR2VWKm82B7Royoy0ULPpC9ba1Zu+G5fmPb
DuxJV3dnzp1zReZMvyBTJ83J+s0vZtvO11JbM+KkrRwdzY4dO7Jjx46+z3t6evLaa69l3rx5
qaqqGrKVhD179qS1tTVnn312amtrM23atGzbti2vvPJKRowY0W/s9u3bM3ny5IwfPz6TJk1K
R0dH9u7dm1GjRvUbN2XKlFxxxRWZPHlyenp6smHDhvzsZz877Mndueeem0suuSTjxo3LwYMH
s2vXrqxduzbLly/PgQMHjmtcS0tLLrrookydOjVNTU05cOBANm/enCeffDLbt2/vu66ampp8
8IMfzNlnn53u7u4sW7Ysq1evzs0335xNmzbl0UcfHZL7cTzbuTRVVVVZsGBBHnvssdTV1WXh
woUnbbfRU1VvFB26e20Jmpqacs455+S73/3uEb9eXV3d97j41FNPZcyYMWlpackzzzyTlpaW
fmNHjhyZiy++ODNmzEhNTU3WrVuXp5566rAXchobG7No0aJMnjw5NTU12bVrV1544YW8+uqr
xz2uqqoqc+bMyZw5czJu3Li0t7dn/fr1Wb58+Xs60k81oggoUlNTUxYtWpQzzjjjsCjasHV1
Fs66LPsP7M30SfOz6pWnsmTxx/PDJ/7usOvZ8PrqbHh9da5d/LGsee3pTJ04L0uf/8ds3Pry
yborx6WmpiZnn312XnnllSHdteqJJ57I0qVL81u/9Vvp7u5OU1NTnn766TzxxBOHjd29e3cm
T56cCRMmZNKkSdm2bVuam5v7jZk5c2buuuuu1NbWpqOjI9XV1Wlpacm8efPyxS9+se9J3nnn
nZc77rij3/e2tLRkxowZWbZsWd9lAx03derUXHnllUkqryZXV1dnypQpOf/88/M3f/M3fQfb
L1myJJdffnnf991www1ZvHhxmpub+z1pGez7cTzbuTQzZ85MY2NjXnrppYwdOzYLFy7MT37y
k+Ge1rAaNWpUDhw4UNxK7Ny5c1NVVXXEXSh7vfLKK7nxxhtTXV2defPmZevWrdm3b1+/KKqr
q8vdd9+dhoaGPPPMM+np6cnVV1+duXPn5t577+0bV1VVlU9+8pOprq7OypUr09XV1ffv9+2x
M5BxjY2Nuf3227N69eps3LgxjY2Nue666zJjxoyjhh7HTxQBRWptbc03v/nNfq/29/rHx7+e
JZf/em7/4O9k2cofZ3Rjc/a0tebl1549wjUlZ8+6NJec/aF86b//H7lg/tW5/YO/l6/9f/9X
2g7sHtL7UFVVlTFjxvS7rKenJ3v27Ol3WUNDQ66++urU1dVl5syZeeONN/LQQw8N6dySyrEX
kyZNyr333pvFixdnyZIl2bhx42GvlLa2tqanpydnnHFGJk6cmJdeeimTJ0/u98TtxhtvTG1t
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
tddem2effTYNDQ254YYbsmvXrn6rKYM9rldDQ0N++7d/OytXrjzi7kZ9q0RP/tckyY5dW3LG
uKnZuPXlTGiekudWvzeeVF1//fXZsmVLtm7dms7OzrS0tGTJkiXZvXv3KfVmjbt37+7blW/8
+PGHff3RRx/NHXfckQsuuCALFizI9u3bM2LEiIwfPz5Lly7Nj370oyTJ4sWL+96Ffs+ePX27
tHR3d/eL44GM27VrVzo7OzNixIjcfffd2bx5c6ZMmdJ3LNGhc1+9enXmz5+fJUuW5MILL0xj
Y+Nh44bifnC4KVOmpLm5+bBdkLq6urJmzZrDomjkyJF9P6+ampqMHz8+e/fuPezEAwMdN5xm
zJjRbzfMpPKGpL0vNFx99dXZvn1733FVM2bMyLXXXps1a9actqtESeWYsnPPPTe1tbXveOa9
Y60iPvbYY7nrrrty0003ZenSpX0nX5k7d27WrFnTt12nTJmSM888My+//HLa2toyduzYTJ8+
/bB/uwMdt2vXrsyaNSvNzc3p6OjIzJkzc+21157g1uBoRBEwLF544YX8+Mc/zlVXXZWrrroq
SeWA8/vuu6/ff1qDPa5XTU1NGhsb++0HfqgL5l+d/e17s+a1p5MkP/nn7+RXr/ntLD7vpuzb
vyvPr3lvRFF3d3duvvnm1NXVJam82rl27dr8wz/8wymzUjQQzz//fDo7O3PNNddk8uTJmTJl
SpJKkGzatKlv3JYtW/pO2NB7IPT27dvz6KOP9jt+aiDjOjo68uCDD+aWW27J6NGjM2fOnDz7
7LPZsGFDbr311n7ze+ihhzJq1KhMnTo1LS0tefnll7N///5+u9kNxf3gcAsXLsz+/fuzfv36
w762cuXK/Nqv/Vqam5vT2tqaO++8M/Pmzes35t/8m3+TJHnmmWfyve99L0kGPG64XX311Ydd
9rWvfa1vW/T09OS2227r25Wso6Mjy5YtO+1PVf7yyy/nxhtvzFlnnXXM03K/k7Vr1+ab3/xm
lixZkve9731JKtt08+bNh52456qrrur3OLF+/fq+laDjHffwww/nwx/+cH7/938/SfL666/n
u9/9bn7zN3/zhO8Lh6uaeMHNPR/7zw/mM9e39V3YOGr0Mb4FDvfmG0D3ueSSyr64y5Y5APB0
cMmLb7vgzjf3tb6v/8/3V75123Ffd3V1dcaMGZOOjo6+YzFOxrik8p4THR0dh+07Xj/j8CdT
SVJdVZ2G+tHZt//4npQeWD/juMYPtqqqqowePTo1NTXZt2/feyqGjqS+vj4NDQ19P+O3//yq
qqoyatSojBgxIm1tbUc9De9Ax/X+TrW1tb3jqkBTU1O6u7uzb9++fOQjH8nChQuzcuXKfOc7
3xmy+wHHo/f3KinrTVz/1b/6Vzl48GDuu+++Qbm+hoaG1NfXZ9++fUd9XGhoaEhdXd07PnYM
dFzvLrZH+rl9/2MP9L/gKP9PV/36Ua/+PeepJ3+WqrrR+d4Dh8fmsdx+2605e8H8vs//6EeN
+dZ/utVKETC8uru7B3SygcEel+S4n2R293QfdxCdCo703kXvZQcOHDjiPv+9enp6BvRkb6Dj
BvI7dfXVV2fXrl3ZsmVLOjo6cv755/etLBy6AnSowbofcDxK/b16+OGHc/fdd2fatGmHncHx
ROzfv/+w4x9PZMzxjCvx53YyiSIAeJfmzJmTmTNnHnZ5a2trnnr7Ujpw0m3evDnf+973MmHC
hEGJIk4/oggA3qVnnnkmPT09aW5uTm1tbfbs2ZO1a9fmiSeeGNArwMDQW7FixXBPgVOYKAKA
d2n58uVZvnz5cE8DgBMkioBBc9iBnlRc+cxwzwAAOIbq4Z4AAADAcBJFAABA0UQRAABQNFEE
AAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEWrHe4JAO9hd/YM9wwAAN41K0UAAEDR
rBQBx+++quGeAQDAoLFSBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDR
RBEAAFA0UQQAABRNFAEAAEWrHe4JAKe+ZWcP9ww4FV1ySU+SZNmyqn6XL1o0HLMBgBNnpQgA
ACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACK
JooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKVjvcE6Asu3f/ZLinwCngC3//b4d7CpyAP7r7meGeAgAMCStFAABA
0UQRAABQNFEEAAAUTRQBAABFc6IFYJhVJT3VSXqSqu7hnswwq0oOjqj8tfZgkoFsD9sPAN4t
UcQp60c/+lHOPPPMnH/++f0uf/DBBzNv3rwsWLBgSMadLlatWpUXXnjhiF97//vfnwkTJvR9
3tramp/+9KfZvHlzmpubc8UVV2TmzJknZ6Ld1ckbc5KRe5PmTSfnNk9V3bXJjlmVv497NRnR
PoDvsf0A4N2y+xynrK9+9av56U9/etjlf/VXf5WlS5cO2bjTxdKlS3PPPffk7//+7w/72L59
e9+4n/zkJ/nEJz6Rb3zjG1m7dm0eeuih3H333XnkkUeGdoI9VZU/q7uT9CQ1XYdcXjW0tz0U
9kxK3piddI08Obd3um0/ABhGVorgNFZXV5d77733mGOmTJmSX//1X8+HP/zh1NTUpKenJ3/8
x3+cv/qrv8qSJUuGbnL7WpL2UcmItspz+IN1SevUpLMxGbc+qR3AKsmppLOhstIzWEFS9Q7X
c7ptPwAYRqIIjuLgwYP57Gc/m/PPPz/XX3/9cE9nyCxYsKDfroNVVVW5/PLL89hjj2XPnj1p
amoamhuuPpjUdCYdoyurG531SW1H5Ul+z9uC4EBTcmBs0lVbCYDqzmRkW1K/682Vkjd11yRt
45KOxqSnJqnqSkYcSEbtqNxekuyeUtnlLElq2pPRbyR7WyrfU9WTjN2c1HRUVnz2j0kONlRu
t7o7qT2QNOxIajsr399TlRwYU5n7wTdXiHZNTKp7Kn+vb03q9x7f/PrGVie7z6xcd3VX0rCr
cn9PZPsBAMckiuAo3njjjTz44IN57bXXTusoOpLXX389I0eOzOjRo4fuRhp3JA07k50zkvRU
Vlnqd1cuP9SBpkoc9DOysjLTcEgk9FQnO6e/bfe1EZXPR7/x1kWd9ZXISZKq+srXO0a9+XlP
JbiSyvW3je+98qSrKumsq8xn/KuVIOkaUdlt7lAHGw6ZZtvxz6/X7slvrjylcjud9Um6k/o9
lcsGuv0AgHckiuAoJk+enD/90z/N9OnTh3sqJ6ynpyfbtm3rd1l1dXW/kyy83YEDB/LAAw/k
mmuuSdU77cL1bu2ZWNntq3lj0tac7D0jqd2fjNz/1pjON4Olpj0ZvyHpSdJVl3TV9D/b2v5x
lcCoSjL69WTkvspqTHdt/3ET1lZuc8fMSqh0NCYNrZUVm/RUwihJ6nYnY7orc6k+WLmendMq
t9E+JmncXgmj8a9WomXXlMr39a40Jf1XfwY6v17VXUnza5Xd6FqnVm6jvemtKBro9gMA3pEo
gmO48sorh3sK70p7e3s+8pGP9Lts1KhRefDBB484vqenJ3/+53+e9vb2fOpTnxr6CTbsqkTI
yH2VgNjfcfgZ16rfDIyuumT3xMr3jGxLRrztutobK3/W7TlkBelgkiMcW1NzSKw0tCZN2w4f
0zuvg/VJV2OSqrfipbvmrTG17amU2ptqOyoB93bHM78kadz51m56dfsq0dP1tofsgWw/AOAd
iSKGxec///k89NBD/S773Oc+l3nz5vV9fqxVikO/NtjjjsdA7sdQjBuourq6/PVf/3W/y6qr
j37Syc9//vN54okn8pnPfCYTJ048ods8LiMOvLlCk0pcHClOGndUVlMONFdWStqbKisxY1+v
rIr06t3VrHeVZqDq2o58+YExlZWYnje3V1XPIcfq9Bz5e47leOdX0/nW34/2/kMD2X4AwDsS
RQyLm266KRdddFG/y848s/9xI3V1ddm9e3e/y9rb23PgwIHU19cP2bjBvh9DMW6gqqqqctZZ
Zw1o7Be+8IU88MAD+ZM/+ZNcfPHFJ3ybg64qSdPWShwdaE7axlZ2Q9s5rbIrXPWbp6LO21Zx
BuwIwdFTVTlWqKeqcrxPQ2slTHZNruw6d0KOd37eiBUAThZRxLCYM2dO5syZc8wx06ZNy7p1
6/pd1vv5ocf5DPa44zGQ+zEU4wbbPffck4ceeih/9md/lksvvfSk3/4xdYyqrILUHExGvVE5
pmb7zEqwHKx762QGIzoqu9i1j6nseta70tLRUFlNqTqO1Z3uEW+tCtXtrQRRd3VysPHI4/vC
LEnnyCPvPjeY8wMABpU3b+WUdd1112XNmjX58pe/nFdffTXPPfdcPvvZz2bixIm55JJLhmxc
r927d+cjH/lI7rnnnpNyf4fL5z//+dx///25/fbb093dnaVLl/Z9vPTSS8M9vcqxNG/Mrnzs
nFlZIUoqK0i1h+yK1rCz8md3dbLjrMrHG3OT1unpe++grpHJ7knJjkMieM+ZlbPbdRwSPNUH
34qUndMrJzrYcdbhx/T0je96a7e4PWdWTuKw46xk3xnHNz8AYFhYKeKU9YEPfCCf+tSn8s1v
fjP33XdfkmTevHn5zGc+kxEjRgzZuF6dnZ1pbW3Njh2n9ymO/+mf/ilJ8u1vfzvf/va3+33t
sssuy1/8xV8Mx7TeUtv+1hujHnpczujt/c/uNuJAMnZj5T2HukYmB9/8mY7Yn75jgDrrKu93
dKiu2qSr6a33PkoqK0NNr1eOKequqZwBr25XMvJAJaqOZOyWytcO1lU+0pPUHbKCNJD5AQDD
QhRxSrvrrrvysY99LNu3b099fX3Gjh17UsYlyYQJE/Ld7343jY1H2WXqFPeJT3win/jEJ95x
3Le+9a2TMJt3YfQblY/umspJD6q7jn7igbp9lY+jja3f0/+U1sdSv7tyWu7uN9+4tfd6Dn0D
1UPVHqicnrununL7R5rnO82vujOZeITVuVFvVD4AgCEhijjl1dbWZtKko7w6P4TjksrpqzlF
VHcl6XrHYcc99liq0v/03QP6nu6k5h1OkjBY8wMABoVjigAAgKKJIgAAoGiiCAAAKJpjijip
xoz54HBPgVPAH9093DMAAHiLlSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaLXDPQFOb5dc0jPcUwAAgGOyUgQAABTNShFDYtmyquGeAgAADIiV
IgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACha7XBPgNPDokXDPQMAADgxVooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKII
AAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAA
iiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJ
IgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACK
JooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAPRBcjsAACAASURBVACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACK
JooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKFrt0b5w2223ncx5AAAAvKMHHnhg
0K/TShEAAFA0UQQAABRNFAEAAEUTRQAAQNGOeqIFeLuqqqo0NDSkq6sr7e3twz2dYVVdXZ3x
48cnSVpbW3Pw4MF3/B7bb2iNHj069fX1fZ93dXVl586dJzyOcowcOTIHDx5Md3f3cE+FIfBe
/vl6vIKTZ1Ci6MILL8zOnTuzfv36fpcvWrQomzdvzqZNm4Zk3OliypQpmTp16hG/tnLlyuzd
u/ewy+fOnZumpqYsX758qKfXp7GxMX/wB3+QVatW5Vvf+tZJu91T0ZgxY/J7v/d7SZIvf/nL
A/qdtP3enerq6lxxxRXZunVrVq9efdjXL7/88lx00UVpaGhIdXV1du7cmc997nMnPG641NfX
5/zzz89LL72UXbt2Dfj7zj777EycODH//M//nP379w/hDE8Ns2bNSn19fV588cV+lx/v9qut
rc2///f/Pjt27MiXvvSloZrucRs9enQWLlx42OXt7e159tlnh2FG702n6s93oP/vD/Tx6sIL
L8zIkSNTVVWVtra2vP7669m2bduQ3odedXV1ueCCC7JixYq0tbWdlNuEoTAoUXTNNddk1apV
h0XM9ddfn8cff7zvCeNgjztdzJ07N9dcc01aW1sP+9rGjRv7RdG8efNyzTXXZMqUKdm3b99J
iaKampp0dXWlra0tPT092bdvX5LKfzZdXV3p6ekZ8jkMpl/5lV/J/Pnz87WvfS3bt28f8ts7
3bbfcJk9e3aWLFmSnTt3HjGKHnnkkTzyyCNJkltuuSVz5sw54vUMdNxwGT16dG6++ebs3Llz
wFE0bty43HHHHamtrc3zzz9/2kdRc3NzPv7xj+f+++8/7GvHu/26urqyfv367NixYyimesJG
jBiRadOmpampKbNmzcru3bvz+uuvZ8uWLe/qeq+88so0NzfnBz/4wSDNdHgM9H6cqj/fgf6/
P9DHq2uuuSZ1dXXZu3dvGhsbM2rUqKxbty7333//EV9YHUzt7e2ZN29ezjrrrHznO98Z0tuC
oWT3uVNEZ2fnO75aPX369HzsYx/L8uXL88orr+TCCy88KXNbsmRJFixYkLVr16arqysTJ07M
nXfemVmzZuUrX/lKtm7delLmMVimT5+eUaNGpaamZlCu752i5nTbfsNl4cKF2bBhQ6ZNm5bJ
kycf88nhQHeTeS/uTnMkN910U1599dVTLvCGyrXXXpvNmzdn1apV7/q6enp6ct999w3CrAbX
zp07893vfjdJ8kd/9EdZvnx5fvrTn77r6z3zzDMH7bFvOA30fpyqP99kYP/vH+qdHq+effbZ
/PCHP0xS+X/uX/7Lf5m77rorX/rSl4b8se7hhx/O7/7u72b27NlZu3btkN4WDJXTIopqampy
0003Zf369af1bgWvvfZa/st/+S/Zu3dvrrzyypN2u3v27Elra2vOPvvs1NbWZtq0adm2bVte
eeWVjBgxot/Yc889N5dccknGjRuXgwcPZteuXVm7dm2WL1+eAwcO9I1raGjIlVdemdmzZ6ex
sTFtbW3ZtGlTfvazn2XPnj1Jkg9/+MN9+1Jv27Ytjz76aK677rrMnj07nZ2duf/++7Nt27a0
tLTkoosuytSpU9PU1JQDBw5k8+bNefLJJ/tWgkaMGJHzzz8/06dPz4QJE5JU3qC4o6MjSfLU
U0/lhRdeOK759aqvr8+/+Bf/ItOmTUtbW1uefvrpPPXUUye0/TiyqqqqLFiwII899ljq6uqy
cOHCd/2K+eli4cKFmT59eu6///4ioqipqSnnnHNOXzCcqNmzZ2fBggV9n7e2tubJJ5884tjG
xsYsWrQokydPTk1NTXbt2pUXXnghr776at+Yyy67LK2trdm/f38uu+yyNDQ0ZMOGDfnFL37R
9zgzFC677LLs3Lkze/fuzaWXXpqmpqbs2LEjTz75ZHbv3p2k8vi3aNGivlWnzs7O3HTTTX3X
8cMf/rDfizsjR47MxRdfnBkzZqSmpibr1q3LU0891e/YycWLF/c7rvKpp57KBz7wgbS0tKS1
tTUPP/xwOjs7U1VVlTlz5mTOnDkZN25c2tvbs379+ixfvvyIT9QXLFiQs88+O6NGjcq+ffuy
bt26PPfcc+np6Tmu+3E8P98xY8bk0ksvzcSJE9PR0ZFVq1blhRde6LdNBrKdTyWvvfZavv3t
b+fTn/50Lrzwwn57lQzk/vY61s/jUNu2bcv69etz2WWXiSLes06LKGpqasqiRYtyxhlnnNZR
lKRvGbyqquqk3eYTTzyRpUuX5rd+67fS3d2dpqamPP3003niiSf6jTvvvPNyxx139LuspaUl
M2bMyLJly/ouq6ury6c+9am+OEkqu8OcccYZefjhh/sumzJlSpqbm5Mk06ZNy/jx4zNv3rwk
ycGDB/sONp06dWpfJHZ3d6e6ujpTpkzJ+eefn7/5m7/Jzp07M3bs2Nx222395jZt2rS+v7/8
8svHPb9et99+e8aMGZMkGT9+fKZNm5YDBw5kxYoVx7X9OLqZM2emsbExL730UsaOHZuFCxfm
Jz/5yXBPa9iNGDEiN9xwQ3784x/3e9HhdDZ37txUVVUdcRfK43HgwIG0tbWloaEh8+fPT1tb
2xGfNFdVVeWTn/xkqqurs3LlynR1dfU9rh0aRfPnz+87KP65557L3r17c/nll2f+/Pn56le/
OmSv1M+fPz91dXUZO3ZsVqxYkc2bN+eiiy7KwoUL84UvfCEdHR2pra3N5MmT++5PVVVV6urq
jnh9dXV1ufvuu9PQ0JBnnnkmPT09ufrqqzN37tzce++9feP27duXpqamTJ8+PfPnz8/06dMz
duzYbNiwIU1NTens7ExSCcrbb789q1evzsaNG9PY2JjrrrsuM2bMOCxsb7311ixatChr167N
1q1b09jYmEsvvbTv//XjuR8D/fmeccYZufvuu7Nr166sWrUqo0aNyu23354FCxb02z1zINv5
VLNly5Zs2rQpCxYs6Iuigd7f5J1/Hm+3atWqfPCDH0x1dfVpswpPWU6LKGptbc03v/nNk3J8
yFCpqqrqe2Ldq6en57BViUPHn0y33HJLJk2alHvvvTeLFy/OkiVLsnHjxn5PCmbPnp0k2bp1
a/72b/821dXVaWlpyejRo/udbW3x4sWZMGFCuru784Mf/CBr1qxJQ0NDmpqa+v3H8rnPfS6T
Jk3Kpz/96YwcOTJz587NP//zP2fDhg3p6enpe9XyueeeS1dXV9atW5e9e/dmzJgx+eQnP5lx
48blvPPOy89//vO0trbmi1/8Ypqbm/PRj340SfKd73ynL6wO3c4DnV+vtra2fP3rX0+S3HXX
XWlubs65557bF0UD3X4c3cKFC7N58+bs3r07L774Yq666qq0tLSctAOJT1Uf+MAHsn///vzy
l7/sF/mns96V1nd7BsdNmzb1HZ86atSojBs37ojjxo4dm5aWltx7771Zs2bNMa9z0qRJueee
e/oeV1asWJF//a//dc4777whfcFu+vTp+eIXv9i3evryyy/n7rvvzsyZM7N69er8/+2de1xU
Zf7HP3MBhmFguImggqhcRBAt2SxFVyWVm5fKW6u5q9mKlVi7me6u+XvltllmpFtbruWSl0rL
XqGybopuKpJKoijiJSFQuQooxAzXmXl+f7Bz4jADnAMzjMr3/Xo9rxfz8D3n+T7Pec73nO9z
+Z76+nqkpKQAABYvXgyNRsP9bsvEiRPh5OSEjz76iNv/mJubi6VLlyIwMJBzRi9duoRLly4h
IiICcXFxqKqqwieffGIyg6DVapGUlMR7SS4tLcXMmTORmprKOU++vr4YNWoUDh8+3O6Mjph6
CL2+U6dORW1tLbZt28Y9U/Ly8jBv3jzk5OTwnO/O2lkscrkc06dP5+U1NzfjP//5j+hztUdl
ZSW8vLy430LrK+R6tOXmzZuc4/qg7f0megcPhFMEAD/++KOtVegWdnZ2ePnll3l5jY2NeOut
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
ffGg5P8BkaBGWBh3kagAAAAASUVORK5CYII=
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: image/png; name="after.png"
Content-Disposition: attachment; filename="after.png"
Content-Transfer-Encoding: base64
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
uaxfvx6z2cxll13GtGnTvP6t+qZNm/joo49ITU2lQ4cO3H777U5h1OS3tLSUDz74gLS0NNau
XUtgYCAPPPCAff3bb7+NVuvePBeffPIJEydOdHjc6/777+fZZ5/ls88+s1+gvvfeeyQlJREW
FsacOXPIzc1l4MCBPPzwwwQHB7udPneOb2pqKrNnz2bXrl32x/smTpzocBfmvffeo3379sTE
xDBnzhzS0tLo2LEjjz76KAkJCQ7xZWdn8/7777N9+3ZMJhNt2rThhhtuYNiwYW6VnSsajYab
b76ZJ554gvT0dPvyV199lZiYGIc7H7m5uTz77LPcc8899OrVC6g8HhkZGRw5csT+edWqVQCM
GDGCcePGuRUO1NX7t956i5SUFKDyWEybNo0XXniBPXv2kJSUxKuvvkpgYKDXy68uauqBO+HU
ao78unN+qEmfmvPXG9Scl+62a56szzabjRUrVvDzzz9z5MgRDAYDl156KbfffrvLd3wWLlzI
jz/+SGZmJtHR0VxxxRXcdNNNaLXac6b98zRP9qvNVU+FEMJbPDL7XFhYGNHR0eh0OpYuXcp3
333XqPgKCgoYNGgQr7zyCh06dKB79+689NJLXHvttZ5Ibq2WL1/OkCFD2LRpEwMGDKCgoIAb
brjBKZya/JpMJrZv305WVhZWqxWLxUJxcbH9z11HjhwhKyuL4cOHOyz38/Nj4MCB/PHHH/Zl
CxYs4KmnnuLmm28mMTGRrl278tZbb3HFFVdgNpvdTp/a47t//3769OnD4sWL6du3L0ajkalT
p3LLLbc4hFuwYAGzZs1i7NixBAUF0a9fP3744QeGDBnisG9FUbj00kuZN28eHTt2pG/fvmRm
ZrJu3Tq3y682mzdvBuCiiy6yL/vmm29Yvny5Q7jCwkLeffdd+8CmatuDBw+Sl5cHVD4eV1V+
JpPJ7XBq631sbCwGg4EdO3bwzjvvcNttt/Hrr7/Srl07MjMz7QOipig/V9TWA7Xh1Gqu/Ko9
P9SmT8356w1qzkt32g1P1+ecnBymTJlCXl4eAwYMICoqipkzZ3LnnXc65WXatGmMGzeOkydP
0rlzZywWC++++659oHMutH+e5ul+tbnqqRBCeE10r9HKQ/NtSmlJsf0PUBRFUWbNmqUEBgYq
J0+edPhLS0tTajNx4kRl4MCBta6vcv/99yvt27d3uW7GjBlKdHS0curUKfuyHTt2KBqNRlm8
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
gBHWtavyMZQ6d1Q+3s6BLUN7m+8V3QeSve9wcoeO7UP3hPRYtvNgfm59BnM/htpQbpcpS5Km
M5O1X33nsUP972Mode0Z2ijt7T78rHYnSmfbOx/jNxyPV4M1lL9/wGFEEQCcKJM+UFlpuPgv
K8esHOl00ACccKIIAE6U930xqW1KtjycPPlvR3o2ALxBFAHAifLAWSM9AwCOwCm5AQCAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIpWO9ITAE4dv/KtW0d6CkOifub6
Ib2+A+tnDun1AcChvv+x+0d6Cu95VooAAICiiSIAAKBooggAACiaKAIAAIrmRAsADJuqqqo0
NDSku7s7HR0dIz2dU5btfHzGjBmT+vr6/s+7u7uzc+fO4x4HvHeJImBEXHDBBdm5c2fWrx94
prdFixZl8+bN2bRp07CMG4yqquqcPXtxxjWflhdffjKvt1W+t6ZmVC6Yf1VWvPREOjr3H/Z9
d9z4h3n6xZ9nxUtPDPq2jtfUqVMzbdq0I35t5cqV2bt3b//n48ePz/z58zNu3Ljs27cvL730
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
+OKLmTJlyoAnbjfccENqa2vzzDPP5Pvf/36qq6vz0Y9+NHPmzMnixYv7V2L6TtywdevW/O3f
/m1/dIwZM2bAWdkGO+7ZZ59Nd3d31q1bl71792bs2LH55Cc/mfHjx+fcc8/Nz3/+89TX12fR
okVJkhUrVuSHP/xhWlpacscddxy2TYb6fhzLdi7NwoULs3nz5uzevTsvvPBCrrzyyrS2tha9
S1RjY2NGjx6dP/zDP0x9fX327t2bFStW5Cc/+Uk6O0d2VXs49a2gvt2ZGTds2JDe3t7MnDkz
c+bMyerVq1NTUzNgzAc/+ME0NTXlr//6r/uP31uxYkU+/elPZ968ef3RNW7cuLS2tuaee+7p
33X5SAY7bt++ffnLv/zLAS+wbN68ObfddlseeOCBdHV1DWo78PZEEVCsF1988YiX7963I/c9
cneSpLZmVD79a5/JPz7+9TQ3js/YMROyZfv6dHe/+Z/QK5tX5sGf/7/Ztff1LH3uh9mzb0f2
dwz/7imjRo3Kv/t3/27AZR0dHfnMZz4z4LLa2tpMnjw5o0ePTl1dXUaPHp2WlpbD4mmo/fKX
v0xXV1fWrFmTvXv3Zvv27UfcfammpiY7duzIzJkz09TUlB07dqSmpqY/ipqamjJlypQklZNI
nHnmmUkqTwrmzJmT6dOn919X38pNa2trbr755ixbtizr1q07bFVssOO6u7uzevXqnH766Zk3
b15qa2uzf//+jB8/vn9XpNbW1v5d1R555JHs3bu3/8nmJZdc0n9dw3E/jmU7l6SqqioLFy7M
L3/5yyTJpk2bsnfv3ixcuLDoKFq2bFl27dqVtra2VFVV5cwzz8z73//+nHbaaQNWOk41Y8eO
fdsTUCSVF5ReeumlLFiwILNnz84vfvGLnH322QPGnHPOOVm3bl2ampr6d+/teyFqxowZ/VG0
d+/etLW15UMf+lA6Ojry6quvHvE2BzsuqaxUV1VVpbm5uf/0+30vjB3pxT2OnSgChtwNN9zQ
f1rlPl/72tcG/URtsLt1DfW4I7lg/vuzt70to2rr8slf/T+zdceGjG2akG888Kc50NmeJNnf
sS/Pr/0fSZKOzv15atVPj3hd73a7vNXBgwfz5S9/ecBlR7qve/bsyTe+8Y0klQC57rrr8olP
fCKf//zns3v38K1mbdy4MRs3bkySbNmyJT/84Q+POK6+vj5btmzpfwLy1vd/GTNmTP/fb7zx
xsO+f/To0f1/f+yxx/p3jTznnHNyzjnnZPv27fne976XDRs2HPO4Cy+8MDfeeGP/bXR3d6e6
uvK+51VVVUkqu2L2OfS4oLc+CRuO+5EMfjuXpO8YsPPPPz/z589PUnkRYeHChfnZz342wrMb
OR0dHXn++ef7P9+4cWMOHjyY66+/PhMnTjxln1zX19cPOLbyaF588cXccsst6erqyquvvjog
iqqrqzNmzJj+f49vdejjwMGDB/PVr341N9xwQ37zN38zGzduzD/90z8ddpKHwY6rra3N9ddf
n/PPPz9JJab6Huv7Hod490QRMOSeeuqpvPzyywMue+tB5F1dXWloaBhwWW1tbUaPHj1gV4Ch
HncsamtGZfF5N+ZHv/iv+cCi2/PwL76ZleuW5qPX/4ecO+9/yi9XPHRM1zeY7XIsenp6jvns
Yt3d3XniiSfyvve9LzNnzsxzzz133Lc/VGpra7Nhw4b+JxpvjaJDd3n5/ve/37/bSp9DT57Q
09OTH/zgB3nsscdyySWX5OKLL87EiRPzG7/xG/nsZz/bf8zOYMbV1tbmlltuSU1NTR555JEs
Xbo0nZ2duf3223Puuef23+b+/W++Z1VDQ0Pa2yux/NYTHQzH/eDIzj777OzevTvPPvvmiVG2
bNmSRYsWZfz48d549RB9kT1u3LhTNoq6uroGvPnu0fTtMrdy5crDXmDq7e1NT09PHn300fz8
5z9/x+vas2dP/tt/+2+ZMGFCrrjiinz0ox/NE088kYceeuiYx1177bWZP39+vv71r/e/ANLa
2prf/d3fHczdZ5BEETDktmzZ8o6rHzt27MikSZMGXNb3+euvvz5s447FBfPfn/YDu7Nm/VO5
+apPZfe+yhOGPft2ZFzTxGO+vsFslxOh7zikk2U/9JqamjzzzDN5/fXX09vbOyAykko4trW1
paWlJbNmzRqwD/3o0aMHrMDMnTs3r732Wnbt2pVHHnkkzz77bH7nd34ntbW1mTRpUn9MDGbc
+PHj+48pWLFiRTo7O1NfX58ZM2YMmN/27dvT29ubqqqqXHTRRXnsscdSW1ubBQsWDPv94MgW
LlyYFStW5Kc/fXPVtqamJueee27OPvvsPPbYYyM4u5PLaaedluTwlc1TyZ49e/rv59tpb2/P
3XffPeAFij69vb3ZuHFj5syZM6go6rNjx4488MADSSonUHlrFA1m3KxZs/Lcc8/1B1GS/rcv
YOiIImBEPPPMM/nwhz+ca665Js8880waGhpy/fXXZ9euXQNWU4Z6XJ+Ghob89m//dlauXHnE
3Y36V4me+K9Jkh27tuS08dOycetLmdgyNc+ufm88qbruuuuyZcuWbN26NV1dXWltbc2SJUuy
e/fuk+rNGnfv3t2/K9+ECRMO+/ojjzyS22+/Peeff34WLFiQ7du3Z9SoUZkwYUKWLl2aH/3o
R0mSxYsX978L/Z49e/p3aenp6RkQx4MZt2vXrnR1dWXUqFG56667snnz5kydOrX/WKJD5756
9erMnz8/S5YsyQUXXJDGxsbDxg3H/eBwU6dOTUtLy2G7IHV3d2fNmjWHRdHo0aP7f141NTWZ
MGFC9u7de9iJBwY7biTNnDlzwG6YSeUNSfteaLjqqquyffv2/uOqZs6cmWuuuSZr1qw5ZVeJ
ksoxZeecc05qa2vf8cx7b7eK+Oijj+bOO+/MjTfemKVLl/affGXu3LlZs2ZN/3adOnVqTj/9
9Lz00ktpb2/PuHHjMmPGjMP+7Q523K5duzJr1qy0tLSks7MzZ5xxRq655prj3BocjSgCRsTz
zz+fH//4x7nyyitz5ZVXJqkccH7vvfcO+E9rqMf1qampSWNj44D9wA91/vyrsr9jb9a8+lSS
5Cf//J386tW/ncXn3ph9+3fluTXvjSjq6enJTTfdlLq6uiSVVzvXrl2bf/iHfzhpVooG47nn
nktXV1euvvrqTJkyJVOnTk1SCZJNmzb1j9uyZUv/CRv6DoTevn17HnnkkQHHTw1mXGdnZx54
4IHcfPPNGTNmTObMmZNnnnkmGzZsyC233DJgfg8++GCampoybdq0tLa25qWXXsr+/fsH7GY3
HPeDwy1cuDD79+/P+vXrD/vaypUr82u/9mtpaWlJW1tb7rjjjsybN2/AmH/zb/5NkuTpp5/O
9773vSQZ9LiRdtVVVx122de+9rX+bdHb25tbb721f1eyzs7OLFu27JQ/VflLL72UG264IWee
eebbnpb7naxduzbf/OY3s2TJkrzvfe9LUtmmmzdvPuzEPVdeeeWAx4n169f3rwQd67iHHnoo
H/7wh/P7v//7SZLXXnst3/3ud/Obv/mbx31fOFzVpPNv6v3Yf34gn7muvf/CxqYxb/MtcLg3
3gC638UXV/bFXbbMAYCngotfeMsFd7yxr/W9A3++v/KtW4/5uqurqzN27Nh0dnb2H4txIsYl
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
O1hX+UhvUnfICtJg5gcAjAhRxEntzjvvzMc+9rFs37499fX1GTdu3AkZlyQTJ07Md7/73TQ2
HmWXqZPcJz7xiXziE594x3Hf+ta3TsBs3oUxr1c+emoqJz2o7j76iQfq9lU+jja2fs/AU1q/
nfrdldNy97zxxq1913PoG6geqvZA5fTcvdWV2z/SPN9pftVdyaQjrM41vV75AACGhSjipFdb
W5vJk4/y6vwwjksqp6/mJFHdnaT7HYcd89i3U5WBp+8e1Pf0JDXvcJKEoZofADAkHFMEAAAU
TRQBAABFE0UAAEDRHFPECTV27AdHegqcBP7orpGeAQDAm6wUAQAARRNFAABA0UQRAABQNFEE
AAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEWrHekJcGq7+OLekZ4CAAC8LStFAABA
0awUMSyWLasa6SkAAMCgWCkCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAotWO9AQ4NSxaNNIzAACA42OlCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKII
AAAomigCAACKJooAAAVO/I0AACAASURBVICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKII
AAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAA
iiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJ
IgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACK
JooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi1R7t
C7feeuuJnAcAAMA7uv/++4f8Oq0UAQAARRNFAABA0UQRAABQNFEEAAAU7agnWoC3qqqqSkND
Q7q7u9PR0THS0xlR1dXVmTBhQpKkra0tBw8efMfvsf2G15gxY1JfX9//eXd3d3bu3Hnc4yjH
6NGjc/DgwfT09Iz0VBgG7+Wfr8crOHGGJIouuOCC7Ny5M+vXrx9w+aJFi7J58+Zs2rRpWMad
KqZOnZpp06Yd8WsrV67M3r17D7t87ty5aW5uzvLly4d7ev0aGxvzB3/wB1m1alW+9a1vnbDb
PRmNHTs2v/d7v5ck+fKXvzyo30nb792prq7O5Zdfnq1bt2b16tWHff2yyy7LhRdemIaGhlRX
V2fnzp353Oc+d9zjRkp9fX3OO++8vPjii9m1a9egv++ss87KpEmT8s///M/Zv3//MM7w5DBr
1qzU19fnhRdeGHD5sW6/2tra/Pt//++zY8eOfOlLXxqu6R6zMWPGZOHChYdd3tHRkWeeeWYE
ZvTedLL+fAf7//5gH68uuOCCjB49OlVVVWlvb89rr72Wbdu2Det96FNXV5fzzz8/K1asSHt7
+wm5TRgOQxJFV199dVatWnVYxFx33XV57LHH+p8wDvW4U8XcuXNz9dVXp62t7bCvbdy4cUAU
zZs3L1dffXWmTp2affv2nZAoqqmpSXd3d9rb29Pb25t9+/Ylqfxn093dnd7e3mGfw1D6lV/5
lcyfPz9f+9rXsn379mG/vVNt+42U2bNnZ8mSJdm5c+cRo+jhhx/Oww8/nCS5+eabM2fOnCNe
z2DHjZQxY8bkpptuys6dOwcdRePHj8/tt9+e2traPPfcc6d8FLW0tOTjH/947rvvvsO+dqzb
r7u7O+vXr8+OHTuGY6rHbdSoUZk+fXqam5sza9as7N69O6+99lq2bNnyrq73iiuuSEtLS37w
gx8M0UxHxmDvx8n68x3s//uDfby6+uqrU1dXl71796axsTFNTU1Zt25d7rvvviO+sDqUOjo6
Mm/evJx55pn5zne+M6y3BcPJ7nMnia6urnd8tXrGjBn52Mc+luXLl+fll1/OBRdccELmtmTJ
kixYsCBr165Nd3d3Jk2alDvuuCOzZs3KV77ylWzduvWEzGOozJgxI01NTampqRmS63unqDnV
tt9IWbhwYTZs2JDp06dnypQpb/vkcLC7ybwXd6c5khtvvDGvvPLKSRd4w+Waa67J5s2bs2rV
qnd9Xb29vbn33nuHYFZDa+fOnfnud7+bJPmjP/qjLF++PD/96U/f9fWefvrpQ/bYN5IGez9O
1p9vMrj/9w/1To9XzzzzTH74wx8mqfw/9y//5b/MnXfemS996UvD/lj30EMP5Xd/93cze/bs
rF27dlhvC4bLKRFFNTU1ufHGG7N+/fpTereCV199Nf/lv/yX7N27N1dcccUJu909e/akra0t
Z511VmprazN9+vRs27YtL7/8ckaNGjVg7DnnnJOLL74448ePz8GDB7Nr166sXbs2y5cvz4ED
B/rHNTQ05Iorrsjs2bPT2NiY9vb2bNq0KT/72c+yZ8+eJMmHP/zh/n2pt23blkceeSTXXntt
Zs+ena6urtx3333Ztm1bWltbc+GFF2batGlpbm7OgQMHsnnz5jzxxBP9K0GjRo3Keeedlxkz
ZmTixIlJKm9Q3NnZmSR58skn8/zzzx/T/PrU19fnX/yLf5Hp06envb09Tz31VJ588snj2n4c
WVVVVRYsWJBHH300dXV1Wbhw4bt+xfxUsXDhwsyYMSP33XdfEVHU3Nycs88+uz8Yjtfs2bOz
YMGC/s/b2tryxBNPHHFsY2NjFi1alClTpqSmpia7du3K888/n1deeaV/zKWXXpq2trbs378/
l156aRoaGrJhw4b84he/6H+cGQ6XXnppdu7cmb179+aSSy5Jc3NzduzYkSeeeCK7d+9OUnn8
W7RoUf+qU1dXV2688cb+6/jhD3844MWd0aNH56KLLsrMmTNTU1OTdevW5cknnxxw7OTixYsH
HFf55JNP5gMf+EBaW1vT1taWhx56KF1dXamqqsqcOXMyZ86cjB8/Ph0dHVm/fn2WL19+xCfq
CxYsyFlnnZWmpqbs27cv69aty7PPPpve3t5juh/H8vMdO3ZsLrnkkkyaNCmdnZ1ZtWpVnn/+
+QHbZDDb+WTy6quv5tvf/nY+/elP54ILLhiwV8lg7m+ft/t5HGrbtm1Zv359Lr30UlHEe9Yp
EUXNzc1ZtGhRTjvttFM6ipL0L4NXVVWdsNt8/PHHs3Tp0vzWb/1Wenp60tzcnKeeeiqPP/74
gHHnnntubr/99gGXtba2ZubMmVm2bFn/ZXV1dfnUpz7VHydJZXeY0047LQ899FD/ZVOnTk1L
S0uSZPr06ZkwYULmzZuXJDl48GD/wabTpk3rj8Senp5UV1dn6tSpOe+88/I3f/M32blzZ8aN
G5dbb711wNymT5/e//eXXnrpmOfX57bbbsvYsWOTJBMmTMj06dNz4MCBrFix4pi2H0d3xhln
pLGxMS+++GLGjRuXhQsX5ic/+clIT2vEjRo1Ktdff31+/OMfD3jR4VQ2d+7cVFVVHXEXymNx
4MCBtLe3p6GhIfPnz097e/sRnzRXVVXlk5/8ZKqrq7Ny5cp0d3f3P64dGkXz58/vPyj+2Wef
zd69e3PZZZdl/vz5+epXvzpsr9TPnz8/dXV1GTduXFasWJHNmzfnwgsvzMKFC/OFL3whnZ2d
qa2tzZQpU/rvT1VVVerq6o54fXV1dbnrrrvS0NCQp59+Or29vbnqqqsyd+7c3HPPPf3j9u3b
l+bm5syYMSPz58/PjBkzMm7cuGzYsCHNzc3p6upKUgnK2267LatXr87GjRvT2NiYa6+9NjNn
zjwsbG+55ZYsWrQoa9euzdatW9PY2JhLLrmk///1Y7kfg/35nnbaabnrrruya9eurFq1Kk1N
TbntttuyYMGCAbtnDmY7n2y2bNmSTZs2ZcGCBf1RNNj7m7zzz+OtVq1alQ9+8IOprq4+ZVbh
KcspEUVtbW355je/eUKODxkuVVVV/U+s+/T29h62KnHo+BPp5ptvzuTJk3PPPfdk8eLFWbJk
STZu3DjgScHs2bOTJFu3bs3f/u3fprq6Oq2trRkzZsyAs60tXrw4EydOTE9PT37wgx9kzZo1
aWhoSHNz84D/WD73uc9l8uTJ+fSnP53Ro0dn7ty5+ed//uds2LAhvb29/a9aPvvss+nu7s66
deuyd+/ejB07Np/85Cczfvz4nHvuufn5z3+etra2fPGLX0xLS0s++tGPJkm+853v9IfVodt5
sPPr097enq9//etJkjvvvDMtLS0555xz+qNosNuPo1u4cGE2b96c3bt354UXXsiVV16Z1tbW
E3Yg8cnqAx/4QPbv359f/vKXAyL/VNa30vpuz+C4adOm/uNTm5qaMn78+COOGzduXFpbW3PP
PfdkzZo1b3udkydPzt13393/uLJixYr863/9r3PuuecO6wt2M2bMyBe/+MX+1dOXXnopd911
1//f3rnHRVXmf/wzF2AYBoabCCqIykUE0ZLtouhqpHLzUnlrNXc1W7ESazfT3TV/r9w2y4x0
a8u1XPJSadkrVNZN0U1FUkkURbwEBCpXAYWY4Tozz+8Pdk4cZoBzYIZR+b5fr+f1Yh6+5zzf
5znP+Z7zfS7fg8GDByMvLw8NDQ1ISUkBACxevBgajYb73Z5JkybByckJH330Ebf/MTc3F0uX
LkVgYCDnjF66dAmXLl1CREQE4uLiUF1djU8++cRkBkGr1SIpKYn3klxWVoaZM2ciNTWVc558
fX0xZswYHD58uMMZHTH1EHp9p06dirq6Omzbto17puTn52PevHnIycnhOd9dtbNY5HI5pk+f
zstraWnBf/7zH9Hn6oiqqip4eXlxv4XWV8j1aM+NGzc4x/V+2/tN9A3uC6cIAH788Udbq9Aj
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
--------------pcXrWObKEpuSLXjwgerBofRu--
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 08:40:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 03:40:10 2025
Received: from localhost ([127.0.0.1]:44248 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdQ5q-0002yj-7n
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:40:10 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:49353)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdQ5n-0002yG-Np
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:40:08 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
5b1f17b1804b1-438a39e659cso3081175e9.2
for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 00:40:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738226401; x=1738831201; darn=debbugs.gnu.org;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=6L6S+3GYhyvBMaDFTE+yvQ8wMmwRxTpdi77mqv0kq1w=;
b=e+tA4GSJzfO54/5RbSWZ2PQ/aSgFtj202StvXU4+WBe69dPBE5gwPcMU8osAuCm8HX
RS+Dtl9AtMbjWpyqFwprw29g+fadenrg622s6nLcriOVztqkD2RAtmhWnOQGpCiVU5FR
Xf2lhfTDhejKSpC3uhk1hfly+f8RJXDfGo/TmrVaYGi6yosBOC9zC7wuPH6CJddI1A7L
eEXfbYzjYDiuBM3vu9mxB9nWEjhpokKOUKjwXLcNIVlkC40nanunR62g63zCnt8kjHC0
wO7qSHRZ+7D2LkVwpgecXO9e3os9st/PK4bhRZKWh693CwieaQPSt7Io3RuaJxe2qnWv
l9vQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738226401; x=1738831201;
h=content-transfer-encoding:mime-version:user-agent:message-id:date
:references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
:to:cc:subject:date:message-id:reply-to;
bh=6L6S+3GYhyvBMaDFTE+yvQ8wMmwRxTpdi77mqv0kq1w=;
b=pZ+7Zg/ApZz/67xp5sEsDHCZOj3cdO8oippoUdswoYcCV2GcMtsGDFTZMxk3PkY0HM
S27+kArHJHNZ3KEUgisKJTAuHHzvY33x9T/cV0xSBinhrTykE2nIb58kcMSoWbFr4koy
zir6O3CgIIUenm4n1AflbhvSDC9UhkDT24ntQllNIAUa4JblqSG+99UcjeyN9AQzmtyq
LIvT/DZnWWKa1H2S0gKJaPgi/5HS2mUUHkEn3OODIk8qGvI7CbKB3woTU9m2S1xaSjih
mzXBZN34NTEpU9gyJx4InnFPlugs9VzBJuK6AmqQ6TXoMC9J5Am3FQ8iCfQ/sBeUlkf3
zjCw==
X-Forwarded-Encrypted: i=1;
AJvYcCVnOn3gxZrOObiBMMrlLzfIEO68a9Pll/5sFth2Ee2HZQK/nYsrjmIYd20dU1tDbfa824P4qA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwQF8co700g7YWLXcXC0spfIUVNPcD3jLtMH8G0wFR5i+h/h/s/
cc7gBxkzUdqAArQtsA8y63t5/rN843GrsNESZBw1wWjp1MM2zF1h0TP/Zr8J
X-Gm-Gg: ASbGncshhKhH6rujoVUDrnFmdzbCBsoR9pMuSZ1g2OBp9gzvsihLl8k8SL6YGlpEFKk
UHVMrYbNG4z88Xvr6BvhHKnWjoElZM9eaUC4rgTTDEzS4cfrQnKCBXbz+siQGUFfb8+bd8VMg+8
BR2GL2byQpHp3SFWko3xmLYhbFQMEjT2hLuabFWajxK3QmADVPJBW3LOt5zcAv88fBshEdmQcFn
AI1cQUD2IAFPnOTAJj/o3mGDlIOborXJaArcRM32qPunabKzcZiS4+XjdPIl/ib4B6WinytYZZR
Sz9pAW9D+Gr2XwGbPj+2N6YmU9ZgrnJX3Lm89zM8zx6pwh+1s0fAV+iqAX5CxWw58vacVRp83Ju
luO4HA5Gv3Eys40mGhHWoy2m6
X-Google-Smtp-Source: AGHT+IGFgIFRR/VeC7khXWpDOgRICROQ+fj8d2sdnyzhvr4cXcRC5NssUmdaBPzg0YHtz/6dzIXT9Q==
X-Received: by 2002:a05:600c:45c5:b0:434:e2ea:fc94 with SMTP id
5b1f17b1804b1-438dc3c3292mr66529065e9.11.1738226400999;
Thu, 30 Jan 2025 00:40:00 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
[2003:e0:b720:a900:dc01:849c:b197:321a])
by smtp.gmail.com with ESMTPSA id
ffacd0b85a97d-38c5c1d1d03sm1295028f8f.99.2025.01.30.00.40.00
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Thu, 30 Jan 2025 00:40:00 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> (martin rudalics's
message of "Thu, 30 Jan 2025 09:32:25 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
<81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
<m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2zfj91loi.fsf@HIDDEN>
<56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
Date: Thu, 30 Jan 2025 09:39:59 +0100
Message-ID: <m2ed0k8zkw.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
martin rudalics <rudalics@HIDDEN> writes:
>> It has no inherent special purpose, and probably has a bug as you
>> describe. Like perhaps the one for the size. Both are an attempt to
>> mimic what is done for window-system frames, while being depressed that
>> that cannot be easily reused, and being too lazy to rewrite the whole
>> frame parameter department =F0=9F=99=82.
>
> The position handling is inherently broken on window-system frames too
> because we translate negative values to positive ones after the window
> manager has processed them. But I'd like to handle values like (+ 10)
> to make child frame dragging work so I'll implement that next.
=F0=9F=91=8D
>
>>> Also when I want to move a child frame to the left of its parent via
>>>
>>> (modify-frame-parameters nil '((left . 0)))
>>>
>>> the left border disappears. Is that intended?
>>
>> If I understand that correctly, then probably yes. The borders are drawn
>> around the frame, so the left border is at left - 1, the right at left +
>> width + 1, and so on.
>
> I see.
>
>> Whatever is outside of the terminal is clipped.
>
> Didn't you once mention that borders can be displayed more nicely? I
> obviously forgot how to do that. In either case I'd like to resize
> child frames by dragging their borders with the mouse.
>
Yes, now even documented:
NEWS:
50 +++
51 ** 'standard-display-table' now has more extra slots.
52 'standard-display-table' has been extended to allow specifying glyphs
53 that are used for borders around child frames and menu separators on =
TTY
54 frames.
55=20
56 Call the function 'standard-display-unicode-special-glyphs' to set up
57 the 'standard-display-table's extra slots with Unicode characters.
58 Please see the documentation of that function to see which slots of t=
he
59 display table it changes.
_Much_ nicer than the default IMO. I still wished Emacs would do that by
default, but here were objections.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 08:32:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 03:32:36 2025
Received: from localhost ([127.0.0.1]:44227 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdPyV-0002fj-Qr
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:32:36 -0500
Received: from mout.gmx.net ([212.227.15.18]:51179)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdPyS-0002fU-TE
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:32:34 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1738225946; x=1738830746; i=rudalics@HIDDEN;
bh=QkqZYarrDvJ0AWWX21uEkoAgiraxeviAcchIlm5gkow=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
References:From:In-Reply-To:Content-Type:
Content-Transfer-Encoding:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=LoeBaZ7aU/ipR/NzjGORIZcr+EoLySQt49lkylglnFyzOlTY3kt1gyV2JABYLwyX
/QK7fphi3X6wwecX8n9gbPhSeIUq3lVP21Pq/kd0ripwiz20XJIMqtQRK+G1GU7H0
001HSN/RtMyvGeR/wtpy96ySNVFJmfuGXH9VqdbH+/WdbUC9JSA2vYlB6x118m0UL
x79VflMixke9EQcP8hAIXkpYEoGGODKFY6E47OWyZ1nbLIdcr0+uXAYxVWaOzhfut
PjYPaR/Mh0Ev45n6VwZuOqKO7zZUpo4n4yD6E+NE6IZm6jtWo/96DH5BE9X1ieg5y
aXfPpnTe5eMQJFGDxg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.131]) by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1Mdeb5-1t459f1erJ-00nDsr; Thu, 30
Jan 2025 09:32:26 +0100
Message-ID: <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
Date: Thu, 30 Jan 2025 09:32:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
<b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
<81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2zfj91loi.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:pKtm7T2gFwQ3WhFv0WwQmbNZq8g3mLX/ffy+3hXgHjCOBW0jekl
wxqhyOFy7Jnzvu83NKWalGXva3SZ2JTMin7t4UI2wxAurvIITzb2mVYSyXh2M8Uriqmz4gx
UMq1HFyfowQGObeA7uM6cKGrCYVRdqQyOSk3RZJdjamxzQcR1l6Og51kds71fqKj6dypYmU
tpqTI/k/G1y/u+YZ99nkA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:L8CApGxGSIE=;fh9EVADCvKahaZdjh/d0ebNKhI1
hCcqWU/SAqxS4PYIcJvuQJ8linOANW09pkgplqrGmTiuliQhVKW1nTGZN8EPPyzphBIN0/95Z
UXT2xUCM7V47hQKbQJvaPhz7URqoUe6t1nYKiL/bZL1r8aj8C4gwh55sLd7HZUf9jP5Wi2Rzv
uJ7QudjQboYzRM9jZBOuSOeukonfSw38GP77EMEwF6PjvnoFv2XOZXyh3KjQCz+IC64xY1tbV
4IOiGsWv9SFFeva6wG7dD7qxE/GF3M9dbi3mYPIXn3cCBFxx2zXTkXfabvpeQavtzgNsZVhG4
dFFDUhP+p4xKTttfilv32H1+S+BTPwajQ52lig36wO7rjXbmp4k6YIN0H7fLyiQ65rZxBZwUr
7wGkZ3yEXAIwd681gNb+abZHsTzfIz5LXPTA02znyFxvpSi+o1wFJNXuFV6Rnrk1Ok2L0EZK2
w3h/4oCkG8QLieTLvKpSdOFCfhsUa48FQ4646gBO9xLxFzHYanXYANzEwX2yTX97BuOzwSztg
qYEnWHCAula/srEUjw7T78SUwZpbpOII3FfKv6Qe9RshK7DnaVL9+HQUEMySeIFEo5CVYqURU
o+F/xUSthgYSiHn/ccQKfVbZaCcs75wQdhBnGzlPidb4y1tfdcNM5Wq13rS3dVPnxMWRNp/+h
1LRfvgKKzh0wmM16+NkCDwOcZJ3ayGm/dCMdRyrUlFX8pFmey8efs8hRM9cc8YlJaYpIkXKf1
E6YRBcT2McqjFT8wC18udNJ77HeKRqIEaJO9pL7sBbm6qa9xdz04sbb8p3mxisT6JVikUQNAf
b17pcAodC6QVGYIV+gfChZ5yWaDdp7kRNb2ecgroOb/Hqup7yuKUd+OOUmsEhJQWPiKpiXqYO
RV+XGb+XyWa//BbUBNEPJ9Yxw8c80z3OS2iHJ3pE4GIK1pSK+BpWU6RelEM7OkDjWbzsddJWD
SC8GHl4aT3NOegFApv5Y6pZsIshnulnaTtbAbAPG5ock0ROUdHlYfF4wjZh7kTncEM0pwWPs2
kIlD2XTWXOAekQTmBJvseoUasYuAPtAVNeVkq0WhqmXg0PqFunc/yPd4qL8TBXirgIwGIWAWJ
vLnkfYP+xnSXntZVlvG44KFZpadfbU3vuPbpIKBzqV9niXVioudbPK2TJCuXIcUNxyv54ZKSS
KO8MUdwEmRqTemmcjxtUDISEFlUyr/RonR8HWa4134qlBrM8o7/NFUSiq+is8pYpt1ZlFYMmC
z7fg+7u3HFBJWPGUc0Uh83iT9YreWnx2w4J45SQXgRIEwOL4/7NNE4iLJ3tNl/oBm3qexW47K
56WXNQLUODekDH5EQrlPpJJpEDnrj2y/AKxrSYgtUfOAZ0=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
ID4gSXQgaGFzIG5vIGluaGVyZW50IHNwZWNpYWwgcHVycG9zZSwgYW5kIHByb2JhYmx5IGhh
cyBhIGJ1ZyBhcyB5b3UNCiA+IGRlc2NyaWJlLiBMaWtlIHBlcmhhcHMgdGhlIG9uZSBmb3Ig
dGhlIHNpemUuIEJvdGggYXJlIGFuIGF0dGVtcHQgdG8NCiA+IG1pbWljIHdoYXQgaXMgZG9u
ZSBmb3Igd2luZG93LXN5c3RlbSBmcmFtZXMsIHdoaWxlIGJlaW5nIGRlcHJlc3NlZCB0aGF0
DQogPiB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcmV1c2VkLCBhbmQgYmVpbmcgdG9vIGxhenkg
dG8gcmV3cml0ZSB0aGUgd2hvbGUNCiA+IGZyYW1lIHBhcmFtZXRlciBkZXBhcnRtZW50IPCf
mYIuDQoNClRoZSBwb3NpdGlvbiBoYW5kbGluZyBpcyBpbmhlcmVudGx5IGJyb2tlbiBvbiB3
aW5kb3ctc3lzdGVtIGZyYW1lcyB0b28NCmJlY2F1c2Ugd2UgdHJhbnNsYXRlIG5lZ2F0aXZl
IHZhbHVlcyB0byBwb3NpdGl2ZSBvbmVzIGFmdGVyIHRoZSB3aW5kb3cNCm1hbmFnZXIgaGFz
IHByb2Nlc3NlZCB0aGVtLiAgQnV0IEknZCBsaWtlIHRvIGhhbmRsZSB2YWx1ZXMgbGlrZSAo
KyAxMCkNCnRvIG1ha2UgY2hpbGQgZnJhbWUgZHJhZ2dpbmcgd29yayBzbyBJJ2xsIGltcGxl
bWVudCB0aGF0IG5leHQuDQoNCiA+PiBBbHNvIHdoZW4gSSB3YW50IHRvIG1vdmUgYSBjaGls
ZCBmcmFtZSB0byB0aGUgbGVmdCBvZiBpdHMgcGFyZW50IHZpYQ0KID4+DQogPj4gICAgKG1v
ZGlmeS1mcmFtZS1wYXJhbWV0ZXJzIG5pbCAnKChsZWZ0IC4gMCkpKQ0KID4+DQogPj4gdGhl
IGxlZnQgYm9yZGVyIGRpc2FwcGVhcnMuICBJcyB0aGF0IGludGVuZGVkPw0KID4NCiA+IElm
IEkgdW5kZXJzdGFuZCB0aGF0IGNvcnJlY3RseSwgdGhlbiBwcm9iYWJseSB5ZXMuIFRoZSBi
b3JkZXJzIGFyZSBkcmF3bg0KID4gYXJvdW5kIHRoZSBmcmFtZSwgc28gdGhlIGxlZnQgYm9y
ZGVyIGlzIGF0IGxlZnQgLSAxLCB0aGUgcmlnaHQgYXQgbGVmdCArDQogPiB3aWR0aCArIDEs
IGFuZCBzbyBvbi4NCg0KSSBzZWUuDQoNCiA+IFdoYXRldmVyIGlzIG91dHNpZGUgb2YgdGhl
IHRlcm1pbmFsIGlzIGNsaXBwZWQuDQoNCkRpZG4ndCB5b3Ugb25jZSBtZW50aW9uIHRoYXQg
Ym9yZGVycyBjYW4gYmUgZGlzcGxheWVkIG1vcmUgbmljZWx5PyAgSQ0Kb2J2aW91c2x5IGZv
cmdvdCBob3cgdG8gZG8gdGhhdC4gIEluIGVpdGhlciBjYXNlIEknZCBsaWtlIHRvIHJlc2l6
ZQ0KY2hpbGQgZnJhbWVzIGJ5IGRyYWdnaW5nIHRoZWlyIGJvcmRlcnMgd2l0aCB0aGUgbW91
c2UuDQoNCm1hcnRpbg0K
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 07:04:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 02:04:29 2025
Received: from localhost ([127.0.0.1]:44036 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdObF-0003ni-0Q
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 02:04:29 -0500
Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:55734)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
id 1tdObA-0003nP-KY
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 02:04:27 -0500
Received: by mail-wm1-x332.google.com with SMTP id
5b1f17b1804b1-4361dc6322fso2396815e9.3
for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 23:04:24 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738220658; x=1738825458; darn=debbugs.gnu.org;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=IIO4DEuym2b4m/xILaXnma2EHa1MoIUCBPurAVilh5U=;
b=AvhJ2pQIxIuamvwsdQVBAZhwqQKk7jcS6D28I07oqEum1cdbPaP36Uz4Bz0eAs0ibJ
SXpsIOJG32SlYzPHGG2fDvH9kV2yRbeBJMy8vRAgKVKuBXm3EYiKckgR8mdmgnF/aW1D
LOlYvuoWkVtFIZZk21+Uc5aF/TcpNfN4MzzUGv120DGJ4Q0hrkqbzjTnq53GrHYmt+YY
OKgF88fxxx4/at995dJEh05KIp+0Y8zb9sDh0p7GS+Ta+mZREZYwyolx0ZXq58S6MRbY
kpEwa6XwEuW67UVfzsCgiqkYuzdo5ouqPEJ4d2bzk+ydLZegw3uZjDLKHc4MgwXnIF/D
BWNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738220658; x=1738825458;
h=mime-version:user-agent:message-id:date:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=IIO4DEuym2b4m/xILaXnma2EHa1MoIUCBPurAVilh5U=;
b=o5HGHZcWcbRCrFx7gGQA2yRsPq4wBJYRc7MsoqkkQ4i5WBWv8hduzsv+zf+ECCEXd2
YZIxrMc5m0R+B8bzGh6Cujwl9IcJFBRxJ7MWmT/m+JQ1ejctMMSAr3hnB3/QFo9nZRrD
4CW5ZK6adPJ+ppPCP+oDuoVASYAmhBIIM6h3JQ9C6U6ZVJsREnvnSIv3hWqjN6FgPsPA
OLDjwflyrZ5qTkdXCnkqYyvm9GZeoGJpIKkpH4x8MFVLwPq8jdjNhxlJXg3qdpoovTPS
rNF5bmd5UszDRq5rE5f+Q6vRXEvHH6CW6f1fS1Y4BuE8g3TsXjyDWzQVeMjykXUVHrrE
Ootw==
X-Forwarded-Encrypted: i=1;
AJvYcCVrrQ5/i32HL5QiBem46N/6qLwdVzmJjERWSUTMavvs8S27r7aPyzuggmdTt/HFGB5R3beTlw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyT5KyExJzDgGYJa0FWsGjmuIBjATgp50xsdlKLfj//PxqVkUCd
3MDPjlfNt6IyEF5IsOzAUSMbFZJ4H/EDUeUroY5hy0F0yn9wX+RKzMlpUvZU
X-Gm-Gg: ASbGncsdIlFo/6brf5Zg3YA+FxBHTmBc7Zmi+WFZ9fkPUUpdzAL2MEL1dKn1X8tgX12
H5z3tpvLJccdqkB+OR6Rd5dON//dFmUXrfD0QVl8BxFtK6vzBwkqDqQiMtpn5neekS5S20VOFcZ
TqH6hf+Kw3r8lpYx542i82iqKcUGQjeB92S2rk4+j5NPn71AJ92cdvYgvKcg1Bze2ZGxnjEGeTN
yNdmz0lEyb3wLjG2gwxr/U83yGk1kK66l2kLma4xoEB92auPRXrVEBiIsEdU7jq48LBs6jYZ+vZ
X+5cTulLv6+IsuREdWuRExvxxmfqQb4FKlsdCFCU2ysJX5WLwfj5YTfpj+Hkq1LLSGfOS9l3EB/
DFnAc6Lvz2GO9KoRvETlUuQQ3
X-Google-Smtp-Source: AGHT+IHtX0VxS2NDLhBfnnvQ1Fwx9di/opshFcULYNaK1/wsugU4XikW+XE+kVnygprH1nuw2rvoXA==
X-Received: by 2002:a05:600c:4e09:b0:436:1c04:aa8e with SMTP id
5b1f17b1804b1-438dc3c8200mr55510095e9.16.1738220657798;
Wed, 29 Jan 2025 23:04:17 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
[2003:e0:b720:a900:dc01:849c:b197:321a])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-438dcc2ede0sm48001375e9.21.2025.01.29.23.04.15
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Wed, 29 Jan 2025 23:04:16 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
In-Reply-To: <CAOGVwenHzi9KaPX20UBpmOiKHHNmmT9yWS0ofDk6WjWb8TEWaQ@HIDDEN>
(Len Trigg's message of "Thu, 30 Jan 2025 18:57:20 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
<81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
<m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
<m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
<m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
<m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
<m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
<m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
<m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
<m2v7twdi6n.fsf@HIDDEN>
<CAOGVwenHzi9KaPX20UBpmOiKHHNmmT9yWS0ofDk6WjWb8TEWaQ@HIDDEN>
Date: Thu, 30 Jan 2025 08:04:14 +0100
Message-ID: <m2msf8dbpt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: martin rudalics <rudalics@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
Len Trigg <lenbok@HIDDEN> writes:
> I just rebuilt from master and tested it out with my two tty terminals. We do still have the original
> problem where the second tty child frame reappears when focus is switched to the other terminal,
> blocking that other terminal. Given the discussion about cursor setting, note that when the tty child
> frame reappears on the deselected terminal, the cursor in the selected/focused terminal is drawn at the
> coordinates corresponding to where the tty child frame is in the deselected terminal (not sure if that
> has always been the case).
Thanks.
I still think this is related to the mini_frame thing we had some days
ago: the mini_frame that was invisible and was displayed nevertheless,
which lead to an assertion with checking enabled, and a SEGV without.
What I added to combined_updates_for_frame must be considered a
workaround to let it not crash. That is lands there with an invisible
frame is the bug that should be investigated.
Nothing for me though, I*m afraid.
Information forwarded
to bug-gnu-emacs@HIDDEN
:
bug#75056
; Package emacs
.
Full text available.
Message received at 75056 <at> debbugs.gnu.org:
Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 05:57:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 00:57:48 2025
Received: from localhost ([127.0.0.1]:43946 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1tdNYi-0000Te-9Y
for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 00:57:48 -0500
Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]:61567)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tdNYf-0000TK-9H
for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 00:57:46 -0500
Received: by mail-lj1-x234.google.com with SMTP id
38308e7fff4ca-30227ccf803so2892761fa.2
for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 21:57:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1738216659; x=1738821459; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=78POv8meLff12ndgJ/mzIPlje2PntvIZnuGSiCIBw4c=;
b=Nz96MdsaZORxLUZJA6Aa4PaMNSylPLFKMSuzAn9SAMmNk+ZG5Swz9zfW1erJVgtP3p
iKB5BjjS7eGeemT3BgpxLSp5iGzmwVE7ge/1bnZVMfsqWhga7K5k1ch6ufwJr1FJ/Cbv
uARaiDAMzAb4KIWsCi/I2o6LGgnbNHh4tnY631gF0gt9bQqEoE5Q7414vMtN24ZotGYY
5hZl9dp+gCkjH165Onf89yISo4CVLK8GwbnToXeMnTezZcpJHbovMDbtchGif7a7DHVF
O3hdn/MwG9QrGGaKEqhSqirtmpPBRu8YHMpQWTRtbWeM9zFKomEaiHdkuH68wdMtbdNw
ZwYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1738216659; x=1738821459;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=78POv8meLff12ndgJ/mzIPlje2PntvIZnuGSiCIBw4c=;
b=erxhqMAJsmznj8hV8GTiB7MKbNdXBSqEgoNdHUBDt1mQWTZ1UQ/jvDneMYQhHX3Agt
g2fVhB+eJJbFoTI4iV3RoAtp3os4aLkB9HKhkumF4RSXouZBYNMcinnBqLYtw6A8aArw
cgYhfnYt1kWf6jtUbq5Nktz6nsnu3wgRWq9a3KyKwgyhVBFl8TB+yy3k3MpCfe65yYfq
S4HO5d9PM73uWvzClScHm6VFHbwEYDmKCeVjkgO8N7O70K0BnsD2LVau7wVA9HlKsrDW
SStcrL9y++vW9mP/pB9o6SIDF5OeTO+Da9H29RxatdtZsvhPIxAj7MgsXf/85++Lke7M
w2zg==
X-Forwarded-Encrypted: i=1;
AJvYcCVyd/0DCdSTvX5EcJoYadyt5P0uzuFNLZy96L78VHfweBS7+s4C+9HQKeXrV96rypaDG5FF2A==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yy8ruH1Z/rIg3mswRIeqlGLSWJKMyjBaMZeNQ5qH4n2XlIfcDHe
xCCCduVfdEncL80RseTzXm7wmK/US6PGdpGS4fiaQOVOed5D7OgF9jxKbS+HqAL0qdC4c2PA+fU
JNnT1Gm/9mtUyI2d3ysORHc5FPc4=
X-Gm-Gg: ASbGncv0DVICsT5vSX05FdqxB5t2YSSwVwml192Kp6ZK5VsM14ILLF+tW6HJD/saVHl
kNekp/VFKfkajf56mVtR3QOHgzB+Rc2Zz/IVWGCMXZyZaAudEMa6LZQkfTQ8FmISlFTA3Ddk=
X-Google-Smtp-Source: AGHT+IGit4SogsfdZYtV/Nm2lzfTFfRtvdzWWy97hSv4+MT5R4zbm60k1JyzkE8+gBtlilanWjjaJaWwVKvDlTa9dlw=
X-Received: by 2002:a05:651c:12c3:b0:300:5c57:5242 with SMTP id
38308e7fff4ca-30796811e7fmr22028021fa.7.1738216657747; Wed, 29 Jan 2025
21:57:37 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
<9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
<b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
<81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
<4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
<c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
<fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
<824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
<ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
<m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
<528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
<68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
<ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2v7twdi6n.fsf@HIDDEN>
In-Reply-To: <m2v7twdi6n.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Thu, 30 Jan 2025 18:57:20 +1300
X-Gm-Features: AWEUYZkO-W0JMm_ZLvisKytoPJ96mfyHvDC7CahgC5h_DRRt7AB6UoYK6lXoSog
Message-ID: <CAOGVwenHzi9KaPX20UBpmOiKHHNmmT9yWS0ofDk6WjWb8TEWaQ@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/related; boundary="0000000000006dc942062ce61a34"
X-Debbugs-Envelope-To: 75056
Cc: martin rudalics <rudalics@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
--0000000000006dc942062ce61a34
Content-Type: multipart/alternative; boundary="0000000000006dc93c062ce61a33"
--0000000000006dc93c062ce61a33
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
I just rebuilt from master and tested it out with my two tty terminals. We
do still have the original problem where the second tty child frame
reappears when focus is switched to the other terminal, blocking that other
terminal. Given the discussion about cursor setting, note that when the tty
child frame reappears on the deselected terminal, the cursor in the
selected/focused terminal is drawn at the coordinates corresponding to
where the tty child frame is in the deselected terminal (not sure if that
has always been the case).
[image: image.png]
On Thu, 30 Jan 2025 at 17:44, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:
> martin rudalics <rudalics@HIDDEN> writes:
>
> >> Back from the drawing board, please find now 3 patches attached.
> >
> > Works pretty well so far. I'll do some further experiments with it.
>
> Now pushed to master.
>
--0000000000006dc93c062ce61a33
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>I just rebuilt from master and tested it out with my =
two tty terminals. We do still have the original problem where the second t=
ty child frame reappears when focus is switched to the other terminal, bloc=
king that other terminal. Given the discussion about cursor setting, note t=
hat when the tty child frame reappears on the deselected terminal, the curs=
or in the selected/focused terminal is drawn at the coordinates correspondi=
ng to where the tty child frame is in the deselected terminal (not sure if =
that has always been the case).</div><div><br></div><div><img src=3D"cid:ii=
_m6ix5fk60" alt=3D"image.png" width=3D"570" height=3D"337"><br><br></div><d=
iv><br></div></div><br><div class=3D"gmail_quote gmail_quote_container"><di=
v dir=3D"ltr" class=3D"gmail_attr">On Thu, 30 Jan 2025 at 17:44, Gerd M=C3=
=B6llmann <<a href=3D"mailto:gerd.moellmann@HIDDEN">gerd.moellmann@gm=
ail.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"=
margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex">martin rudalics <<a href=3D"mailto:rudalics@HIDDEN" target=3D"_bl=
ank">rudalics@HIDDEN</a>> writes:<br>
<br>
>> Back from the drawing board, please find now 3 patches attached.<b=
r>
><br>
> Works pretty well so far.=C2=A0 I'll do some further experiments w=
ith it.<br>
<br>
Now pushed to master.<br>
</blockquote></div>
--0000000000006dc93c062ce61a33--
--0000000000006dc942062ce61a34
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_m6ix5fk60>
X-Attachment-Id: ii_m6ix5fk60
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