Received: (at 79298) by debbugs.gnu.org; 13 Oct 2025 08:55:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Oct 13 04:55:36 2025 Received: from localhost ([127.0.0.1]:51211 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v8EL9-0006Pg-5v for submit <at> debbugs.gnu.org; Mon, 13 Oct 2025 04:55:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33568) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v8EL0-0006PM-0Q for 79298 <at> debbugs.gnu.org; Mon, 13 Oct 2025 04:55:29 -0400 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 1v8EKr-0000uD-EZ; Mon, 13 Oct 2025 04:55:17 -0400 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=oimYcgf1NH3mv9TsA+9fHu69NQTZdN+KYtiUrdhihNo=; b=M5tMX2ZvsUdG WJPI8+XThFNve3TwLTDo7cIm9fZWLt2MxbCK/3txbiFVJgy/zCGHx2KiGjLblF7E5ZAVMv4+m03S1 R+Z91ioSLjgBcpN87daPgMbMAggXeR1T5YfziGxFsLoYKfNfitM5W7bum2fOZqOJHUL63ZFtCn/x3 qEzTxb1eRXqnlECLOHvyDb0cThGrsAd9mRKfB2JTbVi0z3y4EHQ+t0wgOSPFJLRwf87IKerSBXlgM GJGn+9u9TaYX2iLpHTYbep/fA9gZx49vos/GNeGNF2FhKmHVV3dQHoa4wiUs2DnOVyvvvoqwQiqbr cE/xn3EtIPc1DtK2naPeqQ==; Date: Mon, 13 Oct 2025 11:55:12 +0300 Message-Id: <867bwz41vz.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <ph7jbPXWmyuATAI7CUojQVoCPNdSefph5Q_BnkS6Q9M3dYn_ZwuPizH1YwBCIJmiThGw9ZYbh427zhhUVLrEE2UyFbYodspSNwv91I8oF-o=@etown.dev> (message from Ewan on Mon, 13 Oct 2025 08:42:11 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> <86tt044rmx.fsf@HIDDEN> <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> <86qzv84iq8.fsf@HIDDEN> <aXd2Y5LhSLDRagVy6lQanNzvkJwesbPiSgXU13LPOp-Xv9bHWmsGhBk9aUPzrBYsnv-wrMLeNa2P_dEYlI1KK8FEJSGp89ittWkKahfE6m0=@etown.dev> <86frbo40cc.fsf@HIDDEN> <o_0HwbYLxmerK-92g1P8vgcRLZsojrvtqkMm6dKyBia9UPv8rcxnPoaIHOJL-DjqOmU29ADb1RWSmTP9SNns5xL5xbz3bOAnsFPHvLyzcvk=@etown.dev> <86bjmb46ia.fsf@HIDDEN> <ph7jbPXWmyuATAI7CUojQVoCPNdSefph5Q_BnkS6Q9M3dYn_ZwuPizH1YwBCIJmiThGw9ZYbh427zhhUVLrEE2UyFbYodspSNwv91I8oF-o=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: include_yy@HIDDEN, 79298 <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: Mon, 13 Oct 2025 08:42:11 +0000 > From: Ewan <ewan@HIDDEN> > Cc: include_yy@HIDDEN, 79298 <at> debbugs.gnu.org > > > > It appears to only happen with scripts where compositions are likely. > > > Hard to pinpoint the error without knowing the language, but in e.g. > > > the South Asia row pictured, the first issue is in the fourth comma- > > > separated chunk. > > > > > > Moving across the problem rows, there are some areas where the cursor > > > widens to two columns, and advances by one, i.e. by half of its width. > > > This occurs where two adjacent wide glyphs are combined or overlapping. > > > > > > In -nw mode, we don't control the width of the cursor; Windows does. > > So I don't think we can do anything about that. Basically, the wide > > cursor means that character composition has happened: two or more > > codepoints were combined into a single glyph (a.k.a. "grapheme > > cluster"). Are you saying we can control this cursor display somehow? > > No way for us to control the system cursor display, that I know of. > Was just pointing out the system cursor display as indication that WT > "recognizes" two combined wide characters as wide (two cols each) but > renders them as overlapping (3 cols total), and in such cases, the > difference shows up as a "gap" in the rendered screen buffer row. I guess this means Emacs and WT disagree about the width of the glyphs in those cases. So maybe it _is_ part of the problem, because screen layout is based on internal calculations, not just on actual display. > > Anyway, I don't think this is part of the problem with incorrect > > rendering, because the cursor motion is correct in the cases you > > described. The problematic rendering happens for other reasons, I > > think. Something to ponder in the future, I guess. Hping for 100% > > correct display of etc/HELLO in -nw mode is a leap of faith anyway. > > Sounds good. Otherwise, the patch appears to work as expected. > Note, I can't test windows 10 systems that don't support 24bit. I have here a VM with XP, and will try to test this there at some point. > Let me know if any other changes are needed. Let's wait for a few days to give others time to try the patch, and take it from there. Thanks.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 13 Oct 2025 08:42:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Oct 13 04:42:29 2025 Received: from localhost ([127.0.0.1]:51176 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v8E8S-0005fm-To for submit <at> debbugs.gnu.org; Mon, 13 Oct 2025 04:42:29 -0400 Received: from mail-24421.protonmail.ch ([109.224.244.21]:16151) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v8E8M-0005ez-QI for 79298 <at> debbugs.gnu.org; Mon, 13 Oct 2025 04:42:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1760344935; x=1760604135; bh=hdXP7UONDcQSCQyAxAoq4wQ85OEWsvB9Msk/TpJT53g=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=P6Kueuo2UFyBQXuxflyNUpJTaW/0MggCHZ7BfwU3pOQ71wt5JBolTsTBAb/aicvEO w5ZYyzex47au46OZ57TEdcuMcyr5BaTlpGMjwUep4Iektm2iRhRSIOQ1eYz2ST+v6F 2/a3mVO9wToIiya+ccUX+PXs4qSuTi0ciDIjZH1JEbPJhiZTsSBDcq0m3nfn0K17h5 CN9ATujb0ZUCKij4jE5dTSSgvvbpsvbJEdb+mNKQB5IP2uHNvSZ15vNkxJe2+VNeHz Ur608mHa88ELoQxuUI1aLecOgZGYUwsTo20fKZjEcO6L1ixV8tbVzNWIVtFCBwaC9K ZlF2WUgS2S1Zw== Date: Mon, 13 Oct 2025 08:42:11 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <ph7jbPXWmyuATAI7CUojQVoCPNdSefph5Q_BnkS6Q9M3dYn_ZwuPizH1YwBCIJmiThGw9ZYbh427zhhUVLrEE2UyFbYodspSNwv91I8oF-o=@etown.dev> In-Reply-To: <86bjmb46ia.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> <86tt044rmx.fsf@HIDDEN> <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> <86qzv84iq8.fsf@HIDDEN> <aXd2Y5LhSLDRagVy6lQanNzvkJwesbPiSgXU13LPOp-Xv9bHWmsGhBk9aUPzrBYsnv-wrMLeNa2P_dEYlI1KK8FEJSGp89ittWkKahfE6m0=@etown.dev> <86frbo40cc.fsf@HIDDEN> <o_0HwbYLxmerK-92g1P8vgcRLZsojrvtqkMm6dKyBia9UPv8rcxnPoaIHOJL-DjqOmU29ADb1RWSmTP9SNns5xL5xbz3bOAnsFPHvLyzcvk=@etown.dev> <86bjmb46ia.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: a8994855db8a4a4ce042c004892235f37beb83c6 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 79298 Cc: include_yy@HIDDEN, 79298 <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: -2.0 (--) > > > > After some testing, I suspect these might be rendering issues at th= e > > > > system level, not within Emacs' control. See the attached images. > > > > I set the WT background image to bright pink, then started acmd tab= , > > > > ran emacs -nw -q, then C-h h, and C-l to force redisplay. > > > > The result is that, in rows where wide glyphs are rendered > > > > overlapping, the WT background image shows through subsequently in > > > > the row, as though there is no screenbuffer there at all. > > >=20 > > > Do the problems happen only with scripts where characters are compose= d > > > by the terminal? If you move with C-f, does the buffer position > > > change by 1 or by more than 1? > >=20 > > It appears to only happen with scripts where compositions are likely. > > Hard to pinpoint the error without knowing the language, but in e.g. > > the South Asia row pictured, the first issue is in the fourth comma- > > separated chunk. > >=20 > > Moving across the problem rows, there are some areas where the cursor > > widens to two columns, and advances by one, i.e. by half of its width. > > This occurs where two adjacent wide glyphs are combined or overlapping. >=20 >=20 > In -nw mode, we don't control the width of the cursor; Windows does. > So I don't think we can do anything about that. Basically, the wide > cursor means that character composition has happened: two or more > codepoints were combined into a single glyph (a.k.a. "grapheme > cluster"). Are you saying we can control this cursor display somehow? No way for us to control the system cursor display, that I know of. Was just pointing out the system cursor display as indication that WT "recognizes" two combined wide characters as wide (two cols each) but renders them as overlapping (3 cols total), and in such cases, the difference shows up as a "gap" in the rendered screen buffer row. > Anyway, I don't think this is part of the problem with incorrect > rendering, because the cursor motion is correct in the cases you > described. The problematic rendering happens for other reasons, I > think. Something to ponder in the future, I guess. Hping for 100% > correct display of etc/HELLO in -nw mode is a leap of faith anyway. Sounds good. Otherwise, the patch appears to work as expected. Note, I can't test windows 10 systems that don't support 24bit. Let me know if any other changes are needed.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 13 Oct 2025 07:15:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Oct 13 03:15:43 2025 Received: from localhost ([127.0.0.1]:51049 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v8CmU-0001gD-KX for submit <at> debbugs.gnu.org; Mon, 13 Oct 2025 03:15:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42686) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v8CmP-0001fv-RQ for 79298 <at> debbugs.gnu.org; Mon, 13 Oct 2025 03:15:40 -0400 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 1v8CmH-00047s-Kk; Mon, 13 Oct 2025 03:15:31 -0400 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=TiuVfGMZoR1tgZ9BZrnGuI/W7gL8F8HSGLCCm5MoqvI=; b=Gpp8sR0lwBvr px8lPsp3BJf7nT7WRJHBNIE6wNp6suPsTRn/8jHKQJV6Nkc6Yk9X4LkB3DBZQaFCU2UgPWsjNWTla izkCO85c7JkWxVf4WwpGdduxqz8k73bv5tssJASJaoT3SdxV7Nugm+RJnWv7LHXa1LNePHSqE1Fzs wQGRUj7YM5OP94uczyGi0W20we32gjE/pNAPQ7fhDjVtAiFO524BU0kgOguiXrhJGIQcPTbXBWZ7b IOsf/q6nRdAQQaJYhMnCh7r/jIRxnkcPjxr7Uedhb5wGyrmDiRV2XSyz3piJ6+A5Ldz3O8kOnLiuU v0pPw9tr2AfrfXYzFSrSXw==; Date: Mon, 13 Oct 2025 10:15:25 +0300 Message-Id: <86bjmb46ia.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <o_0HwbYLxmerK-92g1P8vgcRLZsojrvtqkMm6dKyBia9UPv8rcxnPoaIHOJL-DjqOmU29ADb1RWSmTP9SNns5xL5xbz3bOAnsFPHvLyzcvk=@etown.dev> (message from Ewan on Sun, 12 Oct 2025 21:21:14 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> <86tt044rmx.fsf@HIDDEN> <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> <86qzv84iq8.fsf@HIDDEN> <aXd2Y5LhSLDRagVy6lQanNzvkJwesbPiSgXU13LPOp-Xv9bHWmsGhBk9aUPzrBYsnv-wrMLeNa2P_dEYlI1KK8FEJSGp89ittWkKahfE6m0=@etown.dev> <86frbo40cc.fsf@HIDDEN> <o_0HwbYLxmerK-92g1P8vgcRLZsojrvtqkMm6dKyBia9UPv8rcxnPoaIHOJL-DjqOmU29ADb1RWSmTP9SNns5xL5xbz3bOAnsFPHvLyzcvk=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: include_yy@HIDDEN, 79298 <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: Sun, 12 Oct 2025 21:21:14 +0000 > From: Ewan <ewan@HIDDEN> > Cc: include_yy@HIDDEN, 79298 <at> debbugs.gnu.org > > > > After some testing, I suspect these might be rendering issues at the > > > system level, not within Emacs' control. See the attached images. > > > I set the WT background image to bright pink, then started acmd tab, > > > ran emacs -nw -q, then C-h h, and C-l to force redisplay. > > > The result is that, in rows where wide glyphs are rendered > > > overlapping, the WT background image shows through subsequently in > > > the row, as though there is no screenbuffer there at all. > > > > > > Do the problems happen only with scripts where characters are composed > > by the terminal? If you move with C-f, does the buffer position > > change by 1 or by more than 1? > > It appears to only happen with scripts where compositions are likely. > Hard to pinpoint the error without knowing the language, but in e.g. > the South Asia row pictured, the first issue is in the fourth comma- > separated chunk. > > Moving across the problem rows, there are some areas where the cursor > widens to two columns, and advances by one, i.e. by half of its width. > This occurs where two adjacent wide glyphs are combined or overlapping. In -nw mode, we don't control the width of the cursor; Windows does. So I don't think we can do anything about that. Basically, the wide cursor means that character composition has happened: two or more codepoints were combined into a single glyph (a.k.a. "grapheme cluster"). Are you saying we can control this cursor display somehow? Anyway, I don't think this is part of the problem with incorrect rendering, because the cursor motion is correct in the cases you described. The problematic rendering happens for other reasons, I think. Something to ponder in the future, I guess. Hping for 100% correct display of etc/HELLO in -nw mode is a leap of faith anyway.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 12 Oct 2025 21:21:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 12 17:21:29 2025 Received: from localhost ([127.0.0.1]:50053 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v83VQ-00020a-OE for submit <at> debbugs.gnu.org; Sun, 12 Oct 2025 17:21:29 -0400 Received: from mail-4323.protonmail.ch ([185.70.43.23]:10463) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v83VO-00020M-DC for 79298 <at> debbugs.gnu.org; Sun, 12 Oct 2025 17:21:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1760304080; x=1760563280; bh=uvW6iToxZ8xFjMnp/rsrN4pRNU9Jq487fAw0grBC7Go=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=isRaoD5ribBKPU7n2GEobDAqkwHOaW/HcqvJO7iVYCfsULxI2pSFpSSyMxI0SBQLw Js4VMt3cgOaILjkiuzvx6uKvWzxF45wSZxP3m3ySHeiya7GloltlymiAHpBVZFqJ6A GAj53inZy/BNMe6DFXEYx7Fbf6riH02qKABGiqR1/EIuBgvz7ewwYOz+W8sl3yOl+S ZryVDgMy7aQpNAiAaCv4sEZMC4au1HcA+ET2St/pNpn1D8K95OVQ7M7nA63qUSWOq9 6Fitf2hLGabWPgBmPk2t+UdRNjsGRtHsN2R85tO2mhMHKEl7RE7aimOr/Y6UiVgQSn 6u+sU76unggtw== Date: Sun, 12 Oct 2025 21:21:14 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <o_0HwbYLxmerK-92g1P8vgcRLZsojrvtqkMm6dKyBia9UPv8rcxnPoaIHOJL-DjqOmU29ADb1RWSmTP9SNns5xL5xbz3bOAnsFPHvLyzcvk=@etown.dev> In-Reply-To: <86frbo40cc.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> <86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> <86tt044rmx.fsf@HIDDEN> <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> <86qzv84iq8.fsf@HIDDEN> <aXd2Y5LhSLDRagVy6lQanNzvkJwesbPiSgXU13LPOp-Xv9bHWmsGhBk9aUPzrBYsnv-wrMLeNa2P_dEYlI1KK8FEJSGp89ittWkKahfE6m0=@etown.dev> <86frbo40cc.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 2b5b39df0d106c3e488dbdfdf976b8691eb2d943 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 79298 Cc: include_yy@HIDDEN, 79298 <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: -2.0 (--) > > After some testing, I suspect these might be rendering issues at the > > system level, not within Emacs' control. See the attached images. > > I set the WT background image to bright pink, then started acmd tab, > > ran emacs -nw -q, then C-h h, and C-l to force redisplay. > > The result is that, in rows where wide glyphs are rendered > > overlapping, the WT background image shows through subsequently in > > the row, as though there is no screenbuffer there at all. >=20 >=20 > Do the problems happen only with scripts where characters are composed > by the terminal? If you move with C-f, does the buffer position > change by 1 or by more than 1? It appears to only happen with scripts where compositions are likely. Hard to pinpoint the error without knowing the language, but in e.g. the South Asia row pictured, the first issue is in the fourth comma- separated chunk. Moving across the problem rows, there are some areas where the cursor widens to two columns, and advances by one, i.e. by half of its width. This occurs where two adjacent wide glyphs are combined or overlapping.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 12 Oct 2025 15:16:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 12 11:16:30 2025 Received: from localhost ([127.0.0.1]:49303 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7xoD-0006Mc-Qx for submit <at> debbugs.gnu.org; Sun, 12 Oct 2025 11:16:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52048) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7xoA-0006MA-N4 for 79298 <at> debbugs.gnu.org; Sun, 12 Oct 2025 11:16:28 -0400 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 1v7xo5-0002oy-0b; Sun, 12 Oct 2025 11:16:21 -0400 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=B2o3nxdmAKepiHNuhuV38QMmRya7Qodl67KN7sQviJc=; b=CLnrTDJRv0xj TATKWJPCmPTrQfCCYHATsNbtOoHh2jFFdM5a5Pv8undV6mUptSqMAiOIuQyRqiLuSzD57dm0KbStE MZFtnUUdRJozoFK3cqxsM0yeCEDu4S78rV8JbfATesPsNs+CIZPtme+djevnlnsZjgXKh5Xxg21A0 sr5HKzr5+JSVt7NxwFk0orvc7Erkeljto5P3wSQYK4jTnaqBdmhKo/zzIGZmTfQHrFPELDFWWnA3x DUMBxHCyhPGDycSZv3PFsJqrp+k4Mb+j8Il4BtxrvXSE7CouTsdNTdyBETnb27QMXgRKKKwCdQ6jd giGyDOH7/wuwdhHLzdkjVQ==; Date: Sun, 12 Oct 2025 18:16:19 +0300 Message-Id: <86frbo40cc.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <aXd2Y5LhSLDRagVy6lQanNzvkJwesbPiSgXU13LPOp-Xv9bHWmsGhBk9aUPzrBYsnv-wrMLeNa2P_dEYlI1KK8FEJSGp89ittWkKahfE6m0=@etown.dev> (message from Ewan on Sun, 12 Oct 2025 14:59:49 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> <86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> <86tt044rmx.fsf@HIDDEN> <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> <86qzv84iq8.fsf@HIDDEN> <aXd2Y5LhSLDRagVy6lQanNzvkJwesbPiSgXU13LPOp-Xv9bHWmsGhBk9aUPzrBYsnv-wrMLeNa2P_dEYlI1KK8FEJSGp89ittWkKahfE6m0=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: include_yy@HIDDEN, 79298 <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: Sun, 12 Oct 2025 14:59:49 +0000 > From: Ewan <ewan@HIDDEN> > Cc: include_yy@HIDDEN, 79298 <at> debbugs.gnu.org > > I've attached an updated patch for master with the discussed changes. Thanks. > Some observations, re: UTF-8 display. > > I still see a few "artifacts", i.e. characters that don't get cleaned > up after scrolling/redisplay. However, I see these in both WT and > conhost.exe (albeit, slightly different ones), and other effects too. > > After some testing, I suspect these might be rendering issues at the > system level, not within Emacs' control. See the attached images. > I set the WT background image to bright pink, then started acmd tab, > ran emacs -nw -q, then C-h h, and C-l to force redisplay. > The result is that, in rows where wide glyphs are rendered > overlapping, the WT background image shows through subsequently in > the row, as though there is no screenbuffer there at all. Do the problems happen only with scripts where characters are composed by the terminal? If you move with C-f, does the buffer position change by 1 or by more than 1? Some problems with character compositions (which happen in some complex scripts) are inevitable, because what Emacs knows about compositions in TTY mode and what the terminal actually does is not 100% the same. Similar problems happen on Unix with advanced terminal emulators, such as kitty and its ilk.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 12 Oct 2025 15:00:05 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 12 11:00:05 2025 Received: from localhost ([127.0.0.1]:49282 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7xYK-0005UN-Su for submit <at> debbugs.gnu.org; Sun, 12 Oct 2025 11:00:05 -0400 Received: from mail-4323.protonmail.ch ([185.70.43.23]:12305) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v7xYG-0005T4-Vp for 79298 <at> debbugs.gnu.org; Sun, 12 Oct 2025 11:00:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1760281192; x=1760540392; bh=XQ6aqoa4NDReHd1/xOmBAIZ3aLJHbRlmiT9/z6op1+o=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=dUL8i7n5ACAvlzX1TvWVQqdZYdsaL17eYV/f2ZDw4K+orgUSS3VGP60Aq78yfDyv3 xEl25U5pXJ2ltYdgfVYGP3Q/W0XW7S3EfoVfvP3tkBGhme0BxTCrMjAOlfNI/z6ad6 xHAfDl8XgY8sxJplRvkVgAuxbp5fXt9oyBMPfUZO2kK0PkhS2MLt/unpU25cjdMsz/ tTTlcbBJEDkCvhuLqNq/fezZoUCQ8CzkO3eViQEKkjBZ00AbZ+GbQqPMwipexbloLY HXFt49oZTu1wgQYCwZoLo3CRHohV/x9T3lqFKHbylH+CMEDh4sGOz6UAQ5GuVtek9j NNnlEY2Adu4uQ== Date: Sun, 12 Oct 2025 14:59:49 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <aXd2Y5LhSLDRagVy6lQanNzvkJwesbPiSgXU13LPOp-Xv9bHWmsGhBk9aUPzrBYsnv-wrMLeNa2P_dEYlI1KK8FEJSGp89ittWkKahfE6m0=@etown.dev> In-Reply-To: <86qzv84iq8.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> <86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> <86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> <86tt044rmx.fsf@HIDDEN> <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> <86qzv84iq8.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 4967ef253bb108b0d58f8874bca28f92fc7a2f12 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_lfEAdGpNcaIyanGug4lSvu7mXbhlSCp9Lh09EVnVM5o" X-Debbugs-Envelope-To: 79298 Cc: include_yy@HIDDEN, 79298 <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> --b1=_lfEAdGpNcaIyanGug4lSvu7mXbhlSCp9Lh09EVnVM5o Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I've attached an updated patch for master with the discussed changes. Some observations, re: UTF-8 display. I still see a few "artifacts", i.e. characters that don't get cleaned=20 up after scrolling/redisplay. However, I see these in both WT and conhost.exe (albeit, slightly different ones), and other effects too. After some testing, I suspect these might be rendering issues at the=20 system level, not within Emacs' control. See the attached images.=20 I set the WT background image to bright pink, then started acmd tab,=20 ran emacs -nw -q, then C-h h, and C-l to force redisplay. The result is that, in rows where wide glyphs are rendered overlapping, the WT background image shows through subsequently in the row, as though there is no screenbuffer there at all. Please test the attached patch in the context of the orginal issue, to see if it is any better. --b1=_lfEAdGpNcaIyanGug4lSvu7mXbhlSCp9Lh09EVnVM5o Content-Type: image/png; name=render-error-2.png Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=render-error-2.png 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 jIUAEC7G6MlAPwIAAGBS6Ikztgk0tols0Wtck9nO3L41ts+eVuY3s1/fvmOdIJS1T3yWNU0mOe/J CQBZTfJYCACjxP3X+HFNA4rhHAIATAMvC5gAYJI0m83Y77bFSwCA4TE5fjLQjwAAAAAAoMpa+w/E frdNbszKZ1mYDOQEAADAaHH/BQAAAFTDTG/m9Z7emMee3W/pTX3NZlMajYZIwhNMbMz3yc4Tnur1 uhw9enTgqSjnzp1LnTypy7NptVqp5WjNZlNmZ2dF1NNaTMOUO4xpaGO9XpelpSW9WbrdrmxubsrV q1dHUo8kw+Z8JLR+7HQ6sd/zqNVqelOpojYOM0Zoq6ur/XKG6UcfzNibfZOUY2a9NzY2ZHl5ub9P PJxD+v22nNF0TqflxbC56lPZee8zV4flM790H0f0MbrNthyNuMo0peXBuPpxc3PT2a6y6HMzkvXc LpPuSzO2rjzUbGUUuS80+ezHpPMnL99l2dqYJ1a2Pohk7cey2Npnji9J9dPtihQZv0y29xbJr2HK KmMsdMXNpGNtY8tzH+e2LVZZc8K3rJ9lHpc3v2TIeyb6EQAAoFqS7u3X19dlbW1NREQWFhZkZWVF HxLjutcXETn25D75taf2yXO79zq/qTorn2X51Np/QF564mmRhG/jtjHfJztPeDLbGLm+fUe+/0H6 N+Xq8mxeu3kttRyttf+AfOPxh/Ux62Uapty8bHG2xevdD9+XK1sfJ9bnxuEj/Z+T6m4e9+6H78vS jfdi+23Ozx/u1ydPPtj4LCvqR51bP/rkTmK7XHllxsNWdtZ4FeWqnympj11CyXttFDmRNt64Yj7u nDDP17z2X7ygNw2wtSnLOXTsyX3yxjPP939PikPasWW3cVi+66VzrOj1Ucc1EvVf2jVDSmijbzpm NsOMWaGMhVnvAbLmhMl1bqeVE3pOmIr2o+9zSI9tNjqn02Lm6se0MVqzlRPVV8chKWYh0vWP5OlH KfF8DDn23H8ls+VEEa62mobJgSJjoauNZm5E+/KOOz7ZciBLncoYo/V5G8k75miuvsjC978D+Ghj GfcTun9sktrv4sqvtPFLHP3m49oBABje1varetNEqMQTmKKJuXpi1tzcnCwtLcnq6mpse9lWV1el 0+lIo9GQubm5gXqZjh49qjdVQpXaODc3J41GYyy5ELoq9eOw6vV6rI0mc4yo1+uxfaHrdrt60wDd 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 xlGMX2kmIY4AgNGaqAVMZWu32wPf9txoNGRpaUmWlpak0+n0J5FVVehtbDabsrq6Kp1ORzqdTr9e Ud3wUOj96JtrknEW5pMjopc54XtjY2Ngf/TKuihnGObE8mgSc9RfZnujiepZJ336OofM/Go0GrF9 svM5kbQJ9OTq6JWVX1qZ58g4RbnpetnOibL5OrenSYj96FsoY05Zkq4vRRUdv3zml8+yJl2ZOTFu 03TPNMn9CAAAAPimJy7JzjdHv/HM8/LGM8/LjcNH+hO/xiVp8oxYJtCUJZoQaL7Mur374fsD+6OX nuyl9xcpS4v6zfUa9pvB0z63SkLMe93PPnPCNdG1qLTPrSqf59CZ27fktZvX9ObEb81Hca39B+T8 /OF+n0XndtS3eCjEsbBMZY2F41ZGP/o6h8wJ9raxM+tkaZOvMTrr51WZr370LaTY63sq7r+qq4yx MItx3c/5GAt9j9Ghjjk+TUMbpcTxCwAA31jAlNPy8rK0Wi3npKpoElk0gayKQm3j6uqqNBqN2DfS wy3UfhwHVwyqxlxEEi1AsZ0PrgnrPs8h/c33erKs+QQQV30i5OojrhiMQtH8wvj4PLcxXcY55gDI j3smAAAAADZLN96T125ec05KiiZ+RZO+QqMnoY1rEhmqpep575MrBvDDNiYx+bg85+cPy0tPPB17 SgHcGAsfccWgCnz2o89zSI9/+p7N/AwmS/vlsx9RDtf5iuH5HAungc8xehrGnGloY1aucwwAgFFj AdMQ2u22LC4uSqvVklarNfBN2JFGo1HZiWOhtXF1dTU2Mbvb7Uq325WNjY3YC3Gh9SP80IuHsvB9 DumnAOgn9JifleUpFuRqOIbJr2ljO3dcr7Lj6fvcnia2OLleZfcjJo/P/PJZFqqPeyYAAAAANmdu 35IXL1+U125ek9duXhv49urIS088Hdxkr0N7vqY3TbXr23fk3Q/fz/Qyv3V7GlU571Ee3+eQngwq O9/eDv/Ozx+OTSq9vn3H2p+IYyycDD76sYxzyDzevGfTY2PWhZ22+rheWcboSVRGPwJV4WMsrALb Oe16JY2FZnyGHaOnYcyZhjYCAFBFLGAqoN1uS7vdluXlZanVatYJZI1GY+DJJFUSShvNydmtVksW FxdlcXFRlpeXYy/YhdKPZTGf9mNT1aeSmN+uX6/X++2Mno4T7Tf3iWMBShnnkPk5jUaj/7M5Wdb1 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 GU9W69kvDiY3tt6WZlWrZl5+C3Mzt2+xWGytxBQT9M0YWX2JsYr/vZImL4UQQlVVYTabbcZtnFD5 GpqVltr+TVnXdZhOp+4BAAAAAAAAAADcNAlMMID4l737uIdA+efn57BYLMJisRgkkK4pyy+AnmY+ n4eyLNPNvPyqbPPibTl2FYV7mJu5fVVVheVyGabT6ebe2Nwfh7jfwtCGfiaES0iTl2JPT0+bv1/j OWBf0tJqtbrJ+T9+/m5eEhwBAAAAAAAAAJDABGdqS15qAs2aV7qaQl3XRwfWj01VVZvXEIYs6x41 wetdYyq8rCQTr4IA/Hq+jQOAD11Hr736AsSGvtdyPc1qKX1et5aYkDJOGasmGXR6IIk9Hrvv37/f 2ndJzUqR+5KW9iVeAQAAAAAAAADArZHABGcoimIn4Gw6ne4EmjWrKSwWi1DX9c0HqvL64jEVy/P8 VX45HsZqNpt1BgB3XUeuIQDgksqy3EqalrQEAAAAAAAAAMBb8O7ru++/phuP8e03P6Sb4M1Yr9eb v89NTCqKIuR5nm4+6NAvioeXsh8eHnaSrb58+XJ0gFxTVnhZ8afNYrHo9Sv8WZaFx8fHEFrKWq1W 4fn5uVc5jSzLtgIB+/TNmMXja1+fpu1erVYHz2vXmHh6eur8nkY8Vptx35zLuLxD57BrzMf1b6tn 2r60/fv6qpF+97XGyr72nNqOtLy+13bf89h3XNy6Ptdbeo4O6bovtPV9aFnRr++57KpX8/l912Es vS72OXR9p06d74+pU5v0XB5TXle90v5Ov6NN+r3pnHNofyM9Lv3udP+x0vJS58w5bdK+7Gr3rei6 ts/V9HtouX5Cj2s9nt/anNLvh+4X8XyW3rcvrW2c7tNVv0u08dS5kMtrrpO+5/Ic6dx3aO69F801 M+T8CABvyb7n+s+fP4dPnz6FEEL48OFD+PjxY3rIllP+DQAAAAAAAMB1/fjTd+mmu2AFJjhRURRb 75+enrbej0GWZWG9Xoc8z3eCJCeTScjzPKzX65D1WG2kLMutstLyYk1g5j7Nr453lZXneZjP5zv9 3Fdd1+mmu1VVVVitVpv3+4LXD42J+XweyrLsNSYaTRBmWl5zDsuy3NreV1mWrfXM83yrzDTg8/37 91vv2zSB4OFKY2Vfv6ft6WNfecde242u8xiPi7ciHVOX1pzPtr4/ZXw0ms9f4vw15fYZY5ee7y+l q43p+LjmnLNvfr+kS8w5qXP65Z7F98K07xvxtX4N8TUda+4X54yDc3U9OxzrEm281bmwr6IoNv9e aF5FUZzUV41m7jl3fmmr2zn1O7de6bU6n8839UmldS+j5/Qsy7b2tX1+n7Tspj/SvmorN/1sXK9U c2wz7ieTycn9f27fAwAAAAAAAADwuiQwwQDqut4JaH5tWceKHG0OBWLGAWdDOKa8PM9bg+bajO0c XNPz8/PW+7bz2XdMNMG5fcUJa3Vd7wShTyaTUB6RPPHw8BCKotiMka4y4zYuFovN330C/OPx9+XL l619l9DWn3G7JpNJrySIcMR5DD2u7cZkMjmYeJj2+T2Jx2c61q7h3Guoz9g5VMapDo3FS83319TW xteYcy5x/vq4xJzTeMv37T6OuX7CnvmrmVfa5pdjxffnRlruofvJpRzbX10u0cZj6jbWubBLk1DS ljjWlQh6LdlLMk5b3cIrJY3t+640GbSt7pOX5/R/+k//aZgnSXZ5z6Tnoihaz1nTH2lfHVOv+PvL 5AcwUs339akzAAAAAAAAAAD3QQITnCheTWEIy+UyTKfTva94lZ0Qws77WBpsvFqttsqKg6/DgQD4 NOBstVqFxWKxU7+m3NlstnV8LA3grOt6q26LxWKnXUP39T3qEwSeBtum/Z4GNe8LsGxMXlYRaMqa zWZhNpuF6XS6Vd6kJfklHvPpeAwvYyMuMz0mHrNp+9PviqXtWi6XW++HlgZldvVVnySIMPC1HZtM Jps+P7esW5Bl2c6KAHVd752/YmlfNa/0OjrknGuo0Xb/WCwWO9f1ZDLZGf9dutqXlhn2XG9DzPdt bWs+G0v3N690boid08a03HR/LO3zU+ec9F7c5hL9dak5h8PSc572fdP/zbXUlRzXzCtd99NjpPeq xctzXzNvLRaLzbx2TWnSUXx9x9d0Wx+m1+TQbRxiLhyz+PkybVcjnUdOccrcEifjpOc+7vf0nB/j 2HqlK/K19dfj4+PWuGnqHo/l3/md39kqo9ne516/XC5D/ZKU15T9q1/9arP/nHo1zyvp81Vb/8ef SZ+X+zi27wEAAAAAAAAAeH0SmGAAXQGjQ8qybCu4rq7rnYDLRhq0tlgsdo6tqmorIK0rcC8Nyl6t VmG5XLYGOYeWoO5UGsA5m8226lZVVVgul5u6NcdwnDSgL8uyrb5vzmOjqqowm802gYRhz5hIpWU1 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 89a5vHkmbPuO8FKv9HNlWYb5fN55fJ8VF5+enjZ1Ttucavrt93//91uTl0II4fd///c72/gWpOex 69w053Nfn2dZdnBcNee5LMvO/j5Up3hs7qvPJRyqW0jqt6+dAAAAAAAAAAAAcKw3swJTs/LKIXVd h6enp5v9xfG4naf8OnuzgkZjrCtepPVsjKW+8S/yW5nldHE/to3nQ/tTzfVx6JzE5YaBx1XfOtyT 9csv1x5qc9/jwhH92JTZZ3z0EY+NdLWNt645J0P1dbAC017N2B77OIyfS9JnrCxZzahpy75nmX/6 T/9p+J3f+Z3N++YzcVnNvJDO5V3b0+9oK2tfndLyDo3VuKy285eWF1pW7Ws7JrTU7Z6lz/bp6kjh pZ9CCFvjrO2+0bes9+/fbz1/1nW9dS5DCDtj61A5cRmHzt8597S+bQwh7LSzbZwCAMC9ap6721iB CQAAAAAAgGuxAtMNK4piK2Bvn8lkEuY9fkGf19W1wsdYzltVVWGxWITFYrETJMtwqqrarELSNSZO 0Zy/xrVXSGA4zWpdeZ6PZn64R/F9Nl3R7FRNEkm4sdWGrqEsyxBe+mXMSQXxuGjuh3F9q6oKs9ls c36bFWniz8RJGkVRbJKX/uIv/mLzmbis8PIsVxRFqKoqTKfTTfnN9nhcTafTnUSQtKw48aPr+GPu GU9PT5u/379/v7WvLTFptVptJS+Flu9s5Hm+GR/3LB4n8XlMr4eqqjbns+mv5pw2jilruVzujKlY nLzejN+ucuL6XNoxbYzrF1+b7qEAAAAAAAAAAACc600kMKW/lL5arcJ0Ot284gC95pg0oI9xiYMw mwSFsWmCQLlNVVVtJb9wm+JkmjRR4C0riiKs1+vBXvE1Mp/Pd/af8prP55u5fjKZ7Owf8lUUxdWC 84fo+6Zf4kSYMYpXmNl3P4wTffd9ptm3Wq3CP/kn/2SzPU4Yapu34ySpPM97919TVnP8vueNuK6H 7hld95c4eenf/Jt/E8JLP6QJU42qI4lpMplcbTy/lnic9E0Uj/urSWYLJ5YVj6nGf/af/Webv/us 5tp1/i7hlDZWLQmG9z6uAAAAAAAAAAAAuKy7T2BKA+2enp52AkGbAL0mkalvYB+vIw5U/vLliwQF LiYeW+lcwm04FEAO4SW4v0m8OrR6zhjUL6u7jHl8x/3Y57kqTQ5KPxOvmNOsHNOWBNQ1b6fltSVI pdLVxNLnx1Tahn3a6hmvDPVbv/VbIbw85+zT9dyTruJ0T44dW7EqWrkxz/OzykqP/+3f/u0Qeo6t RjyOLyW+dtI697FvxTAAAAAAAAAAAAA4xt0nMKWBdvsCCptEpr6KoghlWW6tilCWZa9Eh/gz+46P j2sLqu5alSG8BGam++NXX1mWndzOS3h4eNj83QQxNw6tetCmOY9pG+PXvrb2WU1j3+djWZbtfHb9 0t/nrhASn8c4mBXuXROsHs8db91yudxaibDva7FY7ATbp6sanvJqK3exWOwc13V8Xdc7x/R9pWXl eX7ROTLu+7YVINN2p/ULPVd3eW3N9ZauUtMlTuhp+0y88mKjLQlon7gfDyUGheSZsa1O+xyqT1z2 +/fvQ1EUmzb+z//z/7zZty9pqizLneeeeEWftufGVNuz7PrKq5Id69ixlYoTcv7W3/pbIZxRVjym fud3fmdrX19potylnNrGNFlwrOMCAAAAAAAAAACA8bv7BKZLBAU2SSZ5nm8lDIWXANv5fP6qCT5D yrIszOfzve28trQuIQkg7dvvTcBucx7bym00qyK8lslkslkh5NQ+f3x83LRxMpn0CmweWlsy3L7X ra0g0RUIvo6S0BivfefvVsfk0Kqq2iTgdK1icoqm3Dj5Yj6fd87n6fGTyeTkuTFu0xDlHaO5vzaJ S7PZbCcxKW5r0+e3MA6b+02fRKFjxOWlSUCH/Lt/9+9a/+5j6HaEKKEkz/OtpJy/8lcOP56XZbn3 uSUcSOpu7sdtz7IhWpXsGtfBsYYcW03S0allDfHvjPSaH9oQ/WW1UwAAAAAAAAAAAIZwOELyzpwb iNkk9BzSJPjcujhxp+2X2yeTSWeA+SXEQfJt9Qk9Ayv7BP6+hj51PzWwPm3vtVej6UqGG7N4/O8L MC5fVvDqCgQPURJa137Ol2XZSYk0+5JS6TabzTYJP0OtylFV1VZyVHwNNudpHa1q1xwfzpgbY/H3 D1HePk3ZdV23Ji6lqpdVIpu+uWTdzhWPhb4JHnH700SLfeU1/dHc0+L7aNqnf/Nv/s2t968tbmdb kknXc06WZVtzVZz4F3okdaf343QVtThZ7tLXwT351a9+FULL81Yqy7LW8zJm6bUEAAAAAAAAAAAA p7j7BKaqqrYCQJtAzFMDB9OVeOKgzzjgs3FKMP0x4oDTOOg7tASkpq8+JpPJppzZbLZpZ6xP0s1Q 4qSbOMg3Dmjet+JAIw0uXa1WYbFY7PRR097ZbLZ1fKxZuSP9zCm6ykrH1uSEFZTigObQEiB+aXFC X9PXcT+19f+p/TiENEC8KIqteSNerWcSreDVdt015/A12zOkpt19X9fQBOS3JdKk13sqTdRMz196 LvmN+B47ZNLu09NTCMlcF5+n9Lua8zJ5SapNr9djxd9/Tjld4vll3/2lzaXrNoRrPhc0mv68dnLu 0J6fn8Pz8/PeZ4/4WkjnpPfv3x9cLSe9Hy+Xy639TbJcfF2NMYlpyHM9RFn/6//6v27+7vq3RlmW YT6f711h7lL6PB/3MURfAQAAAAAAAAAA8DbdfQJTiIJ9G5OX1ZHiVRz6SBMaVqvVVtBnujpCGDBY 8LXUdd0a2Bonw7xWG9O+j+07r+m+5jymZTS6tl9LVVU7wcThhH5fLpdhtVqFuq53xu6lxclWq9Vq 06dx37YFWb+Woih2EiTyPN/MG+uO1XraAsFDdA7ThMpblM6DYxGPpfl8Hoqi2CSZNSaTyU5y1fol AS1EK+FwnLjPjk2s7FJV1Wa+a+a6feMuvi81iWznzClxeeeU06VJQEkTS/uI65YmVd+rY85BfD2n 4gSTMWvuF22Koti0sbmfpsem72PxnLhYLPYeG4+1MSXMxXU61Wq12rxCj/Y195R9/uW//JdbSV/N M0Pz2fR+s6/vhxTPM12JVX20XVMAAAAAAAAAAABwjDeRwNQEQrcF3h2TyJQG0LYlKoSWhKk+ZY9V VzB//Ov+17QvMDkO0EzP1T6v1ZZTpMGux46t5XIZZrNZ59i9hrS/m3P5Wr/o3wQVx68mYaJZjWex WLQmGsTj8JrByK+prY2HVi26ljTBry3JbJ907qa/ONkoXaHr2HmqEY+1LMu2zm+66kxouScfm+SZ auaqc8tp04zLtM59NXU7Zny/BXGCyaFVBv/m3/yb6aazpfe3S4jvlX3GT3pvPTaBJv6OY56tLinu 566VoeJVEptXMz6qqgrL5TIsl8utstoSApsymnvKofms7d8czWfDS7/vW13rEpbL5aY+cWJV2+vc 1esAAAAAAAAAAABgnzeRwBReAgrTFWxi8/n84K+Sx0GgbQk0jTQgdCwBn5e0r9+GcigwOQ5CTQN2 92lWa8my7CrtOFZTrzHWra+hg7qzLNsEFTfB2JOO1XXiV99g//pllaomwLgJdk4Tc+KEl7Yxea/a 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 5tput7UkJjexzQ2cd7nvaQt67luGPmybopmdc33zqD1mbLsMda52dFdXakuu2O12tfFg+3aWZfLe e++JiMh77713FBAfH1Y51P6u90Z3FRL7HjHJGe7xyWFlFD2+KAr53e9+V70vz/PaKk4u/eymz4zj uHfShhzOM6X93DrwJZKIk0yyPyQ3l2XZeC/wmVK+qdwEuLZ5cQg7Lj/++OOjBOGmrWn+novbd3Tl Jm2rqMcqVG6SXRRF8pvf/KZ6zU28toLDSj46xtI0PXoWcvnmOvdelzhJWF3j4Jz9S0ySjXIT3/tq qq+m/VMVhxXq7Cp1p+DO6Tr3aNu77W6fue14brpvnLtPAAAAAAAAAAAAAAAAAADW6+oTmDR4NM/z xoC6siwlz/PeQYQadOgLmtRzbbfbzqBHDSB1z+O+f6yiKGS73R6d21WW5agAz1NzgyOb2s/HvW6b 7PL09NR5rqF9Yg6+/iCHsmgwdFefauMm1PkCU9fKDbLWdhlbdneFBbeNfbbbbWNbNNH35Hne2FZD yuBzCeN2rXSMlS0B+e4xQ5JEhlpDO7rB6DYpxGpK6nMD3jXZwgbE68pIWqc6NtwkCvc9Lretmo7f 7/fyx3/8x9V73JWY7FzRdg4tq5jPbaIrkNgkqSHs84RNJGlKJmmaX9Qa+pfSNmibO6+BPq/YvuO2 lX0e8dEk9DzP5a/+6q+q/mHr7+3bt7XEPb0/9X1W0L7X9tyRpql3HKytf7nlLzu+QKCNzv3K1ss1 afo7oa3dxUl+StO0Nr+uqU8AAAAAAAAAAAAAAAAAANbrxbsXX72zO4f44P1v7C7MKAzDXoGoAG6D u5LNlGQunNea2lETL/qUIQxDeXh4qCXUPD8/V+8Nw1Du7+9rCVH2GMv3np9++kn+y3/5L977n+/4 sizlf/7P/ymffvpp9fvj46P3/SqOY7m7u6uuRVreF8dxZ5KXGpKQ6NLr8pWprf581tS/rpGv74yR 57k8PT0d9be1o3/Bok8AAADgmtgvV3G9efNGXr9+LSIiL1++lFevXtlDav7d//e3dtcq8G86AAAA AAAAAAAA6/fDj5/bXevy9Sf137/8tv57AxKYAOCCuEEUBAlfLtrxstjELR9duaVp5ZJTon8tx03U mIu7MtkloH/Bok8AAADgmpDABAAAAAAAAAAAgDW41gSmX9gdAIDLQIDwdaAd168oCtlut1WSUp7n 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 W1PCrOp73BhN15wkSedYt+9xN21P/b3LnNfYdE2+rasd+55rSH3NcY1yGDO2HO654zgeVK4+W1fZ 7fHuNrZPKG2LrjYDAAAAAAAAAAAAAAAAAJwWCUwATkYTW9I0bQyib+MmQPWlAfNu4H9RFFIUhWw2 G/n+++9FDglRfYLi3QD8toQG+/sYWl95no+qL8u3EpUb3KsrTbmJXnq9fZKY2pIozsGXtNI3mPkP /uAPar/rubT/dfUXN+lIhWFYrYYlh/bdH1bXcvfZ15Mkqe2L41i++OILeXh4qPZLQzC4+z77mvv6 NcuyzLuCWZIknQH2lrbrn/3Znw3uUy6dN375y1/OUq6l6LX5EuuazJWk5LPkuYey7damLSl3aP/p agtNcu06bqj9ft96zW2f13aNZVlKURTVMX3aeM5rbLsmq60dZeC5uso+5zWGYVi7j/ho4lLb57W1 o8/Ycw3tE77jpq74BgAAAAAAAAAAAAAAAABYBglMAE7CXYFjaCKOJgpococmHXUFtUpHAK2IyN// /d9XP7tJR/o+u0KBBsXqNWhCQ9eqBX1pGdxrnBqA60tcUm5Smf2coihku93WkpguRVPSShRFg5JD giDwnuvDDz9sTeqyfTzLMkmSRD766KPa/jGiKJJPP/306Nqm+A//4T/YXZP0GZun4CaduQl67upp Q/rDX/7lX4qIyHvvvVft0+Swpr7g8+///b+vfu5Trrnnmb50frBzw1hz9tlz22w2UpallGY1PNuW XdzVsbQv6HvdvqFJb77kSJfOPXO1mRzufWVZHiW5ah100Wu0NJlZj+lrzmucqx3lcC6VNqwwqVtX 2ee8xiRJjspTlmXt+ejx8bH2Hh+3HfV8Y/vqnH2i7XMAAAAAAAAAAAAAAAAAAOtCAhOAk5hjRSIN oHaTjrpoAP4f/dEf2ZeOuMkBGhAbBMFRAlWfgG0VBIGEYVhbCaht5QEtgyYwWXPUo9IEia6kMjew uStJY0jdLCUIAgmCQMqyrAVZa9mCIGhtAxGR//N//k/1s55Lg75dbUlMyk18c1dgcgPJ5VB3bkC3 GxBuP1f99NNP1c9ucLpuypd44Abmf/jhh4MSeS6Fm7zkBsMXRVFLFupqQzmMFzcZ0PYruyJWGzeR bWq5rLax3IfWmfYHTUboS98/tRw+S557KJ1DNNnCKpwV+obyXd+QJA137M/h7u5OttutN6GkT+KL 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 PrQf9ilbk6HJUufiXqMmLmk9+VaR0eNsXdlzDeE715zccg1N/tH2a0q89Ol7PbZcfd/X97hr1jau 7D3jlOYolx6j7bzb7aQsS9nv99VKSk1zmOWWR+/dRVFU43q73Y4et2hm67Rr5a1TmfuZ/NR/uy/B Lbcdv3PXFwAAAAAAAAAAAAAAAHAKV5/A1CeAWrUFNonn26qbgp3sNzx3BfE1Bas+PDzYXZ3cwKYh wayoa2rbU1lLO9rx4waL+zY38LWpX1+qqX0iyzLJsmzyeeZUlmUtccnSRCbbtv/rf/2voyBnOz+e U3FYwcGWsa+yLCVNU/m7v/u7o/3b7ba2T2nCV9+A/b7HXYosy47uoUmS9F51Svug9iNN/FJ6/qHJ jW5yh53P2gxJwHDHdNNYctmxomNMg/WbzhGGoTfpyE3a6Wtomc/NJnn56knnKx2HWld29RZt0yHP WL56n5te49B7vlsPffp4Uz9q4parz/vc89u6vyWaPNvUJnYe6Ct0ViEbY85yuXO0e2/sM28q9/Pm Tr6YWlfXzj4jZVnW2C/Wpu+ztO3PTe8b+rf7qdhnqLHlarpuAAAAAAAAAAAAAAAA4ByuPoHp4eFB 9vu9xHEscRx7A7PiOO4VIFQURS0oL4qio4AgG8TdFMTnBo01nWcMG6jVFIzm23cL3PoJgsBbD3Ec N6604qP9yncuObxuA6W7gjTX0o5uElLf+lBNQdhL1NcUS/QJS+eFIAgGJ1LMza5s0JcvycJNXutq I/f4rmPn4CZfDd10xQe3rnR/m6IoZLvdHp3Pt3Wda4g4jgevfDQ3m7yU53mVRNI0f+l9zh1XNvlM 3y+HBMqhfce9l9t5pYl7H29L1FBDkp3EzGd97/VhGNaC8N3rcuew7JAo2dUXdH7uU+Y19C/fM1kb bb/SsyKFJtU0zfeW+3w2tBxDuOfu2y+Um8TWdk1uPyrLstf12GPa3mfPb+t+aWvoq3K49s1hVbCu NhlK63ez2fQav665ymWfUcNDopA4CYZrMKWuxuhzv1Br6Kt2HAdBIEmStP69rNtS5n4mn/Nv91OK D/9vwi2XL4F77voCAAAAAAAAAAAAAAAATuHqE5hUFEUSRZEkSVILGNvv97VvlZeOwCX7bfL6Tea6 2fM0BfHZ4D/feZ6fn4+CrrqC3Gyglgaj2WvWALVLFATB0fW0bW592WBarRs36FsDu922do9zhWFY 9StfPev5bL/ospZ2dL+RvE9gpu3X1pz1ZYM/3Tpx+T5nyT7h416PDEikAMawffpUNDheDnPHdruV 8pDElJhgeTcw195XbfLZdrttvJf2oUG/eu9oC852y1W2JGqocORqM0PL5M5rNojZvV8Eh0TJzWHV NDsfiknIGVJmda7+Zess9CTCxnFcXXPTM5hbX776cek9SzyrlSzBXmNTv7B2u13tmnzvc/tRU92I JzHaPmMEQTDp/Kd0rr7a53lpDK1zHbf6OX2vc4ly6ZgLgmA17S6euhoz1/Vhk0zG6tuGc7P3Ezn8 vel7dta/pXVOXIKthzmeyW3b+/7mVufow8EhUdteo1uuPM+P6kYWqi8AAAAAAAAAAAAAAABgaVef wDQ0qKwrcKk4rA7RpSzLo4ApV9d52gKnu5IfHh8fG5M+4A/W06Bv5TtGPP3JXaGoj67+5VpDO7rX 29QfXTaQzgY4L1lfU/jae2yf8LHtuEQQMSCevnYq5SFRSX/WPr7dbqux4wZEu8faeWNu9n7bFpyt 5crzvNfco/fjodcxpkxlWUqapt7P0WQxy7dPg5mHllkazncqWmdahsSTCOteW1v7ua+1BXC7CTl9 7oFT9ekX9r6q3D7ge5/bj5rqRpOQfHX69u1befv2rciE85/SufpqWZZV8rc+8wwdZ130vHd3d72v c6lyaf9I03QV7a702nSO1v+OvWa3rzf1+7FzRN82XEJxWGnyFAmaffmet6c8k9t5tUnZ8bf7kvT6 bPnLw32/rW/5rs2ey3eMNNQXAAAAAAAAAAAAAAAAsLSrT2DabDaSpqnked4YIFaWpeR5Xq300KUt 2EvPtd1uO4PkNKDKPY/7/rGKoqiCxn1lFBPIeGt89S6HOikPK4h0tZ16enpq7FdqaP9S525Hd9WF rmt0uWW1CUtL1tcUc/YJHzcgspwQ5IrzC8Ow+lZ7uzLJuSw1BwyhfXy/34uYhEff+CoPQbmnHOPu 84CPO/f0HaNTVvewZfLNjToHaV21zUPb7ba6tv1+L3d3d95yaSBz37pfQ/9SbfdFW1ddtB58daTS Q8JUn/PNxfYLl6+PuOaqG6Xvy/Nc/uIv/kL+4i/+Ytbzz20NfdWdC+/u7qp+NgedS3UFGenov66l ylXO8Iy0lDRNJTisZqa/L2HMHLGGvura7XbV2PbNM+5csDmstLgU3zODTHwm13nVnlOce3/XPXZO bX8PuXXdp0xL1BcAAAAAAAAAAAAAAACwpBfvXnz1zu4c4oP3v7G7MKMwDAk6AoCVyLJMttttFRDd FMibZZkEQSBpw4o5c9LPkkMCYd/kG6AP+hcuBX0Vl4K+CgAAgDH0/0X5vHnzRl6/fi0iIi9fvpRX r17ZQ2qa/n8WAAAAAAAAAAAA1uOHHz+3u9bl60/qv3/5bf33Ble/AtOlWzrwHQDQXxAEq1l5SWkQ NLAE+hcuBX0Vl4K+CgAAAAAAAAAAAAAAAOBWkcAEAMCVYBUHLIn+hUtBX8WloK9iCVmWyX6/X13S PQAAAAAAAAAAAAAAAEACEwAAPW02m1UFG4dhaHcBs6F/4VLQV3Ep6KtYWpZl1SpfURTR5wAAAAAA AAAAAAAAALAqJDABADBBGIaSZZlkWXbWINGyLO0uYDb0L1wK+iouBX0VS3h+fq79fn9/X/sdAAAA AAAAAAAAAAAAOCcSmAAAGCmOY0mSRB4fH+Xx8VGSJJE4ju1hiyEoFUuif+FS0FdxKeirWNrT01P1 c1mWq1o5FAAALOezzz6T/X4v+/1eXr16ZV8GAAAAAAAAAAAAVoMEJgAARrq7u5PNZiNFUUhRFLLZ bEREJAgCe+ginp6epCxLKcvy6Bv3ganoX7gU9FVcCvoqlqbPo2mayna7tS8DAAAAAAAAAAAAAAAA Z/Xi3Yuv3tmdQ3zw/jd2FwAAAAAAAAAAAGaw3+/trtH0C3gAAAAAAAAAAACwXj/8+LndtS5ff1L/ /ctv6783YAUmAAAAAAAAAAAAAAAAAAAAAAAAAIshgQkAAAAAAAAAAAAAAAAAAAAAAADAYkhgAjDK fr+XOI7t7mp/GIb2JQAA0CLLMtnv95JlmX3p7LRsvnv/VGEYyn6/l/1+P+j5Ycx7TmnJOgMAAAAA 9ebNG9lsNrLZbORXv/qVfRkAAAAAAAAAAABYDRKYAIwWRZHdJXLYXxSF3b04DfpeayAzAHRZe0IG 2sVxXCWtuNu5Envdz8dy3AQsAAAAAAAAAAAAAAAAAADg9+Ldi6/e2Z1DfPD+N3YXcLE0wPfp6eks CTiXIo5jiaJI8jyX3W7Xuf9UNHB4s9nYl2DMvbrH4+PjLGNm7iB7xvI6nHtuDcNQkiQRWfn8sKZy jplP9T1pmp6lnc8pDEN5eHiQIAjsSzVlWcp2u7W7K1mWSRAEncf1pW0yx31ZyzbHuSy37w/pP0v2 uSFlahq7S9aZHObWu7s7ERFv38vz/GzzLgAAAIB5tX1hwps3b+T169ciIvLy5Ut59eqVPaRmyN/6 AAAAAAAAAAAAOI8ffvzc7lqXrz+p//7lt/XfG7ACE3CgyTdRFEmSJGdZKeFSaLCsDcZt2n8K2l5l WdqXKlmWDdquddWKMAwlCIJZt7mCo3UMzrVdI3eljyHb3ElrQ9zd3UkURfLw8GBfOon7+3uRjvlh DbSc53aN896SNHklOCSQ5Hkum82m2tI0lTzPRQ5JJucci7gO+owSRVF1H/aJDs+01/o8AwAAAAAA AAAAAAAAAAC4LCQwAQc22WEtgeRro8kvvkSApv2noO31/PxsX6rYpJuuTTz94pqUZVkLsh+zLcV+ ztBNkwXwe00B7qegn902PvF755pHrbWUY+00MU/nVJvEWxSF7HY7SdNUZKVJTH0SI885h+BnYRhK dljVSQ59Ls9zSdP06D7oJs7J4XkmyzIS9AEAAAAAAAAAAAAAAAAAZ/Pi3Yuv3tmdQ3zw/jd216ro qjpjpGk626oip+IGNeZ5fhREe06+tlhTGff7fe33NZVtTbSP2fGh7ZvnuTw9PdXe08f9/f2k+m4q 11jaH+Y639rs93spy1K22619aRCtp81MyUx6vqkJSHd3d7P2h7XpE4D+8PBQC3J/fn6eNMbGcu9L c/WTobQMdl6P47haOa5PcoZ9/9zccuo8apNptbxySAhbojxajqFzxLXPmz7us02f69bVmqTh+LF1 38SdU9v6iluuLl3namKfs8Zy55El+1xXW7ncY93yNc09Y7l1OOScbvnm6lsAAAAATqvtb6o3b97I 69evRUTk5cuX8urVK3tIzbn+/wwAAAAAAAAAAAD6++HHz+2udfn6k/rvX35b/70BKzDhrGxC0znp yghyCO7sGxR6S9zVl2wgrwbVR1EkSZIM3nRlgKlsucbQcuR5Psv5MFwURZO2Pskol6woisbt/v5e kiSpJbNut9uzzWluOdYocFZcO5U4jo9Wt3FXuImcedTXt09VZlbM6qb3Pt990cc9xiannVNRFEcr +NiNFbnOK47j6uc0TQfN6UVR1FYAc88FAAAAAAAAAAAAAAAAAMCpsAJTi65vW1+jNa/A5JbNtaZ6 1lVN1lKetWlaSUDHma7yYrW9Js5qOUNWBbDJTtq3fAHWj4+Pvdt07tUv1kq/tdVXX0Novc/1za1z reikfXJN88vSwjA8WnXp3H3YvQdPbdMpmlZp6bOSlWuuvtT1bKLj0jdn6spMc5XFp6m+urjv0+Qc TfAZMg9fkqb7Yhv3nmnH6Nz3oL4rMPUx5lqXNrav9rG2FZjc+/bYvrGWORkAAADAcKzABAAAAAAA AAAAcFtYgekKlGV59G3ybVtboCKGc4Pq17oSR3FYwQTH4jiu2lAD6JUGw+oqL+7mHmtf0031DcjV laDcTdn9QRD0XuVi7sDxS2DrauiGdYjjuFp1qSxLSdN0FX3YXZ1mDez8rnN+320uu93u6JlD74s6 //jm091uN3tZ2rifk2XZ0YpRdlPuylHMFcC8Hh8f7a7e7PMbAAAAAAAAAAAAAAAAAACndFMJTDif OI6rn5+fn2sBlH2TS3BeTauF6EpIY5PSNBlpSIJDURS1wH99b5qm3oSAroDdMAxvMnlpaFKnb1tK HMeTNk2cuRW73a5KDt1utydLcOmiiSu+lYROZegqS+eiffacdSUz1VdZltWW57nkeb6aPgm/MAyP EtLstkQimt5/bYJcHMez9MVrQV0AAAAAAAAAAAAAAAAAAK4BCUwDNQV4Zlk2KdgyjmNvAKe7+c5t j3GDS6MoOnrd3U7JTSbQFSRUU2JMm7H1peI4Pjrebm3vdy3VJ8QJ7NXznUvTZ8eHVZnKsqytpDRE kiQiA1ZfamMD5Psmsbgr18xRDkynq7eM3ZYItF87XbFnLeJD4uqU+WEOmiQ7JEnyHLTPnrOupKW+ ttvtUQKj3dTj4+PRKlLXakzCWZ9ktSAIjp4rpjxPrFGWZdX9187ZURRJkiSNzx+n0JRg73uG1GeZ tWu6JgAAAAAAAAAAAAAAAAAAToEEppkEQTAq2FKTUzTg3gZwuh4eHuyui+G7LnfFnr5BuZdUX2P7 hOvh4aG6xiAIqoSAU8qclYnsKksahP34+Fjb35fWiz3vUFq+JjaxqQnJS+dnEyKmbn3bHvPrk6SB n7nJXrgsusJfFEW9nmXCw6qDsoJkNZdd2dC3zdk/9dlCPKsBpmlaPRdoItc5uEnQ5078ce9lU8qi 1zRnWwIAAAAAAAAAAAAAAAAA0BcJTAP1CRoMgqBXwoobvHnN3KSbpoDJPvW61vrqU/a+fcKy19t3 RaG5uCss+ZJ7dEWOsUki2+1W0jSdFMSt/cuXJNGV2IT1cFdVi+N4tk3P2SexAPNZU5LGJSRSramM p77PXLqiKKr7TFfidBiG1Uo9Xfcmm9Qz5V67Nu7zXJqmR88XRVHIbreTNE2rfWOeoaZyn8EiZ7XQ 3W531DZuWZeiSV19k+Usd15ew1wDAAAAAAAAAAAAAAAAALg9JDAN1BS0mKZpLRg16LFajk1OyfNc 0jQ9Or9+hg3wFM9qJW4Z8jw/et3dTsUNhnYDJnXVAjGBoU3mqC/V1I5jNJ1rTJ+w7MpEpw441Xbp u8KSJo30CazV1bSmBmRr/7JJEn3KcKu0bjSxbso2p+CwqloURbNtes4+iYaYjyZydCVpoM7OY+d0 6vvNJdN7ZHBYLch3H4zjuJa81PaMcu30eS7P89ZngKIoqmezIAiO6nRJ+rzmzmGn/Hwfd35IkmRQ eWz/W9NcAwAAAAAAAAAAAAAAAAC4HTeVwKSBpW3b0AQTOQRYFkVRrSajopakHBt0mOe57Ha7xkDO pv2Xxg2YtNdk68RlX1t7fY3pEz673U7yPJeyLKtrPqWyLCVN0971eXd3J1EU9UoW0QBm27ZDBQ2r LGkZNAjfJt74knDsfnebWs610gSfsdvcmpISp26nHju3TvvG4+OjhGEo2SFhcex99prFzkp37j5d Qcz3nHKt89Gl0kQbbcMoiiRJklq76f3/XMlLURQd9aU+29zc8d9nXnafP9qeLWx97/f7SePETb7X ZPK2zz8V95lSr7lpTgjDsJpH3OfPvknpAAAAAAAAAAAAAAAAAADM7aYSmE7BJnr4Agp93NWIro0G svuSTNwVhoYEhl5SfY3tE2q328l2u+0V6Du37XZbK78b0Oujbd2nrBqEO6TdLQ2E9q0U4q7MFIbh UeKNLwnH7ne3KeVcm6IojhJ87KbtU5bl0Wu+bQmaxDF2GzrWMI/YWbnk4eFBkiSRwEnQiaKoOga/ n6uen5+rZC93BTE51KVNjnGTL3F+btKyXT1R269rdcg1Wmoe9T0TNhly7Fx07G232+qZc2gS+hL0 /u3yJczt93tJkuRoHtlsNkfPpQAAAAAAAAAAAAAAAAAAnAoJTDMIw7DaxkqSpAq4n3KetXGD1H1J Jm4iUldyjGvt9TVHn7g0btJCHxpAOyUgWPuML6HNTZjoSthRdr+79UnKwrw0iWPsdk1JZ5dEx6Um /2nQvLsiXRRFJ58fffPEGmgd3d3d1ZK98jyv5p/tdivb7VY2TnJhEASLJIJpssNa62vtiqKQ3W5X u39o+50jccTey4Zu5yjzGL7V+8aWXZMD3WcIdep5q4mWTecK37OXJs75XgMAAAAAAAAAAAAAAAAA 4BxuKoFJg6jbtj5JCnEcS5ZltW84122/39vDvYqiOPqG/ujwDep6nmtYQaQrKckNCtWgaZ+119cc feLSaVs/Pj7alxppm45tN+0zmtCm9Gdf0hwuh52fh2595vNLdO75ros7l5dlWVtxpm9Cga6iNYe2 e8u56TVqspccEjHaVt0riuKsiWDAFJoYt9ZxGR5WbJTD6ktKx1ySJNW+tdCVOu09UBPneBYCAAAA AAAAAAAAAAAAAKzFTSUwzSHLMomiaJbAy91uJ2maNn4zuiboaLD6JXLrqSkY29UWiL3W+pqzT1wy XTWkb4KCOIHMDw8P9qVO7goJZVlKFEWy3+8lDEOJDqs69elzwCXRue3u7m7QWDsVd+61yUvufhFp XSHr7u5Ooig66Vx+Dm6SryZZ92lX95i2ejy1pvsz1kmTr90EbHfLsqyWLKlJMlPurUNXM3ITiqZ8 bl/6PGKT5ouiqPr3tc9LAAAAAAAAAAAAAAAAAAAshQSmAbIsO1pZoixLyfO8tg1RFIVst1tJ01TS NG18/yUGctvy2sBY3Vxdgdhrq68l+sQl0mSiod/yrwHBQRD0CmR2PT8/VwkS2+22qmddHYFA+jo3 IL3PpkHcQRAcvda12XHdhyZy3N/fV6vvzL1dA62noWPtVDR5UMzqJWvluw+dipuY0ZTs1UbnuK6V Ds+h615+zbRPDb2nnUoYhtU8rcnXTQnYQRDUksPnuib3ft12zjAMT3pPzw7PdGVZepOldIVJVj4D AAAAAAAAAAAAAAAAAGAcEpgGcAM80zStEid2u11tG6MoCimKQna7nWw2G29yzqUFTI4JqnaD39us pb6W7BOXQoPwmwJ+u2hAsAYp97Xb7WoB/7vDCl2updv/Emmwep9tzHvc940RRdFi2zXQ+tXVy9bE TRKz87FLk6/a7hFzXmfTik86P5wiMcKnKArZbDaS5/ng5KUlddWHJsBoEoybHDl1/GNZmhCk7aQJ 15vN5mjzJYonSSLZIWF5it1uV/WzJEkkdlZ5UnEc154Llh4jbv/V5xKrKIreyVcAAAAAAAAAAAAA AAAAAOAYCUw9uYHZZVlKURS11+emyTk2IeOSjA1kHhMQeo76OnWfWCsNMG4K+O2iqzCJZ9WuoXTV IDn0PwKMf88Gp3dtOpbKsjx6rc82VtN5+u7fOAmNdv81WeN84yYkjUlm9FnyOm1C07nMVVdz89WP mwATHBJXdf527/nRiVZBxDDuakabzaZKuPaxieJuO89xX91ut9U5I2eVJ9006VTLuqQ4jqv+m6Zp 67xjk6/mqAsAAAAAAAAAAAAAAAAAAG4FCUwzO3fArq5sIQNWM1qCDei0iQR2c7/h3xc0fcmm9gld 6WLqeZagKzFMTeDS5KdowqpZunqCBjtrAg4BxpdB264vbV+7GogmWFx7AsUa+7QmALStvuRqSnLV dhvSH6ZoKseauQkX7n1/aZoAowmCuuqgO+eqKIpkv9+vsq+umdbn3CsOufPhmHO77xm6YmKT7XZ7 tMqTKg+rQ40p61CalNSVvKQ0+arv8QAAAAAAAAAAAAAAAAAA4GckMPX09PRU/dz07fNxHEsURb2D ruM4ljAMveeSw+vuijLSYzUKt5xyCO73nd+3b05uElLf+lBNiVdL1NcUS/QJS5NygiCYlNyzlOfn ZynLcnKAcVEUkuf56EQoN3lJy1IURRVQb/vFqcVxXFtZYm3teG4aWD8kEUPbNwiCKolJk5fkkODU tLLIWLRjMzc5oqve7X3K0pWchvSHMdxyXFJb6n1FddX3UE317iaW+T7TXU3PvectlUTKeBxGx9XY 5xEZkJw4hLvKk7u1rQ61hO12O+j5Y+jxY7j9226awBgEwdFrdtP5outYAAAAAAAAAAAAAAAAAACW dlMJTF2Be3Zzg2FtkGKSJLLf76vVcfZOgKCuJmOPc4VhKFEUSZIk1TF2i6KotjJEn6BTN4BYDtfs O3+SJLWA87lpoKy0BEO7ugLa56wvG/Ts1onL9zlL9gkfuzLIuRNxrN1uNzl5SY09lyYvialncZJc 7P5zs33n1ul8MTRY3U1i0jFcHlbgOkUdn+IzLE0gWCopZKwhyRFuvdlriJ2VhYb2hyZ6D3LvS2LK ofdETZJt284ljmPJsqyWvGRXPTqFtnu6tt3z87NsNpuqP5yiv55jPF4SbTf7XDHEkHEOAAAAAAAA AAAAAAAAAABg3VQC01S+QOHgsDqO8h0jnoBRd4WiPoascvP4+Hj24FL3evsEodvAYxvovGR9TeFr 77F9wse2Y1vg+C1yV15K0/SoH8mhb/n2K9vXlmbb9NaFYVi1YV9xHFfJJprEpIIgWDQ5Uw0p75zc +VSTIfsm3iyVgKNtKCPmqIeHh6pc7spCS6z04uP2HTdJtmlbMonUtpP2czch1t5b2ua2qWzClyYa N60G6Cblaj/dbrfVWFmy7s41Hi+JmyjetDpnGzdZeOg4xzh2VaqlNwAAAAAAAAAAAAAAAAAAlkYC 0wAaKG8Dq8uyHLzqx9PTU2fAbVmWkue5bDabQck4RVHIdrv1llWVZXkUnDwXN3mg6xpdblltwtKS 9TXFnH3Cx105qCzLXslga2Pbci77/b5KfNlut73rOQxD78pbXf1riqXG2jXQpAYbEG+TbTSJQxM5 oiiq+lZRFLLZbKpxGEVRtcqZJvfMYS3tmKZprb/2SbxZMgFHzzlkjtLEoeCwSmCSJFXy0pDz9KGJ G76kUXcOX3IO6MO2lfZzW+457i1tmuqrKIraCmB2xUE93ibtbrdbyfN89vvyWsbjpXCTPXXcucmP PppI5yYvzT0+AQAAAAAAAAAAAAAAAADA7Xjx7sVX7+zOIT54/xu7C8CV0iDmtpU/wjCU5JAU5Mrz fNag5zAM5f7+ftQ59/t99bMmLcwdXO9yg7/nroelaDtqgtgS3BW09DPcunJpOz0/P8vT01Nj/5OW PiiHFS3GWls76hi4u7vz1pm1VF/XckjPFfeUbaeyLOXx8bG1bcc4RV+eg+37bp+XQ2LR3HXj01Vf 2t6acCZOWZdovyZrG4/Kvb9MtcR12XE3xBLlmUrru+255BTcenXvM9pP11h3AAAAAC5L29+bb968 kdevX4uIyMuXL+XVq1f2kJop/38MAAAAAAAAAAAAp/HDj5/bXevy9Sf137/8tv57AxKYAPTWJ4FJ DqtwuaupyAJJE5fEDTC4lCDmriSGOehnuEETcRzL3d3dbEkbbpKPTOyHl9iOwLVa63hsCygbasnr 6pMAWZZlNRcvVY6pSGACAAAAcCva/t4kgQkAAAAAAAAAAOD6kMDUgAQmAGjnBhgQIHC5aEdgPRiP kBUlMDUhgQkAAADAXEhgAgAAAAAAAAAAuC3XmsD0C7sDADCfMAztLlwg2hFYD8Yj1Gazkc1ms8rk JTms+rfZbEheAgAAAAAAAAAAAAAAAACABCYAOJ2yLO0uXCDaEVgPxiMAAAAAAAAAAAAAAAAAAMBl IIEJABZ0f39vd+EC0Y7AejAeAQAAAAD4vc8++0z2+73s93t59eqVfRkAAAAAAAAAAABYDRKYAGBB T09PUpallGUpz8/P9mVcCNoRWA/GIwAAAAAAAAAAAAAAAAAAwOV58e7FV+/sziE+eP8buwtYvTiO q593u13tNQAAAAAAAAAA1mK/39tdo202G7sLAAAAAAAAAAAAK/PDj5/bXevy9Sf137/8tv57A1Zg ws3JskyiKKq2LMvsIQAAAAAAAAAAAAAAAAAAAAAAAJgJCUy4KVmWSRAEIiKS57mIiARBQBITAAAA AAAAAAAAAAAAAAAAAADAQkhgwk0Iw7CWvJSmqex2OynLUoQkJgAAAAAAAADABXrz5o1sNhvZbDby q1/9yr4MAAAAAAAAAAAArMaLdy++emd3DvHB+9/YXcDqxHFc/fz09CRFUfR6bQ3cxKrHx8fVlW+q a78+FYahPDw8iIjI8/Oz7HY7e8jVcJMFy7KU7XZrD1mMO559dRyGodzf34usdLwDAAAAAAAA1n6/ t7sqb968kdevX4uIyMuXL+XVq1f2kJrNZmN3AQAAAAAAAAAAYGV++PFzu2tdvv6k/vuX39Z/b8AK TDOJ41jiOJYwDO1LWIHdbldtNmGh7bVzC8NQgiCotiRJ7CEXLY7jq74+18PDQ3WdURRNnivWOudo n1VBEJy8jFEUSRRFdreIiNzf37e+DgAAAAAAAAAAAAAAAAAAAACYHwlMM4jjuAqIT5Lk5MH6uF66 Yo/LXWHm0vmSSK7p+pS7IpGakqy15jnH12enXOsUvnq5u7urfl5bwiIAAAAAAAAAAAAAAAAAAAAA XCsSmGZgkzDu7+9rv2Nd4jiW/X5fbWulqxOJiOR5LmVZihz6my8x49JkWVb9nOd59fO1XJ9yVyQq y1LSNK1eG5ustdY5x/ZZt13HXutQT09P1c82ucstn46nqcIwrM0n19R3xwjDcLaVwTjX5dPrm3KN c5wDaGKfCe3mPqvMiXvHz2z9r4Etk92G9Ik5zwUAAAAAAAAAAAAAAAAA1+DqE5hsoNjeExxngwgJ KFufrgDAtu1Sg0LdJJXdbiePj4/V7+da0WYuoUnq2e12tcQe3yo+l8q9lsfHx9qqP9eUrBWG4VGf 3e121e+nutaiKGrJSUmSVHOBWz53PGEeYRhKkiSzrAzGua5DURS11eLGeHh4qM7BqmkAAAAAAAAA AAAAAAAAAACX6+oTmHxskPDU1UvcxAtNxgCm8K1OZBMzTrWizRLcpJ7n52eRw/WpIAiOxuklsiv+ 6DVOTdZa45zjXoe78pL785hrHWO73dY+16WrYJEIMT/bvvb3Iex77e9D2Pfa34ew77W/D2Hfa3+/ Fu5YHDOvz71qGgAAAAAAAAAAAAAAAAAAAM7jxbsXX72zO4f44P1v7K5V2XtWXMrzvBbwn2VZFSCr yrKU7XZb29dGg3IJil9GHMe11VOGsMkK9lybzab6eS3cIG+37Db4+1L7W5/ru9Rrc7VdT9trfTDn 9DO1nrvoKjrKzje3xN5Lh95HXZzrerhjxD5/dXHv10PfC4zl9rulxiX3jp9dwjO5zNwn5jwXTsP+ /TXULY5tAACwDN+/c6g3b97I69evRUTk5cuX8urVK3tIzVqfvQEAAAAAAAAAAPB7P/z4ud21Ll9/ Uv/9y2/rvze4yRWY7u7uar/b5KUxiqIgOOlEyrKUzWbTe7vEdtH+ZMvu7revXZKma2jaf6narqft tT6mvPeWTK1n9Pf4+Nj6+xD2vfb3Iex77e9D2Pfa34ew77W/Xwt37A1NRHaf10heAgCcQ5Ikk7ap CVAAAAAAAAAAAAAAAADANbmpBKY8z0VMwpIbUKSvAwCAYYqikM1mI2maTk4e5VzXxX2+GhLIrc9r ZVnalwAAAAAAAAAAAAAAAAAAAHBhXrx78dU7u3OID97/xu5alf1+X/2cpqkkSVL9XBSFxHEsURRJ WZby/PxcrQ5QlqVst9vqvUqPb6PnHiKO42qlgaYVofqeNwxDeXh4EPGcK89zeXp66nUepecLgqCx Xpbm1vvUMtg23Gw2tWtUZVnK4+PjoLrSdpx6HpmhT4RhWPV3l/b1vv3AV/dz1JevrvI8r1bZsGO3 67y+8w0t0xKmjkfbX3361E/f+nSPc9vDaupfVp/x2nSuoX117mtUvr6l77Nlb/tc5TufXmtXWYBL 5I4TnZe7uPeYPuOqL989TUQky7JVjsk+zwJqznqSljm1qQ7F1GPX/No0F3bdt5vui+7n+c7dVR7V dn1DtJVhzL3jGtm2PMUz+ZhxPVefkAXO5bvGoXU1VdM1rXVeHUrnwqHjdOz7AAAAmrh/o1lv3ryR 169fi4jIy5cv5dWrV/aQms1mY3cBAAAAAAAAAABgZX748XO7a12+/qT++5ff1n9vcFMrMLnu7+9F RKqg0OfnZ3PEaWRZJvv9XqIokiAIWoNTNQmiTZZlkiRJ47miKJIkSSSOY/tSIzeIMAiCQe+9BBpE ausrCAJJkkSyLKvt9wnDsNaOLvc8fVaemLtPWEEQVP2gz7VZU+urra6iKOp8v9V2vqF1P7clxuMt mdpXp2rrW0v01SiKZL/fn6WvziWO49bxFsexxHHc+PoQQ87VVa4h5jxXlyHXuGZFUUh5WEVJ5+Wu TcdIWZaLBn7ruGwak0PH+VzsfGHLdwraZm3GlMtem2uO+3aWZd5zn6o9267vVGXoEoZh9byp29j6 nlM48RlTOur/Wu61Xdc4dQxNtdZ5FQAAAAAAAAAAAAAAAMD53VwCU57nIk7ikg2sOqXMfCv1VEPO F0VR76QJe06tu2vhJgH5gnWDIGgNANRgyy4aUNhmSBt20SS9NkEQDAoiDIKgM2mqq758dVCWZS24 vW/fnLPu5zakLYeMxzXRdrPbUEv01Tn4+oztq33KLgP6qhw+t20MrZWbNJB4EvP09eiQlDblGoec q6tcQ8x5ri5DrvES9Fl1yWfpBHP7DGDnsHPMPdkh+VUOZcrzXNI07dzmTvRy696d6/o+Bz49Pdld vefCMfftu7s7ieO4uvc2tefSY8lX7rH3jiVoG9hnlKXntD7seLS62q9v/5ILvtf2vcYxY2guth1t W55jXgUAAAAAAAAAAAAAAACwDjeXwKTBlDYAbrfbOUc12+12stlsaluapvawXmzgoAao2vPrZ2y3 29rxLpssoQGv7vs1eUv1DUC171s6mPjUgiCo6mq73XrbtC3Q1Cb02Hq3QXttwaFz9ommvmrLFAxI GJLD8WVZHp3X1VRfNljRrXet+7IsJYqi2nFN5qz7Oc05Hpva8dyKoqjazW623rs0XaNtw6F9dYq5 +6oNInb7g69Nm8bQJbF92s5vU65xyrlsuaaY81zWlGtcIze5pizLaoz7Nlff57MxgsPKRk3j2z3u VIkOYRhWbZ8e7vO73U6KoujczsWtG7ff+so0x33bvWfY/iKH/uW2pz1mybE0971jCfZ+5Iqi6GR9 3ceOR18bt7WfvbZrvNfOMYaWtMZ5FQAAAAAAAAAAAAAAAMB63FwCkxtMqQFgNtDrFGzAVp7nVYCq T9N+ZZMlNOBVFUUhu92uCtzTY/rY7XaS53mVhLFkMHEfQRDIfr9v3YYE65VleXRNRVHUEkyaAk3d QGNx2lEVhyQPt4+1ncs1tU/4aJCzDehtKpOPr+/0rS/bT229i8jRuZvMWfdzs9c553i8FXP01Sls G07pq3Y+StP06HxFUZzlOue01uTWOcs157lukd4ndHzpOLebOsXzWd/xfapEB/fZdMx9/hS0/dz7 fh9L37eDIJAoio7azj6jnCrxsG/fOiV7P/I5VV/38dWZbb+mPmGv7RrvtUuPobn42lE8ff+cfQ0A AAAAAAAAAAAAAADAedxcApM4AbEaALaGgGRdGWoMG7Bng8NcRVFU34Y9xG63O0rCuBZNddGnTWzg XVP9PD4+1n63yUo+fT5/ChsY3adMMqG+7PmbziM9g6KXrPspTjEeb83YvjqWPX9b+/Tpq26wfJ7n R9ejiqKoBR3bcqzd09NTVX5fUp4bNN4U3NzXkHN1lWuIOc/VZcg1Xgr3PmHncOXOoad4PrP3CFef pIm56bPpkn2rL7e9bNKPO1c1taVlj2vq07ZNhsyFbrlOzZazrQ373DvOxbb1KTXVWdczptzIvfYU Y2gO9vNd55hXAQAAAAAAAAAAAAAAAKzHTSYw2YDYpuCvU0qSROI4ljAMBweZuQF75wzcvHa+dulb 9zaI0gYg+kzpE030XHOdr439jD7XrIYGqs5d91P0LRfanbKvWkP6SJ++6q6W0HW8e38aUo410JUf mpLyNGGv6fUhhpyrq1xDzHmuLkOu8VK483FT4Lo7h57i+czeI1x2vC49H7nJW3EcD96WLp/VVj++ +1/f+6NtkyFzoX3GV7vdbvHxNKSctu4wjK+v38K99hRjaA728122bXxtCQAAAAAAAAAAAAAAAOB6 3WQCkw2cOoeiKI6+fT2KIkmSRJIkkf1+PyoYtSlw85qUZVkFoTZtpwh6tqbW/RJ9Io5jybJM9vu9 7Pf76lx6vnNpC7ocY2rdL2Wt5VqjW+mrej1NW1NSB3At3Puc736mSQj2fngObUH4S4uiaPA2N/f6 tV20zdz7myZVDEmSWOr+eI7nP5+57x1z6fM30FJtc0q3cK+91HY657wKAAAAAAAAAAAAAAAA4Pxu MoHJXdVgs9nYl09mt9tJmqaNQY6avLI/JK7gsjW1s2vOPpFlmURRVPtG+lvVVJ9YB/oqlpZlmWRZ 1jlv9rHWc10KN8HEJry49bCWRJRTcpNLyrIcvJ0iMcBtM/0839w9NbmC+/YyfMnyrrIsb3LsXSPG EAAAAAAAAAAAAAAAAIA1uskEpjUpikK2262kaSppmjYGFUZRdFMBzrdsjj6RZVktoFiDm/M8r23A ud1aX/VdW9PWZ6UMdNM+FgRB67zZx1rPdWl0TNtVUHQlHwLvRbbb7eDtlJifLpcmy1tlWZ68Hy2F ey0AAAAAAAAAAAAAAAAArBMJTCtRFIUURSG73U42m403cSWKIgnDsLbPssHAOB0NvG7iW6GgzZQ+ 4X5WmqZVcPNut6tt5zK0LrrMXfdzYTx2u7W++vj4eHRtTdspVlO5RV3zxRBrPdfauQkDeg+L47ga b1NX71nK0mPSPb/v3n4ObjJZGIZVP9Wy6uvua9Ijwamrv889957a2suvq9Fqsvxms7ma5CW5kXvt tYyhS61/AAAAAAAAAAAAAAAAAOOQwLRSmrji+4Z0ywb6riXo9Ra4dd8WKDjHyhp9+4T7WWVZriYw 0AYzt/XT+/t7u+vIKet+iEsej6cu6zn6ap9rnLuvuomHDw8PtdewPDsmp1jruS6NO9Z1DLnB+LsT Ji22je9T3z/EmS+SJGkt26l09dOm133z+Vrv23OZ+95xCposfw1u4V57KWOore+fu2xThWHYewMA AAAAAAAAAAAAAABwjASmK2ADJh8eHmYPmsqyTLIsu/igs7nZum+qH/st6acMzm7SVNal2ADZtuBd W18+a617W64lxuNUTXW/1oDfprZtM+Ual+yrQRBIlmW117Gs3W4neZ5LWZZSluWkVUbWeq5LpMkG ulKdBuO7K/6cQtuc4I7vU5XLvUclSTJq/ltSEATeumibJ5W9PzZdm51Xl75vt2lLErHmvndgmFPd a4f0iS5Dz3UpY2ht8+pckiQZtAEAAAAAAAAAAAAAAAA4RgLTGcVx3PoNzXEcHwWA2eBI3ed+63gQ BFXQq+/cYRg2Brz5ZFkmQRBIEAQSRZH3nLeqKIpa8F0URUd1q/Wn2oL15ugTNoDTd644jiWKotay LMHtp019ydZXk7nrfi5Lj8exbN3bz1wq0LfN3H11zmu05/KVzfavJravBkEg+/2+caw37W8Sx7Hs 9/tqG/LeW7Hb7WS73c6SJLTWc7kuoU+4498dm4+Pj9XPpxAEwdFcIZ7x3bTS0BLclRajKKraUZPJ m7ZztLOdx6XlXmvnwqZ5+tT3bcsmifjqtumePue9A8PY/jXnvXZKn7CmnMte41rH0BrnVQAAAAAA AAAAAAAAAADr8OLdi6/e2Z1DfPD+N3bXquz3++rnNE2Pkj1cGigvh2AvG1Dsvj6U/ewwDAd/M7Ov TC4bFNZls9nYXV5uHUqPcixhzrq352qqB9tG9jzKHtemre6GnEc1nc+2mTgBjG4fSdP06DPtOees L3uMsmUry/KonPZc0nI+H3tdS5tjPNq6H8LWWZ+6yvNc7u7ujsptz9XFvfauep+zr855jU3nsmXL 87zWRvY8qul8TZrO42P7ia8v4bZcSp+w49+O6SXYunHHsB3f6hTl8rFl7TJk3ujLN3fleV6t6OJ7 va2+fMc3aTqP7Tdtxvb9Pp/h1oNquj7bt/reO66d7eNN7WXrtam+7HFdms7jM7ZP+Ew515BrbBpD c7PtuOZ5FQAA4JK1PUe+efNGXr9+LSIiL1++lFevXtlDapqevQEAAAAAAAAAALAeP/z4ud21Ll9/ Uv/9y2/rvzdgBaYzub+/t7ta9Qny2m63tW9+7xJ6vtnbRwPPFN+WXVcUhaTOaglNyrJsXVlizj7h K09wWEVL+Y4RT4DhnJrqyi2br56agkubzmf5zrm0pcbjWF11VZalN1BWRI5W/Rqia77wlWlsX53z GpvOZftq0/msoihks9kczadNhs4Hqu/5cTvW3CfsGOuaL5ZgVxCy88o57h9qt9vJZrORNE17bU33 yiX5PrOtHZvmVuuc9S6evulzd3dndzVe39h7B4ZZ8l7ra1fL1yd8ppyrqY9Z5xxDa55XAQAAAAAA AAAAAAAAAJwXCUxn8vT01BlcV5al5Hkum82mMVHF2u12kqap5HneeP6yLKUsS2/QqY8bYEbQpZ8G TPoSVrQdt9tta53P2Sc0uNGWR9t+s9m0lmVJbWXTehpijrpfyhLjcQpf3Y+t97n4yiQT+qrvfGOv 0XcumXA+OSS2tfUJvW43+LdLU5Azbtel9Ak7ts/xfNFnnNtynlpRFL22JfjOO2R+8ilWfN9WTf1C nHm6KVGr6b1T7h0YZol7bVO7So8+YU0919rHUNP1raFsAAAAAAAAAAAAAAAAAM7rxbsXX72zO4f4 4P1v7C4AmCSOY4miqPp9s9nUXsdywjCcHFS63++rn/M8P0tSQps5rnFNsiyrVjdYY33j9OgTzbi/ AMC8mFcBAABOw/3/bdabN2/k9evXIiLy8uVLefXqlT2khmc2AAAAAAAAAACA9fvhx8/trnX5+pP6 719+W/+9ASswAVgdd/UQ3zfnYzlTE3vCMKz9vsbEianXuDaaqAIo+gQAAAAAAAAAAAAAAAAAAADW hgQmAKsShmEt+P75+bn2OtYrDENJkqT6neSz01tjwhjOiz4BAAAAAAAAAAAAAAAAAACANSCBCcBZ hWEoYRhKHMeSZdlRAgzB9+vV1nZC8tlJ2BWvAPoEAAAAAAAAAAAAAAAAAAAA1ogEJgAnE4ah7Pf7 2pYkiSRJIlEU1VZeEhF5fHys/Y51iOO4s+1IPjs9VryCRZ8AAAAAAAAAAAAAAAAAAADAWpDABGB1 yrKUNE2lKAr7ElZO22673dqXsID7+3u7CzeOPgEAAAAAwG357LPPqi+LevXqlX0ZAAAAAAAAAAAA WA0SmACcVVmW1ZbnuWw2G9lutyQvXQDbdpq4RNudztPTU9UGz8/P9mXcIPoEAAAAAAAAAAAAAAAA AAAA1ujFuxdfvbM7h/jg/W/sLgAAAAAAAAAAAMxgv9/bXaNtNhu7CwAAAAAAAAAAACvzw4+f213r 8vUn9d+//Lb+ewNWYAIAAAAAAAAAAAAAAAAAAAAAAACwGBKYAAAAAAAAAAAAAAAAAAAAAAAAACyG BCYAwCziOJb9fi9xHNuXcAZhGEoYhnY3gIXpPMj4A3Bp4jiWLMuYvwBcHJ6/ANy6N2/eyGazkc1m I7/61a/sywAAAAAAAAAAAMBqvHj34qt3ducQH7z/jd0FAOhBg6uKorAvXaQsyyQIAinLUrbbrX0Z C8iyTB4fH719SNtjs9nYl0QOQcq73c7uHs0NFvSVB2hyTXNhHMcSRdFVzYNDklLdOWXI+56enia1 f5ZldpfX8/Nz47wXhuGkMijmwttyTfOXOM8OeZ43jpVLMmQeuuT5ay7MX7flmuYvnr8ud/7i+QsY Zr/f212VN2/eyOvXr0VE5OXLl/Lq1St7SE3T/ysCAAAAAAAAAADAevzw4+d217p8/Un99y+/rf/e gAQmwKHBHlMDOYAmGlzlStP0Kvrbfr+/qqCxS7Df7xuDjDWgzNcebj+cq//ZQJo8z5lL0eha58Ku xMFLZMd2G/e6h7xv6r1jyGf55kxttzn6oC0Lc+H1udb5S67wWc6OxzaXMH/5+lkYhvLw8DCpDMqW hfnr+lzr/MXz1/rnL56/gHnYvu4igQkAAAAAAAAAAOD6kMDUgAQmXAsbzDNHEAWgwjCUJEnsbpGe fU2De+bkCyIa69q+sV8WqnNrSn3pnNUUdNIVhOz2ySnlUE2BNHOcG9fjmudC9zmiLEv78mhNq6yd StdcIg2Bw759lvaHrvNP4X6GiBwFymo55yoDc+H1uub5S670We7S5y9xrqFpntI5x/faUMxf1+ua 5y+ev9Y5f/H8BSyjqa8LCUwAAAAAAAAAAABX6VoTmH5hdwC3yn4T8f39fe13YKwsy44CxsqylDzP Jc/zswZGzUUD2qIokv1+P8uWHVYQgt/d3V1nkN7z87PdVSmKQjabjZRlKVEUTa5v7c+2THOcG9fh 2udC9zkiCILZtlt4Hmmbq7pkWdY4x9gA3e12K2VZSpIkEoZhY/BsHMeSZZmEYVg7Xx/Mhdfp2uev MAwlcJ7ldFxN2fb7fbW67TWbMn91yQ5zxuPjo+R5LkEQ1OYlfd3OYWMxf12n7MrnL56/xpsyf+lc 78PzFwAAAAAAAAAAAACgzU2uwBTHsdzd3UlgvkG2LEt5fn6Wp6en3kEcdtUeH9832u6db0z0ve6y 3yg7R3ASjrltImf+plYN6JAzl+PSdI3tpnrsM47HzA/i+bbrsizP/m3Oc3P765zWOt/ZgKw2Oq8s 8c22+/2+cX7QPt11f1FhGMrDw0Pn9fSl53P7RZ/6WrM554k+5/Lp255j50LxzFld+rarPe+1zYU6 DzaNyUum81ie5/alivY33woAfd43pd7ce5Dvm/3tfvua7cNuX7XvG+oa50KfPnOary77vM/Hdy6X 1rs4CdYqz/POOdq69vlLrvhZ7hLmLxHx1pHveVOvJ03Tam6xdaz9f2ofvcb5a6n/BzP3nCM9nuX6 nvPa5y+ev847f/mes5r229fsuOL5C+jH/r9rFyswAQAAAAAAAAAAXJ9rXYHpphKYhgRm9f0H8z6B d75zLRU8g/HcgIlz1zMJTMNMHdt9xrHLd44m7lg/d79agi+48toNuealEpi6EpR0TMz9uUPZsdlU 3ksw5zwx9Fyq7Zziqe82Teeyga5d+owDufK5UOv92q5LtQXJWb4A2j6mPuvYoNemwH6X224azG3P 4xsjY9i6mPPca9BnTvNdc5/3+fjOpWxdNxkSxH/N85c47XCN17b2+asp0L/pWdPeo9tet6+NZeui bfyt3RL/D8bWT5O+c07f80mPa5Arn794/vq9c8xfwvMXcBZtcwMJTAAAAAAAAAAAANeHBKYGl5LA ZP/huo8+/7jdJ/DOd54lgmcwXRiGIiKt7XEKbn+dGlRyzWwQX192zPUZx5Y9h489b5/3XJKlAo3W rimo1GepBKYx97Qx5ij3tQRO2vHcR9O4GHMuaTnfXHOhjDhXnza11+v73EvlC56N49geNkjfVRVO Zb/fd7az1oMvgLZtHtH+Nsezju27XWUW0zfzPK9+XqKPXstc6GPHuI+vTvu8z8d3Lhl5vqZzKXvO ruMvjTtu2sbqpbqE+cs+T4tI6/N1U5uFzoojXdc81LXMX3P/Pxg7P/TR9rljnu/bzmfL13bspeH5 62e+ucq3z5pr/hKev4CTI4EJAAAAAAAAAADgtpDA1OASEph8gSD2H+rDMJT7+/vOIJW+uoJjul53 kcxye2jzfuzYLstSnp+fB4/trgA1ew7V9Y/91x4so9d3a310LQlMTXRMlGVpXxqs6/r6sEFtXfe8 tVpqnlC2nvq+T2acC8UT7DqkHE2udS7UurLXZNtjqLWNkUsIoLX9dkgd2rGX5/kiQcz2c4aU8VIN +XtH2Xpq6z+WnWt886AmeOgxbf1aPOfsOv6SuHWt7dP2fNFXn1VmTuUS5i/x9HvpGDPu/efx8VHE SXqaozyWLV9b2dZsyJzU5+9xOz9MmXN8zw72c/s+yylbvrZjLwnPX7/nm6t8+6y55i+ev4DTI4EJ AAAAAAAAAADgtpDA1GDtCUz2H9S7AgA0yKTtmD66gmO6Xne5x04NMMBl6BMwdevmHNtdiQnKfmbb P/YPOfYSaR916+vagl6baBBUW19RSyUwtdG+t6a54xruY0vMEy4bXNf3ffbz2somHXOheM7XtxxN 5j7f2sRxfJH9eQgdv3me25cqd3d3R8Gyep/o876x84INVh57HvGMQVkgmPYa5sIhhvy9o2w79J0z 7PvaPq9rHlTXPH+59eXWlR1TY6ypb695/rLc/tbWf5Xt89LzfWNdw/w1ZE7qul5b/23n65pz7Fwz 9VlOPOe8pvlLeP6qnGv+sveKsecRz1gSnr+AViQwAQAAAAAAAAAA3BYSmBqsPYHJ/Ye9rkCQOXUF x3S9rk4ZeDL0H/X7lM0XjCDONxT3CUqwn6PcMsZxXAVh+F63ms7pamuXJr5y+L6N2Wr7B+gubr3b +u5zDbYufO1oadCUTWA5pTnHtlsHbecaUr99z3mJtP3FrNBjA5nGaBu3a6H9oE+7aj/tM67m0udb t09tzDyzNn3H9JB5wmXf17eO5pwLZYG26ltvWK8hzyhufxnyviFzv/sM4vIF6vqeM+M4rv3uenp6 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 910hiOnNmzd+UAOokE+dnl9Evby8LPSVnpZMr141ODkNXkr7vE+fPg0vXrzY+OHERcL2OO8A4NR+ +ctfrv+vc+fluB+RXh/hYajqE15dXd2bfmHda49Ae9q+hhxfs2/zxht/+tOfwtXVVbi6ujr4rr9t pnUftd0mzsEf/vCHMJ1Ow3Q6dVMvWqd9kYuvP/7d3/1d4ZxQv/fhaPN3Be6e3xUAHi7XagGAYxLA 1CHpnWbuwvX1dej3+6Hf76+n/Xz37l149erVenn+Wp3OaJxe1WNXOu/evSusn14kiTVZt0r8A2R8 N5m21K27OtpM69zkFzcfwo+L7Pbtt98Wnv/jP/5j4Xnsu+++Kzz/wx/+UHgOtO/6+rqVvkQ8JXlZ evt877Pd5eXlzh+kdg0wTrfztvRcJDyNLpx3xPtv2kZidfr2ZceJQ85hcmXHrqo8VEnPT+K8XNe8 G3pcvvw9cb7yNNLldfNaVs66x9S26j5et9/vFwIdrq6uNl6PH1XaqPuHoq3tGKcTP+K2VNbetrW1 qjTjx7Y8VcnLl+Ylz0/TNPeprzJl9VN3f4yVpdM0jTak3+u76iPe9+OBbrFjtYmyOqtT91WfW7Zf 5eLP2ZX+Q/X06dONH8br9AurtuM+baLt40Ts2Ncegb86xjXkNK1Djgec3jHaxEPy7bffhs8//zx8 /vnn4Re/+EXpo+4Nw3788cfKtLbN5PPtt99urJ+/J14nTTf9DSH2448/bqT3i1/8Inz++edb8xJL 3/vmzZv1a9PpdOP1+FHHvvVVJU8vTufzzz9vnA7E4iCUFy9eFM4J9XsfljZ+V6B7uvC7QjjBtaGy 6wC70q26DpSmVedaU1eVlXGfa6JpnbbxW0Cs6trQrnqvalfx+8rS3pbuuyP9RrHvNat03Tbqvqre 4kdVfrYpq+tdbSvXVlvlr1yrBQCOQQDTHev63WXfvXsXvvzyy4075b59+zZ8+eWX687+MT19+nSj s1jV8YzvJnhxcbHXj1BVg2Ri8TrpHYHi5/GF2fwk6e3bt4V8tpkWPFS///3v1/8/e/YsfPLJJ4XX U5PJZP1/PHMT0K78wuzV1dXWvkTV93qZPM2y9K6urk7SN6FaWX+2zgXMWFd+BLtvun7e0aZDz2G2 HbvaOs7kx6w6+Un97ne/K+Tryy+/LC3ztvOmsKOcef76DX9cKstHaFD3p3BI3T8Ux9qOr169Km1v be1Xdb169WpdvjQv4TY/X3755dYfn2Nt1Fdb++O2dE5dz7n4es62PkFa32nw07Fsq7M6dV+n35Km Sz1l1wOr7NqOTc872j5OpOpcewS6re73WxPxseHQc7Y20+J++NWvfrX+/+///u8Lr9WRB7pMp9Pw 5s2bQnBOqs4MPJ9//nn47LPPKtOaTqfhs88+2xp0VOXzzz9f5zM2nU7D559/Xli2y5s3b9Z5afre NrVdXz/++OM6vdibN2/2Kuuh7Yv7o6zvHH9n1u2P8/Dor3TXQ/hd4dXtYPj8mkLZsSxXd2xOfp0i TSu/1nQX1+ja1sY10Tbtuja06xrfLm1e287zs089Hfua1V3btR2bXuMLHWyr58q1WgCgbQKY7lhZ x6or3tYIjnn79m3tDuUhXrx4URgUUpavV69eFepz11196iorXzyQ5u3bt+HV7R0y4jzE+c1PZnPx xZ020wLqiX9QA44jvxi4S36Rqq40WDkdNJp/l3Ia7969K/RLdgWPp9trlzS4m/11+byjTW2cw5Qd k+Ljzdu3b2sPUqyzXpPjVr6/xT8ShNs8X1xcbCyv+vy6x+gQBUjt0kbdt6mq7LEmdf9QHGM7/vGP fwzX19eF89v0+6BpmvtKrxtsc3V1VesHr7RvktpVtjb3x7J09j1+HcO2HzVjZfV4DG3UfXxNJq7b un0YP45ul9ZP2Taoux3f1jzvOMZxYpeycgHdFh+frnbcOKDM9fV1ozsE5zc0K9NmWtwP3377baMZ efIZjap8/vnnG4Euh2iS3nQ6rR2U8/vf/z58++2367SfPXsWnj17VljnzZs3pfXyhz/8IV204c2b N40De9pwjPqKg8zSOgpb6ikcoX1xf8T94qpzurs8H6Vb3jX8XYG7U/f8+Fw1uQbQRHq9MD0unvt1 6WNcQz5E3WtDYcs1viqHXNuu873XpC00aa9tXbM6pbrbse41vtDBtnruXKsFANokgKlD0o5eF7x9 +zZcXFyE1Wq1fjSZFvTFixeF95a9v65f//rX6//fvn1b6HS+e/eu0GHd9zNCg7v8xp/x9vYOGXEe fv3rX4d3yZ1VLi4uwuvXrzcuwrWZFjxE8Q94+9zhr+6PbUB96cXAly9fFvoC6cXdOheT3t7eVSdP 6/LyMlxeXobValVIz4XG07i+vi5cWKzqf8V93LoXGDmuLp53tOmQc5j0h6Kq403dQfhV50PpcTA9 v9nm8vIyvHjxolCmi4uL9fI4iKlqAH36o0B8jG5SX6l96z6to7hu0ryljyrHqPuHYt/tGNd5un64 baeraH9K19mV5ra060h/6Lq4DfqL002DAKv2oVjaNynLY1nZcm3tj20fv9pS9zun7h1922wTbdV9 HXHfNG6Hda9BPVR16qfN845jHSdSdcoFdNvTp08Lx5em3xF//OMf13cIrroL+Lt378Kr6G7w+bJU m2lxP/z+979fz8jzi1/8ovTa948//liYVSlfViYNnplMJuH7778PP/3008bj+++/D999911h/Vga jPPs2bMwmUwK759MJoX3/P73vy88/+KLLwrrp549exZ++umn8N1334XvvvtuY52yYKU4zTjt77// vhDg8+bNm8oAofT98fviMpY9qrRRX2XevHmzTue7775bpxUrq6dwhPbF/VF1TpcG/ULd3xXonrrX eI6tzWtD6W9WL1++DK9fv95IP/+MOjdRfii/Ze57DTmt1zZ+C2jjGt8pr22n16vq/EbRxjWrNC9t 1H1VGffR5jW+2L5tlU11rmm2uR3baPd11CkXANC+Rx8fff0xXdjEH/7lH8L19fVBF5xev35d6AzE d39LX0vtWnfX67Fd6+56PVZ33brrbdMkjV3rptvy4nYgXCpdb9sJSyqNti/LR5X0c/P3xp3Wqjw3 sauecu/evQt/+tOfSuusrCO9LV9tpZXWUVPbynuoOG/bynCIutuuy3q9XgghFO5K9/3334dPPvkk Wqto17rffvvt+oeiOiaTSfjiiy/SxSEkaT179mzrD5K7tJXWrvKX2ec9PDxZlqWLHpR9j9vpd/3L ly9LA27T77ey/kT6vbYtH/F3QNVn3nf7brO68ouIf/zjHwt9r1//+teV37lpe9j2/dxke9NMG32k NttX3fzU2a/rtpt0vbJjTvx5VemEZL2wowzbpPtHWZ6q6j1+b1w3Vevn0nqoynvTvIWKzwsl65Wl FYu/H6q2+6HqlK/Mrvo9lbROd9lWj2laVeVK19tWZ2n9hor196nPNO2qNpyqu3/n6Vetk9ZD3fV2 lT9sKUta5rK06pavreNXE3WO+fE6ZeXbJq2fqs+ItVX3cTrxfpaX5+XLl+Hq6qqQ/iFlbSIt4y7b jhOpffbdXJ32ENvWF0i3T/p6rs55R2iwH+06TtTRtB4O1bQ9pOI8Smu3Y6VVZZ99su18NWnTu9bd 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 b968CZ9//vnGD3qff/55ePPmzfp5endAoB3pwJ2rq6uN79h9+yZv377dSCuUpOfiUjuur6/Du3fv SvtW19fXG/VeZzu+e/du/d5+v79xUdyAquNI63Sf8442xX35qmPEXUjzVdb203ZfJv3RrCyd6+vr cHV1VWu/aVN6jH779m3o9/uV+3rV8mNKf5goO8cNFT+YH7vu6+QtP3bSHfmg3dzbt2/Dl19+Wbmt 8u+qY2tzf2zr+HVM8f7zxz/+sTBg7dR9tzbrfpf0uBRq9pm67FjHwnzf6/f7G33MtC8TSrZjVZ8i TavMqY4T6Xv2vfYIXdPmbxRtpnVKcb7T89xtth0HXrx4UXr8q9JmWtwPX3zxRbpo7Ysvvqh1bfzb b78NP/7448a19ty33367cUOxsnTzoJbcmzdvwmeffbZOP/Xjjz/uFTjURBwk9ObNm9J8fPvtt2E6 nYZnz56lL22VBiCV/V4Rtsys1MX6SrXRvjhv8Tld0+/iOt+VbZ53tJkWu+V1WVaf+W8DXevLUS7t P9717wpt29ZWw+3raZnTOinz1m+ZtdU5PoeK3wJCybWhY17jqyu9Flj2edcNfqM41jWrQ+u+Tel2 POQa30NUZ1tWtZdt8rbkWi0AcAyPPj76+mO6sIk//Ms/pItakXZYdlmtVumita6mlctPTHL7DNps K19pXqrWe/fuXeFO+WV5TtNqoiy9uIwXFxcbdxJM66AsjV36/f76/7LPqCutn7xTHdfHy5cva3V8 20zrrsVt4pD6DQe0r33axan1er0QQgi/+MUv1st23alu17r5j2z7SNPralqhJEBpl7I0IJZlWbro QTnkuJ1+f22zLe30eP/y5ctCnkJyV5x8eVV6911aX02k35H7pJWmEUv7amW2vZ/Dpdu0aX0fckxI 1TlGvHz5Mvzxj3/caDdpvtNyHXIOk66TS4838bEoVKQVn1vk0nTC7XvTz4zrt6re47zG5wNV68eq ylmlrHyh5bpP1TlmhIpzobbqvkpZ+qmyfLUprfsm0vpP09p3O9apl1zVZ8TSfDWR5i1Xt13lyvKZ 5qtsnVCjvnLpers0TSdt+3WOX8dU1U7q5COt+ybK0q+qsyplaYSKdOJjQNnrdY41h2q7vlJV2zJW diys877Yrroqq98qu9IKLR0ntmnr2iPE6vT/TqHN/aettPY9FtY5DpaJ9/GyYyD7abONn7pNnFL+ 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 00RqmtikJv4Dvm/jVJOEOG0AAAAASUVORK5CYII= --b1=_lfEAdGpNcaIyanGug4lSvu7mXbhlSCp9Lh09EVnVM5o Content-Type: image/png; name=render-error-1.png Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=render-error-1.png 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 x2M6nZ5t/6t/9a/OPW9fvPzyy3H//v14/PHH4/r16+nuePzxx+Pxxx9PN7Pnrl+/HtevX4/nn39e 8lLByy+/rD+4MHWTlyQtAQAAAAAAAG2RJi3l9jV56SDLOpE9TDdfnM7BQbrpTL/fP/v3v/av/Wtz +/7W3/pbZ/9+8OBBvPXWW/HWW2/F22+/HW+99Vbcv38/vvrVr8b7778fDx9eTIPv3Lkzl5R07969 uHfvXrzyyitnj3w7++2VV16J5557Lp577rl45ZVX5sZU8tJ8Al+v10t3w84sS16StESVxx57LG7e vJluXurmzZvx2GOPpZsBAAAAAABgqaqkpdz+JS914iAiotNJd+yH9957L9544434Fb/iV0RExI/8 yI/E//g//o/xoz/6o/FjP/Zj8eM//uPxEz/xE/FTP/VT8XM/93Px+uuvxxtvvBHvvPNOWtTWvfzy y3MrLL3yyivxkY98JD7ykY/Exz/+8bPHtWvX4iMf+cjca9lPL774Yrz44ovx8Y9//Cw5IvfJT35y 7rnAxalKXpK0xCJ/9I/+0fjTf/pPxxNPPJHuqvTEE0/En/7Tfzr+5J/8k+kuAAAAAAAAWGhZ0lJu n5KXOlk8SlyK2I/Mpel0Gl/5ylfiH/yDfxB/9a/+1fjhH/7h+Lt/9+/GvXv3onOaffX++++nL2uF 4kpLzz33XHz84x+f28/l973f+73pJqAl0uQlSUss89JLL0Wcxked5KUnnnginnvuuYiI+E//0/80 3Q0AAAAAAACV6iYt5fYpean6vmwXJMuyub+//du/Pf7yX/7L8corr8TXf/3Xxw//8A/Hj//4j58l KlXJsmzhY5defvnls3/fu3dv7Qnwl19+Oe7cuRP3798/e+QT7GWKz4nC7bnS7XG6skhx/507d+bq XZS+vqlyo6KNL7/8cmkbi+U+/fTT8fTTT5e+dpGy55e91zal/Za2K1XWR7uOg7I6pnUq68v8dcVE vscff/xcWbtS1pdldUjbWxZrxdel5Zb1RS7t8/sL+r0ofY/8den7lNW17HnbVHzfKPRn2xSTlyQt 1feJT3wiPvvZzy58/PJf/ssjIs5tL3vsiz//5/98fPazn4133nknvuu7vit+5+/8nelTzjzxxBNn x9yLL74Yn//859OnAAAAAAAA7JVPfOIT6abaNnntVbRq0lJuX5KXOp959juziIj/8q/8zXRfLe+9 915ERPzUT/1Uumstf/SPH8fJX/0rEafJRz/90z8dP/qjPxpvvfVW+tTG/OE/NorjP/FHotPpLE2I WsedO3fObhP3yiuvrLza0tNPPx2f/OQn5241l7p37965W8zliQH5LcrKXn/v3r343u/93rNJ+lRZ fbdR7ssvvzyXzFImTSAovuaVV16pfH36XpHcAqpMnrwQEXHt2rV0d6limcveszhei/qz+N5tioO6 fR/JuC0b53SMt6XO+Bf7sW57n3vuuYVjlMbSsuSdtB654jklVXzNsnam9dmWqhjc1fuvouo4bbNv +IZviIiID37wg+munfjsZz8bvV4v3by2GzdupJsa8eEPfzgiIt54441010a+4zu+I77zO78zHjx4 EC+++GL8mT/zZ+b250lL165dixdffDH+1J/6U3P7AQAAAAAA9kmTc0OrJuJcResmLRU1Uca2/PZ/ 41uj85lnP3mauPTD6f5atpW49NZbb8WdO3fii1/8YvqUxu0ycWmdifri6+/duxd//+///Tg5OYmI mEuSSCfZ06SIV155JU5OTqLX65UmXuS3sEkTL9I6b7PcvH15kkyaeFF8TZoEU+ybtC5pQkyxDYte FyX1rLIscakqgS3tz3x/RMyV0aY4WNT3saA++YojxffOk6bidCWSXagai2K7FiVcFdub9lO+P29T MX7TuMjLzcckf7+q+qX70n7v9Xpz5RQThopjkD5v26picFfvX1eatHT9+vVzx1MbXXTiUh35F9ht JSXVsa3EpSgkL73//vvx4osvxp/9s382QtISAAAAAABwSTWRvNTGJJo2yldK2rSvmiqnaWeJS1kW 8V/9YHsSl/7SX3w5/vbf/tvxzjvvpLu3YtuJS8VJ+7pJMLliwkTVBHqx/GKyRdX2KEnESPcXkyPS fdsqt0qxzKrkmbK+qXqvZa9blCy1SJr0kCeuxJIkoDSJKq1P1KhzLBiXqu2xwXhtUp8oWcEoTfLa pmXvXXa8LmvvojFM4yJ9bZW8zKrEqjpl5WWk/b9ri2KhLYrjlNcxj/86fX2RJC7Vs83EpThNUnru NPGzGEv5324PBwAAAAAAAPOe/HXfGgfpxov29ttvxw/90A/tLGmp7b75m7/57N9VE+f56jxxuuJK mTRRIF+hJU5fn+7/+3//78/9XSV9XRPlvvzyy/Hyyy/HnTt34s6dO3OJNfmKPamycovbiv2yrE/T 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 k2y5mzdvmrDeU5dxHJ999tl45pln4tVXXz2XaJHfSu3ZZ5+9VLdTu4zjuI9effXVVtyuL09mTOM/ 9S3f8i3ppnOaLAsAAAAAAACA9jmIiOh00s3t9thjj8ULL7wQL7zwQq1f6j/55JNxcnIy93jqqafS p7Fjq45j2xVXNFrk1VdfvfDkkiZdtnG8DC4yvvLVxnI3b948d/6tu8JLk2VxdfkOcHH0PQAAAAAA AMscRNaJLNtO5lLZJPOixyqTz4899thKz79qttn3Tbos4/jSSy/NJS3dvHkznnrqqbP+feGFF+Lm zZtzr0mTMvbZZRnHfVB2bL/wwgvnkgGKt3DcpfQ4KEtmqxsrTZZFuTSW8kcxnspiLn/ofwAAAAAA AGBdWed0xSVgM5/73OfO/p0nWBRvmfbYY4/Fpz/96bnkpVdfffXCVsXhcnnsscfiySefPJe8tGsv vfTS3N9liUZ1NVkWAAAAAAAAAO2TZRGdP/C7n8qyLIs/8qf+qXT/Sv7Oj3x7xOlkc57EUbVCxiqK 5VVZ51ZBTdbzpZdeijt37pxbHeQjH/nIXPLKtjXZpqKy9j311FPx5JNPxmuvvTa3skvVWDQxjr1e L91U28nJSbqpMWnbVmlH3o9FVeOY3opuWYxto7/StpZZ1v4yZTF28+bNeOKJJ5aWVdZfr732Wnz+ 859fq7yivF6RrP5TtE57V1XWxjJ1jsdiXJTtzy2L0zLFGF1UzzqaLKsqvhYdP7Eg3ov9UVZ23f5q S3yVqRtzy5T1zzrHYmyhrCbaFy0ax7rHdqz43FjQ98uOoTKb9H3Va1f9fAQAAAAAANh3v+pXf3+6 aS/98Wdet+LSJl577bXo9Xrxuc997txk5auvvhqf+9znotfr7e2qOova97nPfS6effbZuW1XVT5h HaeTpcsmgIur4pQlRaTycUjHII+xfR6HRTH26quvxjPPPBPPPvvsSsdQnryzqLxlnn322bl6pWUV tfmWf8ti8bJbFl+bnqOfffbZ0rKXHZeXJb4WWdb3qxzbTZbVJOO4+TG0qcv8+QgAAAAAAHBVHGQR kUUn3c4SeXJEHc8888yFTeptoqx9N2/ejJuntzt79dVX4+/9vb+XPoUlvuVbviXdtFBxwrvY/7lX X311Lydn6x5DeWJCHa+++urSBIFXl9yiL125Y58Uj8c0TnbtIx/5SLppbeuUVTe+Yo1z9J07d+Kl l146i5Oq47KszH2Or7rq9n2dY7vJsppkHOetegw15bJ+PgIAAAAAAFwlrV9x6cknn4yTk5O5xwsv vJA+befSybynnnpqYR33LcEnnejL2/fpT386Pv3pT8fJyUncvHmz1opB0dA4pq8vTlCm/Z8+tqk4 eb1ugkWVV09X8ajq/+Lz0nLSPmiiv5oYx1yaYFSs0wsvvHBuAvqll16a+7vKq6++Gjdv3lxYx0XH Y5qM8NRTT8ULL7xwrt15uavc5mib0tuaPfHEE3P7r5omztHFeE+fH6eJEieF4zJ9TlmZ+xpfq2jy 2G6yrCZdhXFs4hjapk0+HwEAAAAAAGiLLA6y7NE/qC+dGH3hhRfiySefnNv22GOPzU3q1U3wacqr r74avV5v4SNtR1FxUvbmzZvn2hcRezkRu211VlNa9fZddft/15PGm3jttdfmYuypp56aa+Njjz0W n/70p+cmn+seQzdv3jzXN4899litW/Slk9t5varGrGr7NlUd23mbbt68GS+88MLW65a+fy+5XVN+ C6myR3ruSfdvUlbs4Bz96ultqJbFWfE2krEn8bWpJo/tJstq0lUYx20fQ025jJ+PAAAAAAAAV0tn uysuVU2wL5t0brviZPRTTz1VOSn52GOPzU2oppOdbZXWM50ALCpO0rMdi1bOqZOM00bpJHLZxHOU tD2NzTJV8VonqSy1zmsuSp6w9MQTT1Sek66KXZyj05V+1rFP8VVXk8d2k2VtUxvH8Zlnnjn3fav4 WGYXx1AT0rEv2tfPRwAAAAAAgKvmIMsisqyTbmeB4goQyyYsi7cOSydh22qVei5rP5urmjCOkv7f 9aTxuoqT4osSQNK2rxKby9Tpq2eeeSZeeumleO2112o9/yK9+uqr8cwzz8QzzzwTzz77bOvru027 OEdX3RayeHu5qiS63D7FV11NHttNlrVNl3Ecd3EMNSEd+6K03pdlbAAAAAAAAC6XThxElkX26H5x rGHZqgYX9Sv/mzdvnk2eVz2qVq8oWjRZzMVbNGm7L6oSQC7CY8mtvuJ0pY48IShfJe4iJ8Crju0X XnjhrO55EtM265m+/8nJydz54qmnnjq3v+rck+7fpKzUts7Ry963zD7EV5OaPLabLGtTV20ct3UM bdtl+HwEAAAAAAC4Cg6yTkQW20lcqppgX2XSGfbJrlebuAp2nTz35JNPxgsvvFD5vnmCQp6c0BaP PfbYWd1z205eYnX7Gl/bUNUH62iyrDraPo4vvPDCue9bxQcAAAAAAAC0xUFExJbylq6EmzdvxlNP PVXrkd62hKspncS2KkT7PPbYY/HpT386XnjhhbmVjFKf+9znzo3nRUtXg7nqyXRtPEfvc3zxNVdl HNt4DAEAAAAAAHB5HETWiYhOup2annjiiXjyySdrPfYxQeXVV19NN5EoTlavesucqtU61rWPMXbn zp1005yLjMHHHnvsbCWjk+R2bLnPfe5zrV7VaFn/XnZtPkdfhvhaZFnsrXJsN1lW0y77OLb5GFpF m+sGAAAAAABwlT1acUne0kqKE5Kf//zn5/ZdBumKCYsmW6/6ai6xYn/FGslNi8rb11U8PvKRj5z9 e1HCQdvalycnFG/H1kbLkjyWWRRz+2Bfz9H7El+LNHlsN1nWLl2GcdyXY2jRuaptcQEAAAAAAEC5 gyyyK3+ruEUTomWKiSqvvvpqPPvss3P79126KsGi5KRNEyQ2UZzUXjUZqElpfy2a5E1j5Yknnpj7 u8yi8or9v2z1prb0V5Qke1VNMKfx9eSTT879zXmvvfba3DmtOO6pqmN7Ucztg8t+jm6zJo/tJsta ZNXvAFfBro6hTft+0blqlc9HAAAAAAAALs7Bo7ylq5e5lE6IPvvss+d+uf/SSy+d2xaniSrFSbBX X301er1evPbaa6XPr9reZuntz8rq/+yzz2486biJOmMYS1ZkaEqxv/JJ3vR90/66efPmuaSnMq++ +mrphH1a3qIElWhZf6XH0Oc+97lzbUzbt6uJ5/y4r+qHl1566dxkeZ1x3IWXXnopnnnmmXTznPTY Luv3fZfGV5vO0fscX3WkfV8VY3WO7SbLStU5H1Z9B4grOI5NHkOb9n1RU5+PAAAAAAAAXIwsy6Jz 9Lu+I8siYvS5fzrdv5K/8yPfHnE62ZSv5nLz5s349Kc/nTyzvmJZq3rhhReWThL2er100zlPPfVU 6eoNr7322tIEgaI69dlUk/1V1b58IjOfEHzqqafm3jMtJxquVyqdnKxSNY5NqluXXFXb0v4q9nHa /7m6x1rdOpb1V1qvVZS1tSrGyixqX1qvk5OTuf259P02rVNuUd2akraxrrK61WnjU089FXfu3DkX K2V9VlSMr7IYWsWmZdVpZ1FZ2+p8RuSq4q5o1TpFxRjuwiaf5au0c1nZTZaVqjO+ZbG3Sp1yq9Zt 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 z118Ti/Ctl3b2phO3JTVazgcxmAwKJ1036V0snA8Hp+rb96/27aNcazTvljyC+mmTKfTufEeDAbn JmfH4/HchO9Fx0fT0mMjKtqYPq9sfNY9hopl57cjWVSXMtuI1SZtGvf7Gqtp3ERL6rWupsex2+3G yclJZexWbW9SOkZl77fusX1ZbXMc68RY3e8Am5SVtnFfzjmrKCbNVt0KK23jLqR9v0l8NVlWUZ3Y igXnwrZqa0yk9So7FlfR9u9Mm0r7q6ydFzGOAAAAAMB2dP693/47s8gi/pPP/+/SfSu59qHPpJvO 5JNlcTohcnh4mD6lVPF1ERG9Xm9uf67f78fR0dHZ36PR6NyF2bSsVaTlpe9XxyrtXtdVaOPJyUm6 6Wwyp3jhejQanav/LupXVFbX1GQyObeywb6MY93JgrI2Nm2VdtZtXyRt3EU7qpS1r1ifsv1V7SyL y6aOoaqYqNN3ZW1YZll9tqGqjamqNq/Szl21r6xO68RXWWxVqfo8L2ryXJja5ThGjfo0oaz/mzq2 2yKNiao4Ssenqv/T5y1TVU6ZsvFIVcVXapOyVmnjvsRBUVX70tifzWbnjoPiWNbp41xV3KWq6lYl rVNRk2UVbXIuTI/HVaT1S8uq6uO0H9Jyyp6TWzUmmlZVr6LJZBLXr18/NyZp3eqUlao6vtO+X0Va r7SsyziOAAAAANAm99/8VLppL/3hf//1OMgiIuuku1hk0XL1ZaouFLdZW9s4Go3STdHtds9dsC6T TgJsW1U9irZ9e4NtjuPt27fPJg8u2nQ6rdXfs9ksbt++nW7ee2UTNMVbwBSV9VNTx1BV36aTnWW2 GatN2jTu9zFWV4mvfdHEOPZ6vdplrBrf6yiLq6aO7ctqm+NY1ddFdb8DbFLWPp5zVlHVvmLsl7Wt 7LzWtCbjq8myijY9F7ZRW2Oiql652WxW+X0pXTmp7vjmLuo70yaq+uuixxEAAAAAaF7WiThIN7Lc 3bt3l17kn81mMZlMotfr7d2F4mhxG/OL2MXbB8RpXWazWfR6vdZcsK6qaxTqu+3J/22O43Q6jcPD w8o2xmnZVZOpTcsn9crqkrfx8PCwNfGxirI6p7d4qasqLps4hspetyz+ctuM1SY1Efdti9Wy91k3 vvZFE+MYEXNllMVvflztoj+3eWxfdtsYx6rxiDW+A2xaVtvOOU2r6p9i2y5Sk/HVZFnR4Lmwbdoa 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 aCLu05hv4ngsa2Mb+r6J/irTRLw2bdM6pXERJeWsMo77EhP5ubAYFzdu3Jjri7K4b7q/ymxyXk2P 5zac75vq+6JN4z62EKvb7Pt1lbVx3c+hsrI26a/Y4jiu28ZtW+cYKjvnpMdH3b5Pj8Wy56XPiQX/ rdCEYvuK9UnrUaxDccyrbqW2zeMxfd2q/dNE3JdZp16XPb4AAAAAoAmX6lZxWWTp9kaVXRiMiDg8 PDz7hWNU/AqS1fT7/YUXZafT6bl+Ty8Ib0M6KVgVD3Wkv4QdjUbnyptOpzEajc7+XtbGYn8UrbJq yTb7Pr1IH6flTQorz1SVlU9E5fJ6VV2Er9q+C93TW5Qsa2vdX7pPp9Ozfl8lHpqyjVhtQpMxsY24 b+J4bHPfN9FfJycn5x7Fcgent0Qqe6R9s0/KPj/S80NZf0WLYyJKPiMPDw/PxcXx8fFZ3co+E8ps 0l9VmjqvtuV8v62+38S2Y7Xpvl9Hk59D2+6vdTXZxl1Y9xgqKjs+0riqKi89FtMxjBX+W2Hbiok9 m2rD8bgvrkp8AQAAAMBVtfVbxZVdGMzdvn073cQG0tsnVPV92u/p5EqT0rIXXRSuMwFQvHA/mUwq J3qm0+nc5H9aj6Zts++r+qzOLShS67xml6qSVjaVxkmdft9UW2M1tUlMbDPuN9HWvm9rf+2LTc6F bY2JNOmiqo1xWrder7fwOUVVz6vTX3WkfbhqX130+X6bfb+JXcTqtvp+XZvE5C76qwmbtHHX0j6s 21dVx8eytqflV5UTNf9boSnFeqeJQ8VYSj/bV9W247GtquJiX+MLAAAAAJi39cSlVaQXFllN8aL6 oovg6YTEphfcF1ml7GUXniP5xeyy5xdXaFmlHutoQ9/XOX6Ojo5iOBxGv9+v9fxdq1pV5/j4OHq9 3koTx3kbL6qdbY3V1CYx0Ya4L9PWvm9rf102ZXG87zGxTWX9VaXJ8+pFn+/b0PdldhGrTfZ9Ezb5 HNpFfzVhkzbuwjrH0LrS91hlLJaN8S6ldSm2a5VzStuOx313WeILAAAAAK6arSYuLbtom07O0pyq i+AXaVk8rOro6OjcbZCKj6rbBWxbm/p+mtxCIU5vo3B0dHTWf/lEWhtUrUBTx3A4jPF4fDb+eRvz dl6kNsXqtmKiTXFf1Ka+L9qkv/KJzOKjeH6dTCbn9uePTY6xy+IyxsS2bPO8ukksNl2vNvZ9bDFW N+n7Jmzrc2hb/bWObbWxKU0fQ01p+r8VNlH879Q8QS4fr+I5I0+CXCVBpuiij8erpE3xBQAAAADM 22ri0jLpxXqJTLvjwu3F2XXfHx8fx2g0qnzffCItn0TbR+PxOAaDwdzKC1S7iJioei/K6S8uWlvP q22tF6u5iM+hXWtrGx1D6ysmJ+X/3VrWj21NhgQAAAAAaKuDiIgsSzfvxrq/TIU4ndifTCa1Hld9 6f/pdBqHh4cxGo1iNBqdWwUgNxgMdjp51oTxeDw3aTSbzUpj4yKV1afqsatYvcwxUdTGvudiiYnl 2npebWu9tqWsbVWPfYzVpj+H2thfTbdxU1ftGNqWXcUPAAAAAMBVkF30ikv50vphdYnGFfu2TNmv g7et6fe8fft2HB8f13rscjWvNvZ9bjqdxnQ6jePj4+j1eqWTaIPB4NxqaG1W7M/RaBSHh4dxeHh4 LgYuUltjNRqMibbGfVv7vq39dRW0NSZ2eRurZdp6Xt1WvdrU90VtjdWmNfU51Ob+aqqNm9rWMdSU tn32Ff/7tN/vn3125/GT7y/uC4lNrdW2+AIAAAAAvuY0celillwqXjxcd0n9bV/g3yfFPlx0YXYX v+jOpRfuF41XnRW4ipM8t27dmtt3kdrY93Xkk2ij0SjdtReK/TmbzXY+EblIW2N1mVVioq1x39a+ b2t/XQX7EBOx5DNyV9p6Xm26Xm3s+2hxrO7SKp9D+9pfq7SxKU0fQ01p+r8VmpSeJ1JV+9vSt7Q7 vgAAAACAr7mwFZfG4/Hc38t+3Vt1IXGdSYriReY2/cp+03qlF2arJr/TlT6W9f0m0gv3VeMYJfUq U2xjt9s9F0cXpY19v02bxuquVY3HIpu2sa2x2qS2xn1b+76t/bUtmx5DTdqXmLh169bCSdU2qYrf i1a3Xtvq+03jvq2x2lbb6q9Nx3Gf1T2GmtL0fytsU7fbLV0leFGd98lljPt9ii8AAAAAuMpOE5c6 6fatGQ6HMR6Pz92qoEzxV9SDweDchfR1JyfSyarxeFw6WVW2bZs2rdd0Op27mF7VZ8W+L7v43rR0 HMvqn9arStrGbrcbJycn0e/3S8ut2t60tF5t6fs4PeYW9cNwODyXAJhe5E9tGqtNSScsy95vOBzG YDBYub83bWMaE22J1WgwJtI2tiXu03q1pe/TerWlv7Zl02OoSWnftykmip+R3W43jo6Ozo7RVL/f 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 NdF+M+UYCQAAAAAAcGs+/Pm3/EMX6fe+9pfy5k7eiMidfw5AT6nbkuvp6Wnn33MQb7cfSJJkb3Ik iiJJkkQ2m43EPVYXyfN8Jy2fnqUTMm30V8ZNaSVJIqvVaq+c+6qqyj90tcqylMJsd9U2ad3VJlar leR53qtNKJ188elpHeZ5vvN4X3meB/OZJMlOmn6ip88WHzoBLCdqK23l7s+nj7b0hvZt1VSPtl3c Ct+mjk3rM1T2Y9qH0vcfo/403T5t7Njj/bE0naNvH6ccc9rG92M6xpjjHVIu18xeC33ZK9vXT8H2 aUuvF4e0g0M13TsMdYxzvNSxsK80Teu/F/RI03RUWSkdew4dX0J5OyR/h+bL99XValXnx/N5z819 ehzHO8+F3t/Gp63l4csqlK5/r+arqTz09dr2oygaXQeHlj8AAAAAAADm4nW7Vdzrq38GwAhVVe1N ZJ5b3LACR0jXBIz9knkKQ9JLkiT4ZXnI3OrglJ6fn3f+HarPvm1CJ+X6soFqVVXtTT5HUST5gKCJ +/t7Sc02jE1p2nO0W331mdi37e/l5WXnuWMIlac9ryiKegU/yIB6lB59W0VR1Blw6Mv8mtj26dva KRzah/q0na40xupqi8ca708pdI7nGHOOUX99HGPMUbd83e5jSP+RlvFLx5XQ+DKUvT4rn27X9eRY hpZXk2Oc45C8zXUsbKJBJKGAsaYA0FOJt0E4obzJmYLF2j7LB4GG8h5t79O/973vycoF1yU9g53T NA3WmZaHL6sh+Vq5YOnc/fjF08/sk28AAAAAAABcl1eRbeASgNHs6glTWK/XslgsWg+7qo5stzJo 4icZi6LYSctOukrHxLf/krkoCsmybC9/mm7bsv9+4qaqqp28ZVm2d15Tl/U16jP56yfZfLn7ycy2 iRUVbVcN0LSWy6Usl0tZLBY76UWBoBfb5n17lG3bsGn619g268/ff5blz+vY24H4iZimsuoT/CAT 920r2m7bMUValyCO471f/1cDti3xZaWH70ddDulDKnT9yLJsr19HUbTX/ps0nZ9PU1r62xTjfejc 9L2Wf14PPzZYh5yjT9c/b/kyHzvm+GtxyDHK61hjDrr5Ovdlr+WvfakpKE7Hlabr6RD+WpVt7/t0 3MqyrB7XTskHG9n+bft0qAx9n5z6HKcYC+fM3l/681J+HBljzNhig3B83dty93U+xNB8+RX4QuX1 +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 NDi9TX7W++Rj21iHtZeFdj0iCAJvyyPUR+rKqiZpmlaWMbpTLo5jKYpC9vu9hGFY2WGWJImkaVqa cqQtysJ1Wnv5FYahBFZdzlxXQ5bT6dRpuqKlGlJ+NUkvZcbr66tkWSZBEJTKJfO6LsP6ovxar3Tl ZRh1sP6GlGGmvHehDgYAAAAAaOuhR1xKkkSenp4kUE+LFUUh7+/vnYYS1qP0uLieXjtZTwK5Xrfp p8d8NEriln1O5M5PZZlGHLnzfixN07VdlY5truM+5YM4nmwtiuLuT276ZudXn+Za3ulG2DqmXKl7 2rWvU800cSZPN91fjNDjNCNibc/OF23Sa858lhNttuXS9nz2LQvFUWY1aXte9XbXVhaacrDqmlwy U45lWaZfujL5zfW0f5vPDUk3+x7keopfr9ev6Txs51X9ua7WWBa6tCnTXGnZ5nMurm3ZTLqLFVht ZD2mjVl7+SUrrsstofySiml9XfVNczyHw+Fatug0Nvl/aB5da/k1VjuM73JHWtTn2m5z7WUYdbD7 lmGuulbVev2avq6ogwEAAABAe2sacWnz5/7cd87yYIFLXRpk2/5IbtPg7trWWA1m6M9uJLl3OhO4 1M3Qa7vNdWxzbaOKfa3fO1+NwdWpsnZdjnmswKWmwCRzTfj+3q70tVm1v0vgs5zoui2jbpviSO86 VdvSnVtN2lwHsvKy0KT72o7L0IHddVydZm0Mrevojq6qDn2bfd5MB67ejusa6UOnhc9tz0GbMs11 zG0+5+LalqHTukqXjvs1l19inYc1Htvcy6+qzv2quqa+R9e9rl/rS6dF3fW3BGO0w+g0qtK23Gm7 PWlxDLLyMow62E/dowwT6mAAAAAAcDcELjksJXBJ/1hto80P2jYN7q7tjNFghuHCy3DUdedjCnZ+ HdqQtGa68b4tfc21uY41vQ0Xvd02n1mSsRoX566qM8llrMClPve0Pnzs91o6S/T13EbVddFnW1Kz PV9lofTYVptzqo/X9b1L5eowSwZOjdR2BIWpnE6nxvNs0sHVaVZXjpj85qOuo/Nu0z6LyptZll3/ HiOPrqUsdNHXuIsrTdt8zsW1Lem5vaptGXqbTe9fGvu6qbtWl2oJ5ZeuT4tIbf266pyF1ugiTcfc 1ZrKL9/tMLqMaKPue/vU8eu2p/ev7r1LQx3sI1d55Vqn+SrDhDoYAAAAANwFgUsOSwhccjX+6B/n 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 gDudQtNFfne7Op7nHcVFWs/zVgb/eJ7XGBQRNNyFq60KsNAdPZvoM19966OMl5eXYoyRJEnE933x fV+SJCmObR1808QeA8YYybKsWH779m1nqztsum7dGmOKPEwmk+J/Ny13+yzLlvK76jjroip9GyBk 82rzadfHcbwU2FRVpiRJnHe6U0ez2ax4fnV1JVEULaVT9X7ucZAkSSntt771rcX/1u3bt0ufXV/8 4heL/9se6y67f/usewAAjpn7HZ8kSS9tALud/n1i21xpmhbf87atZtOdTCZLbRNrH77n3TZmVV10 aa9atu3bth1Ztb0NIDtm+1D3AAAAAAAAALCPdha4pIfJdzsZtOl0WgQp2IcNKnA7FLye7lRtqy5f m/I8r7igXZduUzCXDpiwnSnrpKUDerIsKy6Q60eSJI1THPSZryFdXl7qRa3keS6TyaQ0clie56Vj u20ngq13PfrTv/7X/7r4362v559/vrS8bj9Mp9PS6/T+1fntex/o9F955ZWlvFZ9FjSVKc/z0ufA vffeKx/96EeL59PptDSilk5fP5ebDqU8z5eCCHWn5sMPP1x6/Xg8LgWHtd3f1uc+97ni/77rHgCA Y2S/46u+u1e1AeraFrb9VbXeDerPskwmk0nj1FxuULM7quOuvufr2pj6+Tp0O29VGfX2x26f6h4A AAAAAAAA9s1YRiMZaqI4z/NkPp8vPWzQkrkZoabrNHF5nheBIm4gxjp3qu4bY8xSR0me56WAiLpy 6sCtJEmWOlPyPG9VZzroIssymU6ntfuqbrn0nK9T9ju/8zvF/+9+97uL/93Ri5r2g1TUs7bq9Zty 0//KV75SWlelTZk0tz7E6SiqSitXgU/idCC5r9Ns55Cb3tnZ2dqBb5rb0QoAAJrVfXc3tQHkpn3b RK//rd/6LZGatmyVr33ta0tp7CO3/aJ/A3RRVcdtnWqwzT7UPQAAAAAAAADs0mg83s2ISzZgaTab bXyRVb9+kwu++0AHLVltAiLcYIcsy5bqxtLBGm3qrM371xkyX/vOvfO/rtx9qTt2tLb52IfgmTbT XbgjH7iurq5Kr627o302m5WOu+l0uvQ6N+3bt2+3qsNT7YADAGBbbBug6rvbpZ9bdqrfqiDlKl/7 2tfE9/1W7QCrTYATAAAAAAAAAACn6vXr13cTuOR5nsRxLHEcS5qmKwMTtCAIisepqiq7O5XVqkAj twOnTYBFHMcSRdFa9T5kvvaNrZ8oikrTiTSNctSHth1ulg7y2Rd2n7vl0dMMasnN1JFa247C3Bm9 zabjHnvT6VTe8Y53FM/dKfsAAMDuNH13t2mv2jZA2+Dvde1ruwsAAAAAAAAAgF0bjUYylsVQE8Xd CT7wfX/pkSRJcQHfBjE1dS7YIBA71ZwNeorjWObzud4cN8Eeeoq+qun66uRqejq5mb7NrXcbyNTF pvnaZ0EQFPUThqF4nlecA3V35gdBIGmaSpqmxZR6tt6HrItVAWRtuPnuehzUsaM86VGOmtLPb6aO 3LRMNh1ZMdrUr/3ar+lFAABgB9p+d7exjfbXrp1CGfcVdQ8AAAAAAAAA1d74xjfuZsSlPM9lOp2W RkmpC15K07QIAsF22X1UN5qPDWSyQUxY5nleY93EcSye54nneRKGoaRpWgTg1NV7lbopUIZiR5Oy +a47f7uIoqg05Ys7YlLX0bdu376tF62lyz4AAAC7Z7+764LG66zT/jo0p1DGfUXdAwAAAAAAAEC1 8Rvu2k3gkqVH9dHBCe5UW3JzodcYI1mWlR5YVlVPdY+mkWr0NFp19R2GYWOAjtVXvoaij8Eu8jyv HFUsDEOZ14wMlmXZ0ghkFxcX4vv+0rQl733ve4v/P/CBD5TWnZ2drTWN37pms1mRd2vVlG5NgiAo 7kB3O3TcOuzCTufmdlp2SWMXgZJdO1gBAMC32O/uqmDuNm0A245z21/vfve7S9scuqoyRlEkFxcX pe3QP+oeAAAAAAAAAKotFrLbwCVNT/HgBg8kSSKTyUQmk0kxGoselQXfMpvNluqp7tEmYMJOxTGd TpcCc6wwDFcGzvSdrz4Mcedz1ahiVYFdtpzutp7nFfX4jne8o9j23nvvLf7X7JSLm0zj14XNs+2E sXWYpqnetBXbaWOMKXXouMFr65bHPU67plHV+QkAAA7Dum2AIAhkPp/LO9/5ztLyYwoysWXUI9se Uxn3FXUPAAAAAAAAAN+yWCx2H7ikg5UsN8jDGLO1IJZD5nbODH3hWwfbNNlmvtbhBqe0uSO/izzP i6CeVWnneV7Up5167T3veU+x3q3HqqnQ3AAsO31bVbDUEGazmYgKumrLHVnNplNl3dGw3OCnddP4 nd/5neL/IUZfGCJ4DgCAU7dOGyAIgtpRJD3Pk/l83rmtU/d7Z1d0Gd025rplRDvUPQAAAAAAAACU jUaj3QYuBUFQust0ndFN+gjM2MW0UENwO2c8z1t79Ju+7Wu+LD0l3TqdBeu8poob6PSjP/qjxXJj TCmfv/Ebv1H8b81ms2I0LDdYqo9zZBU36Ori4qLUOThtGBXNDVpKkmQpQFE/X0fuTEnZZlSwXVjn sw8AADRbpw3gjgJZF1hsA8zTNF3ZrtW/d/aBW0bf95fawuKUEf2i7gEAAAAAAACg7A1vesPuApei KKq9m1kqgl2qLt5GUSRhGNZ2KjTRF4nTNF16j6Gn2+qbG/Qi6q7dqnLULbds+eu2iaJoaQSlqkCT vvPVN51nXaYmwc1UD206GNzp1JqCieyoQ29961v1qkY233mey2QyaT3SU1tRFFWeJ5atR8/zivds Ojft9BjGmMqgJdkgMNEdqUpU8FSbfWXZcnzta18rln3nd36ns0VZVRm0qjI1BXcBAID2dLtn3TbA 1dXVUsBRlmVF2yaOY/E8b+l3ih7ZqUu7ctuqAqd1GasCs3QZ0R11DwAAAAAAAAB3XL9+PWzgkg1Q qXroTgVjTKljQQcAxHEs8/m8uLPZTcOdXsrdrolO3/O84rVuHqsuDkdRtFSe+U3wikunN9/C0P9V U23FcVyZF51fVxAExXRjVa+d39SP26HTFKTSV76GoqdpaLuf3KCsuGJqNndEIdtBYQN75vN5ZXCc DvQSEZlMJqVj0Q2k+eIXvyhSMZpVVYfIJs7OzorzpCrfUnEMVO13zfM8OT8/X0rPBiZaXYN73PoN gqDTlIXuFIjz+Vy+93u/t3iug6I0N2Csqkx6uhhdZwAAoDv93e22Adzv2lVtAOv973+/XiTT6bQU HG65bSP3e/7i4qJoB+rX7BM9UqZbRveGA8sto/5NhW6oewAAAAAAAACnbiQybOBSW8YYmUwmenGp A8KydzZbVdtIy+nf6l7r0kEG+y7Pc/F9v3XnSFVgljQsr1O3D62+8jUUHRQTd7gj3w3OsQFJ9uF2 Vtn3cI87Gxymg7f08Tt3AvV0HX7ta19b6uBI07R2+3Xpcq7Kd90oStbv/u7vFv9XpecGLa1bBjf4 zk1PB3lpOnhMBys1HRtVgZRumfS+bRPcBQAAmunvbrcN4H73rmoD2O/lt7zlLaXlbtqTyWTpd4R9 P/1e0qKdvG22jLbdWtVm1GV02zSHEIy1r6h7AAAAAAAAACh70xvfuNvAJWOMZFlWeyE/z3NJkqQ0 UorcvM4YI77vNwZGrFKXvjjv0feoNdtiL3i7Uw64bPn0lHnW5eVl5etcdv/5vl+7D7VN8zUk3QHV NnjJBmVVHUdS0Vm1anvL1oVeVhXoojs43E6Nqu3XYfOdJMlSvlymYeo319e+9rWiHlal1/b4sr74 xS+urN9V57Z7rLpeeumlxrLZz5WmMllZljWmBQAA2qv77tZWtQG0qvZUm+9721bu2o4Zmg7ykjXK uE77DNQ9AAAAAAAAAGgjGcnokz/6kcX1YiE/9z9+t17fyT13P60XAQcnCAKJK6aqMzdBbJeXlysD Tdxgp1XbWjpAyn1d1/Ts9m223VRTvtfRd3q7FkWR3HfffSIicu+995bW0ekEAMB+0dPUfvGLX5Sv fe1rK9sjtv3y7ne/u5jOV7/GTh+8T9//XdqYXbbV3Hp1g9vddneWZUsjoB6zLvXZZVsAAAAAAAAA p+PV1x7Xi3brqYfKz598ofy8xuQ/f4nAJUCrC16SFtOfAa75fK4XiZxg5xwAAPssiiI5OzvrNOVt V/sYuLQtBC4BAAAAAAAAQP+OJXDpBz/wv+52qjhgH+Utp3IDurDTxfi+T8ccAAB7IIoiSdNUwjAs TbO77nTUURQVaaZpKvP5vHi4QVEAAAAAAAAAAOCOb3vTm2T0cz92Z8SlT/4iIy4BdbY5/RqOB8cN AAD7x45+5DLGyGw26/ydXTVaU5N9HHEpCAK5uLgolaFqBKSq7eRm26bplBlxqV5VnVbVRdV20qLu AQAAAAAAAByvYxlx6b/+gUsClwAAAAAct7rAj3UDlqqCn+QmPRGRq6srERG5vLwUESkCdPYtcKlp imQ3gKauvK66shG4VG0bdQ8AAAAAAADgeB1L4NKPXlzKeKGXAgAAAMCRSNNU4jheGtXG932ZTCad gpaiKFqa+s2dDnYymchkMpHpdCrT6VTyPJc8z4uApn1zcXEh4kyR506VXBU4Y8uaJIkkSVLa3vM8 SdO0eI5m1D0AAAAAAAAA3DHWCwAAAADg0AVBsBRkZAOM1hndJ03TYuQgUcFP66S3D2zd2NF6zs7O RJyRo6IoKgXO2LLagKzpdCq+7xfbe55XTJWLZtQ9AAAAAAAAAIiM7gQuMeYSAAAAgONhR1my7Kg2 6wYY6ZFvNklrX0RRJOIEygRBUJTRTnXn8jxPoiiqDI6ZzWbF/+fn56V1WEbdAwAAAAAAAMAdIxnJ mLglAAAAAMfCDTISEUmSpBjVZh06aGmTtPaRDZRxg15sUNbl5WVpSrIwDCWO4yLwxnKn27MjB2E1 6h4AAAAAAADAqbteXDNVHAAAAIDjoKfX8n2/FNjRlU7v2IKW5CZARiqmKpOboBg7JVmSJMXyMAwl TdPiuajXoR3qHgAAAAAAAMCpW1wvCFwCAAAAcBzCMCz+bwoyiqJIoiiSNE2L/6um4bLpHWPQkg2K sYFdTVOVyU0gje/7xShAnuctBdCgHeoeAAAAAAAAAO4YjRYyFhkJ08VhE0EQVHb0AIfIHs8c0wAA HBY3kMMdocaVpqnM53MJw1DCMBTP84r/4ziWNE2LNoA7JddsNnNSOW3T6bQUQLPtNpPbVtv2e+/a ruseAAAAAAAAAPo2Go8YcQnriaJI5vO5zOdzieNY4jjmwjmOgj2e4ziW+XxeOwIDAADYL+6UblXT w6VpWmwjN9vpKbY8zyvate5oS1XpnTI7xdkuuG21U9wvu6z7fWRHTNOPY2q/67IdYxkBAAAAAABw uhYLpopDR0EQFHepA6fAjsDgjroAAAD2i/s9XTXdlhu0ZIyRJElkMpnIZDIR3/dL03DJTXDMqWrT zj8/P9eLtsIdVUsHnR2Dfa77fRRFUTFimn7YmxAO3SmUEQAAAAAAAKdtJIy4tHORM3KReyF+H6Vp utSJY4yRLMsky7KTvOMZx8cez7ozLAzDvT9HAQA4VWdnZ8X/0+m0tC6KolLQ0mQyqWy3TqfTyinm qgKhunJHetpXbuCWO2WeZgMprKq6HIpbj8c0fd8h1P0+sqNP2dHT3IddfuhOoYwAAAAAAAA4baOR yOiTP/aDi8VC5JO/+N16fSf33P20SMXF1CrGGLm6upLLy8udXGx177jOsmypc2Ob3PqyHSn7KAiC UtCSMUZms9lO9h+wLUEQyMXFxdK0Mvt6ngIAcKrc9r3v+6V1dkSStt/h+vdMH78XbB76SGtIejo9 UYERel2SJMXvAftaXc9ufbrbu78v2tTLofxuWlcfdf+Nb3yjNugJAAAAAAAAwHF59bXH9aLdeuqh 8vMnXyg/r/Fjf+3WbkZc8jyvGNqcC6uHQQct1d2pDhyTPM9lMpksdRrxuQUAwH7So4+4U8i1HaFn VQDNMZtMJqXRf+Sm7WMfljFGfN/f6u8BN5isj1Gw9s0mdX/vvfcW/wMAAAAAAADAIRmNZDeBSy6C l/af2+EjHTp9gGOh7+i/uLgoPQcAAPtBj0pjp5AzxnQKsnnppZeK/9/xjneU1nV1aL91ptOp+L4v SZIUU+jaR5Ik4vv+UttIbn4jJElSuW5T7u8RY8zRBpetU/dpmspb3vIWERH57d/+7dK6YxcEgaRp Wky9rh/6d+whOoUyAgAAAAAA4LSNx+NhA5fs3aDuw16Edbmj+WD/uHc3d+30AY5FkiTF/4y6BADA YbCBTF1H6Pm1X/u14v8//af/dGldV+fn58X/hxRwk+e5TKfT0kP/DgiCQKIokiiK5Pz8XM7Pz4vn 9mGDx2ya63DT6LovD1Gbupea6eVOyfn5eWP5V01hfwhOoYwAAAAAAAA4dSMZi4z00kHZi7A6eAn7 Sd/Bqe/wBU6F7ixyOyEBAMBuucEsNrjYbcd2DRhyv/ff+c53bhSw7I76dAzcEWDiOJYwDBsfTUEX bURRVEqj6748VqcetCQ3x0KSJLUP3/f1Sw7OKZQRAAAAAAAAJ26XU8VdXl6Wntd1BgRBsDQc+nw+ lzRNJYqi2te59GvdC7xhGC6tdx91+shXV+4Q8Wma6tWD26SzJQiC4gEcKjfgkrubAQDYH+5vCxtc vGnAkDtd3Pd+7/eW1rXlBt2sO1LQPrWjgyCQOI5Lv6eMMaWHnuJsU+5oS32kdwzc4ypJkrWP8WOQ 53nt41joch1jGQEAAAAAAHC63vCGN8jokz/2g4vFYiGf/MU/q9d3cs/dT4vcXES1HfrGmNoReuxF b6vuTkG9XZWm95GbwKV1DZkv6VBfosqRZdlW7jZ27+Rd5z2b6skYI1dXV0VH0zoXXt0OnHVev0qX DqIh3n/bmsq7jfJVvX/b99Wvbfu6LvTxXPf5AAAAts9tt37xi1+U9773vXLvvffKSy+9JB//+Mf1 5pV0e8L93k+SpFP7oqndoN+nyrvf/W75wAc+oBeL7LAd7dZx2/qwr9G/ddz6afqd4f4Gou11h60T W6d1ddxknf1/aE6hjAAAAAAAADhdr772uF60W089VH7+5Avl5zUe+y//X7sLXFpnuyZNaQwRuNRH vqRDPciOApc2fc+29WRlWSaXl5e1F5ajKJKzs7PKaRHWyZ9lpxKxd3RXpd+FvRu8qSy7ZutSOpa3 77I17VOr7rhY9dq6161Ld0C27bADAADDiqJI7rvvPrn33nv1qkJdu2BVe8LVtr2p28CvvPKK/Kt/ 9a9avce66spnNZWzbbl0wMwqbj3o92gTuOQGSrV9z2Pn1qn9rdoUuBQEgZyfnze2+w+9TXsKZQQA AAAAAAC0Ywlc+skP/793E7ikL+R3vYho75y8uLgoXZSsu+CtbTqKUJ118tWmvqSizuoCqvrmBi51 3U+We6erO3VH1QVlyxgjs9lM8jxv7GRxNdVzlSAIlvbVEG7fvi23bt0qnnfJY9/6LvM3vvEN+bf/ 9t/K17/+9dL0J23K6J6HXSRJ0rkM6x67Vfo4JwAAQD+22Z5w2SAhcUZyscETqwKohjZkO7pLO2hV 0FGbwKUu7zcEu081d/o6PQWgPi6auDdPXF1dVdaBtipwyeanzX63hqzbKIoaA+pWscewLdfl5WXr 35SuQyvjumkBAAAAAADgdBxL4NLf+D8PPOLSKu5F9XXpEVDaBPQMFbjkapuvtoFLqy78D2XozgIb 1HR+ft76uJGbOhCno2Cdfdg0EpdNXyo6I7T3v//98pa3vEUvrjXUMbdKU8eerk+tzzLqc8NyO1pc bY6Lqte6r+vznBn6nAAAAKs1tSe+8Y1vyHve8x4REfn6178uX/7yl3tpT/RlVbvLcoNjqtpwL730 kvzar/3aVtvRTfVu6bzWtcNWBS61/Z00hKZ2c1t17cSmYDJdD/a3kpuO3gfGmMq0mmxyDHQJ0nHr se73cJ1N98ExlLHuGAIAAAAAAACEwKVqXQKXzE3AkrS8E3WVroEE2whckpb5anNBXl+cHjLPWpsy 9Knp+LGdSX2VverO5HXS1vtnlbr9rNk7sK2mi+duvdkRANxt9UXxrnXZZxndvL7yyivy6quvyte+ 9jWRhjJWvf+qMujX2I6EVXW1yrbPCQAAsEy3oavaBLYtZZfrtoE0vNb6qZ/6KfnABz5QPM+yrLat an3jG9+QN7/5zUXa73jHO4pAqqY2UhvuCEA6z321o1e1lWwe6t7L1fS7ZVXg0qZTVm+i6QaHtnQQ S9Bi5FP3NXo/uOXXbfs6bvCO3o/r0Odd001I7v7tety3LZ+cQBn5vQEAAAAAAIA6xxK49MQP/tZu Apdcqy4GVrF3nspN4FPXQIKhApfWyZe+MFp1sVNf1NQXwYfUpgx90eWUjp0su+Tue/fitQ3Qc62q w6p6sOrOl6qOOLu/dHrrHvNVZbx9+3ZpKpTbt2/L5z73uaX8ab/6q79aO4JTVRnXLYN7/Nrzpqmu 2tjmOQEAAOrpwKRV+mxP6IAmuRkB6eMf/3hp2SaBDV3osskG7egubSU3kMrV9j1t+1Kn3eY30pB0 udzft0mSFP9r7mvcOqj6jWz3T12wjd4Pth70cpcbxNN2H3RR9d5Vx8a6x31V+qv0/du4Kg9Dl1H/ btTr+y4jAAAAAAAAjsOxBC79xMP/3AYuiXzyF79br++kKnCp7gKevRCsLwDri4FW1DCcvtaUjtVX 4FIf+Wqqr6oL3HXpDGUbQRpBxd3HVcEr9iJv1boh2I6Uqs4Y7fLysvh/nQvYVlWnU5WqfVFVj1// +tdLAUJVr+tKX6SfzWali+urzqmuZXS377Lvm86tqrpqm/Y2zgkAANCvIdoTUtGucbfRAQq23bBO G7Mur5u0aZoMlW5bff1e64ubn65BJFXHSNt61MeQqZgWzqwRoGZ/x0rF1H6WTbcqsKqqTKuO+1X0 61xuGfV2dekfShmrXqu3q9oGAAAAAAAAOJbApSc+8rKMfu7HfnBxveXAJavNBTl9wXCVqjS0Pi6E 95WvquCkOqvqcwhDB2noemy6kK/rqs/82Dv22waitfHKK6/IBz/4Qb24lq4LOzWH3HRs6eOkrtNE n1fWuse6pgOXqu78rstb1zK6nTNdj/8257nOt7Q4roY+JwAAQL900FLf7QndRpWbbd1lepTKdbkB HLpd1dSOXtc6baVN6fqsa1duk1vXXcqvy1J3DDWpCiKTNY5lS+dplbo8V6Xzu7/7u/LOd76zeN62 rqqOM2koo35vfYzo9avsqoxNr9XvrcsIAAAAAAAAHEvg0mP/1f9HxjIaichCr9uKPM8ly7Liub7r uOpivDFGsiwrPbZtV/mqmnZsm/T+2ZSuxyzLZDKZ1F68nU6nYm6mP5CbkY3SNC1t00UQBJKmqczn cwnDUMIwXOoQ2MRb3/pWmc/nEjhTrNXRdZEkiUynU8nzXPI8l+l0KomalsIGW2l5nkuSJKW6kpug rD64+8fmuW6fudYp47qdjEEQlN6rqiNCauqq6bjS+7JNuQEAwO5sErTUtj1R1YbRwQ59BC3JTdso DEOZz+ed2tHr6tpW6oPbZh3iN9U6rq6u9KKVgiAoHQe27dtVnucymUxK+6DuWE7TVNI0lSiKltqt ljtSrDi/Zd1HG1XH/ToBPVEUlQJ6jDGSJIn4vl9bRv27Rpf1UMrY9Fp9rOgyAgAAAAAAAMdiNB7L 6Od+/COL6+tr+eQv/lm9vpN1RlySFdu3Hdmk7XZWmzunm7R9vzbb6TspXUZNBaDrZxs2ras6VUEs VfVTRd+tum69uPtHsxezbSeFvvjtcgO6qkZsWlVv+hhoqgtd9lV33uoymhZ34kc30yrUTZsgNcd2 1TJrkzJKi3K69Oub3sulX1dVV7ocXfIFAAC2S7c3u3xv63ZB2/aEbntpfbYxrbZ525Suk6q2Uh/c Ouyyz4bkln1V295yy7Hu7xVt1W+zquOvaru+6fe9ffu2PPzww6VlVfQ52qae9HvJzShIjzzyiF7c K/2+Q5bRWrW/AQAAAAAAcNqOZcSln/qhfyFjvXDb9N2SljuajDGm9wvi6xoyX8YY8X2/eEwmk9Jd xp7nbf1OS/fu4roAq670ne++73eqx/zmzm/L87y17vq2HUfGGS3LrfvJZCLT6VSmzqhAVQ+7zXQ6 XRoV6+tf/3rjBeaqO7Gb6qJpXRue50kcx5XHUXAzApUdeSoMw+KOer29e1xWjcTl5rNrGTV3X7eh O9Tavpc9ruxxUVVX7ueV3Q4AAOyfQI2WtI32RN1omF//+td7b2PKmu3oTbRpK23KbdPva1urzW8i XY62gSpN9DFdparO7AhdTaMwbaLquL/33nvl+eef14tL1g3oqSrjO9/5zqMqo7XOSF8AAAAAAADA oVksFjZwaaTXbYW++LrOhbmqi4irDBGMo62Tryo66EWPRDM0fRf4pheCoyha2ufrpGk7Tqx1grom k0nRgWQ7hTYRqSkARETe8pa3lJ5r63SKrev27dvF/7qTKU1TieO4sjPEdkq5x7R7XIRh2Fj3XcoY VIy21LS9tmknUV4xFYdbV/rYBQAA+0e3J7IsG7w9YYO/LTfI+y1vectaQfZWVRtTNmhHb2JVW2lT blurKlhrV/I8L5W56beeDlZpc/ysoo9pY0zlb5fJZCJJklROsdd0U8K69HH/yiuvFP/XBfYENzdL rBvQY8v40ksv6VVHU0bL/c1Vd8MXAAAAAAAAcOiuFwu56y/9h3/+kyIi/ov/G72+k7/zpn8iIiIP PPCAvOtd7xIRkT/4gz+QL3zhC2rLO6Iokh/6oR8qLXv55Zfly1/+soiI3HPPPfLAAw+IiMjb3vY2 uX37trz88sul7e20TcYYedvb3iYiIr/+67++tJ3mpi0i8r73vU+++c1vLr0uCIKlZX3nq0193b59 u5Tft7/97UU9De3ll1+Wj370o8Xzb//2b6/MY1u67t/1rnfJAw88IB/96Ecr67LJyy+/LO973/uK On711Ve3Vi9amqbyF//iXyyev/LKK/LmN79Z5Ob40nUWBIE8++yzxfO2F7KDICjV3+c+97nSeu3t b397cXz9/u//vnz2s58tXv/AAw9IEATy0EMPLQUsZVkmv/Irv7K0r+x+yvO8VPf333+/vOENbxC5 KcsXvvCFtcr45JNPFmlaq8pouZ0Dbd6ryRe+8IXSeffAAw/IxcWFfNu3fVuxzcc+9jHnFQAAYF+4 7QljTGXQT52u7YkgCOTJJ58sveazn/2s/NIv/VKpLfG2t72tsk24im5jujZpR2+qqq20TvlcURQV 7VZjjDzzzDN6k5365je/WZT3Xe96V2Wd62AVEZGPfvSj8va3v10eeOABueeee5Zes4r+3bzquLS/ qT/3uc/J7du35dVXXy3qVW6OxU2Pm7rj/sUXXyz9fvhTf+pPycXFhXzXd32XPPDAA/KRj3xEPvjB D5ba+1mWNZ6jQRDID/zADxSv/77v+z754Ac/KG9/+9v1poVjKONP/uRPlt7nbW97W+vfRQAAAAAA ADgNP/3N/0gv2q2/om6++8ftBgLJz/9ARj/3Yz+4WIjI3/ofvluv7+Seu58WcYJ2uqq6ADufz0vP 5WY7UXfjJkmydCGwKj1X1UXlKlmWLd3N2me+3PrS61w6v12n29qE3qebvncQBHJ+fl57nGRZJpeX lyvfo2vH0lCq9o1UjI5l73w+OztrdfetvpO77etc+u5sEZGXXnpJ3vOe95SWWVVp6v1v1aXz0ksv yZvf/OZWeXXL+L73vU/e+ta3ltbXvU4b6lioqj+6XkwFAACdJ0lEQVTp+T0AAEB/dLvM9/3S+iZd 2xO6jVT1Gt2WqNqmji6LbWP20Y7uiy5f1W+nttzfWJukMyS9T4wxxSicdfukin2dHVGnbn9VvV/b 48e16vdXl993q457fUzUMcbIbDZbet8gCOTi4kJE/bZeJUmSoy9jl88zAAAAAAAAHL9XX3tcL9qt px4qP3/yhfLzGo995Ldk9HM//oOL6+uFfPIX/6xe38kmgUv6QqDV5oJgXZCIrLiwZy8WrrpQWHXR vM98tQ1cqnrPpvL1TQdrdbnw26SqXFZV3UvNvusrP13p/Lv50Ouq1O3zNudR2zK3zUfVRXWrqs7b GrqMOp2+z4uq+muTLwAAsH1um7XL93XX9oTevq69Y7kBKG3ypdsfVa/R27jq2tFD0PlYVXdV2v4m 2gc6mKiKDSBrCqSp4u5nfYz1tU91ulab/aZf27Sv9LaWDdqqK4v+3VnHOFP36fTq3vuYyggAAAAA AAAcS+DS4x/9FzLWC7fJGCNZltVeCMzzXJIkKUaqsYwxYowR3/eXLuC3lee5TCaTyvQtY4ycnanh rAbOV508z5feL1Ij8gzJBmJZcRxLEASlZevI81x836+sz6q6j6JI4jgu3Q0/RH2vwxhTykfdcSIt jn1793UVY0xl51Udm486X//612UymTSm554vVb7+9a/rRVsto1WXv3W5d0NbWZZ1zhcAABie2zbV 7bIu2rQnbDvGtlnq2jvWZDKRLMvWylfda7q2o4fitjWNE2jRhZtfO4LRvrL7sor9bTKdTiXPc5lO p7X7qMr5+Xnxvz7G+gpasXly89N2v+k8NR339n1eeukluX37tiRJIr7vy2QyqS1L1e9L+5siy7Ii DZuOfej0TqGMAAAAAAAAwLEYjUf9j7iE46XvpraMM9VBVadKV8HNVAb64qy+o9U03P26TXX51exF 6rZ1pC9qt31dEzfNTdKrS2eTMr773e+W8Xi8sh6rdH3fJlEUFZ1n+m76fTnmAABAtbbtsip9tif6 sE5Z1nnNruk2vt9iVJx9UdcmXsXuJ1FBW7toZwZB0CnvQ7N109dvSzmRMgIAAAAAAOD0HMuISz/5 w/+SwCV0E9QEL0nNFBZ9cjs1sp6mSgC0uqkbOOYAAAD65069RnsLAAAAAAAAANo5lsClv/GRqztT xY1GehVQLb+ZkqLNVAd9m06nxdD5dGhgG+y0DRxzAAAAw3BHuKS9BQAAAAAAAACn5Q+/+Ud3Rlxa LBbyt/4HRlzCevZtWg1gExzPAAAAAAAAAAAAAIB9diwjLn38Iy/LeCQMt4TN5HlOkAeOBsczAAAA AAAAAAAAAADDe9Ob3nRnqjgAAAAAAAAAAAAAAAAA2JY//MYf2sAlRl0CAAAAAAAAAAAAAAAAsB23 b99mxCUAAAAAAAAAAAAAAAAA2/Xmb3uzjEcMtgQAAAAAAAAAAAAAAABgi974xjcy4hIAAAAAAAAA AAAAAACA7fqjb/6RjBd6KQAAAAAAAAAAAAAAAAAM6K7xGxhxCThkQRBIEAR6MXDy7LnB+QEAAAAA AAAAAAAA+2k8Hsnob/9fPrq4XlzL3/yH363Xd3LP3U/rRcBKURSJiMjl5aXkea5Xo0IURRKGYWlZ kiTUH+CYz+el51mW8TkDAEAN2uQAAAAAAAAAcFhefe1xvWi3nnqo/PzJF8rPa/z1/+x/sSMujfQ6 YHA2ACcMQ4njmJFRVgiCQObz+VLQEoDV7OeM7ZgFAAB30CYHAAAAAAAAAOyKM+LSQv7mP/wzen0n +zziUtUINS5jjEwmE70YA6saEWU6nZaW4Y40TcXzvNIyY4xcXV2JiKxdb0EQyPn5uYiInJ2diYiI 53mM4ISDZwOUzs7OKs8dPvMBALiDNjkAAAAAAAAAHJ5jGnGp98ClVUFC4gRcbGsqglV5ohN7N+gk aScIAonjuHhujJHZbLb2uRNFUWUwh4vAJRyTIAjk4uKidMzzuQ8Ah0+3JduinVOm65E2OQAAAAAA AADsv2MJXPrQX/6yjBcjkYVeMzDP85iKAJIkSfG/MYYOkho6aGkymazV2RZFUTHVXFPQEnBs8jyX yWQixphimed5fP8AAECbHAAAAAAAAACwQ6PxWMZ64bZtI3hpOp2K7/ulR5ZlejNsWZ7nkiSJJEnC yCc17HRX1mw2Kz1vK03TylHHjDFijJEsyyTLMkmSRHzfXyswCth3+nPm4uKi9BwAgFNEmxwAAAAA AAAAsDsjGY9EZDTSK/phjFkKGEqSZCloyB1RBqclz3OCZBq4wUbGmLXqKgiCpSmysiwT3/dlMpnI ZDKR6XQq0+l0rfSBQ+KOKsGoSwBwPGzwdd0DzWiTAwAAAAAAAAB24fr69e2PuJTnuUyn06XgJQBl erSlde+Ad0eVsVPNMQUITpXulD0/Py89BwAAAAAAAAAAAABsx2g0ktHf/omPLq4XC/mb/9c/o9d3 cs/dT4vcBFvYUWJskESVIAhKIy0lSbLUoaxFUSRnZ2dLo8dcXV11DsRom886Ov+Wzc/l5WWr8lRN 35VlWVGeqjK7613z+bz4v6k+3e3q0tJsPuRmlJIqTe9ZV1ZX0+tdfdS91BwDQRDIxcXF0jE2m81a pdmnqvx1peu9zxEHqo7Nrudjmqa1x1OVumNkyGNCKvLZVE6dl7o8u7ruJ3ucSsX5mGVZY3nryqjp c6Hus0KX1+pa966qY6vOqrqq0rW+AQD7qW3bV1psW/f92KUNIA3p1Fm1vf7OarKqDSAt06uqH1eb NJpUpd9Xe0Lnre47Xr9fVZ76TEurauusOrYAAAAAAAAAwPXqa4/rRbv11EPl50++UH5e4z//y/9k +yMu1Wm6uBsEgczncwnDcKkj2/M8CcNQ5vP5Xkz5Y/MTx7GkaapXd5KmaWWZwzDcOO220jQt1b3O i8sd2WcXNq172+mgy+h53tppbsIGiomIXF1dldatwxijF63llM5HW9a6clalqT/L2ozo4+7rVfsp TdPiONX5kpvPhziOJVIjdnVVdS50sU7dNx1bfbq8vNSLAAAoWacNsGv2e3cf2mB9Wac9sc+a2jr7 1o4GAAAAAAAAgG345je/ubvAJbczv6mjXt/B2mSbF+rbBCN4nrfWBfazszOJoqi4mG2MWaojz/MG L6u+w3xfDFH3nuetDLzaRp27+qj7uuCnNE2LoDT7aBPocmrno55mr+o8rEozSZLi/7DFiATuvm4K UutyToZh2GqfVunyuj7rvu2x1bdtHacAgMOxbhtgH+zq+3QTfbYn9tW+tqMBAAAAAAAAYKfGIxu4 NNKrBqWH3Z/NZqX1Ln1xN8sy8X2/eLgBAtLyoncfptNpKR82L0mSlDo2PM+rDQJw09DlkJtOEt/3 ZTKZyGQyWdpm6LLqAIksyyRJkqVy2/zrqS1cdfW1jrq0utR9Fc/zijqvy+PQdV5n3RFi3H14eXlZ Gj1A7982owcMeT7WHVttDHFM2DqyZbTnoe/7S2nqjiU96pJe79L5qZseRActGWNK9Z8kiWRZVnqN G7jWhfv5bM+Junz1Vfd6nT4X3bQ3pfcPAACuTdoAQ2r6btSBVXX5qvve7qIqjap09Hr7qPoerkpz nfbEPhuyHQ0AAAAAAAAAh+r6eiFjGQ0XtOR5XmlEF/uwneLGGEmSpPLitVR0ZCdJstR5nud56SJv m9FNhpLnueR5vhRk1DVP3s00AToQKM/zUmDCukEJbejOjizLZDqd1u6ruuXb0kfdG2NW1nmX9PaR 7jDRvIY72U/xfDTGLJVRRJaOk6qOJfe4qVpfRXc6unTQ0mQyKeUtz3OZTqdFWauO5zb0fl4njT7q fp33BQCgL5u0AbYtz/PGG0EOVR/tiX2h21f73o4GAAAAAAAAgG25vn79zohLA8YuVbIBS7PZrDHg xQ3MybKsdts8z0sd/jroZhd0XrvmqSmAYRfWHfFnF9ate90RZR1S2ZvYoKVVd3fXjR5wiudjUyfg qoA297gJw7D2Peum83Ppzq66Y1VuyurfjA6xDjc/fXwOrVP3fbwvAACb2KQNsAt6Gm79/XvodHna tCf2ySG3owEAAAAAAABgSKPx2E4Vt12e50kcxxLHsaRpWntB1h1hZFXwiNvhv6s7n4MgKB6bqgtg cKdRWDcwYR1xHEsURb2Vr2991v0q23iPobS5u1tqzqFTPB/rOpWkog70++jX1tWDW69631h9BxPV CYKglJ+mTtsm69S9W59uHgAA2AX9Pe5a1Qaw9Oizti29LjtNmn6kaVoa0Xbd7+99s057Yl8dWjsa AAAAAAAAALZlcS3DBi4ZY0oju7gjvNg7lW0Q06oL0nEcL005VzX93DbZjgKbBxuMZfO6iboAhm3J 1RRpcnNHuVu+TTtfNjFk3R+rprvv65bXObXzsUqbOls1IoM7klLbgKS6oMZ16A7V2JlKsOl40fqo e/1eTUGtAADskv7Oasu2pTf5fgvDcOkhN22OLMtkMpmsnb9d66M9oaVpWvm4uLjQm66k01g3rX1s RwMAAAAAAADArvzx638s49FoISILvW5QeZ7LdDotjfKy6UX8bUtv7mw+5pFB7D6qC6iwnS/zmyCm bTmFuh/CqoAXN8jGHeHnEOzrMaHvqNefcW2mids2O5Vn2xHd+qx79zvBBrXqzjw3uAoAgH1X1Y7u Guiyiud5RRDTNtvkfeqzPeHyPK/20ZV+/SZpAQAAAAAAAADuGN9117AjLq2iR/VpGgrfGFPcSbzq oYMF+pamaekCtTGmMn/HIM9zmUwmkiRJaaQsbVsdJadU966mc2MXquq87nHK5+Oqzzg337seZc3y bgKG0jTVq5b0Xfd5npdG5evy2i50ANmhjkwBANhvxhiZTCbFd5vled7Sd1EbpmY0W9/3i+/MMAxb fYfvk77bE/uuqmx1j6Hb0QAAAAAAAACwa6PxSMYioy2Pt1SvaZSX2Wwm0+m01WPoTmj3wrodmWQy mSzl45jkeV6MlKWn+7PCMFyrE6aLU6r7qjv0h9R0/mlDnI9tt9P25Zioy7/b4eRO/bHONHFSM+Xc unQHqO5UXRWMOGTdn52d9VpWlw4gAwBgE3VtAJcOZu6b+33b5jt8nwzZntABXlVtnrZ0GuumNUQ7 GgAAAAAAAAAO12i3Iy7JimAJ9+J+31MqrEsHGxzaxeS+Aouqpvsb2qHXfVfu1GHrBnCs20FWNW3Z EOfjplNrDH1MNJ0vbTsEdZ5sml2midPrm/K1Cd2p2nTcDVn3FxcXxbHRFFy1LrfuuwSNAQBOR9N3 bds2QJMhgmjd77Sm31j7ZMj2xD4Zoh0NAAAAAAAAAMdgPL6ZKm4kI71uK4IgKAUu6M55d6QSz/MG m/Zg0+CJKn10aGyirjPkFC6U77ru+6KnhmjqQGujaUQsfS5W6ft8dPMydPDIusdE0/nSJfjF7ayq OjdXjSKgj4WLi4vafbkp/V7r1p3V9fV6upjZbFZa34em7x0AAKTHNoDrUIKJ9lHX9sS+6bsdDQAA AAAAAADH4vr6+mbEpR3ELUVRJHEc68UleZ6XOgM8z5P5fC5BEFR22tctr6I759M0XXptFEVLy/RF Z71ebl4XhmGnjow+6JFS9AX+rhfIbfmryig363WnzpB3Se9z3Q9B16Wu6zZ0QEwcx0v1ps9FY8zS 66Tn8zEIgrXKow19THg1U63o4JpVwS96urjACRRrky89EpLneRLHceVnlNzUb1W+29DHXd2oS0PU vVsvMtDIC7peqo51AAD6agNY+juu7++fKIpK6R+KIdoT+6jPdjQAAAAAAAAAHJPr62sZ/fzf+Oji +nohP/sP/oxe38k9dz8t4lxY7soYI5PJRC+WIAhWBji5kiRp3dE9n8/1oiVZli11LFS9zl6IdjsM kiRZyrtbzqp06vi+rxctaVNXWZbJ2dnZUseGrrc2aWl1+3DdY0Iq8lVVZ+vUvVTkq66OdV3oPA1J 53Gd99ZprNL0HrouVqlKq2ofVm1nudtXbVeVXl/HRJZlxfOqNO3yquNe0x2dVtVnTJ26NOpUHdNu GevyrutBavLZZ91XpVW1v/UxWFXGJu776DwAAA7LqjaCa9W2+rtv3TaATqfqte7rVn0v6/Taqvre Xjctqakzbd3v6Ko2QFW9tWlP6DLW5UHntap8faYlFdutUpcOAAAAAAAAAIiIvPra43rRbj31UPn5 ky+Un9f4Pv/LMhYZiYx2MOSSQ19wduV5Lr7vFxevV6mahqlOkiR60ZKqKR2qXud53tKF9Sq6w6NP eZ7Xvq/c1LPuwLD06Ddd6lFW7MM+VZVvH+p+KHp/xRUjJq0ynU5Lo/U0WdVBMsT5aDYcVadqf/d1 TOhRAPT2xpjWU5nVbaf3cZPJZNJ6X8pNB9k62uapql51PVVtIy3qftPjoooeda5unwAA0FcboOq1 bV63iaY2/z6qaivoeqvaRlq0J/bJEO1oAAAAAAAAADh047vuupkqbrHQ67bCGCNZlrUKeJlMJpIk iWRZVnmx1xgjxpilKeCa2ECfqkAAm17V9A91r7Ov8X2/9w73tqry1qWercvLy8p6dtl0fd/vlPYm qsone1L3Q9EdNesGL1XVm6j92Lbu+jgf1zkuqwx5TDSlbfPeNu2q7arqbhV3X9a93pa96j3bqiq3 1lQ/m9R9H8eFKwiCpdGqsixbK28AgNPQ9B3XtQ0gPXw3ttFX22rbmup66DrbhT7a0QAAAAAAAABw LBaLaxn9/N/4ocX19XVvU8Vh/wVBcFQX/09B3dQS5ia47vLykn3ag7ZTgmzCDaDJKqZxQT+iKCpG zNOjMZgtjRAHADgc22gDAAAAAAAAAADQl2OZKu77/5Ov3BlxabTjqeKwXQS4HB57J7rmeV6pkw37 LQiCUhANQUvDCcNwaZoZGWA0JwAAAAAAAAAAAADAeu4qpooDsPfyPBff95em0cBhiKKoNGoW+3F7 7NQ5vu8TLAYAAAAAAAAAAAAAe+L6eiGjn3/shxbX1wv52c98l17fCVPFAdsXBIEIo2j1ps9pYoIg kPPzcxEROTs7K438w1Rlw+PcAAB00WcbAAAAAAAAAACAoR3LVHHf95dupooDcJjyPCcwY88EQSDz +VziOJYwDIspyyyClraDcwMAAAAAAAAAAAAA9txicRO4NNJrAAB9y7KMoCUAAAAAAAAAAAAAAG4w 4hIA9MiO8mOMEWOMZFkmWZaJ7/synU715gAAAAAAAAAAAAAAnKTrxbWMPvXYDy9eX1zLz/7979Lr O7nn7qf1IgAAAADADu3dPOc3+P0IAAAAAAAAAOvbu2u/Tz1Ufv7kC+XnNb73wS8x4hIAAAAAAAAA AAAAAACA7RqNRjJe3PlXrwMAAAAAAAAAAAAAAACAQbzhDW9gxCUAAAAAAAAAAAAAAAAA2zUajQhc wvEKgkCCINCLsQFbp9QrAAAAAAAAAAAAAADYxJ/8k39SRj//2A8vrhcL+dm//516fSf33P20XoQj FUWRiIhcXl5Knud69U5FUSRhGJaWJUmyd/k8VPP5vPQ8y7K9PA4AAABwx6uvPa4X7QV+PwIAAAAA AADA+vbu2u9TD5WfP/lC+XmNR/7qP5fxaCQy0muAGjYwKAxDieN4b0beCYJA5vP5UtAShmWPAxvM BgAAAAAAAAAAAAAA0Ma///ffkNGnHv/hxfX1Qj7BiEsHrWqkIZcxRiaTiV7cWdWIO9PptLRs29I0 Fc/zSsuMMXJ1dSUiUsrfqnpal60HnZe29TNUvrQ+8ikicnZ2VlnnfRxjAADguGyrnXMI2rTFhqiv 9/6FX9WLdo7fjwAAAAAAAACwvmMZcen7/tJXZKwXbiqKIpnP542PNE0liqK9Ga0HhysIglKnjzFG kiSRyWQi0+m0VTBOH8IwlPl8vhTMs282zaet08lkIkmSiDGmWOd5nqRpWtoeAAAA37JpWwwAAAAA AAAAgGNyff16/yMudb1DOEkSyfNcL0ZHq+q9r9FwgiCQOI5FekxzE+4IUEPnx94Zr9/HrROraQSj KIpKIxY1bduVmxd9bnXNZ1t6xAD9vgAAAJuqa+O4bWBjjMxms9btENuOrGsPue/p+75eLaLev24b a6i2mKuqvbp3d93cYMQlAAAAAAAAAFjf3l37XXfEJf/LNyMujfSq7YnjmJGXejCdTsX3/dIjyzK9 2cbyPJckSYpRjXbJTltmzWaz0vNtyfO8VNdNHVBpmkoYhqVAnzAMtzJSUZd8dqGPg4uLi9JzAACA bfA8T+I4Xmoj9qHu98rl5WXxf9021lBtMQAAAAAAAAAADtVoPOp/qjiXMWYpmCZJkqWAGn3nMfZb nuet72QfkjvClDFm0Dyt6gBzO63c/11RFBUBS0mSFOeD3HS0rers6kObfK7DlkO2WBYAAIDpdLo0 fe0QQeF1gdld259DtcWkRXsVAAAAAAAAAID9M3DgUpU8z2U6nS4FLwFd6I4ZPepPH6IokjRNZT6f L42StI6zszORm7vrbSeXe+f9+fl5afsgCIr3tw+33FXr6zrVhqY77XRZAAAAhpLnuUwmk1IAk+d5 Gwcvue0Zz/OW2p/7oO/2KgAAAAAAAAAA27b1wCVL32HcZoQW98K8faRp2qoTIYqi0mukJvAjTdNW ebGq8uTmx11el24QBKXtdNnqXjc0t87qHrvKm8u9w74PttxDdf7oY98+t4FNcjOlXBzHS+9vRxCI oqhyvX6+TW4wojsaFgAAwDbYACY3eKlNW/Ud73hH0bZ1uW0zuWnf6N8d7nMdyD2kodurAAAAAAAA AABsy84Cl7SmC/02sKfqwrzneRKGYecgmiAIagM/4jheeYd2U576mp7Clq1Nfk6N25F0dXVVWrcu twPIMsZIlmXi+35vAVJ6NCL9PHKmlHOnW3SnlbN5tHlz1++KDsgCAABoYm8AsI++Avbd4KU2U1L/ 3u/9XvG/DUQKgqBoj7kjOdnfHTbvtk3WVztxlW21VwEAAAAAAAAA2JadBS65wRpNF9htgFEbcRy3 6uzwPG/llFqr7tCuypMxpnSHt74ju44OXKni9TDdxTHRwWKbsCNv6Q6gJElkMpnIdDotbb+u2Wwm ctPhZY+tIAiK97UBWG4HmDsFXp7n4vt+8TzLslLe8jzfefCSq+n8AQAAp822vTzPKx5uwP6m7Qjb 7pKWbRLbhrKBSbatb4wpRnLSo0u6geZDTFvs2lZ7FQAAAAAAAACA7VrsJnApiqLSRXe3Y0HTAULu CDNVo8y0CQKSm8AXdzSbLmnpACKbp8lkIpPJpLjb2S1jk+l0WsqHzYt7d7d0DIbqQ12+9s0mI/3o KdncDqCmUcDWked5sT/jOF7qFJtOp6X9W9cB5nas7ZO+6wsAABynNE0bg9C9mxFQ2wQc1XHbJXVt epcOALejGOn2WNUNF7aNPlQ7fZvtVQAAAAAAAAAAtmmxGHjEJc/zZD6fLz3cEWWSJKm94K4v/idJ snQ3se5kaBvMUXVndJ7nS3dSV3E7WmzAiabT7irP8+Lu7nXKh9XcKUDkJgBt6A4gfbe+7hRzp8Cr YwOg9jGIDAAAYJW6oKUsy0qBQZsGL9k2V9v2sx3d0t6QYNv4aZrWThFthWFYjNakf8NsYhftVQAA AAAAAAAAtmaxkLHISC8enA26mM1mjRfd3SCOLMtqt3VHspGW00HUBRatGr1Hp12XjjidJZvS5dZ5 wOb0tGtDckeycjvFXPZ4ttOCpGm6NBqTPi4AAAD2XVM7NgxDmUwmS8FLu2IDltyRjrIsKwWP21FS 9c0PeoTWPmyzvQoAAAAAAAAAwFaMBh5xqY6d/iGOY0nTtLYDw727eFVA0dXVVfF/m+kg2tJ565L2 qjw3CYKgeGB4Q9whvwl77NtpQTzPkzAM9yZ/AAAAQ9HBS13aP0EQFNO2uTdBdGlT28DxqqnZqgKH 8jwvAtNtAJPneb0HL+1bexUAAAAAAAAAgM2NbODSMKMuGWOKkWXch3tXsg1iWtWZEMfx0pRzVdPP bZPbobKpKIqKu7rn83kR2GXLjf7pqQHF6RBadTyuQ4+aVMUNwKvq7NrFcQ4AANCXphEj3ba1O6pp GIatbh5I01TiOC6mbaub1q2JTcO+tuvUbNPptBiRyfO8lW2/VbbdXgUAAAAAAAAAYNt2MuKSvSvZ nWahTfDSsUrTdO3OFWzG3h2fJMnStCRNo4F1Ze/aX9XR5I7SVXU89BksBwAAsAvubwDXbDYrPXe3 WxW8HUVRZdvJuri40IuWuGnYUZaqRlhaxQ02WpXvNrbVXgUAAAAAAAAAYBd2Erhk6TuIm+6kNsZI lmWtHptM0bZt7jQUclPOqrKiXtNx01ae5zKZTEodQm1HA2vDpm3VpZvneW1nnqgRmfaNLk/bkQkA AMBpse2dLMuKtq/v+0tthzzPWwdtu9PCVfE8rzF4XOsyylIV9/dI2/dcZej2KgAAAAAAAAAA27fY beCS1tThMJvNZDqdtnps0snQRdNd3W25aSRJIpPJRCaTyVKZUNa2E6sr2yHkBov11Rmkg5Lq0tXb iRO4t8/HQh8BZAAA4DTYEVht27eOHoWpTtvg7rr2lzafzyWKolbbyk1wkp32uWq63z4N2V4FAAAA AAAAAGCrFjcjLo30ii1qClZyL8a3md5hG/RoTk0dBKsCOaIoKv43xmwt4OoYuJ1TfUzBoU0rpjLs I1BNByXVdTLleS6+7xcPG8y2z9xzeajAMgAAcFrajrqk2+iWHc2pTfvr8vKyGAlKbtqYcRwXQUxN Li4uirai53ml3y5DtfGHaq8CAAAAAAAAALA1ox1PFRcEQeniur5T2u2A8Dxv8LuX29AdD03BSU1B WV2s6ihp49g6MXTnVFXn06Z0kFFfdLpxHJfWH6qmcxkAAGBdbUZdsu0rd/q5LMuK0ZzatL/yPC9G gtLBTmEYNk41p9s+tl3UZ1uyakQnXS4AAAAAAAAAAA7LSMajHQ23FEVRZYeBS99h7Xle0WFQ1WlQ t7xv7khQYRhWvmeapiuDhXRgVlU6URRJGIat7jTXdHBPmqZL79FlCox9ogPIhhqRa6jOIJ3uPgTl bUIH1+376FAAAOBw6HZfHRt05E69rNd3adflNyNg6oCnqnbndDot/UYwxkiSJK3z3oY7opPbfu9a LgAAAAAAAAAA9sVCFsOOuGQDjaoeenovY8xS54LU3GEdx3ExbYP7WBUI1RcdEGTzkqZpcSe053kr g410R0ZVOrae3Hpwt2ui0/c8b6newjCsHDUqiqKl+q2qY53evOFO9L65nUO6A6dPQ3UGuYF5Q+Z/ G9zzedVxDwAA0JXb7tvEOu06G8Dkttuq2JGa7DS/ui2+CR0krtvv65QLAAAAAAAAAIBdG41GwwYu tWWMKaZx0HRHwSr6Iv4Q6joGPM8rOjKMMUtBV1WdF6vSkZptpKHTxFX3WldfU9ptmw50i+N4sOCf PM976zBzuce9Dgo7FDqATh/3AAAAm9I3Dmyiri2/ymQyaf2bpG9tyj9UexUAAAAAAAAAgKGMRG4C l3Y0XZwxRrIsqw1ack0mE0mSRLIsq+wwMMaIMabVRf0+2A4P3TnQpUyyIh1jjPi+Xxnw1FZd+uK8 x9XVlV51MHSn05DBSzpQqi9uGYbK+xCCIFiaEjHLso2OVwAAgCruSJV9WDe9XQUvuUFJpmakWhmw vQoAAAAAAAAAwBBGI5HRp37yRxaLxUJ+5pl36vWd3HP303rRyYuiqDSFlu/7pfXoRxAElaMV2aCs y8vLvQ+mmc/nIjeBP/vc4RRFUTFClx7xyzSMnAYAALAp2+ZLkqSXtp1Nr2v7y2179pWXIb362uN6 0V7g9yMAAAAAAAAArG/vrv0+9VD5+ZMvlJ/X+OB/+k/2Y6q4Y+VOwbaLO7NPRd10H57nlQLH9pkd SaxLp9kuhGG4NJWh3OSfoCUAADCk/GYK6b4ChWx6XdtfdW1PAAAAAAAAAADQzWhkp4pD74IgKAV3 HPJ0bIfAdjxVTYl3CKbT6cEF/thpEdfp8AMAADhkfQdRAQAAAAAAAABwmkZMFdeXIAhEROT8/FzO zs5KQUtMobUbdp/QodQf6hQAAOCw7N1wwTdO/fcjAAAAAAAAAGxi7679rjlV3F/9y/+LjH7hiUcX 19fXBC51EASBxHGsF9dKkoRADwAAAABbt3c/Xm+c0u9HAAAAAAAAAOjb3l37XTNw6YN/+StMFTck YwxBSwAAAAAAAAAAAAAAAIAyHo1lvJCFLPQadGaMKR5Zlonv+zKZTAhaAgAAAAAAAAAAAAAAACqM PvXEjyyurxfyCaaKAwAAAAAAAAAAAAAAAPbasUwV91f/8j9hqjgAAAAAAAAAAAAAAAAA20fgEgAA AAAAAAAAAAAAAICtGo9GBC4BAAAAAAAAAAAAAAAA2K7FYkHgEvZLEAQSBIFejA3YOqVeAQAAAAAA AAAAAADAvrheLGT0Cz/16OL164V84ul36PWd3HP303oR9kgURSIicnl5KXme69U7FUWRhGFYWpYk yd7lc0h6/+jnm5jP56XnWZb1ki4AAAAAAAAAAAAAANi+V197XC/araceKj9/8oXy8xof/E++zIhL p8AGBoVhKHEc783IO0EQyHw+XwpaOkV2/1hnZ2cShqFcXFyUtuuDPQ5scBQAAAAAAAAAAAAAAMC2 jcZjRlxahx4hyPf90vp9UzXiznQ6LS3btjRNxfO80jJjjFxdXYmINOYvCAI5Pz/Xizt797vfLf/m 3/wb+b3f+73S8nVHI3Lz1TUNu4/sSFO2fowxMplM9Oad2ACls7OzyjrfNH0AAIB94gZnN7Upq3R9 bZ+jZLqGShcAAAAAAAAAcByOZcSl7/tLv95/4JIO6qliA1QO9UK8LiOBS90EQSBxHBfPjTEym81a Hwu6/vu27jR1br66pjFk4JIrCAK5uLgoBTD1/R4AAAC75AbId22n2zZZ2/ay287u+l5NuuYDAAAA AAAAAHBajiVw6QP/8Zd2M1Wc53l7N23ZMUuSpPjfGLPzzg8dtDSZTDoF+RyyIAiKx2c+85niYZ2f nw86hVue5zKZTMQYUyzzPI/zEAAAnDy3DXZ5eVlaVyfLMr2oNbdd2MU6rwEAAAAAAAAAYB+NRqPd BC65CF4aXp7nkiSJJEmy85F1dFDObDYrPe8qSRLxfb/zwzLGLK0bKogqTVOJ47h4vOc97ykeVhiG Eobh0pRufdPHwcXFRek5AAAAhhFFkczn81K7cD6fL7WTq9iRS+1r0jTltxQAAAAAAAAA4GAtFgsZ LxZ6cX+qgkKSJFm6M9kdgQfDyPN8sICcLtwp3owxe5GnU+WOxMWoSwAA4NS1HWWpDRucVPXQUx7b kTDDMFya4nkVz/MkjuNWQU8AAAAAAAAAAOybxWKx/RGX8jyX6XS6FLyE46c7VPSoP8duMplUBu5V BfjZx5B1pIPGzs/PS88BAABOVdvRKG0QkjsNb1tZlhXtPXuDh9yM0lknz/NiW/c9wzAkCB0AAAAA AAAAcHDuesNd2w9csvQdzfpCe91dym7wSxRFkqZp7XotCIKl9OY3UyxEUbSUhy6CIFjKy6qpG9wy 2vd307Cv1cubylhXb+6jKU/bsk7nzjGwgXv7MtqRG0Sl7/4HAAA4JXmeF21Uz/MaA4hEBRjp6Y8v Ly8ly7LSw23/Zlkm0+m09Bo7vXObKYPzPC+C4i1GsQUAAAAAAAAAHJrFYrS7wCVNj/6ySpqmEobh 0oX9MAxXdjJonudJGIYSx3Hn18pNYFEcx0t5sVM3tE3z4uKilEYcx5VpH+od1WdnZ8X/V1dXpXWn xnZMWbsa7UgHEAIAAJyyyWRSCl6yNw24D3tDgW2fV01/bIPV3YdLP7fyPF8anbOJG2wlFTeDAAAA AAAAAACwz0Yj2V3gkhuo0WX0nbOzM4miqNRRoF9fN4JNm+CQNndXa+5UEjov0pAflx3tRndUxHEs xpil5W3Ksm90YNepczu43KCuXVp1nAIAABw7N3hJbtrp7sNt02ZZ1nlq36rfC66ugeV6tCcAAAAA AAAAAA7FaLSjEZeiKCpNS1V1sX06nYrv++L7fmlkGssYI77vy2QyWZomQWoCe9w03bSTJCl1IHie 1zgdm+Z5nmRZVuSnKs9V+dEmk8nSNGLGmGK5G7xUF+hSV8Z907VDBsPQowMAAACcOvcmCavqZgkZ aCTUru2zNr8zAAAAAAAAAADYTyMZLxYLvbQ3dnoF/bBBS8YYSZKk08V572ZaN31ns55WoS6wR8vz XPI8Xwp+cgOrVjHGLE33oPOzKr2qjhBhSrWD0jUYy+3kYj8DAADsnr7Bwr05wb1BwW272+mdh7Dq N4So3z1dflcBAAAAAAAAALB7i92MuGQDlmaz2VoX1+uCfDal89K2A0IHUVldA1lw2NzjJ47j0roq 7hSDOvANAAAA2+cGCiVJUtlGszc9uL9J+h71yL0Bouk3SRAEpSm0AQAAAAAAAAA4JIvFjgKXPM+T OI4ljmNJ07TxYnyVutFp3GnS6oKJtCAIisfQtvEe2C23k2k+n1fu8yiKJE1TOpkAAAD2iDtVdJZl Szc1aO7vjTYjI3Xh3gBRN6JTFEWlYPmq6bcBAAAAAAAAANhvo2EDl4wxRSCR+0iSpAjwsEFMVRfj 61Td+dyWDRqx09bZAKo4jmU+n+vNgU6m0+nS1CHz+VzSNC2OuzAMS0FLbYPsAAAAsB1tf2+4Qet9 yvO8NI11XZvS6jr9NgAAAAAAAAAA+2BxvZCxjEZ6+eDyPJfpdLp0Mb5L8NI60jQtBY0AQ5hMJqVj W24C9NzjzhgjWZZVBi1tcxQwAAAALNuHdpgNXnKD4qvalL7vE7QEAAAAAAAAADhYg464tEqe56W7 lM/Pz0vr++ROzSU3F/lt8Ij7wHYMua/3QZ7nxehi1iuvvCJJkhRTGdbdyX9+fl6MAjY03SlHpxcA ADhV7vRsbZ2dnYm0nPp3NptJkiSVget18jwvguJv374tr7zyirz00kulNiUAAAAAAAAAAIdqIQsZ b3+8pXr2wv8Q3KAl22Fgg0fcB4bTpkPnmH3lK1/pHBikA4v6duwBZAAAAG257bQ2o8G6N0ZcXV3p 1UvyPO/cFrTyPJd7771X3vrWt8qb3/zmtdMBAAAAAAAAAGDfjGXHkUtDBitZURQV/xtjuNC/I26H ThiGpXXrOj8/lyiKOj92YZ27+Ifmnn+nHlgGAADgjsDaFLykR3PlBggAAAAAAAAAALpbLBa7nSou CILSBf82dyoPaVcBLadCB+7UdQR1EYbhWo9tcYPkLi4uSuvquFOODB1kt0/nHwAAwK5Np9Ol4KX5 fC7z+VzSNJU0TWU+nxdtKGNMaWpgAAAAAAAAAADQ3vViIWNZ6MXbEUWRxHGsFw/CDZjxPK8yYCaK IgnDkFFnBqSDcNoG8hw625nleZ6kaVp5/MnNMejevT+bzfQmvdKBeowUAAAAcKdNlCTJ0u8Cz/NK AUtZlslkMllq4wIAAAAAAAAAgPZGn/qpRxfX1wv5xNPv0Os6uefup0WcAKCujDEymUyK5/P5vLS+ ie/7etGSqvRsZ4Q76kySJEsBVTpvuox17x8EQSmtJElKHRtuOu57uK/LsqwIKKnb3tL56kLnbSg6 j0O8bxRFxahFs9ms9/TXoY8Fq+oYNMZsJd/uOVF1PAEAABwCHRR+cXFRtK2qRkPq2sbS6Xd9fV9s 2412GwAAAAAAAADg1dce14t266mHys+ffKH8vEbw4Jd2O1WctY2L71WdFu5d01KzjaigEmxGj+oT x/FSZ9CmLi8vl/btPtB37UvFMWiXDS1N09LzoUd3AgAAGIIdxdV9uG0pvW6dET/zPC89dsEdKdOr GUEWAAAAAAAAAIBDc724lvFIRjLSa7bEnWJhaHmeS5IkkmVZabkxRowx4vv+zjoiTo0OEOs7eMnd j+fn56V1u2BHW9JTiyRJUnq4gU1914kVBEFpOjq5GdWLYx8AAGB/6VFV1wnAAgAAAAAAAABg31xf L2T0Cz/1scX19bX8TE9TxQFtNE2ddnV1JZeXlxsF0+zTVBrulGyrpsbT9VI3DWEX7tR5ejSnfagf AAAA1HODzt1prVe1KwEAAAAAAAAAx+tYpor7Kw/MZbyQhV4ODM6OgKV5nrd0R/k67MhaOlBn29xR k9qMbJTneWlUsD5GXQrDsHJKum2NdgYAAID1BEFQtOFsW9KO0ll1EwAAAAAAAAAAAIfkj/7oj2Ss FwLbkue5+L6/NH3fsbq8vNSLVloV6NSVnabO932ZTqd6NQAAAPaInRLOGFO03WazWbE+iqLifwAA AAAAAAAADs3rr79O4BJ2bzqdiu/74vu+JEnSy7QXdmo0e0f6PrAdT6v0nXdbp77vy2QyIWAJAADg AERRVIy25AYruSN0hmHYywidAAAAAAAAAADswvViQeAS9kue5xsHLblTaridPLvgdix5nidpmtZ2 LkVRJGma9p73PuoUAAAA22WnTzbGLLXl3ED0tsHxAAAAAAAAAADsm9FoJOORjPRy4KC5U2roTp5d mE6npeClOI5lPp8vPcIwLIKW+hh1CgAAAIcpTdPi/8lkUlpnJUkictO+ZMo4AAAAAAAAAMAhGt81 ZsQlHB8b/LNPptOpJEkiWZZVTgFnjBFjjGRZJr7vE7QEAABw4owxRXBSFTuypzGmmGoYAAAAAAAA AIBDcn19LaNfePJji+vrhfzM3/sOvb6Te+5+Wi8CdiIIgmLUpbo71AEAAAAAAAAAAAAAAA7Rq689 rhft1lMPlZ8/+UL5eY3/+P/0AiMu4fjkeS6TyYSgJQAAAAAAAAAAAAAAgD01Go0IXAIAAAAAAAAA AAAAAACwfQQuAQAAAAAAAAAAAAAAANiuBYFLAAAAAAAAAAAAAAAAALZuQeBS36IokiiKJAgCvQoA AAAAAAAAAAAAAADAjfFioRdhXVEUSRiGEoahxHFM8BIAAAAAAAAAAAAAAABQ4Q3ju2T0qZ/62GKx WMjP/L3v0Os7uefup/WikzOfz0vPsyyT6XRaWuaygU51jDEymUz04kp9pgUAAAAciiAI5Pz8XC4v LyXPc726E9ICAAAAAAAAAByCV197XC/araceKj9/8oXy8xr/2QNzGS9kIX0OuhRFkczn88ZHmqZM pwYAAABgI0EQSBzHvYx4SloAAAAAAAAAAGzXG+4ay1gv3AbP847yYnmSJMX/xpjG0ZYAAAAAbObi 4qLxeRf6tfp5F/q1+nkX+rX6eRf6tfo5AAAAAAAAAADbdNf4rt0ELrmOKXgpz3NJkkSSJGk1Ldt0 OhXf90uPLMv0Zq30mRYAAAAAAAAAAAAAAAAwpPF44BGXjDFLwTRJkiwF1MRxXHp+yPI8lzzP9WIA AAAAPZvNZo3Pu9Cv1c+70K/Vz7vQr9XPu9Cv1c8BAAAAAAAAANim8UiGDVyqkue5TKfTpeAlAAAA AOgiz/Pi5gjf9ze6gYC0AAAAAAAAAADYvq0HLlmXl5el53q6uCiKZD6fLz2iKCptk6Zp7XotCIKl 9ObzuaRpKlEULeWhSV3+3EeX9PZdVV3begMAAAB2qc8AHNICAAAAAAAAAGBLFjsMXNK6XjxP01TC MBTP80rLwzCUNE1Ly1bxPE/CMJQ4jju/9tjZYK+qurb1dmxBWgAAADgcNsC+rj0aRVHnmxTqdElr Vb666DOtVbqUEQAAAAAAAACAjVwvdhe4dH5+XvxvjCmta3J2diZRFBVBNMaYpdd7nld5od19zzqe 5xG8dCMIAonjWC+uFMdxZZ0DAAAAQ3FvZojjeGk0ULve3qSwSXu1S1qr8tVFn2mt0qWMAAAAAAAA AABs6npxLeORjGSk1wwsiiIJw7B4PpvNSutFRKbTqfi+L77vS5IkerUYY8T3fZlMJjKZTJa2qQpS ctN0006SpBT85Hneyg6BurSOiQ5ayrKssbxVdQ4AAABsy9nZWem5HjF0k/bqJmnpfG2iz7S0TcoI AAAAAAAAAEBXIxkNO+KS53kyn8+XHjZoyRgjSZJ0mibOTk82mUxKy/M8lyzLiudtL+jneS55ni8F P7mBVadIB24lSSLT6bS0LM9z6gwAAAA7c3V1pRfthT7z1WdaAAAAAAAAAADsk9FIhg1cqmMDlmaz WaegJUtPDdcXnZdTnhrBDfzKsmypbqw8z0v745TrDAAAANt1eXlZtEWNMUs3N7hB9saYpUD8Lrqk tSpfXfSZ1ipdyggAAAAAAAAAwOYGHnGpjud5EsexxHEsaZp2Dnapu+vYnb6t7QX9IAiKB77FnSbi 8vKytE5z9wfTSQAAAGBb7Mipde3/PM87/z6o0yWtVfnqos+0VulSRgAAAAAAAAAA+jAWWYgsFnp5 L4wxxYVv95EkSTGtmw1i6hI4tMmdv1EUSZqmxbR1NoAqjmOZz+d6c4gUdVP3YIo4AAAAAAAAAAAA AAAAdLKrqeLyPJfpdFqaiqBr8NI60jSVMAxLowkBAAAAQN/SNJU0TSWKIr2qs31NCwAAAAAAAACA TY1HMtLLtibP82LkJRl4mrE0TUsBS8YYMcZIlmWlB5ZV1VPdY9W0cgAAAMCxs789PM+TMAw3ChLa 17QAAAAAAAAAANjU9Z2p4vbH2dmZXtQbN2gpSRKZTCYymUxkOp2WHlg2m82W6qnukee5fjkAAABw 0vr8nbOvaQEAAAAAAAAA0NVisdh94NI2Lpa7dxIbYwiuacEdferi4qK0DgAAAEC9q6srvWht+5oW AAAAAAAAAACbWiyudxu4FARBaSSkXV9I37epEty62VTXtNwp3zzPkzRNS+sBAAAAVJtOp5JlWTE9 9WQy0Zu0tq9pAQAAAAAAAACwqddf/2MZ35kxbqHXDS6KIonjWC8ehA7CCYKgtF5u8hOGoRhj9Kqt cvMqIpKm6VJ+oyhaWlZlk7TyPC/Vhed5Mp/PJQiCyu3rlgMAAACnaDqdFtNTb2pf0wIAAAAAAAAA YBPf/KNvyugXfupHFtfXC/mZp9+p13dyz91PizgBQF3pO37n83lpfRPf9/WiJVXp2cAcdzSiJEmW Aqp03tYto9ykv2qquqq8almWyXQ61YuXbJJWEARLddGkTdkAAAAAAAAAAAAAAACwvldfe1wv2q2n Hio/f/KF8vMaD/3FfyzjxWIX4y2V6cCgISRJoheJ53lLQUtVuk6ztqm6fLjOzs70okqbpJXnufi+ 33oUqvPzc70IAAAAAAAAAAAAAAAAWPLGN7xBxnrhNhljJMuywYOW5CYIJ0kSybKstNwYI8YY8X1/ b0YLqsurOPm9urrSqyr1kdZkMinSqApisunoqekAAAAAAAAAAAAAAACAKqPxWEafeuLOVHGfeKaf qeIAAAAAAAAAAAAAAAAADONYpor7/gf/n3dGXBrpNQAAAAAAAAAAAAAAAAAwkPFdd8lYFgu9HAAA AAAAAAAAAAAAAACGsxAZM9oSAAAAAAAAAAAAAAAAgG26XizuTBUHAAAAAAAAAAAAAAAAANsyHo1t 4BLTxQEAAAAAAAAAAAAAAADYjuvr12VMyBIAAAAAAAAAAAAAAACAbbprJEwVBwAAAAAAAAAAAAAA AGC73jQupooDAAAAAAAAAAAAAAAAgO34w1e/fidwacF8cQAAAAAAAAAAAAAAAAC25K13/0kZy2JB 5BIAAAAAAAAAAAAAAACArfmz3/1OpooD2giCQIIg0IuxAVun1CsAAAAAAAAAAAAAAKfnT/ypPyGj Tz32Q4vrxUI+8fe/S6/v5J67n9aLTlIURSIicnl5KXme69U4IFEUSRiGpWVJkrBfezKfz0vPsyzj vAEAAAAAAAAAAAAAYIVXX3tcL9qtpx4qP3/yhfLzGr/wo/+SEZf6ZANdwjCUOI4ZSeZABUEg8/l8 KWgJw7LnjQ3+AwAAAAAAAAAAAAAAx2tx1+hO4NJCFnod1qADXc7Pz0vPsf/SNJU4jkvLjDGSZZlk WcZoQD2ydWqMKS0Pw1DSNC0tAwAAAAAAAAAAAAAAx2UxHt+ZKu71xbX87N//M3p9J3aquKrptTRj jFxdXR3dtFBVU19Np9PSMuyvIAhKQUvGGJnNZkd1jO6rIAjk4uJCPM8rlhljZDKZlLYDAAAAAAAA AAAAAODUHctUcT/3Y/9CxiILGek1A/M87yinU0uSpPjfGEPQ0oHRQUuTyYSgpS3J81wmk0lp9CXP 847q8wEAAAAAAAAAAAAAAHzLG+96452p4nY5U9wxBS/leS5JkkiSJIwUc2CiKCo9n81mpefYDn3e XFxclJ4DAAAAAAAAAAAAAIDjcP366zKWhQw24pIxRnzfLz2SJJEsy0rbuSPdHLo8zxml5wC50xsa Y9iHO+SOXMaoSwAAAAAAAAAAAAAAHKmRyFgW2x1uKc9zmU6nS8FLwK7o0Zb0qD/bEgTBUQTp2HKs WxYdNHZ+fl56DgAAsI82af8AAAAAAAAAAHCKFrKQ0af+248srhcL+cQ/+G69vpN77n5a5CYIxI5e Y4ypDQIJgqA00lKSJEsBC/P5vHG95W6XZZlMp9PSei2KIjk7OxPP84pl7uvavK9bzjp1r3VV1VcQ BHJxcVHKnzFGZrPZyvRcVeU0xsjV1dXKOtJsWnIzCk6VNuWVnvPVh6p9sE16f6+zr/eBLodsUBZ9 fvm+X1oPAACwL3QbaN32DwAAAAAAAAAAbb362uN60W499VD5+ZMvlJ/X+Ns//i9lLCIi2x10qdI2 LuwHQSDz+VzCMFwKvgnDUNI0LS3bBRvQpfPneZ7Ecdwqj03l9DxPwjCU+Xze6o7wNE1Laen0XBcX F3pRSZ/56pMNyBIRubq6Kq0bWtX+tvt62/WwiTRNl8ohTln0qFarXF5e6kUAAAB751jacgAAAAAA AAAA7MrNVHHbj1xyp38yxpTWDcUd4ckyxhTv73le5wCLPnmetzL4x/O8xk4QPZJVk1UdKmmaLgWi rKvPfPWtrzJ2pesky7LSFIrbrod1BEGwdJxkWSZJkpTKsmlg4L7XAwAAOD3H0JYDAAAAAAAAAGDX xguRO7FLW6SngZrNZqX1Q9BBE1mWie/7MplMZDKZiO/7YoxZOf2bNZ1Oxff90iNJEr1ZZ57niTGm MV036EvTwUG2nOukpQN6bECKLrdNt2mKtT7zNaRtjfSjO7qSJJHpdCrT6bRUF/vc4aVHGLDH7XQ6 lTzPi3PEDQzU52GdbYzABgAAjkcURZKmaWO7yW7Tx40Kx9CWAwAAAAAAAABgH4yHHGzJ8zyZz+dL DxscZIyRJEm2EqTgBuEYY2Q6nZbWi0hj4M22GGOW8pHn+dLoNVV0J4ztQHHleV7qTKlLS3ewZFlW BKRUqVsuPefr0NgRiXQduCNr6XNA14UO+lqla6dcFEUSRdHSPm+iO+uqjltrMpmsFbwEAADQRpqm xVTEcc3Uyu42XUaCPIS2HAAAAAAAAAAAh2x8Z5q4AaOXKtiApdls1hjw0hcdkFEXYCE3ATq7VJe3 NiMBnZ2dFf9nWVZbt3mel6bn0/VTpc371xkyX/ssTdNiRCLdQWZHGdMdXZbu8GrTuWY71txOufl8 XluPURQVgYRhGEocx606yLoELVkELwEAgCHM5/OlUUJ1WyOtmP7Y3mBR106SA2jLAQAAAAAAAABw DO6MuLTduKXibmh7R/TQF+O7TDu2SYDONlXVmdshs6ocV1dXxf9t6scGtQRBUPneTYbM176q6yCz nVa2M6uqo8vKnZG2PM9rrHcbTKTfU5x957KdYprulKvijjDQJmjJIngJAAD0yW1LGGNKNyDYtoZu k2VZVgqUr5vKTb9O9qwtBwAAAAAAAADAcRjJWC/qkzFGfN9feiRJUrqIX9dhMAS3o+KYxXG8NEVf 1XR9ddyOFsuOymPT7jq9mPSQr0MQRVHR6WTPAfd4tx1PTR1dljulnjvKkeauy7KsOM/s8e4GJLkd cXb0M9/3l4KKqvatfm1T0FLVFHQELwEAgD5UtUmm0+lSm8YNBLLTFbvtEaloY+17Ww4AAAAAAAAA gGMylsVCZLHdIZfyPJfpdFqaPmGbwUtox+6jumAvG8hkg5hw5255G3zlBvZMp9NSx1ObY91u454n dfVst7EdcnJznulAoX/0j/7RUief7XTT27ojK0lNB2GVIAiKIDT3GLHlcd/HTrMCAADQhRuQpNsT OjBJKqYr1tvYoKB9b8vVvR4AAAAAAAAAgEM0GsmdEZe2HLdU0KP6HPLUYPvG3EyX0ebRNH2b7TBJ kqQ0UpYWhmGrjpS+8jWUTY9BN9hHB/a4nWqr3idN0+LO+zzPV3aUNU1X4nZ4vfWtbxVpCDzSnWNu J57bQVj1WlH51tzgxNlsVptfqZgKsW47AACAKjowqapdqds9URTtfVuu7vUAAAAAAAAAAByq8WKx EJEdRS4pZ2dnelHv3OCLYzabzWQ6nbZ6VHWQaHmeS34zUpae7s9q05HSd776oO/IX5c7rYiuG2nZ aSUqSMgGg7kdZXokJKtLfemRCVy6E08HI7mjBrjcEZnkZjt7rFg2eMkeT3VWdQYCAIDT5rYv6tpG bnunLrDaDU4Kw3Bv23JuPhmpFgAAAAAAAABwTMZ6wbZtGqzU5qK9vsO66TWHHDDhdrDUdYj0xQYx 1QWxuLaZr3VcXV0V/9upQdbhTisyvZniQ2tzp75bRzad3BmdzPO8xmNY06MlSYsOLx28dPv2bZGK aVYs9z2MMeL7frGdHUHAWvXeoj4X+gosAwAAx8MNInJHidTbuKq2kYq2xr615ayu7SkAAAAAAAAA AA7BncClHc0VpwMq3AASrU3HQB3daVGXlvQQSLVLboBWXQfOLuxrvqwugW113DI1jWa06k59d9Qi HRTm5rPNcS83ZXFHGPjiF79Y/L8qDTd46d5775UkSSo78fR7VJW/KnipSdvPBQAAcLp0oLVuY+rn Vdvo3yNS05axtt2Wc+n21DppAAAAAAAAAACwTxaL0Z3ApV2ELUVRtDJ4wR2pJwzDYqoFS3c8NNFp 6U4GqZjq6tC4HSly0zkzn88lCILK8tYtt6IoatwmiqKlDhMdJGaX9Zmvvuk86zK14Y42pNPT6qYK cY+/qnTWuVPfTT/LMvm7f/fvltLQ55Smp1ipek89jZzOt+XmXxrOX52nqmApAAAAqQleCoJgqV1f tU3V75GqNpi2zbacptPQ7SYAAAAAAAAAAA7N6L/7b/7LxfX1Qv7WZ9+l13Vyz91Pi9wEHawz3ZYx RiaTSWlZoEZyqZJlmZydnS0FHOkAirq03E4M+9xNS6cjG5RRKtLTafm+X/zv0vnX6Vh6u1X6Skdq 9qHVNb26fA1F74cu7+92UtXtP02/n3vcta3HLMsag3p055mbph4NoKms7ntuko616jXz+bz4X78f AABAFR2o5LLtjaZtrH1qyzVZ1Z4CAAAAAAAAABy3V197XC/araceKj9/8oXy8xp/+8d/W8aL62tZ 7GiqOKvu4n6upkPQjDG1F/v1qDl1aXmeV+pk0FNDHFonQJ7n4vt+EZC1St20eXXL69TtQ6uvfA1F H0d1owtVcY+ftqbTaWn7Nh1dou6ybxs8V5WmPs6b5M6IWW5nX+BMrWIqRhWo4+ZFn6d6FKYu+QQA AKfLHXnJ5Qb11G1jNa3TttmWq0IbCQAAAAAAAABwLO7y3/sffHKxWMhfuvW/1es6+Ttv+iciIvLA Aw/Iu97VbvQmY4z803/6TxtH4nn55Zfl9u3b8uqrrxbp6td93/d9n7ztbW8rve4P/uAP5Atf+EJp WVVaotL7c3/uz8kDDzxQrPvc5z5X/G91KaP267/+6/Lyyy8Xz3VaVe8nIkv50uloX/jCF4qyLhaL pfoxxsgf/MEfyHw+r0znnnvukW//9m9fep3L1tvHPvaxpbqus2m+hnT79u1SHT/wwANy+/btlfn4 3Oc+J+973/saO6mqfOELX5C3v/3tpeO6TRp233z2s59tzJtNv6ouX375ZXn7298uv/Irv9Iq4OgL X/iCvO9975Mf+IEfKJa551PTOVzl9u3b8u3f/u1FeYMgkCeffLIUGJVlmfzSL/2S8yoAAIB6btvK GCOf/exnl9o5ti36wAMPFNt84hOf2Mu2XJOubTkAAAAAAAAAwHH56W/+R3rRbv2Vs/Lzf3xVfl7j S//hKzL65OThxfX1tfzc/+1/r9d3YqeK24UgCHq7YK+nfWg7XQSOQ92UdsYYubq6ksvLy96OtVMX RZGcnd358NLTtrTt+AMAAAAAAAAAAAAA4NQc2VRxC5HdzhS3sT4DSWwghXScLgLHoWlKwU2m88Cy MAxLUzVaWZYRtAQAAAAAAAAAAAAAwAkYLxYLWRx44FJfgiAoBVFcXbUbugrHJc9z8X1fsizTqzAQ Y4xkWSa+78t0OtWrAQAAAAAAAAAAAADAERr9zR/564vr62v525/7P+h1nexyqrh1BUEgIiLn5+dy dnZWClpiqiq47LHS5+hep446BQAAAAAAAAAAAACgu2OaKm70iR/+LxaLxUJ+/sgDl4IgkDiO9eJa SZIQUHFioigqpgrU05dVsSMyMUIQAAAAAAAAAAAAAADYlmMKXBovFsJUcQ5jDEFLJyYIAknTVMIw FM/zWgUtiYiEYShhGMp8Pi9GDwIAAAAAAAAAAAAAAMBqCxEZ/fRH/4vF9WIhf+d/Or0Rl4wxxf9X V1eMnHOC9HGRZZlcXl6uDFyzgUr6tUMeQ3ZEKDewqm1+AQAA0E0QBHJxcVG0vYZu6x27NE1F1Mim 1CkAAAAAAAAArOdYRlz67378t2UUf+RDi+vrhUyf+z/q9Z3se+ASUCVN06LzxPd9vboVN40hRuvS nWZVhnhfAACAU6WD2y1jjEwmE70YDaIokjAM9eIS2rIAAAAAAAAA0M0xBS6NX18s5FqvAU6Eewf9 utzOq/Pz89K6Pug7/X3fF9/3JUmSIt9xHDNdHQAAQE8uLi5EbgKVbNvLGCOz2UxvigZBEBRBS25d 2rasRVsWAAAAAAAAAE7XeLEQuV4s9HLg6EVRVPy/6RQVNoBo1d3kXUVRVBoRys1nnucynU4lSRIx xnCXOgAAQE9s+8sNUJ9MJrS3OrKjVmVZtjRSVZ7nRUCYOMFiAAAAAAAAAIDTsZDRzYhLDLmEE3R2 diZyc/f3pi4vL/WiXtg8No0Ilef5UkcQAAAAsEv2JgFjTONNAnYUK8/zGHUJAAAAAAAAAE7NYiHj 6+sFIy7hKAVB0Krz4+rqSi/aG/Zu/6ECo3bJ7p82+wgAAGCbbNB4mqZ6FVqyAfir2truKFZDTLsM AAAAAAAAANhv4+trketrApdwHKIokvl8LvP5XOI4ljiOtxIYY6e68H1fr0INu3/iOJb5fC5RFG1l XwEAAKxig8Y9zyvalrRVuukSgN/HCKgAAAAAAAAAgMM0lps544BDFgSBzOdzCcNQr6plO1OwH8Iw lDiOi2lFAAAA9oltqxC81I4N6ndHVAIAAAAAAAAAoGwk44WILJgqDgcsTVOJ47i0zBgjWZZJlmUH 3VlipynR5TsGdv/oO+zDMGRaFgAAsFMXFxciN+0VG4BjjFlqtwAAAAAAAAAAgM2Mfvyv/7XF9fVC /uH/4z16XSf33P20yM1UXatGvTHGyNXVlVxeXh50UAl2LwiCUlCPMUZms1mr42o+n4vcdEhNp1O9 ei+45TPGyGQy0ZschSAI5OLiojQK1jGXFwAA7DfbTmQa4O1I01Q8z9vrdjkAAAAAAAAA7JNXX3tc L9qtpx4qP3/yhfLzGp/8sd+WsexgtCXP85hqAb3QQUuTyaRV0NKhyPNckiQRuTlv5vP5UZ4zeZ7L ZDIpjWLged5RlhUAABwOty2SpqmkaUr7BAAAAAAAAACAvixExnf+bj94ySJ4CeuKoqj0fDablZ4f Czd4SW7OmWOdSk2PsGSnaQEAANgm2/aK41jm87nM53PxPK80OiQAAAAAAAAAANjceCF3IpiGYIwR 3/dLjyRJJMuy0nbuqDlAW+6UhMaYoxppScvzXHzfL86dq6srvcnRcIO0GHUJAADsgg4cl5v2ZpIk R93mBAAAAAAAAABg28aDRS3VyPNcptPpUvAS0IUebUmP1HOsptOp+L4v0+lUrzoaujPw/Py89BwA AGAbbOC4fRzblMQAAAAAAAAAAOzaQkTGW45bKlxeXpaeV42qYqdlmM/nlestdzsd0CI3QS7uNlXb RlEkaZrWrne3c9cHQVB6nc2nXl6VVpWqfKRp2vr1LpuWTs99NNWrq8989c0YoxfhwLmBje7IWgAA AAAAAAAAAAAA4DiMRiJjvXBXdnn3cpqmEoaheJ5XWh6GoaRpWlqmXVxclF4Xx7EEQSBxHJeWh2HY GCQUBIHM5/PKfHieJ2EYtg40sgFGNi2dnuvi4kIvKukzX306Ozsr/h9y2jQbgNZUPrvNUKqCxroG jPVRjrp8NKW5Lh3YCAAAUKePdo5W1e4Zsu3T1ib5cm/A6Po6/Z72dUPUPQAAAAAAAADghIxGMpaR Xrod7vRPuxox5+zsTKIoKgJyjDFLefE8r/ZCvB0JRk97F8exGGOWltdNeRXcBDq1YQOj6qRpuhRg tK4+89W3vsq4ig1Aq9t34mwzRIdM2hBU1yV4aZNy2I6qunzEcSzzgYPXhkwbAAActk3aOZoNsqlq 94jT9lmVTt/a5qupfVgVGN5UnjZtwD7rHgAAAAAAAABwikYylh1ELkVRVAT9iIjMZrPS+r5Np1Px fV9835ckSfRqMcaI7/symUxkMpksbdN0IX4ymch0Oi29xhhTLHeDl9xRglw6OCjLsiK/VXluyo/u VMiyTJIkKaXnpjuZTErbu/rM15CqOmH64HauNL2HrQfP8xo7i7pyg+rcuk+SRIwxMp1O9UsqrVuO 4Ga0LZsHY0zpWEqSpHR89xm8tssR2AAAwOFYt51TxQbtV7W/dNtnm4E4XfIVNowYm+d57evc8nRt A0oPdQ8AAAAAAAAAOF3jkchgsUue5y1NR2Dv2hXnIviughS8m6nOdPBOnuetAo706ExWl6nL9MX7 JEmWAlLyPC8FCblBXy4dNJJlmUyn09r6rVsuPefrELlBQ6uOUfd4CVdMCbgut+7zPF86ZutsUg4b uGbP08lkUnp9nudFUKA9F3SwGwAAwFA2aedUtdfcto/v+5VtX/eGhW0FL62Tr6ryaVWve/7551u1 AbWmNmCbugcAAAAAAAAAnKbRSGQsIjIaKnKphr0IPpvNKi98b1Nd8NG2uEFRWZbV1kee56W8trng 33Tn8ypD5usQ2PIbY2rL7nI7kPoaecrdfzqQrK1NyiHO6GGrXuuOmrZuXgEAALrYpJ2j22tuANKq APHcCd5vGyS0rq75sgFCTYFEmluee++9V6RFG9DW/e3bt4tlTW3AproHAAAAAAAAAJyykYxlNLoT wrRFnudJHMcSx7GkaTroxf5V6kZHsiPJ+DdTyA3F3iUuLQKN3Ly2ueAfx3Ex5VfXOh4yX4fAlr/u +Kji3kneBzcoLAxDmc/nxf5sa5NySIsOMkvfSQ8AADC0Tdo5ur1i09JToNVx22lDtn+75ssNEOrS ZnTL88orr6xsA9p83bp1q7ZOtbbbAQAAAAAAAABOyLdGXBqGnc5AP5IkKS5c2yCmLhfW+6RHmNml OI6XptWrmmKvjhs8Ytkpv2zaXQNfpId8HRq3fnZ9fEwmE0mSpBTA1HZfbrscboBbU74AAAA21Wc7 Z920bMDUUG3hdfNlfw90Daiy5XnrW9+qV5XofLVtA666GQIAAAAAAAAAcJrGQwUtNcnzXKbTaTEl gdwExzRd6EY7tl7rpsDTgS/oz1CdMXmeFwFMbmCa3Zd978ehygEAALBrfbZz+kyrTzZfXQOq9rU8 AAAAAAAAAIDjNRKRsYxEZLTQ67ZCjxDU9a7gY2OMkSzLWj2aOhbcQBcd7OIKw7BV0Etf+RrKNo6b IAgkTVNJ07Q02tSqUY/WYd9Lv48N+LOjlrmjMLXZj7LlcmxC5yXP89JzAAAA7VDaOUNz202nVG4A AAAAAAAAwOFZyOhO4NIuRl2qcnZ2phedlNlsJtPptNWjTSBHnudLwS46iCkMw5UdGn3nqw91I0r1 zXaAxXEsnueJ53ml9XbUoyAIegmgCoKgeC9XGIaSpmnx3AanucFLTbZRDvd1mx4H6+YBAACcnj7b Oavaxa5VafWpS77EaSt3yWOXbS1dp01twHXSBwAAAAAAAAAcv/FIRjIa7S50adNgpa4X8feNG0h0 cXFRWte3qin66mwzX+u4uroq/l8VtNOV2+FiO8DsqFO+7xcPNxAsjuPiWN4kqMrWtTGm9D4iIp7n LY2sNJvNiv/1ubDtcqz7uiru50If6QEAgOPSZzunKdimSVVafXLz1TXox7aVu7ST25ZH56vt69pu BwAAAAAAAAA4ISOR8e5Clu4EWrh3RLvBKFrdxfp9DKrpwp1azfO80qg6u7Sv+bL0lHQ6aGdTbuCW MUYmk4lMp9PSNm4gmDGmOJbdYKJ1uedCnudF8JLufFrV0batcrjnctN53FbbzwUAAHC6+mzn2GCa Lr8t+mz71LFl1G3AVdx6aNNO7tqWc/PV5nVu+rruAQAAAAAAAACnbTzaUfRSFEUSx7FeXOJ2RoRh uDTazL4F06wjz/PSXcee58l8PpcgCCo7GeqWW1EUNW4TRdFSh0xV8Evf+eqbzrMu06Z0p9cqbqDN JmyHjx6JzC2vW896+jht3XIYYyrTq+OOFNX1PTV9nm+aHgAAOE5d2whN7RwbTON5Xqs2rdte6ZqP Lty0u/72cUeaaipTcDNVsXRoy+ltml6n09d1DwAAAAAAAAA4ZaObqeJkmMglG+xS9dB3DVdd7Naj 6oRhWErD8zy5uroqBdjYbdyL8+5rdLCUztcuVN11HMexxHG8lD+df1cQBBKGYe1r5zf17gbZuHWn 9ZWvobiBbW07mbpwp2ib1wRttQnA68Ie897NKFfue9p9dX5+LlEUSZqmxb5smv6vaznsiAVVql43 vzkXpeaY6cr9bGg6PgEAAPpq57hB+6vadrbNLao9OhRdRnujwirT6bRUpqrXpWm6sm6kpg3o8m6m NNbbtU0fAAAAAAAAAHCiFiKjxz78AwtZLOTp//t/oFd3cs/dT4vcXMTWQUmrNF3EDpw7dDX7OjeA Q6+Tm+Cktnzf14tK3PK57+HmM8uyIgirbvsqVeWo4qbv6lr3q/JjbZqvIel9myRJ67u47Wub8h0E gVxcXKws/+3bt+Xee+8V6ZiHKk3HfJU279e2HE3HRNNxYIyR2Wy2Mh+r6PdoUzYAAHDa+mjnWLZ9 2LRtm236tqp92NRm0u2rKk1laXr97du3RUSKdnCdpvTFeY+mdjkAAAAAAAAA4Ftefe1xvWi3nnqo /PzJF8rPa/zcT/z+naniZDTMiEurGGMky7LGi9h5nkuSJKW7mdu87hBNJpOirKZipBljjBhjlkai si4vLytf57J15/t+6/rbNF9D0iMNxSumwugqz/NS+V223EmSyOc+97nSuk3keS6+71e+pzjva/dj XSeVq2052h4TovIxmUxa5aNOEARLnWJZlm2UJgAAOA19tnNs27JpFMkkScSsCMTpW1P7sKp97uqr biy3Dfjwww/Lww8/3Gv6AAAAAAAAAIDTMnrikR9YXC9E/t7//D16XSd2xKVdCIKAAIcTVncHujFG rq6u5PLysvL4aDPiUltuHpKGO943cWx3okdRJGdnZyI304u4tt0ZCAAAAAAAAAAAAADAoTieEZf+ vzKW0c4GXOrNEEEiOBx2VC7N87xOU+dhu8IwFM/zloKW7AhOAAAAAAAAAAAAAADgeC1kIePRaHTw gUuAnT5DT1GBw2CnG/F9/yhGkwIAAAAAAAAAAAAAACssRncCl4hcwrGYTqfi+774vi9Jkgw2bRs2 Z/eP7/symUwIWAIAAAAAAAAAAAAA4KQsZDwaiRC2hGOU5zlBS3uM/QMAAAAAAAAAAAAAwGm7M1Xc mNAlAAAAAAAAAAAAAAAAANuxuBO4xIhLOE3GGL0IAAAAAAAAAAAAAAAA27BYyFhkJKMRoUtAX5j+ DAAAAAAAAAAAAAAAoNn1QmQ8HokwUxxO2dnZmV7U2fn5uV4EAAAAAAAAAAAAAACAOqORjEcjRlzC abq6uhIREc/z9Kq1Mf0cAAAAAAAAAAAAAADAaouF3AlcEuKWcIIuLy+L/4MgKK3rKgxDEScYCgAA AAAAAAAAAAAAAPUWspDxaCQyGo31OuDo5XlejJAUx/HawUtpmhb/T6fT0joAAAAA+ycIgrXb/wAg zufIKXyenEo5AQAAAADA9i0WImNhmjicsNlsVvwfx7FEUdT6QlwURZKmaTHVXJZlehMAAACgEEVR p/Ym+hVFkcznc5nP5xLH8UY3LwDA+fl58Vlyfn6uVx8VW844jmU+n/NdBgAAAAAAerMQkfFIRjIi eAknKs9zSZKkeB6GYXEhbtUjDMNS0BKjLQEAAKBOFEUShmHR3qTDd3uCICja7wDQF3f6+TAMT+pz 3X6XRVGkVwEAAAAAAHSyWIiMPvnfPLK4Xizk59Izvb6Te+5+Wi8CDkoQBHJ+ft6qQ8NOMXd1dbW1 gCU7uhNBUgAAAIdnPp+Xnh9zmy6KIjk7OyuC/F1Jkkie53rxYNwRUi1jjFxdXYmc8FTPNpCujjFG JpOJXlypz7RwHGwwyy6OiyAIJI7j4vnQnzl6FOZj/Uyx+7Tqs32ofQkAAAAAAJq9+trjetFuPfVQ +fmTL5Sf13jyv/7dO4FLC1nIJ//H4QKX6i5c2wvGl5eXg15IAgAAAIBd2qfApaE62oMgkIuLi6Xf fa4+328VHcBgjJHZbNbpt6cOyvF9X6Qi7abgCHffN20nHbfdhC6X1iUQoc+0cBwOMXBJv86e66us +7pt0efnOp9hWtVn/VD7EwAAAAAA1DumwKXxaCwiA00Vl6bp0pRaLs/zmCoBAAAAwNFzpyc2xmwt eGdbbCd41e8+lzu10tB00NJkMmndMQ8AbejPlFOYOi3Pc5lMJsVI1HJzfY/regAAAAAAYF1jkZEM EbZUNSR/E4KXAAAAAByrPM8lSRJJkuQoR6W4uLgoPTfGiO/7pUeXET02pYMHZrNZ6fmpm06nS/sn yzK9WSt9poXjMJ1OT+q4cANTm0aZOjb6u0x/DwAAAAAAALSyEBmPRiJ9Ry5VBS1lWbZ00dq9aGWM 2dpFbAAAAADYtjzPj/Y3T5spg7ZZdjd4gN+aAIakP19O6aY8N2iLUZcAAAAAAMC6xneilvqLXIqi aOmite/7S1Mh5Hku0+lUkiSpvbANAAAAANhvenSjXf+220Z+dKACgNPm3pjnTlO5r/r6DNPpnJ+f l54DAAAAAACsspDFnRGX+gtbWr6zddVF4jzPV24DAAAAAK4oimQ+n8t8Ppc0TYvlaZoWy+06Hcji ctNxH+5roihaSnedNN1Hm1EpqsoYBMFSXtI0bUxPv7d7o0kYhkvr3UcbZ2dnxf/GmNK6Xdu3/PSt 6thcdcwfmroyNh3z+8wth1uGqvPdcsu/at+uW191n1ubfBYOZV/y4dI3662q7ypVx8A6n/nb5gZt rTNVnltGfewDAAAAAIDTMBbpb8AlfaFoNpuVngMAAADAEIIgkLkKypGbqWvCMFy7MzRNUwnDcCnd TdJcVxAEEsfxUl48z5M4jreen33lBlJdXV2V1nV1eXlZ/L9PQVD2eK86Nu0xP28ZILevVpXRHvOH VsY2x5EubxtD19c+fBY2lbHPfLTZR1XcAJ4+Rh7q4zN/G59h7nus4+Lioiij53lL1xYBAAAAAMBx G4nIeDQayaivyCWHMWZpyGgAAAAAGMLFxUXxvzFmqYPW87xWnbzW2dmZRM402HVprhsE0JXneaUy VtlmfupsGijUB93Jf2xsMEMbcRzv/JhYR9sy2gCOQ+KeI25wixtw16QqSGTI+tqnz8KqvLv58Txv 7YChPq5fufsmDMON6uRQPvOrdM2T/sxuey4AAAAAAIDjMBqNZCzS31xxXFwAAAAAsG2e54nneZJl mfi+L5PJRCaTifi+X+pgr+rknU6n4vu++L4vSZKU1slNp7ibpt6mqpPcTbMp7a48zyvyU5duVX50 Xtw6sXVW9zh0VUEeQ+gj6KEtHbyh92GbY2Lf6YANt4xJkiwFzhzjCC3uZ5Ub2FF1rPVRX0N8FvZJ B57Wfd6vM1VZX/I8L9X1pnWy7mf+OqqOq7Y2ea2okapkTwJgAQAAAADAdo1FFnpZL7jQAAAAAGBb jDEynU71YplMJqXnbTt5vZvptvTr8zwvdbJu8+YNY8zK/AzdaT+fz5ceblCFnaKs6lEVLIFudB0m SbJ03Od5XgpuGPqY6FsQBKVjKsuyUhnzPJfJZFIKEDm0MlaxZdZBHKsMXV/78lnolrHt5/0uzGaz 4v8u9VxlHz7zt2E6nUqWZWKMWTp+AQAAAADAaRgvRjeTxvVAD+8MAAAAANvgdhZr63by6lFKdk13 YFvbGlXoFOV5Xox0ouvfHQWlrTiOlwK63McqbnBIlmW1I53okV/0SGP7TAcX1gUx6HP+UMronq86 2Ged0Xr0dkPU164/C3Ve9bno6hr41Td9Tupgwy7qytnlM7/vz7ChTKdTmUwmtccvAAAAAAA4XiMR GY9GPUUtAQAAAMCO6M5il+7k1Z3gdepGkXWnVNIdwfugbflweNybhfRxrbnHrw5u2WduME9TwIw+ 5w+pjE30fnXP56r62EZ97fqzsEtedf3twrZHPOMzHwAAAAAAHLK7RiJjEZFRX0MuAQAAAMCe0R32 bTHywzJ3hA77cIMlsixbWm8f1Ge/Vo3etI2AiaHVBcwcMvfzyAai2cATt7w2IKlL0M5Q9bVP525T cNa+0N85BBYBAAAAAADUe8Nd4zuBS4ue4pYO4QISAAAAAAC7kCTJUkCX+0A3x3INwg1OskEv7uha 1qaBScdSX4fAnbIujuPSOgAAAAAAAHxLEbjUF/ci2jHc3QkAAAAAOFxdRqs5NMYYybKs1WMfps/C auyn3bLny6YBYlIxStUxj7qky6ZHnAIAAAAAAGgyloWMZSQio36GXNIX2fTFCwAAAADYNTpVj9up jCozm81kOp22ehzqMW+nS6tTNSrRIXCP0SAIinLa/WTXu+uk4pqLdqz15RqyDO450wd31KVjDqI8 5rIBAAAAAIDtGI9kJP2ELS13ADAcNgAAAIBtaLppIooivQhH7JhHAnYDIS4uLkrrjoW7/5qCVA75 vF41ok/den3NRU6kvnTAVtPn/T4F0bj5DsOwMd+HzA2YO5XAUQAAAAAA0J/r62sZL0a9Dbgkoi6k ioikaXq0F2cAAAAA7IemIA46VcuOObBHOgY5HBq3bJ7nSZqmpfV9aQqA6aprWnr/1QXc6NGF+hol Zxc8z6v8bGoThHOo9dXluNABW031osvZRZqmkqZpbR12led5ab825fuQufuyLugOAAAAAACg3kjG etGm9MUvz/MkjmOJoqjygnEURcUDAAAAANbheV7lb4o0TelUVXSgQ93NJlXLDoEOcmgKajs0OhDC 8zyZz+cSBEHl/qpbXqXNcVH3u17bJC1dxjAMl85tfV5XBf3UiaJI5vN58ajKw67pADVpKOPQ9dWn TY4L9ya5utGLdDm7sK/1PK82/XXMZrPi/2MMFNXHmr4m2MYhnJMAAAAAAGA43/zj12X084/90GKx EPnE3/9Ovb6Te+5+uvg/CIK1ponzfV8vAgAAAIAlURSVOoGzLCue20553YFtjJHJZFJaNp/PS8+b tPm9ovPVRZIkpaAbnVbd++vfXzqdKm07+LMsW9kR7abVZvtt0HXXpk6G4h5jq/LRZlu9v1epS6dK m/Oh7T7eJK0uZaw6r5voY6PuvBpSVfncuqha31TOqu3r1KXTZn9Zm9RZm/epOi7qyqg/793vAulw /Ot81dXTOty0q8pmtT02dV20LeMQ3LKtW2dtyw0AAAAAAMpefe1xvWi3nnqo/PzJF8rPa/ytH/v9 /kdckps7/nzfX5o2DgAAAACGoEco0UE5xpjSyBenbjab7WzUlW3QgQFxHB/NKB7293bb/ddleqok SfSiJW2n4tokrTzPW71+0/O6bR1uW1UQStNocduqrz60yWfVcVFXRvfz3hizdO63pY+Fpvruys33 uoGt+0hPVdnHsaX3AwAAAAAAOH6j0UjGIiMZjfSqfkynU0mSRLIsq7z4YIwRY4xkWcYdVQAAAADW Zju19c0T9vfGZDKpDAY4VXmey2QyqawzyxhTGUBwKHSQwzEFL4lIaf81/d7W03M1qTuPxEmvbUDH pmk13RC1yXm9D8d0VZ677KcqQ9VX3zY5Lupe65ZvXW7QjdkgAKqKrvND/xwKgmBp1L4sy5bK2dY+ nJMAAAAAAGB3/vj112X0qcd/eLFYLORn/vv+pooDAAAAgCExtQza0FMqWTY44vLycu3OdhymfZza EMfv0L+zoigqAoyqRjTcJGiMcxIAAAAAgPUcy1RxP/ujvzvMVHEAAAAAAOxa0/RSxzRlE9rTQRfA NuhgnEMbdSkMw8ppWDcd6Uo4JwEAAAAAOHmLxYLAJQAAAADA8WqaQgunTQeTAENyP4POz89L6w6J nZrP9/3ez6G+0wMAAAAAAPvvG//+GzL6+Zup4j7BVHEAAAAADsShT7uD3bKjnTBN3GnRUwfyuQG0 M9RnJuckAAAAAADrO5ap4qIf/C0Zj0RkJCO9DgAAAACAo5Tnee8d8Dgsxhi9CECNbXxmck4CAAAA AHCa/v2/+3cyltFIiFsCAAAAAADH7JCn5wKOEeckAAAAAAB47f/372QsjLgEAAAAAACO3OXlpRhj xBgjV1dXejWALeOcBAAAAAAAb3rjm2T0qZ/8kYWIyE8//Q69vpPf+GffrxcBADbgeZ5eBGBHmLoC AAAAAAAAAAAA++K9f+FX9aLdeuqh8vMnXyg/r/Hf/sA/vzPiEgAAAAAAAAAAAAAAAABsy2KxkLHI QhaLhV4HAAAAAAAAAAAAAAAAAIP493/4h3bEJQKXAAAAAAAAAAAAAAAAAGzHXXe9QcYyGsloNNLr sIdu3bolt27d0ouxAVun1CsAAABwB+1jAACA/nD9EQAAAADqvfraazL61BM/spDFQn766Xfq9Z38 xj/7fr0IPXjuuefk2WefLS175pln5L777istO1TPPfeciIh8z/d8z07K5Pt+6fmjjz66s7wAmud5 ehGAHTHG6EUAcFSO/XcHgOO16+sK2D8cE9g3XH8EAAAAMIT3/oVf1Yt266mHys+ffKH8vMZ/9dD/ KmORBRPF7aFbt26J7/tLnQfHxHaOPPvss/LYY4/txV1HNi/2IhcAAABwzE7hdweA47WP1xWwWxwT OARcfwQAAACAb3n9+lpGn3rihxeLhcjPMOLS3njiiSfkxRdfLC27//775c//+T8vIiKPPPJIad2h qrrbaNtlsxcIvvrVr1bW+ac//enSMmCbGHEJ2B+MuATgGJ3K744h3bp1Sx577LHiOaNUHaeqEclc /HbcnV1fV9DHxnw+L63fd8f4GbbrY+LY6WNe4/OwGtcfAQAAAAzhWEZcevg//bINXFrIzzz9nXp9 J0MELrkXG1ZdPFm17ar1rlXbrlrv6rKtVFw0uv/+++XDH/7wytdJx/fqsu1Q9u1i0q1bt+Tzn/98 6QJCl4sHuuNnk2Gf+0xrH6260NVk1fH63HPPLV0IWvWafWUDl77jO76jWPbLv/zL8v73v9/ZqmzV tp/5zGckSZLSsrZ0em5aDz74oDz//PPO1t30mZbry1/+svyDf/APRETkS1/6UrE8jmN573vfu1Q/ QJ1TCVzS381dHern7TFyv2u7tGdWqfqelQHaKvvQVj12m/zuGLItd2h0PR5b+XbN/V20y9+Lq475 Pj9nu1qVtybHcLzqtsu2jxNd/wQuVdPv07ae3M+AtufZro+JfaWP1S7c42JVOm33k6X3l9Z3G3Mf bHr9EQAAAACsYwlceuTOVHHYJ7rz4NOf/vRR/Th3PfPMM8X/999//84vJN13333y6U9/Wu6///5i 2YsvvrhyWHE7vYbuwFtnWPI+0zolzz33nDzxxBPi30xzousPp+nhhx+WD33oQ/KlL32pFLQkIpIk iXzoQx+Shx9+WL785S+X1gEAlq36nrVtlSeeeEKvqvTEE08UD9o3u3FKvzsAHK99u66Adtp+97tt Djsa4CocE8fFtjF932993Oy7da8/AgAAAMCx+hN/4k/KWGQkdx7YNTtssPXhD3+49PzY3HffffLM M8/IM888s1d3Fem8fP7zny8919z1999/vzz66KOliw9up9AqfaZ1Km7dulXbiYrT9fDDDy8FK1X5 0pe+JB/60IcIXgKABnokyCYvvvjiUptWu3Xrlrz44ovFg2CZ7dP76Nh/dwCbeuSRR2Q+n5cejz76 qN4MO7Cv1xVQpr/rf/M3f7P0vI22AUgcE8Pa5edhlyD5Q6CPz1XXHwEAAADgWH3bm97EiEv7xB1q +f7771+6sHOM7rvvvr0sp3uHXtNdT7bjTZw71R955JGliw91r3f1mdYhuf/++5cuejU9Vh0vNuAL qz344IPy+7//+60fhzKt2mc+85lS0NKDDz4ocRwX5fjlX/5lefDBB0uvsdPJAadOf+bah/u52vS5 veozGofHbZ+I8z3r7ne33SQ3bdqm9so6nZXoV5+/O5o+E6oem7wXgGanej7u63UFlLntya9+9aul dVXcIFv3hq42OCaa7etnxTPPPFN632eeeWbp+k6bIPlD0vb6IwAAAAAcsz/65jfvBC6NGHFp5/SP bh2sgu3SF2XqOtjc5XrYcn1xZZU+0zo1bieqDfjC6UqSpPj/wQcflOeff14+/vGPF8ve//73y/PP P18KXvrSl77EqEsAUMGOWiAqsLpuG6uu7SSqs7JrRyQ2x+8OAMAufM/3fE/xf5uRHN32gr5GgtNw 3333ySOPPLLUzlwVJH9I2l5/BAAAAIBjNrprJOMRMUt7Zx86cJ577jnxfV983y+GYb5165Y88cQT xXK7rs3FAje9useqdG7dulXaXne6uLpsW8cNFnLvSu9L27pro8+0Ds19991X2YmK0/SZz3ym9Pwn fuInSs9dzz//fOn5b/zGb5SeA+jfc88910tbwp0ioiq9db73Ue++++4rgoPr3HfffWu1YemI3K11 9lnf3PO36bOgTdu+6nNik98wVtVnV10e6ujfJ25ennvuuVb5cctnX+Pmy6ahl7fNa1U5236m9lX3 7ra+75eCG5599tml9e6jTh91fyr62o/PPfdcKS334R5PVcdc0/FWl6b7aMpXHVtGnRebn65prlNn Varqp+056apKp2safdABGqvqwz3/3aAn11DHRFWdtan7uvetOrcs931WpX+qugbJW3X7cZ1jou/P CdfQ1x8BAAAAYN9dL65lLDISBlzavX2/k+zWrVvy2GOPLd0V9+KLL25tjvn77rtv6cd83YUBd174 +++/f62glroLYy53Gz3UufvcvUBnL1i9+OKLpXz2mRZwqr7yla8U/z/44IMrp7eL47j43x2pCUC/ bt10Gj/77LONbYm67/UqNs2q9J599tmttE2wHr3PsF37/rujT5v+hmn67Orrc8Z+ZrXJj/b5z3++ lK/HHnusssxNv5tkRTlt/vyOnf9V+ZAOdb8Nm9T9qRhyPz7xxBOVx1xf51ZbTzzxRFFGnRe5yc9j jz3WOqCkjzrr65xsSmfb9Wy513SaAk90feugp6E01Vmbum8TEKzTRTtV1wTrrNqPXX979P05obW5 /ggAAAAAx+yP//h1GctIRBh2aeeqfvjuixdbBMW8uKV52B955JHShaCqfD3xxBOl+mwaHaCLqvK5 F89efPFFeeLmDjw3D25+7cVZy+0s6jMtAO28973v1YsA9Mx24K1iOxHa0kHKuqPIfpdiv+j21DrB 5djMPv/u6FMfv2GqPpPcz5sXX3yxsePd1Wa7Lp9b9neAnlL6scceK6ZRdtW9f9vPaHECo1bpo+77 VFd2V5e6PxVD7cevfvWr8txzz5V+41Z9h3dNdx362kGTZ599tlVQgm6faKvK1uc5WZXOup9hQ2gK PHFV1eMQ+qh797qMW7f65rQ6BLA00/VTtQ/a7scXW/72GOJzYpWqcgEAAADAMRuNR3dGXFroNdgp /UN8H7z44oty//33y3w+Lx5dhml+5JFHSq+ten1bH/7wh4v/X3zxxdJFgVu3bpUuKKz7HtLhjj73 PV68uQPPzcOHP/xhuaVGhbj//vvlmWeeWeqs6zMt4BR96UtfKv5/3/veV1rXxpe//GW9CMCGdKfn o48+WmoL6M6oNhf7X7y529mm9elPf1o+/elPy3w+L6W3qnMQ29fUXsT27ePvjj5t8htGB7HUfd60 7Xiv+z2kPwf175smdrpkt0z3339/sdwNXqrrNNedtu5ndJf60tate11Hbt3ovOlHnSHq/lSsux8f eeSRUr3r18jNsTp3zim9TV26VftyHToY4f6bgD83XR0AWHceuXT7pCqPVWWz+jon+/4M60vb7522 owP2eUz0VfdtuO1T9zhsex3qVLWpnz5/ewz1OaG1KRcAAAAAHLO77rpLRr/w5McWi8VCfvrT36HX d/Ib/+z75bnnntvoosczzzxT+rHm+37tOm3VtqvWu1Ztu2q9q+22bbdr0iWNVdvqfWkvgGt6u3nD BWNN3wVVlY86+n3ta/XoRFV57mJVPVm3bt2S3/zN36yss6oLHU356istXUddNZV3U27emsqwibb7 bp95niciIt/xHd/6fP7lX/7lxunPVm37mc98ptOUaHEcy8c//nG9WESl9eCDD8rzzz+vN2mtr7RW lb/KOq/B6THG6EUnZd3Pbf1d/+ijj1YG2urvt6r2hP5ea8qH+x1Q957Hbt19tgm33qv2oah93ZSv Y/ge31d91G2fx1fb/LQ5r9t+Tujtqo5X9/3q0hG1nawoQxP9eVmVp7p6d1/r1k3d9pauh7q8d82b 1LyfVGxXlZbL/cyo2++balO+Kqvqd1t0na7SVI86rbpy6e1W1ZmuY6l5zTp1qtOuO461tue4Tb9u G10XbbdbVX5pKIsuc1VabcvX12dYF20+99u0Kero+ql7D1dfde+m455rtjyPPvqoPPvss6X0Nylr F7qMqzR9VmjrnLtWm+PB1dQe0PtHr7fa/PaQDufRqs+JNrrWw6a6Hg+am0fSWo20uiGtbkirG9Lq hrS6Ia1uSKsb0urmlNJ671/4Vb1qt556qPz8yRfKz2v88F97yU4Vp1cBZXU/vNveLde3RyqmjGvb ETaE++67b+lOvw9/+MPiV4yMtCpffaZ1CF588UXxfb/x8VzDHXCn5kMf+pB8x3d8R+0DAPaJvhO9 quNA1GiKcnPxfxX9Gpd75/MmjX+0547s4LbRmjSNoIDDsc9tubq28qrfMPozqC4dUZ83m7AXLSyd hyG4o0I8+uijS3mw7rvvvtJ53SZvdXW2qu53QZe7TflOxVD7se33xFD0Z1JdOeXm+JjfjFTURt12 beqsr3NSP6/Lk/T4GdaF+566rShq/2zrWOmr7t39rEfecV9XVW6003RM6Hrd5LfHkJ8TAAAAAICy xWIh4zv/ErmEflT92B+KnjLOvVtKX4TYtieeeKJ0l5cNpKq7+NWkz7QAANgmt8OmqZNBf6fpTocq +jUu3Tm4zfbJKbqlpuptaoe52wH7Qn9GtPkMsvTnTRe3bt0qHrvgno+ryuEGGnapn1V2VfZd1/2x 6VqPdYGr7g08QwYAtG2fDKmqzvo6J/XzJqveZwjue1YFmLedJq5PfdX9Kjpt9zjY1bF4TNqe2/p3 RNV+bJsWAAAAAGBzb3zjG2X0C9HHFgsR+emn/nd6fSe/8c++Xy/amN9hmNxV265a71q17ar1rrbb tt2uSZc0Vm2rhyerGzb51hpDcFubvNbSaUjDUNDrWFVP2q1bt+Tzn/986aLXM888I7/5m78pX/3q V0vLV+Wzz7T2jT6+VlmnfF333T6qmiqui6ppz/qakk32NK11pn1b5zU4PUwV963PbRtA20aXKX7c z+2qbfV3R13bxDqG74FNrLvP1tF21Evdbmvah6e+/4bUR93q83GVqnPaapufVZ8RUpGvumNMH4v6 fbucP6vScj333HNL7fg6VenU5cvNg1s3ddtbbp12UVX/fdW91uV7pMmmdV9lVf1uS5/5GGo//v/b u59YSZLEruO/iMyq91737FrLrrxrY+OTl8OyEs0+gzjQtASyOHFAIMaekYzhISHjRWrUmJXh4AP4 YBq3WB9pCSH1SCONLCRL+GAurRV74q3egLRCXiN216wWy2hnx9PT0+9VZkZwiIjMyKisen+6qvp1 z/ejeT1VmVmREZERkZGRUZXl9qvCvYoy7PPiog2WK204zzZVJy9TJi4Sr21Y1/bnx6dcdxFXSdOm 8l5FWI8fP+7jc3R0pC984Qu6mz1S7DLH6nltc1/PE/a6sjBlXf1dt650Xr/iMmFtwmXzAQAAAAAk vTKPivuln/+D+Kg44CU1dSG/7cGEVR49eqS7d++Obtw9fvxYb731lh4+fLg0SP7w4cPRY1Vymwzr uktpW/f3oo7pdfTOO+/o+9///so/DL7xjW+UiwBcY4d8k/mllN/U0TmP0Zj6NjtefvTlLubevXuT /XhsH3kPXD9Hax4Xl9fVqTGfl02evpSeqfZoV78u9bKbyrur4NoDAAAAAK6PznWyPCbu+ikHbbDa ycTPqz8qnkN/VWXYqwbMTk5O+sHw5OjoSPfv39dJ8eiUo6Oj0QDd8fHxaD+bDAvA+b761a+O3vNr SwBwceWkpQcPHozWn+fOnTsr/3J3797VnTt36OdsAdcdu1HWlcPDQx0eHvb9+bJf/yJMxWfVX/mo o+vsZch7YMpUOV319zLVyfPk4zkvamLJtvL+MtviYl6VPC37uKvGHwEAAADgVTWfz2XLhXgxXtSA zMsu//nv5OHDh0sX/VdxmRs5+S8jPXjwoP9W+VtvvdVvcxR/WvrNN98c3dgr07DJsICPm6985Sv9 6/TouYu6fft2uQjABr377rvlopFNfXt6CoP/m3VycqI7d+4sTVo6L5/PKwPYDa47LmcTbVNZV+7f v6/79+/3/fn09yK98cYbS/FZ9XdeXb9OXoa8x4uVf2noOtlUndxEG7YN+YST/BjkfYUX9QtEz5v3 +Xn25OSkT1PaNq3P1+kVmoSzTeUXFafyPzmv33mZurHtduIy448AAAAA8Cpq2vblmbh0mYu4dReu uqZh5QMym7gg3lS8rrP80Wjpm7PJJibw5IMc627w3Lp1q/9G3v3791fm55vZgPiqbTYZFvBx9KUv fWn0/utf//rofemyk5sAXE7ev1l3c6C8CXER6yYpXyU8XEx6nG1yGB8TdpH+yLoygN3Z9HXHLqyr 79tQ3jxet//zrrvKXw+5SF3ZlaPsl4byL0m8Kq5z3uPFKifErKvju7SpOrnJNmxbyvqY4pj3FfJx j23bVN5ronyVVq0v8wTL8n7L1DjdJq89yuO0rh49r4uOPwIAAADAq8p7Lyv5cvm1kV+srRtUzyew rHJdw0ouM7C0yjbidV09evRoNAiRvjmbe9505uGXAxal9K3dTdhkWMDHTfmot9/6rd8avc+9/vrr o/df/vKXR+8BPL+yf7PqJkH5jeiLnAfX3VRi8H/zTiYeZ3t4eLjU/1rn8ePHF/7LPXjw4MKTo3C+ sl5e5bpjW1bdQF9X37ehLGur4qWJ9uuqVrWP25SXhePj4+e+ftqGXUy020Ter7tBjuunbAffeuut a9EWbqpOvog27CryyULf/OY3R8dg1/23TeX9lOPj48n0rDsuL7NttYflMXnjjTdG7zVRt1e172W5 n7r2KMPaZjtxmfFHAAAAAHgVzWa1bJi3dD0nL5UXoffu3Vu6SLx3797oAm9qMEDXOKykHFi6yuD8 NuJ1HZ2cnIwGrfPBrvyxacfHx0vpv6hycGNqEOMi8gGHPC5XGZDbZFjAqyx/XNzXvvY1vf7660u/ vPT666/ra1/7Wv/+9u3bS5OeADy/9EuCycOHD5fOsVftmxwfHy+FpYnwGPx/fvfu3dPdu3dH+Zoe uYSXzyauOzYp78uvaiNehDJeU9cVZXszpbwZPhXOo0eP9PDhwwu3f5tSttHHx8e6c+eOTk5OJuO5 avk2lTeOp65xtWIC3rbz/iJxe/To0dIyvHi3bt0a1fHj42PdvXt35fE6OTlZapu2YZN1clNt2Dbl dejdd98dTeTZdf9tk3l/nrJt0iX6v9fVttrDVPfKRxQfrvgVvfI4rupXlGFN2VU7UX7mquOPAAAA APAya5pW5tf/+T/03nv96r/58XL9pXzjv/3NctFGlBeU5ym/oZ27rmEladA0efDgweSF+DqbilcZ l1XbnZycjB4XMhXnMqzLmAovT+PhxDf9yzyYCuM8d+7c6V9P7eOiyvxJgx7lxKuLDExsMqwXLS8T z5O/eo7ydZVysWuf//znJUk//uND+/zOO++snWBz3rZf/epXr/x4tDK86xqWJiYmnWcqDCD3rW99 q1z0sfI87XZ5/lpnXdhle390dDSKkya+4b0uvFddmV+XUZ4j837RZTxPvyTfZxkfPL+yfFw2j5+n TShdpI04OjrSu+++u1THy3iX6Xqea5hym6Rsb/K2SCvCmqpDZTiKny33mefvqnzP45rXu1Xb51al c5Wp9GnDeV8qr+9WmWpzNpX3q0yFX5qK1yaVeX8ZZf6XYV31OF4kX3Kr9pMr43YZZfySi5atZCqe ZbymttEF8iwptzvPZcMpy/9F2rBtWlVWLhKPMu8vYyr8VXm2ylQYWhFO3g5Mrb9Ie/O8Np1fpVXH MjfVHl7kc7nz8moqf1c5LyxtqJ1YZ1PjjwAAAAA+nr70M79TLnqxfuNnx+9/5ffG71f4R2/8gay8 v64/uCTFx2algZV1Dg8P9SD7tZ0p1zWspLx4v3v3rk4mvsWzzjbidZ2UAwblr0wp5kHust8iv3eB n5++qFsT3/bKB4oODw+XjvsqmwwLeNW9/fbbun37drl4ye3bt5m0BGzZrVu3LtTnODw8vNQ5t/y2 enlD4bLhAR8nZZ/xKtcdm3JeG7Guj3vZfv5lrIpX3t6si1vuvHC0YhtNTMjctFu3bunx48cXuobU C3q00RtvvHHh+JWm8nWTeb/qs7nykUS4Pu7fvz/6RZXz7KKd3FSd3GQbtk2r8v+8STLbsKm8P89U 2nb9C1PbMFXeSs/bHh4dHS2N+ZVWlf3SRa8VttlObHL8EQAAAABeZs452fDyGs9ciheJDx48mLxQ PDw87C9cpy7+S9c1rKS8uL7KTYRtxOs6ODk5GQ0eHx0drUxDno/HKx4lUzo5OVmaGLVuHxeVjkcu Pw6XscmwgFfd22+/rXfeeWf06Ljk9u3b+spXvqK3336bSUvADqQbQZvsm6SbEmWYVw0P+Lgp+5RX ue7YlKn6fB36uFPx0hXiti6cw8NDPX78+IW3V/k15NRN+xTX8nFAu3Dr1q2117iK8Zu6Ib7tvF8V vrJ9vAoTEl5lb7755tqyr+xYPk9ZuaxN1MlV5fPwkm3Yrk2ld5eeN++nysmqbV8lq8qbnqM9TJ87 OjrS48ePLzzRbtPXHptuJ7Y1/ggAAAAAL6vZbCbzr//ZP/DeS//i3/7pcv2lbOtRcR9Hq37WOF3k f+ELX+BidkMePXrUD3CX36g95Cea8YKlR8UBePE+7o+Kuw7Kx1tc9jEMAJa9TNcdJycn1yYuAAAA l8H4IwAAAIBteFUeFffLv/Dt+ItL/nr/4tLHTfqWUun4+PjKz6PHtIcPHy49KkAX/PlpAAAA4GX2 Ml13MGkJAAC8rBh/BAAAAIDVOtfJykumXIMXbt3PGmM7rvLz0wAAAMDLjOsOAACA3WH8EQAAAADG rDEyv37v73vvpV/9zZ8o118Kj4rbvpOTE4lvG28UeYrrjEfFAdcHj4p78XhUHLA79JEBAAA2h74V AAAAgG14VR4V9+Vf/I6s95LnUXEvhVu3bnGBu2HkKQAAADBGHxkAAGBz6FsBAAAAwGpVVcmKSUsA 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 50se1rD6wnxq/33oC3TOhbpurJpmoboOX57I60xVhfNOs2hU15Vc5+Rc15/XmqbR3nyuxSJ+Puax sSnOsc2wVs6lPtOQ577IN9d1enb6TDLSjYOb6lynuq41n8/DeTXGUDEdKT3K6lcKOKyL22V5O6tr udheh3O0C320XlYSVxyTZFXZuYypYxlTmBUnI+9jX32ly8RlnFfSxMeX2tjQ/3SuC33Utu2Pt+86 OedVVVaLszMd7O/LO6emaVTXdTw2Tm3byme7tLaS815t12k2m6mqa9VV3efr0rnsHH2q0vGX+jK3 lM/Fcmtsf+5R7DPlbZIxQ38yycM8ryyE9V7epwSlKIxfZ4suZGq/eV1Ir1PavOvCwEU8dm3TyrlQ B7xzcZBDslUVriuUrnHyPkPMm2zX4Zwx7C9EK6V5KMvLsR2UyTYm7XN8HNZZdW7onAvtmQ8/m22N lbEmXqeEOFpr4phNCMe5rm+7bNzWWqNmsdCzp08l71Vbq7PTZ6piHz60s+Hz1tqsfJm+3tSz0NbW s1qVreS8k/NenXPaPzjQrK61aJo+02xVqWvdZO6l8I0xct7JKLTpJraJzqXjYeRcp6qqZWNcjTGa 1bXOzs40n83UdZ3arlUd86nrOjXNQsZazepaXZ8fTt57zefz/jrFG6muwq+JO+/luk7z+VyLRSNr jRaLRTyeqd/o1bStjKTFopHrOinmUV3Xevr0qZq2UWUr/alPf1pnp6fqnNPefB7aEe/12muv6eDg QG3b6sMPP9Tp6alOT0+1t7enuq7lui4c53i923VO3jvVdTwO8ZzXtOF62xjp2bNn4UuHMY3W2r7t NV567bWbqqpaTbPQfD5XXdXa39/TRx99JGuN9vf39eGHH8qY8LrrWrVNKy+v/b09PXv2kVwXzr2L RaP53kxt02Zls9Osnsk5p86F+HZtp6quw3hA02g2n4fj45zkQ1+8aVrJSHt7+6EOS2rbLpyvXer/ WFVVFWplVj5dvPbc399T0zQy1vbndB/P81U8tiaOc1RVpUWzUF3Vqma15KXFYqG262L/wquua1VV FY+j1f7egebzmc7OzmSM0bNnzzSfz0OaZrOwr3gsfOx/JrPZTF3bynmnvXmIZz2rw3FyIS19/HzY vqqqcJ6K5/3FYqGzszNZa2Wrqk93VdfysX1w8bwVxlhCmXDOx/Ifjoc1qUwYtVnZSfE2sQ+Urt9D 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 --b1=_lfEAdGpNcaIyanGug4lSvu7mXbhlSCp9Lh09EVnVM5o Content-Type: application/octet-stream; name=w32-virtual-terminal-color.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=w32-virtual-terminal-color.patch RnJvbSA1ZDc1ZDBkNTgyNjY3MWUzMWE2NGE3ZWIyZWY3NDQ0YzdlZWQwYTJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFN1biwg MTIgT2N0IDIwMjUgMDc6MjM6NTMgLTA3MDAKU3ViamVjdDogW1BBVENIXSB3MzIgdmlydHVhbCB0 ZXJtaW5hbCBjb2xvcgoKLS0tCiBkb2MvZW1hY3MvY21kYXJncy50ZXhpICB8ICAxNyArLQogZG9j L2VtYWNzL21zZG9zLnRleGkgICAgfCAgMjcgKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICAg fCAgMTIgKysKIGxpc3AvZmFjZXMuZWwgICAgICAgICAgIHwgIDEyICstCiBsaXNwL3N0YXJ0dXAu ZWwgICAgICAgICB8ICAgMiArLQogbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwgfCAgIDQgKy0KIGxp c3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTQ4ICsrKysrKysrKysrKystLS0tCiBzcmMvdGVybS5j ICAgICAgICAgICAgICB8ICA1MSArKysrKy0KIHNyYy90ZXJtY2hhci5oICAgICAgICAgIHwgICAy ICsKIHNyYy93MzJjb25zb2xlLmMgICAgICAgIHwgMzQ4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgICAyICstCiAxMSBm aWxlcyBjaGFuZ2VkLCA1MTUgaW5zZXJ0aW9ucygrKSwgMTEwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCmlu ZGV4IDc5YWUyZDA2NGQxLi4zNzgyZjVkYWQxYSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2NtZGFy Z3MudGV4aQorKysgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCkBAIC0xMDI0LDE5ICsxMDI0LDI2 IEBAIGNvbG9yZWQgZGlzcGxheS4KIEBpdGVteCBhbnNpOAogVHVybiBvbiB0aGUgY29sb3Igc3Vw cG9ydCB1bmNvbmRpdGlvbmFsbHksIGFuZCB1c2UgY29sb3IgY29tbWFuZHMKIHNwZWNpZmllZCBi eSB0aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZvciB0aGUgOCBzdGFuZGFyZCBjb2xvcnMuCitA aXRlbSA4Yml0CitUdXJuIG9uIHN1cHBvcnQgZm9yIDgtYml0ICgyNTYgY29sb3IpIGRpc3BsYXkg aWYgYXZhaWxhYmxlLgorQ3VycmVudGx5IHRoaXMgb3B0aW9uIGlzIGVmZmVjdGl2ZSBvbiBNUy1X aW5kb3dzICgxMCspIG9ubHkuCitPbiBvdGhlciBzeXN0ZW1zLCBtYXhpbWFsIGNvbG9yIHN1cHBv cnQgaXMgZW5hYmxlZCBhdXRvbWF0aWNhbGx5LgorQGl0ZW0gMjRiaXQKK1R1cm4gb24gc3VwcG9y dCBmb3IgMjQtYml0ICh0cnVlIGNvbG9yKSBkaXNwbGF5IGlmIGF2YWlsYWJsZS4KK0N1cnJlbnRs eSB0aGlzIG9wdGlvbiBpcyBlZmZlY3RpdmUgb24gTVMtV2luZG93cyAoMTArKSBvbmx5LgorT24g b3RoZXIgc3lzdGVtcywgMjQtYml0IGNvbG9yIGlzIGVuYWJsZWQgYXV0b21hdGljYWxseSBpZiBz dXBwb3J0ZWQuCiBAaXRlbSBAdmFye251bX0KIFVzZSBjb2xvciBtb2RlIGZvciBAdmFye251bX0g Y29sb3JzLiAgSWYgQHZhcntudW19IGlzIEBtaW51c3t9MSwgdHVybiBvZmYKIGNvbG9yIHN1cHBv cnQgKGVxdWl2YWxlbnQgdG8gQHNhbXB7bmV2ZXJ9KTsgaWYgaXQgaXMgMCwgdXNlIHRoZQogZGVm YXVsdCBjb2xvciBzdXBwb3J0IGZvciB0aGlzIHRlcm1pbmFsIChlcXVpdmFsZW50IHRvIEBzYW1w e2F1dG99KTsKIG90aGVyd2lzZSB1c2UgYW4gYXBwcm9wcmlhdGUgc3RhbmRhcmQgbW9kZSBmb3Ig QHZhcntudW19IGNvbG9ycy4KIERlcGVuZGluZyBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJpbGl0 aWVzLCBFbWFjcyBtaWdodCBiZSBhYmxlIHRvIHR1cm4KLW9uIGEgY29sb3IgbW9kZSBmb3IgOCwg MTYsIDg4LCBvciAyNTYgYXMgdGhlIHZhbHVlIG9mIEB2YXJ7bnVtfS4gIElmCi10aGVyZSBpcyBu byBtb2RlIHRoYXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgot QHZhcntudW19IHdlcmUgMCwgaS5lLiwgaXQgdXNlcyB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNv bG9yIHN1cHBvcnQKLW1vZGUuCitvbiBhIGNvbG9yIG1vZGUgZm9yIDgsIDE2LCA4OCwgMjU2LCBv ciAxNjc3NzIxNiBhcyB0aGUgdmFsdWUgb2YgQHZhcntudW19LgorSWYgdGhlcmUgaXMgbm8gbW9k ZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMsIEVtYWNzIGFjdHMgYXMgaWYKK0B2YXJ7 bnVtfSB3ZXJlIDAsIGkuZS4sIGl0IHVzZXMgdGhlIHRlcm1pbmFsJ3MgZGVmYXVsdCBjb2xvciBz dXBwb3J0IG1vZGUuCiBAZW5kIHRhYmxlCiAKLVRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24g TVMtV2luZG93cyBhbmQgTVMtRE9TLgorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1E T1MsIG5vciBNUy1XaW5kb3dzIHByaW9yIHRvIFdpbmRvd3MgMTAuCiAKIEBjaW5kZXggY29sb3Jz IG9uIGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdpbmcgZHVyaW5nIHNlc3Npb24KIEBjaW5kZXgg Y2hhcmFjdGVyIHRlcm1pbmFsLCBjaGFuZ2UgY29sb3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2Vt YWNzL21zZG9zLnRleGkgYi9kb2MvZW1hY3MvbXNkb3MudGV4aQppbmRleCBmOTcxNTFjNjMwZi4u N2NlNmU5YjczNmQgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCisrKyBiL2RvYy9l bWFjcy9tc2Rvcy50ZXhpCkBAIC0xMjAwLDYgKzEyMDAsMzMgQEAgeW91IHNob3VsZCBzZXQgaXRz IHZhbHVlIGluIHlvdXIgaW5pdCBmaWxlIChAcHhyZWZ7SW5pdCBGaWxlfSksIGVpdGhlcgogZGly ZWN0bHkgb3IgdmlhIEBrYmR7TS14IGN1c3RvbWl6ZS12YXJpYWJsZX0sIHdoaWNoIGxldHMgeW91 IHNhdmUgdGhlCiBjdXN0b21pemVkIHZhbHVlLCBzZWUgQHJlZntTYXZpbmcgQ3VzdG9taXphdGlv bnN9LgogCitAZmluZGV4IHczMi11c2UtdmlydHVhbC10ZXJtaW5hbAorQGNpbmRleCBXaW5kb3dz IFRlcm1pbmFsLCBXaW5kb3dzIENvbnNvbGUsIE1TLVdpbmRvd3MKKyAgVGhlIGltcGxlbWVudGF0 aW9uIG9mIGRpc3BsYXkgZnVuY3Rpb25hbGl0eSBmb3IgV2luZG93cyBDb25zb2xlCitkaWZmZXJz IGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGZvciBvdGhlciB0ZXJtaW5hbCBlbXVsYXRvcnMsCiti ZWNhdXNlIGhpc3RvcmljYWxseSwgV2luZG93cyByZXF1aXJlZCB1c2Ugb2YgYW4gaWRpb3N5bmNy YWN0aWMgQVBJLgorVGhhdCBBUEkgbGltaXRlZCBXaW5kb3dzIENvbnNvbGUgZGlzcGxheSBvZiBF bWFjcyB0byAxNiBiYXNpYyBjb2xvcnMuCitXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgV2luZG93 cyBUZXJtaW5hbCwgTWljcm9zb2Z0IGltcGxlbWVudGVkCitzdXBwb3J0IGZvciBBTlNJIGNvbnRy b2wgc2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUgVlQxMDAgYW5kIFh0ZXJtLAorYXMgd2VsbCBh cyAyNC1iaXQgUkJHIGNvbG9yIGRpc3BsYXkuCisKKyAgVGhlIGZ1bmN0aW9ucyBAY29kZXt3MzIt dXNlLXZpcnR1YWwtdGVybWluYWx9IGFuZAorQGNvZGV7dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFs LXB9IGNhbiBiZSB1c2VkIHRvIHNldCBhbmQgaW5zcGVjdAorKHJlc3BlY3RpdmVseSkgYW4gaW50 ZXJuYWwgdmFyaWFibGUgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgbmV3ZXIKK21lY2hh bmlzbSBpcyB1c2VkIGZvciBkaXNwbGF5LCBvciB0aGUgb2xkZXIgb25lLiAgVGhlIGludGVybmFs IHZhcmlhYmxlIGlzCithdXRvbWF0aWNhbGx5IHNldCBiYXNlZCBvbiB5b3VyIHRlcm1pbmFsJ3Mg Y2FwYWJpbGl0aWVzIG9uIHN0YXJ0dXAuCitCeSBkZWZhdWx0LCAyNC1iaXQgUkdCIGNvbG9yIHdp bGwgYmUgdXNlZCwgYnV0IG90aGVyICg4LCAxNiwgMjU2KSBjb2xvcgorc3BhY2VzIG1heSBiZSB1 c2VkLCBieSBwYXNzaW5nIHRoZSBAY29kZXstLWNvbG9yfSBjb21tYW5kIGxpbmUgYXJndW1lbnQs CitvciBzZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgQGNvZGV7dHR5LWNvbG9yLW1vZGV9IGZyYW1l IHBhcmFtZXRlci4KKworICAgQGNvZGV7Jyh3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtcCl9IGV2 YWx1YXRlcyB0byBAY29kZXt0fSBpZiBhbmQgb25seSBpZgordGhlIGludGVybmFsIHZhcmlhYmxl IGhhcyBhIG5vbi16ZXJvIG51bWVyaWNhbCB2YWx1ZSwgYW5kIG90aGVyd2lzZSB0bworQGNvZGV7 bmlsfS4gIElmIGl0IGV2YWx1YXRlcyB0byBAY29kZXt0fSwgQU5TSSBlc2NhcGUgc2VxdWVuY2Vz IGFyZSB1c2VkCitmb3IgY29sb3IsIG90aGVyd2lzZSwgdGhlIG9sZGVyIG1lY2hhbmlzbSBpcyB1 c2VkLiAgVGhlIGludGVybmFsIHZhcmlhYmxlCitjYW4gYmUgc2V0IGJ5IGV2YWx1YXRpbmcgQGNv ZGV7KHczMi11c2UtdmlydHVhbC10ZXJtaW5hbCB4KX0sIHdoZXJlIEBjb2Rle3h9IGlzCitAY29k ZXt0fSBvciBAY29kZXtuaWx9OiBpZiBAY29kZXt4fSBpcyBAY29kZXt0fSBhbmQgdGhlIGZlYXR1 cmUgaXMgc3VwcG9ydGVkIGJ5Cit5b3VyIHRlcm1pbmFsLCBpdCB3aWxsIGJlIGVuYWJsZWQuICBP dGhlcndpc2UsIHRoZSBmZWF0dXJlIHdpbGwgYmUgZGlzYWJsZWQuCisKIEBpZm5vdHRleAogQGlu Y2x1ZGUgbXNkb3MteHRyYS50ZXhpCiBAZW5kIGlmbm90dGV4CmRpZmYgLS1naXQgYS9ldGMvTkVX UyBiL2V0Yy9ORVdTCmluZGV4IDMyYzVlZDQxZDAwLi4zOGMxMmU5OTUzMiAxMDA2NDQKLS0tIGEv ZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTM0MTQsNiArMzQxNCwxOCBAQCBBY2NvcmRpbmds eSwgd2UgaGF2ZSByZXZpc2VkIG91ciByZWNvbW1lbmRhdGlvbnMgZm9yIGEgc3VpdGFibGUgREpH UFAKIHRvb2xjaGFpbiB0byBHQ0MgMTQuMi4wIGFuZCBCaW51dGlscyAyLjM1LjEgaW4gbGlldSBv ZiBHQ0MgMy40LnggYW5kCiBCaW51dGlscyAyLjI2LgogCisrKysKKyoqIFdpbmRvd3MgVGVybWlu YWwgY2FuIG5vdyBkaXNwbGF5IDI1NiBhbmQgMjQtYml0IFJHQiBjb2xvci4KK1ByZXZpb3VzbHks IHRlcm1pbmFsIHNlc3Npb25zIG9uIFdpbmRvd3Mgc3VwcG9ydGVkIGRpc3BsYXkgb2YgMTYgY29s b3JzLgorVGhlcmUgaXMgbm93IHN1cHBvcnQgZm9yIDgtYml0ICgyNTYgY29sb3IpIGFuZCAyNC1i aXQgUkdCICh0cnVlIGNvbG9yKS4KK1RoZSBuZXcgbWVjaGFuaXNtIHdpbGwgYmUgZW5hYmxlZCBh dXRvbWF0aWNhbGx5IHdoZW4gc3VwcG9ydGVkLgorSXQgZGVmYXVsdHMgdG8gMjQtYml0IFJHQiBj b2xvciwgYnV0IGNhbiBiZSBzZXQgdG8gOCwgMTYsICc4Yml0LCBvciAnMjRiaXQKK2J5IHBhc3Np bmcgdGhlICctLWNvbG9yJyBmbGFnIG9yIHNldHRpbmcgdGhlICd0dHktY29sb3ItbW9kZScgZnJh bWUgcGFyYW1ldGVyLgorVXNlIG9mIHRoZSBuZXcgbWVjaGFuaXNtIGlzIGNvbnRyb2xsZWQgYnkg YW4gaW50ZXJuYWwgdmFyaWFibGUgdGhhdCBjYW4gYmUKK3NldCBhbmQgaW5zcGVjdGVkIHZpYSB0 aGUgZnVuY3Rpb25zICd3MzItdXNlLXZpcnR1YWwtdGVybWluYWwnIGFuZAorJ3czMi11c2Utdmly dHVhbC10ZXJtaW5hbC1wJyAocmVzcGVjdGl2ZWx5KS4gIFNlZSB0aGUgbWFudWFsIGVudHJ5IHNw ZWNpZmljCit0byBNUy1XaW5kb3dzIGZvciBtb3JlIGRldGFpbHMuCisKIAwKIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KZGlmZiAtLWdpdCBhL2xpc3AvZmFj ZXMuZWwgYi9saXNwL2ZhY2VzLmVsCmluZGV4IGNkNDA4NmExMmYyLi40NzVhMDk3OTFlZSAxMDA2 NDQKLS0tIGEvbGlzcC9mYWNlcy5lbAorKysgYi9saXNwL2ZhY2VzLmVsCkBAIC0yNDA1LDExICsy NDA1LDE1IEBAIElmIHlvdSBzZXQgYHRlcm0tZmlsZS1wcmVmaXgnIHRvIG5pbCwgdGhpcyBmdW5j dGlvbiBkb2VzIG5vdGhpbmcuIgogCiA7OyBDYWxsZWQgZnJvbSBDIGZ1bmN0aW9uIGluaXRfZGlz cGxheSB0byBpbml0aWFsaXplIGZhY2VzIG9mIHRoZQogOzsgZHVtcGVkIHRlcm1pbmFsIGZyYW1l IG9uIHN0YXJ0dXAuCi0KKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi10dHktc2V0dXAtY29sb3JzICJ0 ZXJtL3czMmNvbnNvbGUiICgpKQogKGRlZnVuIHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNl cyAoKQotICAobGV0ICgoZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpCi0gICAgKGZyYW1lLXNldC1i YWNrZ3JvdW5kLW1vZGUgZnJhbWUgdCkKLSAgICAoZmFjZS1zZXQtYWZ0ZXItZnJhbWUtZGVmYXVs dCBmcmFtZSkpKQorICAocHJvZ24KKyAgICAod2hlbiAoYW5kIChlcSBzeXN0ZW0tdHlwZSAnd2lu ZG93cy1udCkKKyAgICAgICAgICAgICAgIChmZWF0dXJlcCAndGVybS93MzJjb25zb2xlKSkKKyAg ICAgICh3MzItdHR5LXNldHVwLWNvbG9ycykpCisgICAgKGxldCAoKGZyYW1lIChzZWxlY3RlZC1m cmFtZSkpKQorICAgICAgKGZyYW1lLXNldC1iYWNrZ3JvdW5kLW1vZGUgZnJhbWUgdCkKKyAgICAg IChmYWNlLXNldC1hZnRlci1mcmFtZS1kZWZhdWx0IGZyYW1lKSkpKQogCiAMCiA7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7OzsKZGlmZiAtLWdpdCBhL2xpc3Avc3RhcnR1cC5lbCBiL2xpc3Avc3RhcnR1cC5lbAppbmRl eCA4MzZlYWQ2ZGViMC4uNDg3ODNiNTE3NWYgMTAwNjQ0Ci0tLSBhL2xpc3Avc3RhcnR1cC5lbAor KysgYi9saXNwL3N0YXJ0dXAuZWwKQEAgLTk1OCw3ICs5NTgsNyBAQCB0byBwcmVwYXJlIGZvciBv cGVuaW5nIHRoZSBmaXJzdCBmcmFtZSAoZS5nLiBvcGVuIGEgY29ubmVjdGlvbiB0byBhbiBYIHNl cnZlcikuIgogCSAgICAgICAocHVzaCAoY29ucyAndHR5LWNvbG9yLW1vZGUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChudW1i ZXJwIGFyZ3ZhbCkgYXJndmFsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3RyaW5n LW1hdGNoICItP1swLTldKyIgYXJndmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo c3RyaW5nLW1hdGNoICItP1swLTldKyQiIGFyZ3ZhbCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZy10by1udW1iZXIgYXJndmFsKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodCAoaW50ZXJuIGFyZ3ZhbCkpKSkKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQt ZnJhbWUtYWxpc3QpKQpkaWZmIC0tZ2l0IGEvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwgYi9saXNw L3Rlcm0vdHR5LWNvbG9ycy5lbAppbmRleCBkZmQyMDdkNzFjMS4uYThhNWE4YjY2MGEgMTAwNjQ0 Ci0tLSBhL2xpc3AvdGVybS90dHktY29sb3JzLmVsCisrKyBiL2xpc3AvdGVybS90dHktY29sb3Jz LmVsCkBAIC03NjQsNyArNzY0LDkgQEAKICAgICAoYXV0byAuIDApCiAgICAgKGFuc2k4IC4gOCkK ICAgICAoYWx3YXlzIC4gOCkKLSAgICAoeWVzIC4gOCkpCisgICAgKHllcyAuIDgpCisgICAgKDhi aXQgLiAyNTYpCisgICAgKDI0Yml0IC4gMTY3NzcyMTYpKQogICAiQW4gYWxpc3Qgb2Ygc3VwcG9y dGVkIHN0YW5kYXJkIHR0eSBjb2xvciBtb2RlcyBhbmQgdGhlaXIgYWxpYXNlcy4iKQogCiAoZGVm dW4gdHR5LWNvbG9yLWFsaXN0ICgmb3B0aW9uYWwgX2ZyYW1lKQpkaWZmIC0tZ2l0IGEvbGlzcC90 ZXJtL3czMmNvbnNvbGUuZWwgYi9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAppbmRleCAxYjQ0ZGE0 OGJmNy4uMDRhMDg2Y2ZjZWQgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVybS93MzJjb25zb2xlLmVsCisr KyBiL2xpc3AvdGVybS93MzJjb25zb2xlLmVsCkBAIC00Niw5ICs0Niw3NyBAQAogIkEgbGlzdCBv ZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFsdWVz LiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAidGVybS9jb21t b24td2luIiAoZnJhbWUpKQotKGRlY2xhcmUtZnVuY3Rpb24gZ2V0LXNjcmVlbi1jb2xvciAidzMy Y29uc29sZS5jIiAoKSkKKyhkZWNsYXJlLWZ1bmN0aW9uIGdldC1zY3JlZW4tY29sb3IgInczMmNv bnNvbGUuYyIgKCZvcHRpb25hbCB2dHApKQorKGRlY2xhcmUtZnVuY3Rpb24gc2V0LXNjcmVlbi1j b2xvciAidzMyY29uc29sZS5jIiAoJm9wdGlvbmFsIHZ0cCkpCiAoZGVjbGFyZS1mdW5jdGlvbiB3 MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAoZGVjbGFyZS1mdW5jdGlv biB3MzItZ2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlICJ3MzJwcm9jLmMiICgpKQorKGRlY2xh cmUtZnVuY3Rpb24gdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsICJ3MzJjb25zb2xlLmMiIChlbmFi bGUpKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXAgInczMmNv bnNvbGUuYyIgKCkpCisKKyhkZWZ1biB3MzItdHR5LXNldC1iYXNlLWNvbG9ycyAodnRwKQorICAi UmUtb3JkZXIgYHczMi10dHktc3RhbmRhcmQtY29sb3JzJyBiYXNlZCBvbiB0aGUgdmFsdWUgb2Yg VlRQLiIKKyAgKGxldCAoKHNlcQorICAgICAgICAgKGlmIHZ0cAorICAgICAgICAgICAgICcoImJs YWNrIiAgICAgInJlZCIgICAgICAgICAgImdyZWVuIiAgICAgICJicm93biIKKyAgICAgICAgICAg ICAgICJibHVlIiAgICAgICJtYWdlbnRhIiAgICAgICJjeWFuIiAgICAgICAibGlnaHRncmF5Igor ICAgICAgICAgICAgICAgImRhcmtncmF5IiAgImxpZ2h0cmVkIiAgICAgImxpZ2h0Z3JlZW4iICJ5 ZWxsb3ciCisgICAgICAgICAgICAgICAibGlnaHRibHVlIiAibGlnaHRtYWdlbnRhIiAibGlnaHRj eWFuIiAgIndoaXRlIikKKyAgICAgICAgICAgJygiYmxhY2siICAgICAiYmx1ZSIgICAgICAgICAi Z3JlZW4iICAgICAgImN5YW4iCisgICAgICAgICAgICAgInJlZCIgICAgICAgIm1hZ2VudGEiICAg ICAgImJyb3duIiAgICAgICJsaWdodGdyYXkiCisgICAgICAgICAgICAgImRhcmtncmF5IiAgImxp Z2h0Ymx1ZSIgICAgImxpZ2h0Z3JlZW4iICJsaWdodGN5YW4iCisgICAgICAgICAgICAgImxpZ2h0 cmVkIiAgImxpZ2h0bWFnZW50YSIgInllbGxvdyIgICAgICJ3aGl0ZSIpKSkpCisgICAgKHNldHEg dzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMKKyAgICAgICAgICAobWFwY2FyCisgICAgICAgICAgIChs YW1iZGEgKG4pIChsZXQgKChjIChhc3NvYyBuIHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkpCisg ICAgICAgICAgICAgICAgICAgIChjb25zIG4gKGNvbnMgKHNlcS1wb3NpdGlvbiBzZXEgbikgKGNk ZHIgYykpKSkpCisgICAgICAgICAgIHNlcSkpKSkKKworKGRlZnVuIHczMi10dHktZGVmaW5lLWJh c2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJhc2UgMTYtY29sb3Igc3BhY2UgZm9yIHczMiB0dHkg ZGlzcGxheS4iCisgIChsZXQqICgoY29sb3JzIHczMi10dHktc3RhbmRhcmQtY29sb3JzKQorICAg ICAgICAgKG5iYXNlIChsZW5ndGggY29sb3JzKSkKKyAgICAgICAgIChjb2xvciAoY2FyIGNvbG9y cykpKQorICAgIChwcm9nbiAod2hpbGUgY29sb3JzCisgICAgICAgICAgICAgKHR0eS1jb2xvci1k ZWZpbmUgKGNhciBjb2xvcikgKGNhZHIgY29sb3IpIChjZGRyIGNvbG9yKSkKKyAgICAgICAgICAg ICAoc2V0cSBjb2xvcnMgKGNkciBjb2xvcnMpCisgICAgICAgICAgICAgICAgICAgY29sb3IgIChj YXIgY29sb3JzKSkpCisgICAgICAgICAgIG5iYXNlKSkpCisKKyhkZWZ1biB3MzItdHR5LWRlZmlu ZS04Yml0LWNvbG9ycyAoKQorICAiRGVmaW5lcyA4LWJpdCBjb2xvciBzcGFjZSBmb3IgdzMyIHR0 eSBkaXNwbGF5LiIKKyAgKGxldCAoKHIgMCkgKGIgMCkgKGcgMCkKKyAgICAgICAgKG4gKC0gMjU2 ICh3MzItdHR5LWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVydC10by0xNmJp dCAobGFtYmRhIChwcmltKSAobG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQorICAgICh3aGls ZSAoPiBuIDI0KSA7IG5vbi1ncmV5CisgICAgICAobGV0ICgoaSAoLSAyNTYgbikpCisgICAgICAg ICAgICAoYyAobWFwY2FyIGNvbnZlcnQtdG8tMTZiaXQKKyAgICAgICAgICAgICAgICAgICAgICAg KG1hcGNhciAobGFtYmRhICh4KSAoaWYgKHplcm9wIHgpIDAgKCsgKCogeCA0MCkgNTUpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCByIGcgYikpKSkpCisgICAgICAgICh0 dHktY29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEg YiAoMSsgYikpCisgICAgICAod2hlbiAoPiBiIDUpIChzZXRxIGcgKDErIGcpIGIgMCkpCisgICAg ICAod2hlbiAoPiBnIDUpIChzZXRxIHIgKDErIHIpIGcgMCkpCisgICAgICAoc2V0cSBuICgxLSBu KSkpCisgICAgKHdoaWxlICg+IG4gMCkgOyBhbGwtZ3JleQorICAgICAgKGxldCogKChpICgtIDI1 NiBuKSkKKyAgICAgICAgICAgICAodiAoZnVuY2FsbCBjb252ZXJ0LXRvLTE2Yml0ICgrIDggKCog KC0gMjQgbikgMTApKSkpCisgICAgICAgICAgICAgKGMgKGxpc3QgdiB2IHYpKSkKKyAgICAgICAg KHR0eS1jb2xvci1kZWZpbmUgKGZvcm1hdCAiY29sb3ItJWQiIGkpIGkgYykpCisgICAgICAoc2V0 cSBuICgxLSBuKSkpKSkKKworKGRlZnVuIHczMi10dHktZGVmaW5lLTI0Yml0LWNvbG9ycyAoKQor ICAiRGVmaW5lcyAyNC1iaXQgY29sb3Igc3BhY2UgZm9yIHczMiB0dHkgZGlzcGxheS4iCisgIChs ZXQgKChpICh3MzItdHR5LWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgIChtYXBjIChsYW1iZGEg KGMpICh1bmxlc3MgKGFzc29jIChjYXIgYykgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCisgICAg ICAgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjKSBpIChjZHIgYykpCisgICAg ICAgICAgICAgICAgICAgKHNldHEgaSAoMSsgaSkpKSkKKyAgICAgICAgICBjb2xvci1uYW1lLXJn Yi1hbGlzdCkpKQorCis7OyB0dHktY29sb3ItZGVmaW5lIHN3YXBzIGluZGljZXMgZm9yIHBpeGVs IHZhbHVlcyBvbiAyNGJpdCBkaXNwbGF5CisoZGVmdW4gdzMyLXR0eS1nZXQtcGl4ZWwgKGluZGV4 KQorICAiQ29udmVydCBhIGxlZ2FjeSBjb2xvciBJTkRFWCAoMC4uMTUpIGludG8gYSBwaXhlbCB2 YWx1ZS4iCisgIChsZXQgKChjb2xvciAobnRoIGluZGV4IHczMi10dHktc3RhbmRhcmQtY29sb3Jz KSkpCisgICAgKG9yICh0dHktY29sb3ItMjRiaXQgKGNkZHIgY29sb3IpKSBpbmRleCkpKQogCiAo ZGVmdW4gdGVybWluYWwtaW5pdC13MzJjb25zb2xlICgpCiAgICJUZXJtaW5hbCBpbml0aWFsaXph dGlvbiBmdW5jdGlvbiBmb3IgdzMyIGNvbnNvbGUuIgpAQCAtNTYsNDMgKzEyNCw1MyBAQAogICAo eC1zZXR1cC1mdW5jdGlvbi1rZXlzIChzZWxlY3RlZC1mcmFtZSkpCiAgIDs7IFNldCB0ZXJtaW5h bCBhbmQga2V5Ym9hcmQgZW5jb2RpbmdzIHRvIHRoZSBjdXJyZW50IE9FTSBjb2RlcGFnZS4KICAg KGxldCAoKG9lbS1jb2RlLXBhZ2UtY29kaW5nCi0JIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHcz Mi1nZXQtY29uc29sZS1jb2RlcGFnZSkpKSkKLQkob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5n Ci0JIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBh Z2UpKSkpCi0Jb2VtLWNzLXAgb2VtLW8tY3MtcCkKLQkoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5 c3RlbS1wIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKLQkoc2V0cSBvZW0tby1jcy1wIChjb2Rpbmct c3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKLQkod2hlbiBvZW0tY3MtcAot CSAgKHNldC1rZXlib2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQotCSAg KHNldC10ZXJtaW5hbC1jb2Rpbmctc3lzdGVtCi0JICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUt cGFnZS1vdXRwdXQtY29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKLSAgICAgICAgICA7OyBT aW5jZSB3ZSBjaGFuZ2VkIHRoZSB0ZXJtaW5hbCBlbmNvZGluZywgd2UgbmVlZCB0byByZXBlYXQK LSAgICAgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFi bGUuCi0gICAgICAgICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKLSAgKGxldCog KChjb2xvcnMgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCi0gICAgICAgICAoY29sb3IgKGNhciBj b2xvcnMpKSkKLSAgICAodHR5LWNvbG9yLWNsZWFyKQotICAgICh3aGlsZSBjb2xvcnMKLSAgICAg ICh0dHktY29sb3ItZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikp Ci0gICAgICAoc2V0cSBjb2xvcnMgKGNkciBjb2xvcnMpCi0gICAgICAgICAgICBjb2xvciAoY2Fy IGNvbG9ycykpKSkKLSAgKGNsZWFyLWZhY2UtY2FjaGUpCi0gIDs7IEZpZ3VyZSBvdXQgd2hhdCBh cmUgdGhlIGNvbG9ycyBvZiB0aGUgY29uc29sZSB3aW5kb3csIGFuZCBzZXQgdXAKLSAgOzsgdGhl IGJhY2tncm91bmQtbW9kZSBjb3JyZXNwb25kaW5nbHkuCi0gIChsZXQqICgoc2NyZWVuLWNvbG9y IChnZXQtc2NyZWVuLWNvbG9yKSkKLQkgKGJnIChjYWRyIHNjcmVlbi1jb2xvcikpCi0JIChkZXNj ciAodHR5LWNvbG9yLWJ5LWluZGV4IGJnKSkKLQkgciBnIGIgYmctbW9kZSkKLSAgICAoc2V0cSBy IChudGggMiBkZXNjcikKLQkgIGcgKG50aCAzIGRlc2NyKQotCSAgYiAobnRoIDQgZGVzY3IpKQot ICAgIChpZiAoPCAoKyByIGcgYikgKCogLjYgKCsgNjU1MzUgNjU1MzUgNjU1MzUpKSkKLQkoc2V0 cSBiZy1tb2RlICdkYXJrKQotICAgICAgKHNldHEgYmctbW9kZSAnbGlnaHQpKQotICAgIChzZXQt dGVybWluYWwtcGFyYW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKQorICAgICAg ICAgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLWNvZGVwYWdlKSkpKQor ICAgICAgICAob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nCisgICAgICAgICAoaW50ZXJuIChm b3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlKSkpKQorICAgICAg ICBvZW0tY3MtcCBvZW0tby1jcy1wKQorICAgIChzZXRxIG9lbS1jcy1wIChjb2Rpbmctc3lzdGVt LXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAgIChzZXRxIG9lbS1vLWNzLXAgKGNvZGluZy1z eXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcpKQorICAgICh3aGVuIG9lbS1jcy1w CisgICAgICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1jb2Rpbmcp CisgICAgICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0ZW0KKyAgICAgICAoaWYgb2VtLW8tY3Mt cCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAg ICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8g cmVwZWF0CisgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxh eWFibGUuCisgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkpKQogICAodHR5LXNl dC11cC1pbml0aWFsLWZyYW1lLWZhY2VzKQogICAocnVuLWhvb2tzICd0ZXJtaW5hbC1pbml0LXcz Mi1ob29rKSkKIAorOzsgQ2FsbGVkIGZyb20gdHR5LXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2Vz IGluIGZhY2VzLmVsCisoZGVmdW4gdzMyLXR0eS1zZXR1cC1jb2xvcnMgKCkKKyAgIlNldCB1cCBj b2xvciBkZWZpbml0aW9ucyBhbmQgZnJhbWUgcGFyYW1ldGVycyBmb3IgdzMyIHR0eSBkaXNwbGF5 LiIKKyAgKHR0eS1jb2xvci1jbGVhcikKKyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29sb3It Y2VsbHMpKQorICAgICAgICAodnRwICh3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtcCkpKQorICAg ICh3MzItdHR5LXNldC1iYXNlLWNvbG9ycyB2dHApCisgICAgKGlmIHZ0cAorICAgICAgICAoY29u ZCAoKD0gbmNvbG9ycyAxNjc3NzIxNikgKHczMi10dHktZGVmaW5lLTI0Yml0LWNvbG9ycykpCisg ICAgICAgICAgICAgICgoPSBuY29sb3JzIDI1NikgICAgICAodzMyLXR0eS1kZWZpbmUtOGJpdC1j b2xvcnMpKQorICAgICAgICAgICAgICAodCAgICAgICAgICAgICAgICAgICAgKHczMi10dHktZGVm aW5lLWJhc2UtY29sb3JzKSkpCisgICAgICAodzMyLXR0eS1kZWZpbmUtYmFzZS1jb2xvcnMpKQor ICAgIChjbGVhci1mYWNlLWNhY2hlKQorICAgIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2Ny ZWVuLWNvbG9yIHZ0cCkpCisgICAgICAgICAgIChmZyAoY2FyICBzY3JlZW4tY29sb3IpKQorICAg ICAgICAgICAoYmcgKGNhZHIgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJvb3RzdHJhcCAo YW5kIHZ0cCAoPSBuY29sb3JzIDE2Nzc3MjE2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KDwgZmcgMTYpICg8IGJnIDE2KSAobm90ICg9IDAgZmcgYmcpKSkpCisgICAgICAgICAgIChmYWxs YmFjayAgKGFuZCB2dHAgKDwgbmNvbG9ycyAxNjc3NzIxNikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIChvciAoPCBuY29sb3JzIGZnKSAoPCBuY29sb3JzIGJnKSkpKQorICAgICAgICAgICAo c2NyZWVuLWNvbG9yIChpZiBmYWxsYmFjayAoZ2V0LXNjcmVlbi1jb2xvciB0KSBzY3JlZW4tY29s b3IpKQorICAgICAgICAgICAoZmcgKGlmIGJvb3RzdHJhcCAodzMyLXR0eS1nZXQtcGl4ZWwgZmcp IChjYXIgIHNjcmVlbi1jb2xvcikpKQorICAgICAgICAgICAoYmcgKGlmIGJvb3RzdHJhcCAodzMy LXR0eS1nZXQtcGl4ZWwgYmcpIChjYWRyIHNjcmVlbi1jb2xvcikpKQorICAgICAgICAgICAoYmct Y29sICh0dHktY29sb3ItYnktaW5kZXggYmcpKQorICAgICAgICAgICAoYmctZGFyayAoPCAoKyAo bnRoIDIgYmctY29sKSAobnRoIDMgYmctY29sKSAobnRoIDQgYmctY29sKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgKCogLjYgKCsgNjU1MzUgNjU1MzUgNjU1MzUpKSkpCisgICAgICAgICAgIChi Zy1tb2RlIChpZiBiZy1kYXJrICdkYXJrICdsaWdodCkpKQorICAgICAgKHNldC10ZXJtaW5hbC1w YXJhbWV0ZXIgbmlsICdiYWNrZ3JvdW5kLW1vZGUgYmctbW9kZSkKKyAgICAgICh3aGVuIChvciBi b290c3RyYXAgZmFsbGJhY2spCisgICAgICAgIChzZXQtc2NyZWVuLWNvbG9yIGZnIGJnIHQpKSkp KQorCiAocHJvdmlkZSAndGVybS93MzJjb25zb2xlKQogCiA7OzsgdzMyY29uc29sZS5lbCBlbmRz IGhlcmUKZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVybS5jCmluZGV4IGExZTNmNjMx MmM2Li5lZjQ2MWI1YjRjYiAxMDA2NDQKLS0tIGEvc3JjL3Rlcm0uYworKysgYi9zcmMvdGVybS5j CkBAIC0yMjA3LDcgKzIyMDcsNyBAQCBURVJNSU5BTCBkb2VzIG5vdCByZWZlciB0byBhIHRleHQg dGVybWluYWwuICAqLykKICAgcmV0dXJuIG1ha2VfZml4bnVtICh0ID8gdC0+ZGlzcGxheV9pbmZv LnR0eS0+VE5fbWF4X2NvbG9ycyA6IDApOwogfQogCi0jaWYgIWRlZmluZWQgRE9TX05UICYmICFk ZWZpbmVkIEhBVkVfQU5EUk9JRAorI2lmICFkZWZpbmVkIE1TRE9TICYmICFkZWZpbmVkIEhBVkVf QU5EUk9JRAogCiAvKiBEZWNsYXJlIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIGZ1bmN0aW9uLCBh cyBpbiB0aGUgcmVzdCBvZiBFbWFjcywKICAgIHRvIHdvcmsgYXJvdW5kIGFuIEhQVVggY29tcGls ZXIgYnVnICg/KS4gU2VlCkBAIC0yMjQ2LDcgKzIyNDYsNyBAQCB0dHlfZGVmYXVsdF9jb2xvcl9j YXBhYmlsaXRpZXMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGJvb2wgc2F2ZSkKICAg IE1PREUncyB2YWx1ZSBpcyBnZW5lcmFsbHkgdGhlIG51bWJlciBvZiBjb2xvcnMgd2hpY2ggd2Ug d2FudCB0bwogICAgc3VwcG9ydDsgemVybyBtZWFucyBzZXQgdXAgZm9yIHRoZSBkZWZhdWx0IGNh cGFiaWxpdGllcywgdGhlIG9uZXMKICAgIHdlIHNhdyBhdCBpbml0X3R0eSB0aW1lOyAtMSBtZWFu cyB0dXJuIG9mZiBjb2xvciBzdXBwb3J0LiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiB0dHlfc2V0 dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKIHsKICAg LyogQ2Fub25pY2FsaXplIGFsbCBuZWdhdGl2ZSB2YWx1ZXMgb2YgTU9ERS4gICovCkBAIC0yMjY5 LDYgKzIyNjksMTAgQEAgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8g KnR0eSwgaW50IG1vZGUpCiAjaWZkZWYgVEVSTUlORk8KIAl0dHktPlRTX3NldF9mb3JlZ3JvdW5k ID0gIlwwMzNbMyVwMSVkbSI7CiAJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJcMDMzWzQlcDEl ZG0iOworI2VsaWYgV0lORE9XU05UCisJdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgxYlszOW1ceDFi WzQ5bSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWyVsdW0iOworCXR0eS0+VFNf c2V0X2JhY2tncm91bmQgPSAiXHgxYlslbHVtIjsKICNlbHNlCiAJdHR5LT5UU19zZXRfZm9yZWdy b3VuZCA9ICJcMDMzWzMlZG0iOwogCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0JWRt IjsKQEAgLTIyNzYsNiArMjI4MCwyNiBAQCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rp c3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKIAl0dHktPlROX21heF9jb2xvcnMgPSA4OwogCXR0 eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOwogCWJyZWFrOworI2lmZGVmIFdJTkRPV1NOVAorICAg ICAgY2FzZSAxNjoKKwl0dHktPlROX21heF9jb2xvcnMgPSAxNjsKKwl0dHktPlRTX3NldF9mb3Jl Z3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWyVs dW0iOworCXR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAy NTY6CisJdHR5LT5UTl9tYXhfY29sb3JzID0gMjU2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQg PSAiXHgxYlszODs1OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODs1 OyVsdW0iOworCXR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2Fz ZSAxNjc3NzIxNjoKKwl0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKwl0dHktPlRTX3Nl dF9mb3JlZ3JvdW5kID0gIlx4MWJbMzg7MjslbHU7JWx1OyVsdW0iOworCXR0eS0+VFNfc2V0X2Jh Y2tncm91bmQgPSAiXHgxYls0ODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92 aWRlbyA9IDA7CisJYnJlYWs7CisjZW5kaWYKICAgICB9CiB9CiAKQEAgLTIzMTIsNyArMjMzNiw3 IEBAIHNldF90dHlfY29sb3JfbW9kZSAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgc3Ry dWN0IGZyYW1lICpmKQogICAgIH0KIH0KIAotI2VuZGlmIC8qICFET1NfTlQgJiYgIUhBVkVfQU5E Uk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFWRV9BTkRST0lEICovCiAKIGNoYXIgKgog dHR5X3R5cGVfbmFtZSAoTGlzcF9PYmplY3QgdGVybWluYWwpCkBAIC00NjQxLDYgKzQ2NjUsMjIg QEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBURVJNJyAo Qy1zaGVsbDpcblwKIAogICAgIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHRlcm1pbmFsLCAmd2lk dGgsICZoZWlnaHQpOwogCisgICAgdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisgICAgdHR5 LT5UTl9tYXhfY29sb3JzID0gMTY3NzcyMTY7CisgICAgdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgx YlszOW1ceDFiWzQ5bSI7CisgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzI7 JWx1OyVsdTslbHVtIjsKKyAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbNDg7Mjsl bHU7JWx1OyVsdW0iOworCisgICAgLyogU2F2ZSBkZWZhdWx0IGNvbG9yIGNhcGFiaWxpdGllcyAq LworICAgIHR0eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxpdGllcyAodHR5LCAxKTsKKworICAgIHR0 eS0+VFNfZW50ZXJfYm9sZF9tb2RlID0gIlx4MWJbMW0iOworICAgIHR0eS0+VFNfZW50ZXJfaXRh bGljX21vZGUgPSAiXHgxYlszbSI7CisgICAgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9t b2RlID0gIlx4MWJbOW0iOworICAgIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUgPSAiXHgx Yls0bSI7CisgICAgdHR5LT5UU19lbnRlcl9yZXZlcnNlX21vZGUgPSAiXHgxYls3bSI7CisgICAg dHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2RlID0gIlx4MWJbMG0iOworCiAgICAgRnJhbWVSb3dz ICh0dHkpID0gaGVpZ2h0OwogICAgIEZyYW1lQ29scyAodHR5KSA9IHdpZHRoOwogICAgIHR0eS0+ c3BlY2lmaWVkX3dpbmRvdyA9IGhlaWdodDsKQEAgLTQ2ODYsNyArNDcyNiw2IEBAIHVzZSB0aGUg Qm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6XG5c CiAgICAgIGRvbid0IHRoaW5rIHdlJ3JlIGxvc2luZyBhbnl0aGluZyBieSB0dXJuaW5nIGl0IG9m Zi4gICovCiAgIHR0eS0+bGluZV9pbnNfZGVsX29rID0gMDsKIAotICB0dHktPlROX21heF9jb2xv cnMgPSAxNjsgIC8qIE11c3QgYmUgbm9uLXplcm8gZm9yIHR0eS1kaXNwbGF5LWNvbG9yLXAuICAq LwogI2VuZGlmCS8qIERPU19OVCAqLwogCiAjaWZkZWYgSEFWRV9HUE0KQEAgLTUyMDIsMTEgKzUy NDEsMTEgQEAgbm9uLW5pbCB0byBlbmFibGUgdGhpcyBvcHRpbWl6YXRpb24uICAqLyk7CiAgIGRl ZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfd2lkdGgpOwogICBkZWZzdWJyICgmU3R0eV9kaXNw bGF5X3BpeGVsX2hlaWdodCk7CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYgIWRlZmluZWQgSEFW RV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECiAg IGRlZmF1bHRfb3JpZ19wYWlyID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfZm9yZWdyb3VuZCA9IE5V TEw7CiAgIGRlZmF1bHRfc2V0X2JhY2tncm91bmQgPSBOVUxMOwotI2VuZGlmIC8qICFET1NfTlQg JiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFWRV9BTkRST0lEICov CiAKICNpZm5kZWYgSEFWRV9BTkRST0lECiAgIGVuY29kZV90ZXJtaW5hbF9zcmMgPSBOVUxMOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlcm1jaGFyLmggYi9zcmMvdGVybWNoYXIuaAppbmRleCBlY2UzYTY3 NmM2ZS4uMTNhZDJmMGE3MmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtY2hhci5oCisrKyBiL3NyYy90 ZXJtY2hhci5oCkBAIC0yNDksNCArMjQ5LDYgQEAgc3RydWN0IGlucHV0X2V2ZW50OwogZXh0ZXJu IExpc3BfT2JqZWN0IHR0eV9oYW5kbGVfdGFiX2Jhcl9jbGljayAoc3RydWN0IGZyYW1lICosIGlu dCwgaW50LCBib29sLAogCQkJCQkgICAgIHN0cnVjdCBpbnB1dF9ldmVudCAqKTsKIAorZXh0ZXJu IHZvaWQgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50 IG1vZGUpOworCiAjZW5kaWYgLyogRU1BQ1NfVEVSTUNIQVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5kZXggYTkyZWQ3ODhlMDAuLjdiOTUx OGUyMDE0IDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5jCisrKyBiL3NyYy93MzJjb25zb2xl LmMKQEAgLTE5LDYgKzE5LDkgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8 aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIC8qCiAgICBUaW0gRmxlZWhhcnQg KGFwb2xsb0BvbmxpbmUuY29tKQkJMS0xNy05MgogICAgR2VvZmYgVm9lbGtlciAodm9lbGtlckBj cy53YXNoaW5ndG9uLmVkdSkJOS0xMi05MworICAgRXdhbiBUb3duc2hlbmQgKGV3YW5AZXRvd24u ZGV2KSAgICAgICAgICAgICAgMjAyNS0wOAorICAgKiBjLiB+IDIwMjU6IDI0Yml0IFJHQiBzdXBw b3J0IGluIFdpbmRvd3MgKDEwKykgVGVybWluYWwKKyAgICogaHR0cHM6Ly9sZWFybi5taWNyb3Nv ZnQuY29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwtc2Vx dWVuY2VzCiAqLwogCiAKQEAgLTUzLDExICs1NiwxNyBAQCBzdGF0aWMgdm9pZCB3MzJjb25fc2V0 X3Rlcm1pbmFsX21vZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpOwogc3RhdGljIHZvaWQgdzMyY29u X3VwZGF0ZV9iZWdpbiAoc3RydWN0IGZyYW1lICogZik7CiBzdGF0aWMgdm9pZCB3MzJjb25fdXBk YXRlX2VuZCAoc3RydWN0IGZyYW1lICogZik7CiBzdGF0aWMgV09SRCB3MzJfZmFjZV9hdHRyaWJ1 dGVzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKTsKK3N0YXRpYyBpbnQgIHczMmNvbl93 cml0ZV92dF9zZXEgKGNvbnN0IGNoYXIgKik7CitzdGF0aWMgdm9pZCB0dXJuX29uX2ZhY2UgKHN0 cnVjdCBmcmFtZSAqLCBpbnQgZmFjZV9pZCk7CitzdGF0aWMgdm9pZCB0dXJuX29mZl9mYWNlIChz dHJ1Y3QgZnJhbWUgKiwgaW50IGZhY2VfaWQpOworc3RhdGljIENPT1JEIHczMmNvbl9nZXRfY3Vy c29yX2Nvb3JkcyAoKTsKIAogc3RhdGljIENPT1JECWN1cnNvcl9jb29yZHM7CiBzdGF0aWMgSEFO RExFCXByZXZfc2NyZWVuLCBjdXJfc2NyZWVuOwogc3RhdGljIFdPUkQJY2hhcl9hdHRyX25vcm1h bDsKIHN0YXRpYyBEV09SRAlwcmV2X2NvbnNvbGVfbW9kZTsKK3N0YXRpYyBpbnQgICAgICBiZ19u b3JtYWw7CitzdGF0aWMgaW50ICAgICAgZmdfbm9ybWFsOwogCiBzdGF0aWMgQ09OU09MRV9DVVJT T1JfSU5GTyBjb25zb2xlX2N1cnNvcl9pbmZvOwogI2lmbmRlZiBVU0VfU0VQQVJBVEVfU0NSRUVO CkBAIC02Nyw3ICs3NiwxMCBAQCBzdGF0aWMgQ09OU09MRV9DVVJTT1JfSU5GTyBwcmV2X2NvbnNv bGVfY3Vyc29yOwogZXh0ZXJuIEhBTkRMRSAga2V5Ym9hcmRfaGFuZGxlOwogSEFORExFICBrZXli b2FyZF9oYW5kbGU7CiBpbnQgdzMyX2NvbnNvbGVfdW5pY29kZV9pbnB1dDsKLQorZXh0ZXJuIGlu dCB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWw7CitpbnQgdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFs ID0gMTsKK2V4dGVybiBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqY3VycmVudF90dHk7CitzdHJ1 Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqY3VycmVudF90dHkgPSBOVUxMOwogCiAvKiBTZXR0aW5nIHRo aXMgYXMgdGhlIGN0cmwgaGFuZGxlciBwcmV2ZW50cyBlbWFjcyBmcm9tIGJlaW5nIGtpbGxlZCB3 aGVuCiAgICBzb21lb25lIGhpdHMgXkMgaW4gYSAnc3VzcGVuZGVkJyBzZXNzaW9uIChjaGlsZCBz aGVsbCkuCkBAIC04Myw2ICs5NSwzOCBAQCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0 eXBlKQogCSAgJiYgKHR5cGUgPT0gQ1RSTF9DX0VWRU5UIHx8IHR5cGUgPT0gQ1RSTF9CUkVBS19F VkVOVCkpOwogfQogCisjZGVmaW5lIERFRkFVTFRQKHApCQkJCQkJCVwKKyAgKHAgPT0gRkFDRV9U VFlfREVGQVVMVF9DT0xPUgkJCQkJCVwKKyAgIHx8IHAgPT0gRkFDRV9UVFlfREVGQVVMVF9GR19D T0xPUgkJCQkJXAorICAgfHwgcCA9PSBGQUNFX1RUWV9ERUZBVUxUX0JHX0NPTE9SKQorCisjZGVm aW5lIFNFUU1BWCAyNTYgLyogQXJiaXRyYXJ5IHVwcGVyIGxpbWl0IG9uIFZUIHNlcXVlbmNlIHNp emUgKi8KKworI2RlZmluZSBTU1BSSU5URihidWYsIGksIHN6LCBmbXQsIC4uLikJCQkJCVwKKyAg ZG8gewkJCQkJCQkJCVwKKyAgICBlYXNzZXJ0ICgqaSA8IHN6ICYmIHN6IDw9IFNFUU1BWCk7CQkJ CQlcCisgICAgaWYgKGZtdCAmJiAqaSA8IHN6ICYmIHN6IDw9IFNFUU1BWCkJCQkJXAorICAgICAg KmkgKz0gc25wcmludGYgKGJ1ZiArICppLCBzeiAtICppLCBmbXQsIF9fVkFfQVJHU19fKTsJCVwK KyAgfSB3aGlsZSAoMCkKKworLyogV3JpdGVzIHZpcnR1YWwgdGVybWluYWwgc2VxdWVuY2UgdG8g c2NyZWVuICovCitzdGF0aWMgaW50Cit3MzJjb25fd3JpdGVfdnRfc2VxIChjb25zdCBjaGFyICpz ZXEpCit7CisgIGNoYXIgYnVmW1NFUU1BWF07CisgIERXT1JEIG4gPSAwLCBrID0gMDsKKyAgU1NQ UklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwgc2VxLCBOVUxMKTsKKyAgaWYgKG4pIFdyaXRlQ29uc29s ZSAoY3VyX3NjcmVlbiwgKExQQ1NUUikgYnVmLCBuLCAmaywgTlVMTCk7CisgIHJldHVybiBrOwor fQorCitzdGF0aWMgQ09PUkQKK3czMmNvbl9nZXRfY3Vyc29yX2Nvb3JkcyAoKQoreworICBDT05T T0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBpbmZvOworICBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5m byAoR2V0U3RkSGFuZGxlIChTVERfT1VUUFVUX0hBTkRMRSksICZpbmZvKTsKKyAgcmV0dXJuIGlu Zm8uZHdDdXJzb3JQb3NpdGlvbjsKK30KIAogLyogTW92ZSB0aGUgY3Vyc29yIHRvIChST1csIENP TCkgb24gRlJBTUUuICAqLwogc3RhdGljIHZvaWQKQEAgLTMwOSwxMCArMzUzLDExIEBAIHczMmNv bl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpz dHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBpbnQgbGVuKQogewogICBEV09S RCByOwotICBXT1JEIGNoYXJfYXR0cjsKICAgTFBDU1RSIGNvbnZlcnNpb25fYnVmZmVyOwogICBz dHJ1Y3QgY29kaW5nX3N5c3RlbSAqY29kaW5nOwogCisgIHczMmNvbl9oaWRlX2N1cnNvcigpOwor CiAgIGlmIChsZW4gPD0gMCkKICAgICByZXR1cm47CiAKQEAgLTM0Miw4ICszODcsNiBAQCB3MzJj b25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBnbHlwaCAq c3RyaW5nLAogCiAgICAgICAvKiB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUgc2V0cyBmcmFtZSBv ZiBnbHlwaHMgdG8gTlVMTC4gICovCiAgICAgICBzdHJ1Y3QgZnJhbWUgKmF0dHJfZnJhbWUgPSBm YWNlX2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFtZSA6IGY7Ci0gICAgICAvKiBUdXJuIGFwcGVhcmFu Y2UgbW9kZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICovCi0gICAgICBjaGFyX2F0dHIg PSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1lLCBmYWNlX2lkKTsKIAogICAgICAgaWYg KG4gPT0gbGVuKQogCS8qIFRoaXMgaXMgdGhlIGxhc3QgcnVuLiAgKi8KQEAgLTM1MSwzMSArMzk0 LDQ1IEBAIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3Ry dWN0IGdseXBoICpzdHJpbmcsCiAgICAgICBjb252ZXJzaW9uX2J1ZmZlciA9IChMUENTVFIpIGVu Y29kZV90ZXJtaW5hbF9jb2RlIChzdHJpbmcsIG4sIGNvZGluZyk7CiAgICAgICBpZiAoY29kaW5n LT5wcm9kdWNlZCA+IDApCiAJewotCSAgLyogQ29tcHV0ZSB0aGUgc3RyaW5nJ3Mgd2lkdGggb24g ZGlzcGxheSBieSBhY2NvdW50aW5nIGZvcgotCSAgICAgY2hhcmFjdGVyJ3Mgd2lkdGguICBGSVhN RTogdGhpcyBkb2Vzbid0IGhhbmRsZSBjaGFyYWN0ZXIKLQkgICAgIGNvbXBvc2l0aW9ucy4gICov Ci0JICBwdHJkaWZmX3QgbmNvbHMgPSBzdHJ3aWR0aCAoY29kaW5nLT5zb3VyY2UsIGNvZGluZy0+ c3JjX2J5dGVzKTsKLQkgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJz LiAgKi8KLQkgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNo YXJfYXR0ciwgbmNvbHMsCi0JCQkJCSAgIGN1cnNvcl9jb29yZHMsICZyKSkKKwkgIGlmICh3MzJf dXNlX3ZpcnR1YWxfdGVybWluYWwpCiAJICAgIHsKLQkgICAgICBwcmludGYgKCJGYWlsZWQgd3Jp dGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVsdVxuIiwKLQkJICAgICAgR2V0TGFzdEVycm9yICgp KTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7CisJICAgICAgdHVybl9vbl9mYWNlIChmLCBmYWNl X2lkKTsKKwkgICAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVy LAorCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxMKTsKKwkgICAgICB0dXJuX29mZl9m YWNlIChmLCBmYWNlX2lkKTsKKwkgICAgICBjdXJzb3JfY29vcmRzID0gdzMyY29uX2dldF9jdXJz b3JfY29vcmRzICgpOwogCSAgICB9Ci0KLQkgIC8qIFdyaXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8K LQkgIGlmICghV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCBjb252ZXJz aW9uX2J1ZmZlciwKLQkJCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCi0J CQkJCSAgICAmcikpCisJICBlbHNlCiAJICAgIHsKLQkgICAgICBwcmludGYgKCJGYWlsZWQgd3Jp dGluZyBjb25zb2xlIGNoYXJhY3RlcnM6ICVsdVxuIiwKLQkJICAgICAgR2V0TGFzdEVycm9yICgp KTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7Ci0JICAgIH0KKwkgICAgICAvKiBBY2NvdW50IGZv ciBjaGFyYWN0ZXIgd2lkdGguCisJCSBGSVhNRTogdGhpcyBkb2Vzbid0IGhhbmRsZSBjaGFyYWN0 ZXIgY29tcG9zaXRpb25zLiAgKi8KKwkgICAgICBwdHJkaWZmX3QgbmNvbHMgPSBzdHJ3aWR0aCAo Y29kaW5nLT5zb3VyY2UsIGNvZGluZy0+c3JjX2J5dGVzKTsKKworCSAgICAgIC8qIFR1cm4gYXBw ZWFyYW5jZSBtb2RlcyBvZiB0aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KKwkgICAgICBXT1JE IGNoYXJfYXR0ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOwog Ci0JICBjdXJzb3JfY29vcmRzLlggKz0gbmNvbHM7Ci0JICB3MzJjb25fbW92ZV9jdXJzb3IgKGYs IGN1cnNvcl9jb29yZHMuWSwgY3Vyc29yX2Nvb3Jkcy5YKTsKKwkgICAgICAvKiBTZXQgdGhlIGF0 dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4gICovCisJICAgICAgaWYgKCFGaWxsQ29uc29s ZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLCBuY29scywKKwkJCQkJICAg ICAgIGN1cnNvcl9jb29yZHMsICZyKSkKKwkJeworCQkgIHByaW50ZiAoIkZhaWxlZCB3cml0aW5n IGNvbnNvbGUgYXR0cmlidXRlczogJWx1XG4iLAorCQkJICBHZXRMYXN0RXJyb3IgKCkpOworCQkg IGZmbHVzaCAoc3Rkb3V0KTsKKwkJfQorCisJICAgICAgLyogV3JpdGUgdGhlIGNoYXJhY3RlcnMu ICAqLworCSAgICAgIGlmICghV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVu LCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCQkJCWNvZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29y ZHMsCisJCQkJCQkmcikpCisJCXsKKwkJICBwcmludGYgKCJGYWlsZWQgd3JpdGluZyBjb25zb2xl IGNoYXJhY3RlcnM6ICVsdVxuIiwKKwkJCSAgR2V0TGFzdEVycm9yICgpKTsKKwkJICBmZmx1c2gg KHN0ZG91dCk7CisJCX0KKworCSAgICAgIGN1cnNvcl9jb29yZHMuWCArPSBuY29sczsKKwkgICAg ICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGN1cnNvcl9jb29yZHMuWSwgY3Vyc29yX2Nvb3Jkcy5Y KTsKKwkgICAgfQogCX0KICAgICAgIGxlbiAtPSBuOwogICAgICAgc3RyaW5nICs9IG47CkBAIC0z OTEsNiArNDQ4LDggQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2UgKHN0cnVjdCBmcmFt ZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogICBMUENTVFIgY29udmVyc2lv bl9idWZmZXI7CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7CiAKKyAgdzMyY29uX2hp ZGVfY3Vyc29yKCk7CisKICAgaWYgKGxlbiA8PSAwKQogICAgIHJldHVybjsKIApAQCAtNDA3LDI4 ICs0NjYsNDIgQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2UgKHN0cnVjdCBmcmFtZSAq ZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogICBpZiAoY29kaW5nLT5wcm9kdWNl ZCA+IDApCiAgICAgewogICAgICAgRFdPUkQgZmlsbGVkLCB3cml0dGVuOwotICAgICAgLyogQ29t cHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjZS4g ICovCi0gICAgICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNl X2lkKTsKLSAgICAgIENPT1JEIHN0YXJ0X2Nvb3JkczsKLSAgICAgIC8qIENvbXB1dGUgdGhlIHN0 cmluZydzIHdpZHRoIG9uIGRpc3BsYXkgYnkgYWNjb3VudGluZyBmb3IKLQkgY2hhcmFjdGVyJ3Mg d2lkdGguICBGSVhNRTogdGhpcyBkb2Vzbid0IGhhbmRsZSBjaGFyYWN0ZXIKLQkgY29tcG9zaXRp b25zLiAgKi8KLSAgICAgIHB0cmRpZmZfdCBuY29scyA9IHN0cndpZHRoIChjb2RpbmctPnNvdXJj ZSwgY29kaW5nLT5zcmNfYnl0ZXMpOwotCi0gICAgICBzdGFydF9jb29yZHMuWCA9IHg7Ci0gICAg ICBzdGFydF9jb29yZHMuWSA9IHk7Ci0gICAgICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhl c2UgY2hhcmFjdGVycy4gICovCi0gICAgICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRl IChjdXJfc2NyZWVuLCBjaGFyX2F0dHIsIG5jb2xzLAotCQkJCSAgICAgICBzdGFydF9jb29yZHMs ICZmaWxsZWQpKQotCURlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRl czogJWRcbiIsIEdldExhc3RFcnJvciAoKSkpOworICAgICAgaWYgKHczMl91c2VfdmlydHVhbF90 ZXJtaW5hbCkKKwl7CisJICBDT09SRCBzYXZlZF9jb29yZHMgPSBjdXJzb3JfY29vcmRzOworCSAg dzMyY29uX21vdmVfY3Vyc29yKGYsIHksIHgpOworCSAgdHVybl9vbl9mYWNlIChmLCBmYWNlX2lk KTsKKwkgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZmZXIsCisJCQlj b2RpbmctPnByb2R1Y2VkLCAmd3JpdHRlbiwgTlVMTCk7CisJICB0dXJuX29mZl9mYWNlIChmLCBm YWNlX2lkKTsKKwkgIHczMmNvbl9tb3ZlX2N1cnNvcihmLCBzYXZlZF9jb29yZHMuWSwgc2F2ZWRf Y29vcmRzLlgpOworCX0KICAgICAgIGVsc2UKIAl7Ci0JICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVy cy4gICovCi0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwg Y29udmVyc2lvbl9idWZmZXIsCi0JCQkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFydF9jb29y ZHMsCi0JCQkJCSAgICAmd3JpdHRlbikpCi0JICAgIERlYlByaW50ICgoIkZhaWxlZCB3cml0aW5n IGNvbnNvbGUgY2hhcmFjdGVyczogJWRcbiIsCi0JCSAgICAgICBHZXRMYXN0RXJyb3IgKCkpKTsK KwkgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBhdHRyaWJ1dGVzIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGZhY2UuICAqLworCSAgRFdPUkQgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAo ZiwgZmFjZV9pZCk7CisJICBDT09SRCBzdGFydF9jb29yZHM7CisKKwkgIHN0YXJ0X2Nvb3Jkcy5Y ID0geDsKKwkgIHN0YXJ0X2Nvb3Jkcy5ZID0geTsKKworCSAgLyogQWNjb3VudCBmb3IgY2hhcmFj dGVyIHdpZHRoLgorCSAgICAgRklYTUU6IHRoaXMgZG9lc24ndCBoYW5kbGUgY2hhcmFjdGVyIGNv bXBvc2l0aW9ucy4gICovCisJICBwdHJkaWZmX3QgbmNvbHMgPSBzdHJ3aWR0aCAoY29kaW5nLT5z b3VyY2UsIGNvZGluZy0+c3JjX2J5dGVzKTsKKworCSAgLyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9y IHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgaWYgKCFGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0 ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLCBuY29scywKKwkJCQkJICAgc3RhcnRfY29vcmRzLCAm ZmlsbGVkKSkKKwkgICAgRGViUHJpbnQgKCgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBhdHRyaWJ1 dGVzOiAlZFxuIiwgR2V0TGFzdEVycm9yICgpKSk7CisJICBlbHNlCisJICAgIHsKKwkgICAgICAv KiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCisJICAgICAgaWYgKCFXcml0ZUNvbnNvbGVPdXRw dXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCQkJY29kaW5n LT5wcm9kdWNlZCwgc3RhcnRfY29vcmRzLAorCQkJCQkJJndyaXR0ZW4pKQorCQlEZWJQcmludCAo KCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3RlcnM6ICVkXG4iLAorCQkJICAgR2V0TGFz dEVycm9yICgpKSk7CisJICAgIH0KIAl9CiAgICAgfQogfQpAQCAtNTI5LDYgKzYwMiwzMyBAQCB3 MzJjb25fZGVsZXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCBpbnQgbikKICAgc2Nyb2xsX2xp bmUgKGYsIG4sIExFRlQpOwogfQogCitzdGF0aWMgdm9pZAordzMyY29uX3NldHVwX3ZpcnR1YWxf dGVybWluYWwgKHZvaWQpCit7CisgIC8qIERpc2FibGUgdW5sZXNzIDI0Yml0IGNvbG9yIGlzIHN1 cHBvcnRlZCAodi4gPiAxMC4wLjE1MDYzKS4gICovCisgIHczMl91c2VfdmlydHVhbF90ZXJtaW5h bCA9IHczMl91c2VfdmlydHVhbF90ZXJtaW5hbAorICAgICYmICh3MzJfbWFqb3JfdmVyc2lvbiA+ IDEwCisJfHwgKHczMl9tYWpvcl92ZXJzaW9uID09IDEwCisJICAgICYmICh3MzJfbWlub3JfdmVy c2lvbiA+IDAgfHwgdzMyX2J1aWxkX251bWJlciA+IDE1MDYzKSkpOworCisgIERXT1JEIG91dF9t b2RlOworICBHZXRDb25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgJm91dF9tb2RlKTsKKyAgb3V0X21v ZGUgfD0gRU5BQkxFX1BST0NFU1NFRF9PVVRQVVQ7CisgIG91dF9tb2RlIHw9IERJU0FCTEVfTkVX TElORV9BVVRPX1JFVFVSTjsKKworICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsKQorICAg IG91dF9tb2RlIHw9IEVOQUJMRV9WSVJUVUFMX1RFUk1JTkFMX1BST0NFU1NJTkc7CisgIGVsc2UK KyAgICBvdXRfbW9kZSAmPSB+RU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORzsKKwor ICBpbnQgb3V0X21vZGVfc2V0ID0gU2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sIG91dF9tb2Rl KTsKKyAgdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsID0gdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFs ICYmIG91dF9tb2RlX3NldDsKKworICBpbnQgbWF4X2NvbG9ycyA9IHczMl91c2VfdmlydHVhbF90 ZXJtaW5hbCA/IDE2Nzc3MjE2IDogMTY7CisgIHR0eV9zZXR1cF9jb2xvcnMgKGN1cnJlbnRfdHR5 LCBtYXhfY29sb3JzKTsKKworICBzYWZlX2NhbGxuIChRdHR5X3NldF91cF9pbml0aWFsX2ZyYW1l X2ZhY2VzKTsKK30KIAogc3RhdGljIHZvaWQKIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAo c3RydWN0IHRlcm1pbmFsICp0KQpAQCAtNTg1LDYgKzY4NSw3IEBAIHczMmNvbl9zZXRfdGVybWlu YWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2Rl OiBpbnRlcnJ1cHRfaW5wdXQgb2ZmLCBubyBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0 IGNoYXJhY3RlciBpbnB1dCwgc3RhbmRhcmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9t b2RlIChRbmlsLCBRbmlsLCBtYWtlX2ZpeG51bSAoMiksIFFuaWwpOworICB3MzJjb25fc2V0dXBf dmlydHVhbF90ZXJtaW5hbCAoKTsKIH0KIAogLyogaG1tbS4uLiBwZXJoYXBzIHRoZXNlIGxldCB1 cyBicmFja2V0IHNjcmVlbiBjaGFuZ2VzIHNvIHRoYXQgd2UgY2FuIGZsdXNoCkBAIC02MzEsOCAr NzMyLDYgQEAgc3lzX3RnZXRzdHIgKGNoYXIgKmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBm cm9tIGNtLmMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9p bmZvICpjdXJyZW50X3R0eTsKLXN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9 IE5VTEw7CiBleHRlcm4gaW50IGNvc3Q7CiBpbnQgY29zdCA9IDA7CiAKQEAgLTczNiw2ICs4MzUs ODcgQEAgdzMyX2ZhY2VfYXR0cmlidXRlcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkK ICAgcmV0dXJuIGNoYXJfYXR0cjsKIH0KIAorc3RhdGljIHZvaWQKK3R1cm5fb25fZmFjZSAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNF X0ZST01fSUQgKGYsIGZhY2VfaWQpOworICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0g RlJBTUVfVFRZIChmKTsKKyAgdW5zaWduZWQgbG9uZyBmZyA9IGZhY2UtPmZvcmVncm91bmQ7Cisg IHVuc2lnbmVkIGxvbmcgYmcgPSBmYWNlLT5iYWNrZ3JvdW5kOworCisgIC8qIGNvbnN0cnVjdCBj b21iaW5lZCBWVCBzZXF1ZW5jZSBmb3IgZmFjZSBhdHRyaWJ1dGVzICovCisgIERXT1JEIG4gPSAw OworICBzaXplX3Qgc3ogPSBTRVFNQVg7CisgIGNoYXIgc2VxW3N6XTsKKyAgc3otLTsKKworICBp ZiAoZmFjZS0+dHR5X2JvbGRfcCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNf ZW50ZXJfYm9sZF9tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9pdGFsaWNfcCkKKyAgICBT U1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfaXRhbGljX21vZGUsIE5VTEwpOwor ICBpZiAoZmFjZS0+dHR5X3N0cmlrZV90aHJvdWdoX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4s IHN6LCB0dHktPlRTX2VudGVyX3N0cmlrZV90aHJvdWdoX21vZGUsIE5VTEwpOworICBpZiAoZmFj ZS0+dW5kZXJsaW5lICE9IDApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2Vu dGVyX3VuZGVybGluZV9tb2RlLCBOVUxMKTsKKyAgLyogTm90ZTogd2hlbiBmYWNlLT50dHlfcmV2 ZXJzZV9wICE9IDAgYW5kIGZnIGFuZCBiZyBhcmUgc3BlY2lmaWVkLAorICAgICB0aGVpciB2YWx1 ZXMgYXJlIGFscmVhZHkgc3dhcHBlZCBhbmQgcmV2ZXJzaW5nIHRoZW0gaGVyZSB3b3VsZCBzd2Fw CisgICAgIHRoZW0gYmFjaywgYnV0IHdlIG5lZWQgdG8gaGFuZGxlIHRoZSByZXZlcnNhbCB3aGVu IHVuc3BlY2lmaWVkLiAgKi8KKyAgaWYgKGZhY2UtPnR0eV9yZXZlcnNlX3AgJiYgREVGQVVMVFAg KGZnKSAmJiBERUZBVUxUUCAoYmcpKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5U U19lbnRlcl9yZXZlcnNlX21vZGUsIE5VTEwpOworCisgIGlmIChERUZBVUxUUCAoZmcpKSBmZyA9 IGZnX25vcm1hbDsKKyAgaWYgKERFRkFVTFRQIChiZykpIGJnID0gYmdfbm9ybWFsOworCisgIGNv bnN0IGNoYXIgKnNldF9mZyA9IHR0eS0+VFNfc2V0X2ZvcmVncm91bmQ7CisgIGNvbnN0IGNoYXIg KnNldF9iZyA9IHR0eS0+VFNfc2V0X2JhY2tncm91bmQ7CisgIGlmICh0dHktPlROX21heF9jb2xv cnMgPT0gOCAgfHwgdHR5LT5UTl9tYXhfY29sb3JzID09IDE2KQorICAgIHsKKyAgICAgIC8qIGZn IGFuZCBiZyBhcmUgaW5kaWNlcyBpbnRvIDE2IGJhc2UgY29sb3JzIChzZWUgbGluayBhdCB0b3Ap LiAgKi8KKyAgICAgIHVuc2lnbmVkIGxvbmcgZmdpID0gMCwgYmdpID0gMDsKKworICAgICAgZmdp ID0gKGZnID49IDAgICYmIGZnIDwgOCkKKwkgICAgPyBmZyArIDMwCisJICAgIDogKGZnID49IDgg ICYmIGZnIDwgMTYpCisJICAgICAgPyBmZyAtIDggKyA5MAorCSAgICAgIDogMDsKKyAgICAgIGlm IChmZ2kpCisJU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfZmcsIGZnaSk7CisKKyAgICAgIGJn aSA9IChiZyA+PSAwICAmJiBiZyA8IDgpCisJICAgID8gYmcgKyA0MAorCSAgICA6IChiZyA+PSA4 ICAmJiBiZyA8IDE2KQorCSAgICAgID8gYmcgLSA4ICsgMTAwCisJICAgICAgOiAwOworICAgICAg aWYgKGJnaSkKKwlTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9iZywgYmdpKTsKKyAgICB9Cisg IGVsc2UgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAyNTYpCisgICAgeworICAgICAgLyogZmcg YW5kIGJnIGFyZSB4dGVybSBpbmRpY2VzLiAgKi8KKyAgICAgIGlmIChmZyA+PSAwICYmIGZnIDwg MjU2KQorCVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2ZnLCBmZyk7CisKKyAgICAgIGlmIChi ZyA+PSAwICYmIGJnIDwgMjU2KQorCVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCBiZyk7 CisgICAgfQorICBlbHNlIGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gMTY3NzcyMTYpCisgICAg eworICAgICAgLyogZmcgYW5kIGJnIGFyZSBwaXhlbCB2YWx1ZXMgLS0gZGVjb21wb3NlIHRvIHJn YiB0cmlwbGVzLiAgKi8KKyAgICAgIHVuc2lnbmVkIGxvbmcgcmYgPSBmZy82NTUzNiwgZ2YgPSAo ZmcvMjU2KSYyNTUsIGJmID0gZmcmMjU1OworICAgICAgdW5zaWduZWQgbG9uZyByYiA9IGJnLzY1 NTM2LCBnYiA9IChiZy8yNTYpJjI1NSwgYmIgPSBiZyYyNTU7CisgICAgICBTU1BSSU5URiAoc2Vx LCAmbiwgc3osIHNldF9mZywgcmYsIGdmLCBiZik7CisgICAgICBTU1BSSU5URiAoc2VxLCAmbiwg c3osIHNldF9iZywgcmIsIGdiLCBiYik7CisgICAgfQorICB3MzJjb25fd3JpdGVfdnRfc2VxICgo Y29uc3QgY2hhciAqKSBzZXEpOworfQorCitzdGF0aWMgdm9pZAordHVybl9vZmZfZmFjZSAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8g KnR0eSA9IEZSQU1FX1RUWSAoZik7CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHR0eS0+VFNfZXhp dF9hdHRyaWJ1dGVfbW9kZSk7Cit9CisKIC8qIFRoZSBJTUUgd2luZG93IGlzIG5lZWRlZCB0byBy ZWNlaXZlIHRoZSBzZXNzaW9uIG5vdGlmaWNhdGlvbnMKICAgIHJlcXVpcmVkIHRvIHJlc2V0IHRo ZSBsb3cgbGV2ZWwga2V5Ym9hcmQgaG9vayBzdGF0ZS4gICovCiAKQEAgLTg2OCw2ICsxMDQ4LDgg QEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndp ZHRoLCBpbnQgKmhlaWdodCkKICAgICB9CiAKICAgY2hhcl9hdHRyX25vcm1hbCA9IGluZm8ud0F0 dHJpYnV0ZXM7CisgIGZnX25vcm1hbCA9IGNoYXJfYXR0cl9ub3JtYWwgJiAweDAwMGY7CisgIGJn X25vcm1hbCA9IChjaGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmOwogCiAgIC8qIERldGVy bWluZSBpZiB0aGUgaW5mbyByZXR1cm5lZCBieSBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbwog ICAgICBpcyByZWFsaXN0aWMuICBPbGQgTVMgVGVsbmV0IHNlcnZlcnMgdXNlZCB0byBvbmx5IGZp bGwgb3V0CkBAIC05MjEsMzEgKzExMDMsODEgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3Ry dWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIAogICAvKiBTZXQg dXAgdGhlIGtleWJvYXJkIGhvb2suICAqLwogICBzZXR1cF93MzJfa2JkaG9vayAoaHduZCk7CisK KyAgLyogU2V0IGN1cnJlbnRfdHR5IHRvIHRoZSB0dHkgb2YgdGhpcyB0ZXJtaW5hbCAqLworICBj dXJyZW50X3R0eSA9IHRlcm0tPmRpc3BsYXlfaW5mby50dHk7CiB9CiAKIAotREVGVU4gKCJzZXQt c2NyZWVuLWNvbG9yIiwgRnNldF9zY3JlZW5fY29sb3IsIFNzZXRfc2NyZWVuX2NvbG9yLCAyLCAy LCAwLAorREVGVU4gKCJzZXQtc2NyZWVuLWNvbG9yIiwgRnNldF9zY3JlZW5fY29sb3IsIFNzZXRf c2NyZWVuX2NvbG9yLCAyLCAzLCAwLAogICAgICAgIGRvYzogLyogU2V0IHNjcmVlbiBmb3JlZ3Jv dW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KIAotQXJndW1lbnRzIHNob3VsZCBiZSBpbmRpY2Vz IGJldHdlZW4gMCBhbmQgMTUsIHNlZSB3MzJjb25zb2xlLmVsLiAgKi8pCi0gIChMaXNwX09iamVj dCBmb3JlZ3JvdW5kLCBMaXNwX09iamVjdCBiYWNrZ3JvdW5kKQorQXJndW1lbnRzIHNob3VsZCBi ZSBpbmRpY2VzIGZvciBjb2xvcnMgaW4gdGhlIGxpc3QgcmV0dXJuZWQgYnkgYHR0eS1jb2xvci1h bGlzdCcuCitJZiBWVFAgaXMgbm9uLW5pbCwgc2V0dGluZ3MgYWZmZWN0IHZpcnR1YWwgdGVybWlu YWwgcHJvY2Vzc2luZyBvbmx5LgorT3RoZXJ3aXNlLCBhcmd1bWVudHMgc2hvdWxkIGJlIGJldHdl ZW4gMCBhbmQgMTUsIGFuZCBzZXR0aW5ncyB3aWxsCitiZSBlZmZlY3RpdmUgb25seSB3aGVuIHZp cnR1YWwgdGVybWluYWwgcHJvY2Vzc2luZyBpcyBkaXNhYmxlZC4KKworU2VlIHczMmNvbnNvbGUu ZWwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIGZvciBgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsJy4g ICovKQorICAoTGlzcF9PYmplY3QgZm9yZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCwg TGlzcF9PYmplY3QgdnRwKQogewotICBjaGFyX2F0dHJfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdy b3VuZCkgKyAoWEZJWE5BVCAoYmFja2dyb3VuZCkgPDwgNCk7CisgIGludCBmZyA9IFhGSVhOQVQg KGZvcmVncm91bmQpOworICBpbnQgYmcgPSBYRklYTkFUIChiYWNrZ3JvdW5kKTsKKworICBpZiAo TklMUCAodnRwKSkKKyAgICB7CisgICAgICBjaGFyX2F0dHJfbm9ybWFsID0gZmcgKyAoYmcgPDwg NCk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgZmdfbm9ybWFsID0gZmc7CisgICAgICBi Z19ub3JtYWwgPSBiZzsKKyAgICB9CiAKICAgRnJlY2VudGVyIChRbmlsLCBRdCk7CiAgIHJldHVy biBRdDsKIH0KIAotREVGVU4gKCJnZXQtc2NyZWVuLWNvbG9yIiwgRmdldF9zY3JlZW5fY29sb3Is IFNnZXRfc2NyZWVuX2NvbG9yLCAwLCAwLCAwLAorREVGVU4gKCJnZXQtc2NyZWVuLWNvbG9yIiwg RmdldF9zY3JlZW5fY29sb3IsIFNnZXRfc2NyZWVuX2NvbG9yLCAwLCAxLCAwLAogICAgICAgIGRv YzogLyogR2V0IGNvbG9yIGluZGljZXMgb2YgdGhlIGN1cnJlbnQgc2NyZWVuIGZvcmVncm91bmQg YW5kIGJhY2tncm91bmQuCiAKLVRoZSBjb2xvcnMgYXJlIHJldHVybmVkIGFzIGEgbGlzdCBvZiAy IGluZGljZXMgKEZPUkVHUk9VTkQgQkFDS0dST1VORCkuCi1TZWUgdzMyY29uc29sZS5lbCBhbmQg YHR0eS1kZWZpbmVkLWNvbG9yLWFsaXN0JyBmb3IgbWFwcGluZyBvZiBpbmRpY2VzCi10byBjb2xv cnMuICAqLykKK1RoZSBjb2xvcnMgYXJlIHJldHVybmVkIGFzIGEgbGlzdCBvZiAyIGluZGljZXMg KEZPUkVHUk9VTkQgQkFDS0dST1VORCkgZm9yCitjb2xvcnMgaW4gdGhlIGxpc3QgcmV0dXJuZWQg YnkgYHR0eS1jb2xvci1hbGlzdGAuCisKK0lmIFZUUCBpcyBub24tbmlsLCByZXR1cm5zIHNldHRp bmdzIGVmZmVjdGl2ZSB3aGVuIHZpcnR1YWwgdGVybWluYWwKK3Byb2Nlc3NpbmcgaXMgZW5hYmxl ZC4gIE90aGVyd2lzZSwgcmV0dXJucyBzZXR0aW5ncyBlZmZlY3RpdmUgd2hlbgordmlydHVhbCB0 ZXJtaW5hbCBwcm9jZXNzaW5nIGlzIGRpc2FibGVkLgorCitTZWUgdzMyY29uc29sZS5lbCBhbmQg dGhlIGRvY3VtZW50YXRpb24gZm9yIGB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwnLiAgKi8pCisg IChMaXNwX09iamVjdCB2dHApCit7CisgIGludCBmZyA9IE5JTFAgKHZ0cCkgPyBjaGFyX2F0dHJf bm9ybWFsICYgMHgwMDBmIDogZmdfbm9ybWFsOworICBpbnQgYmcgPSBOSUxQICh2dHApID8gKGNo YXJfYXR0cl9ub3JtYWwgPj4gNCkgJiAweDAwMGYgOiBiZ19ub3JtYWw7CisKKyAgcmV0dXJuIEZj b25zIChtYWtlX2ZpeG51bSAoZmcpLCBGY29ucyAobWFrZV9maXhudW0gKGJnKSwgUW5pbCkpOwor fQorCitERUZVTiAoInczMi11c2UtdmlydHVhbC10ZXJtaW5hbCIsIEZ3MzJfdXNlX3ZpcnR1YWxf dGVybWluYWwsIFN3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwsIDEsIDEsIDAsCisgICAgICAgZG9j OiAvKiBFbmFibGVzIChkaXNhYmxlcykgdmlydHVhbCB0ZXJtaW5hbCBzZXF1ZW5jZSBwcm9jZXNz aW5nIGlmIGFyZ3VtZW50IGlzIHQgKG5pbCkuICAqLykKKyAgKExpc3BfT2JqZWN0IGFyZykKK3sK KyAgaWYgKEVRIChhcmcsIFF0KSkKKyAgICB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwgPSAxOwor ICBlbHNlIGlmIChFUSAoYXJnLCBRbmlsKSkKKyAgICB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwg PSAwOworICBlbHNlIHsKKyAgICBlcnJvciAoIkludmFsaWQgYXJndW1lbnQ6IGV4cGVjdHMgdCBv ciBuaWwuIik7CisgICAgcmV0dXJuIFFuaWw7CisgIH0KKworICB3MzJjb25fc2V0dXBfdmlydHVh bF90ZXJtaW5hbCAoKTsKKyAgcmV0dXJuIFF0OworfQorCitERUZVTiAoInczMi11c2UtdmlydHVh bC10ZXJtaW5hbC1wIiwgRnczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9wLCBTdzMyX3VzZV92aXJ0 dWFsX3Rlcm1pbmFsX3AsIDAsIDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm5zIHQgKG5pbCkg aWYgdmlydHVhbCB0ZXJtaW5hbCBzZXF1ZW5jZSBwcm9jZXNzaW5nIGlzIGVuYWJsZWQgKGRpc2Fi bGVkKS4gICovKQogICAodm9pZCkKIHsKLSAgcmV0dXJuIEZjb25zIChtYWtlX2ZpeG51bSAoY2hh cl9hdHRyX25vcm1hbCAmIDB4MDAwZiksCi0JCUZjb25zIChtYWtlX2ZpeG51bSAoKGNoYXJfYXR0 cl9ub3JtYWwgPj4gNCkgJiAweDAwMGYpLCBRbmlsKSk7CisgIHJldHVybiB3MzJfdXNlX3ZpcnR1 YWxfdGVybWluYWwgPyBRdCA6IFFuaWw7CiB9CiAKIERFRlVOICgic2V0LWN1cnNvci1zaXplIiwg RnNldF9jdXJzb3Jfc2l6ZSwgU3NldF9jdXJzb3Jfc2l6ZSwgMSwgMSwgMCwKQEAgLTk3NCw1ICsx MjA2LDcgQEAgc2Nyb2xsLWJhY2sgYnVmZmVyLiAgKi8pOwogCiAgIGRlZnN1YnIgKCZTc2V0X3Nj cmVlbl9jb2xvcik7CiAgIGRlZnN1YnIgKCZTZ2V0X3NjcmVlbl9jb2xvcik7CisgIGRlZnN1YnIg KCZTdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsKTsKKyAgZGVmc3ViciAoJlN3MzJfdXNlX3ZpcnR1 YWxfdGVybWluYWxfcCk7CiAgIGRlZnN1YnIgKCZTc2V0X2N1cnNvcl9zaXplKTsKIH0KZGlmZiAt LWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggYWVmNDBjMzhlNTQuLmRjN2Y0 MmI5OGJhIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMTcy MzksNyArMTcyMzksNyBAQCByZWRpc3BsYXlfaW50ZXJuYWwgKHZvaWQpCiAJICAgICBhcmVhLCBk aXNwbGF5aW5nIGEgZGlmZmVyZW50IGZyYW1lIG1lYW5zIHJlZGlzcGxheSB0aGUKIAkgICAgIHdo b2xlIHRoaW5nLiAgKi8KIAkgIFNFVF9GUkFNRV9HQVJCQUdFRCAoc2YpOwotI2lmICFkZWZpbmVk IERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAmJiAh ZGVmaW5lZCBIQVZFX0FORFJPSUQKIAkgIHNldF90dHlfY29sb3JfbW9kZSAoRlJBTUVfVFRZIChz ZiksIHNmKTsKICNlbmRpZgogCX0KCjIuNDkuMAoK --b1=_lfEAdGpNcaIyanGug4lSvu7mXbhlSCp9Lh09EVnVM5o Content-Type: application/octet-stream; name=tty-echo-cursor-flicker.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=tty-echo-cursor-flicker.patch RnJvbSBiNjQwY2U4MGQ3NWU3M2E5OTFiMmJkOTg3MTExOWE1NjRhYjcxN2E1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFdlZCwg MSBPY3QgMjAyNSAxMDoyNDozNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHR0eS1lY2hvLWN1cnNv ci1mbGlja2VyCgotLS0KIHNyYy9kaXNwbmV3LmMgfCAxMSArKysrKysrKysrLQogMSBmaWxlIGNo YW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMv ZGlzcG5ldy5jIGIvc3JjL2Rpc3BuZXcuYwppbmRleCBkNjVhN2NiYzFmMS4uOGU3OWUzZmYyNmQg MTAwNjQ0Ci0tLSBhL3NyYy9kaXNwbmV3LmMKKysrIGIvc3JjL2Rpc3BuZXcuYwpAQCAtNTc0Nyw3 ICs1NzQ3LDE2IEBAIHdyaXRlX21hdHJpeCAoc3RydWN0IGZyYW1lICpmLCBib29sIGluaGliaXRf aWRfcCwgYm9vbCB1cGRhdGluZ19tZW51X3ApCiAgICAgIGlzIGRvbmUgc28gdGhhdCBtZXNzYWdl cyBhcmUgbWFkZSB2aXNpYmxlIHdoZW4gcGF1c2luZy4gICovCiAgIGludCBsYXN0X3JvdyA9IGYt PmRlc2lyZWRfbWF0cml4LT5ucm93cyAtIDE7CiAgIGlmIChNQVRSSVhfUk9XX0VOQUJMRURfUCAo Zi0+ZGVzaXJlZF9tYXRyaXgsIGxhc3Rfcm93KSkKLSAgICB3cml0ZV9yb3cgKGYsIGxhc3Rfcm93 LCB1cGRhdGluZ19tZW51X3ApOworICAgIHsKKyAgICAgIGludCBjdXJzb3JfaGlkZGVuID0gKEZS QU1FX1RUWSAoZikpLT5jdXJzb3JfaGlkZGVuOworICAgICAgaWYgKCFjdXJzb3JfaW5fZWNob19h cmVhICYmICFjdXJzb3JfaGlkZGVuKQorCXR0eV9oaWRlX2N1cnNvciAoRlJBTUVfVFRZIChmKSk7 CisKKyAgICAgIHdyaXRlX3JvdyAoZiwgbGFzdF9yb3csIHVwZGF0aW5nX21lbnVfcCk7CisKKyAg ICAgIGlmICghY3Vyc29yX2luX2VjaG9fYXJlYSAmJiAhY3Vyc29yX2hpZGRlbikKKwl0dHlfc2hv d19jdXJzb3IgKEZSQU1FX1RUWSAoZikpOworICAgIH0KIAogICBpZiAoZmlyc3Rfcm93ID49IDAp CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0X3JvdzsgaSA8IGxhc3Rfcm93OyArK2kpCgoyLjQ5LjAK Cg== --b1=_lfEAdGpNcaIyanGug4lSvu7mXbhlSCp9Lh09EVnVM5o--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 12 Oct 2025 08:39:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 12 04:39:24 2025 Received: from localhost ([127.0.0.1]:47681 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7rbw-00035W-8x for submit <at> debbugs.gnu.org; Sun, 12 Oct 2025 04:39:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42174) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7rbs-00035H-K1 for 79298 <at> debbugs.gnu.org; Sun, 12 Oct 2025 04:39:22 -0400 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 1v7rbm-0002sm-In; Sun, 12 Oct 2025 04:39:14 -0400 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=eUzOKpH4YX41MQ3eINnokun1BqQ1ldGNGu+Xj6w6I80=; b=n20Jy3t88NDX siNSxLDY+MDLFR/Wd4OP3kw575JCi6jlSoW1MKDROO65UMRuJnE9YYoDkh9c9cngK3WtMwJ5oDpKW OY7j1LQvsaYFJBDUjT8LctTgH/Kk7iUgOwkFN8jRyAISczMdN02GZNKLMY9r1+lnfL2MJ34lX0h4y rNXVIZIjNdKGQriztakhTpJWe0eQaB/NP6HvPclcg3e0a20wnsbubfkLAdUZfpgkIRDzjuCC3ISqz hyuKawGalrPm6mQ2TDHRybCd5v9ODFVK79be3aPU4QqgGFq60GyksXIyUf3liAi9sA/AbbX6Wl/IN 8Vm02hcKdNqJmAzlufhGJw==; Date: Sun, 12 Oct 2025 11:39:11 +0300 Message-Id: <86qzv84iq8.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> (message from Ewan on Sun, 12 Oct 2025 08:06:05 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> <86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> <86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> <86tt044rmx.fsf@HIDDEN> <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: include_yy@HIDDEN, 79298 <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: Sun, 12 Oct 2025 08:06:05 +0000 > From: Ewan <ewan@HIDDEN> > Cc: Yue Yi <include_yy@HIDDEN>, 79298 <at> debbugs.gnu.org > > Just to clarify, there are three cross-cutting issues being discussed. > 1) determining whether virtual terminal sequences are supported > 2) determining whether we are running on WT or not > 3) determining whether we are using a monospaced font We are only interested in 1) and 3), at least currently. > > Correcting myself: we can consider ourselves to be on WT if > > SetConsoleMode succeeds with ENABLE_VIRTUAL_TERMINAL_PROCESSING flag. > > I'm not sure if this is correct, as far as fonts go. SetConsoleMode > succeeds with this flag on newer versions of conhost.exe. > Easy test: start patched Emacs (-nw -Q) under conhost.exe, then eval: > '(w32-use-virtual-terminal-p) > > /As of now/, this returns the Lispy value (t/nil) of an internal > variable which is automatically set to 0 only if SetConsoleMode with > the flag set fails (i.e. returns 0). More on this value below. If this means we can succeed with ENABLE_VIRTUAL_TERMINAL_PROCESSING on conhost, _and_ this conhost indeed supports 24-bit True Color, then most of our problems are solved. The conhost case is mainly important for older Windows systems; if the user intentionally uses a -nw Emacs on conhost on a Windows system where the default is WT, we can always tell such users to deal with the CJK font-width issue manually, by customizing the appropriate user options. (It would be nice to be able to do that automatically, but if that's not feasible, it's okay tp punt, given that this is supposed to be a rare situation.) > > If you can enable ENABLE_VIRTUAL_TERMINAL_PROCESSING, VT is > > supported; version detection is required for some things, > > unfortunately: if you're beyond 10.0.15063 24-bit color is > > supported. > > > > I guess this means we will need to test Windows version as well, where > > we decide whether 24-bit true-color support is available. > > Good catch! So we need to add this condition /somewhere/. > > (w32_major_version > 10 > || (w32_major_version == 10 > && (w32_minor_version > 0 || w32_build_number >= 15063))) Yes. > There is some choice as to where. Really, it presents a direct limit > on the value of tty->TN_max_colors directly. But since this limitation > is esoteric, VT sequences are only used for color, and there is no > sense in using them for 16-color display, I will add this condition to > the logic for setting the internal variable w32_use_virtual_terminal, > which indirectly limits the value of tty->TN_max_color (to 16). SGTM, thanks. > Maybe it is best to tackle (3) directly. In conhost, we can get > information about the current font with GetCurrentConsoleFont and > GetCurrentConsoleFontEx. But there are reports that these do not work > under WT, and it would not surprise me if they never do, since WT is > supposed to provide a traditional, font-agnostic, TTY environment, > in which case reading the settings.json may be the only way. These APIs are deprecated. More importantly, I suspect they only tell us about the default font, whereas WT clearly uses other fonts when needed. For example, set the codepage to 65001, then view some file with Emoji (for example, some of the files in admin/unidate/), whether with "emacs -nw" or even with the Windows' own pager program 'more': you will see that many Emoji are displayed, although the default font doesn't have glyphs for them. Same if you try "C-h h" in Emacs. > If understand it, font processing shouldn't be an issue going forward. > On newer systems, with virtual terminal sequences enabled, under both > conhost.exe and WT (which AFAICT uses conhost for each tab), cursor > position will be advanced by WriteConsole, then retrieved from the > terminal, whether with GetConsoleCursorInfo, or the VT sequence > equivalent. So in any case, we should be able to leave all font > processing and position calculation up to the system, right? Let's hope so. I'll reserve judgment until we can actually test this, both on WT and on conhost.exe.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 12 Oct 2025 08:06:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 12 04:06:19 2025
Received: from localhost ([127.0.0.1]:47645 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v7r5v-0001Mj-6F
for submit <at> debbugs.gnu.org; Sun, 12 Oct 2025 04:06:19 -0400
Received: from mail-24422.protonmail.ch ([109.224.244.22]:10079)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v7r5r-0001MD-Hw
for 79298 <at> debbugs.gnu.org; Sun, 12 Oct 2025 04:06:17 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev;
s=protonmail; t=1760256368; x=1760515568;
bh=moaZrmR/Rcq0G4tOC0VGRrqutRT/53CFXctWHN1421M=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=lJ1XzKSNYGhfNyFwiMemQdOOclJLD/RlwmB1wDUdOgsyGWJpadd2fAuAJD6rKKir3
CLiXGd3UqpfcxYSTKjA4nG1rMNjQXe61+2IcN54fHVmqQgm8j3tmPEHC5cqXfqF6et
yARrIRza1t6iJnPnNwMQXRyV42HwGZU9zGM4xI0wpbEORuas8draCz57nw/kz14cie
B3WKqQfz0QxBL+jhx5reBsW2pi+YH4CfhojmCbC2kpA1qa3CdasIOnF/RJUkmWXZsY
S4oI7koB7LP5rNk2dbST7bftI4+ziXxPXiFcPOdxYcgSK1P6KP1PbFPzms60OnpC17
xW//h6/ycueDw==
Date: Sun, 12 Oct 2025 08:06:05 +0000
To: Eli Zaretskii <eliz@HIDDEN>
From: Ewan <ewan@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Message-ID: <Yu1fO9o5wLmivfnFqn6Cz91O04aAbenGNnOh_Tlb5LXxUMyK9jS3inR0OoJXy9PlRefsNG9QxbSTw-QIlSXUy10Y4tG__s1zgSojdHrXv8k=@etown.dev>
In-Reply-To: <86tt044rmx.fsf@HIDDEN>
References: <thqntt0bhl4x.fsf@HIDDEN> <86ecrb8bru.fsf@HIDDEN>
<tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN>
<86tt067nrz.fsf@HIDDEN>
<tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN>
<86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN>
<tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN>
<86tt044rmx.fsf@HIDDEN>
Feedback-ID: 150490971:user:proton
X-Pm-Message-ID: f35f3390afdbbf35f2532b798498cd31675fe490
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: 79298
Cc: Yue Yi <include_yy@HIDDEN>, 79298 <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 (-)
Just to clarify, there are three cross-cutting issues being discussed.
1) determining whether virtual terminal sequences are supported
2) determining whether we are running on WT or not
3) determining whether we are using a monospaced font
> > > // See also:
> > > // https://github.com/Textualize/rich/issues/140
> > > // https://learn.microsoft.com/en-us/windows/console/setconsolemode
> > > HANDLE h =3D GetStdHandle(STD_OUTPUT_HANDLE);
> > > DWORD mode;
> > > GetConsoleMode(h, &mode);
> >=20
> > If you are saying that when WT is used, the value returned by
> > GetConsoleMode at startup will always include the
> > ENABLE_VIRTUAL_TERMINAL_PROCESSING bit, then this should be enough to
> > detect WT.
>=20
>=20
> Correcting myself: we can consider ourselves to be on WT if
> SetConsoleMode succeeds with ENABLE_VIRTUAL_TERMINAL_PROCESSING flag.
I'm not sure if this is correct, as far as fonts go. SetConsoleMode
succeeds with this flag on newer versions of conhost.exe.
Easy test: start patched Emacs (-nw -Q) under conhost.exe, then eval:
'(w32-use-virtual-terminal-p)
/As of now/, this returns the Lispy value (t/nil) of an internal
variable which is automatically set to 0 only if SetConsoleMode with
the flag set fails (i.e. returns 0). More on this value below.
> We could also use the WT_SESSION environment variable, but AFAIU this
> is not recommended.
>=20
> Also note that the first URL above says:
>=20
> If you can enable ENABLE_VIRTUAL_TERMINAL_PROCESSING, VT is
> supported; version detection is required for some things,
> unfortunately: if you're beyond 10.0.15063 24-bit color is
> supported.
>=20
> I guess this means we will need to test Windows version as well, where
> we decide whether 24-bit true-color support is available.
Good catch! So we need to add this condition /somewhere/.=20
(w32_major_version > 10
|| (w32_major_version =3D=3D 10
&& (w32_minor_version > 0 || w32_build_number >=3D 15063)))
There is some choice as to where. Really, it presents a direct limit
on the value of tty->TN_max_colors directly. But since this limitation
is esoteric, VT sequences are only used for color, and there is no
sense in using them for 16-color display, I will add this condition to
the logic for setting the internal variable w32_use_virtual_terminal,
which indirectly limits the value of tty->TN_max_color (to 16).
> > We could also use the WT_SESSION environment variable, but AFAIU this
> > is not recommended.
>=20
>=20
> Yes, there's no documentation for it (or at least I cannot find it), and
> while it's unlikely to change (due to compatibility), it's best not to
> rely on that assumption.
>=20
> https://github.com/microsoft/terminal/issues/13006
That is unfortunate. It seems WT_SESSION and WT_PROFILE are set only
if the shell process is created by WT. It also appears we can test if
we are running under "bare" conhost.exe by checking if the SESSIONNAME
environment variable is unset, but when running (explicitly started)
cmd or powershell under conhost.exe, this variable will also be set.
So the core issue is that when all of:
a) SESSIONNAME is set
b) WT_PROFILE is not set
c) WT_SESSION is not set
d) SetConsoleMode succeeds with ENABLE_VIRTUAL_TERMINAL_PROCESSING
we have no way of determining whether we are running in conhost or WT,
so as to infer (indirectly) whether we are using a monospaced font.
Maybe it is best to tackle (3) directly. In conhost, we can get
information about the current font with GetCurrentConsoleFont and
GetCurrentConsoleFontEx. But there are reports that these do not work
under WT, and it would not surprise me if they never do, since WT is
supposed to provide a traditional, font-agnostic, TTY environment,
in which case reading the settings.json may be the only way.
See:
https://learn.microsoft.com/en-us/windows/console/getcurrentconsolefont
https://learn.microsoft.com/en-us/windows/console/getcurrentconsolefontex
https://stackoverflow.com/questions/75258700/change-windows-terminal-font-p=
rogrammatically
If understand it, font processing shouldn't be an issue going forward.
On newer systems, with virtual terminal sequences enabled, under both
conhost.exe and WT (which AFAICT uses conhost for each tab), cursor
position will be advanced by WriteConsole, then retrieved from the
terminal, whether with GetConsoleCursorInfo, or the VT sequence
equivalent. So in any case, we should be able to leave all font
processing and position calculation up to the system, right?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 12 Oct 2025 05:26:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 12 01:26:59 2025 Received: from localhost ([127.0.0.1]:47514 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7obi-0002hE-T1 for submit <at> debbugs.gnu.org; Sun, 12 Oct 2025 01:26:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36172) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7obg-0002gp-9u for 79298 <at> debbugs.gnu.org; Sun, 12 Oct 2025 01:26:57 -0400 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 1v7obZ-0006HL-FJ; Sun, 12 Oct 2025 01:26:49 -0400 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=1BnNiRWuPeSRMiOZDwSDz2V/aGzR+yvbbscuCXEnzzs=; b=N8DgRCqL8/UK 5YCdiHJeISSLJIKP4mkCkxKSVkVRLW2Uz7rw+rHa5nrT5aCXs1SR2foFq6VQp9YED+B9KpYVPfmF0 jVogkpsB1W2ZNfLPUlqiGxakg9+1gRbpm3RL7ErmRlNNppENZmxi8oqnnC05G5J7skHcwynQ6jiWI nWUjMFCIXrl3FckRuU5wnDdLOgbKD3HNZedP/YS1BES+s/fZ3drNPzWhPRm4jr8krGLtR/Rp0cdpT Eo4I9pRrUrX2naLrmdAlnVB0azabkEX2fuYuqoWfnMAgKUrrB0vkowASkYpFC3ZozxacVf7oUqJjO z/fl00XGCbbLo/83dF0ThA==; Date: Sun, 12 Oct 2025 08:26:46 +0300 Message-Id: <86tt044rmx.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> <86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> <86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN> <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "79298" <79298 <at> debbugs.gnu.org> > Date: Sun, 12 Oct 2025 11:23:51 +0800 > > > Also note that the first URL above says: > > > > If you can enable ENABLE_VIRTUAL_TERMINAL_PROCESSING, VT is > > supported; version detection is required for some things, > > unfortunately: if you're beyond 10.0.15063 24-bit color is > > supported. > > > > I guess this means we will need to test Windows version as well, where > > we decide whether 24-bit true-color support is available. > > IsWindowsVersionOrGreater(10, 0, 15063) may help. This expression > returned 0 (FALSE, which is the expected result) when tested on Windows 11. We don't need IsWindowsVersionOrGreater (whose use might be tricky, given how Windows tries to conceal its true version). We already have the triplet of values in the variables w32_major_version, w32_minor_version, and w32_build_number. See x-server-version, which on Windows returns a list of these 3 values. On my system (Windows 11 24H2) it returns the list (10 0 26100), so the test against 10.0.15063 will succeed. > Of course, this is more about the True Color issue that was originally > discussed in this bug, rather than the artifacts. Yes. That's what I said above: the version test is needed for True Color support.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 12 Oct 2025 03:29:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 11 23:29:13 2025
Received: from localhost ([127.0.0.1]:47352 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v7mll-0005ix-3a
for submit <at> debbugs.gnu.org; Sat, 11 Oct 2025 23:29:13 -0400
Received: from out203-205-221-190.mail.qq.com ([203.205.221.190]:45456)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v7mlg-0005iH-3K
for 79298 <at> debbugs.gnu.org; Sat, 11 Oct 2025 23:29:10 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1760239432; bh=+dcwWb0oYSnVjv5sxO9nqGlBDPyWwcHTtVUkAho6jkc=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=Upbo60qlF6OHvSBoe+NWAYBO0GmzDkTsC86foIrUoS4mKAWWVa4PSevPCq/QDFKGJ
y6kn8XwajPu04FwbfW95rpDZT/10jy+BmhHCwG0bXCY/D6e5E5sjg7GC+rlVTHMuXW
xOlEwSwcelNHPbl45J4wmYMMhk9GUH1GRBlU2mX4=
X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg=
X-QQ-XMAILINFO: OZebYClYfzV+Tw0cM0XFjEpONcGVNYASOZDFxn0bMtzoHz+JV+QaQpGXohOWJF
KCtVmogSbYpZ+wKerp9vLqgH+FnjC3PxbRwZPUWIPM4yVSBs8uREhQFSAZLiRC9rvuAyLf0tD07bA
TP7JwnfD2CvZXMSxyYEB3qK+NSS1Qh6KX/vAQqZJvPS2a3t6V5gyxSrSqON9AB1zhz7Tz6JCZ6Muu
z7/EPRbDB12UfuwlGU8gEXoMlSdEkL11n96RQwTkqNmoydhN75yX53cMdaZ5MUE4UYsUa4xSC9Lmc
MDJl15S0aglEslOH9pOicS5l6KKiNjoTwzRB9Hbx/vkK2BAzWaGlUI9N27t9eIRl8i95no5nJUieV
wb06nXyVekq3xiJBX+XYm98qom4Z9WACZEg2Milz6hmW/NsCyzBsrB6BtMdwsZpk9HnhpvhMoleWT
53A3Lgj7zCWuj4wKHrSpLsaZtgKgFCLT6TQqyAxeSau97cwX+UslXU0rpyThSB9JgXWGTWZMmKP6h
N5Q+ze0FlyNfF73pSr1uYmyKKiEehRdCOvHasd4EyUhUFYX7SsmJWfBjLIyyXJUCqvYJ6DdawnF2H
/yXpYQAINHUMxCfR+ytbihpNkNTOjWYCYApCZE6XJpaPwS+2bXn3CexzFq3hvH69Hkg6X7NNeK+Ep
7dCHKeoGtghLuuTfKs+PpH+dOfGGVU7lNxXlAHHWIRO2baa/BKyzDANSfEPE2HSpK5mQX0HbycMOy
OyO4PSPOIgl4dKsM5EeeKHqtKJF/vVAPN7hSOANn51+c+8djJY1cStfIZ3Hmr6Ks11IA5baNzSLZP
Z3t3CLvvKZoAFOXxqNPBfEWmpktX89yXY80Msuc9u6L0qPuK/pAQB9j40nu6tWaTUzbGtcfkIqeFz
APJuYvLkJKbioKc8F3+p6MpwTmpoaNIlYT6SPIlh4fD1nKPokN/86m6jvhiemjYP4uAnHw/78t+as
F4Ri2Twtdy63dk2aegXfHR58Z8k5Pt7yE/4wi1npWVbnSdfU9m8F4mEopqorH8l4o2BPseiJsJyYe
fonSVxGOk1L+AdT4dOISqHF8I9FU5M7UdFdMKI6siZ09gMKE=
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>,
"=?utf-8?B?ZXdhbg==?=" <ewan@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Sun, 12 Oct 2025 11:23:51 +0800
X-Priority: 3
Message-ID: <tencent_AC749405D1969D779C98DE73E0768FC75609@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
<86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN>
<86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN>
<867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN>
<86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN>
<86wm5484cy.fsf@HIDDEN>
<86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN>
<86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN>
<86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN>
<86cy6t7vh1.fsf@HIDDEN> <86y0ph4bso.fsf@HIDDEN>
In-Reply-To: <86y0ph4bso.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1760239431tpxogojrd
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Eli Zaretskii, Sat, 11 Oct 2025 19:56:39 +0300, wrote, > >
> // See also: > > > // https://github.com/Textualize/rich/issues/140 > >
> // https://learn.microsoft.com/en-us/windows/console/setconsolemo [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.190 listed in sa-trusted.bondedsender.org]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [203.205.221.190 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.190 listed in bl.score.senderscore.com]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Eli Zaretskii, Sat, 11 Oct 2025 19:56:39 +0300, wrote, > >
> // See also: > > > // https://github.com/Textualize/rich/issues/140 > >
> // https://learn.microsoft.com/en-us/windows/console/setconsolemo [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[203.205.221.190 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.190 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.190 listed in bl.score.senderscore.com]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
RWxpIFphcmV0c2tpaSwgU2F0LCAxMSBPY3QgMjAyNSAxOTo1NjozOSArMDMwMCwgd3JvdGUs
Cj4gPiA+IC8vIFNlZSBhbHNvOgo+ID4gPiAvLyBodHRwczovL2dpdGh1Yi5jb20vVGV4dHVh
bGl6ZS9yaWNoL2lzc3Vlcy8xNDAKPiA+ID4gLy8gaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQu
Y29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9zZXRjb25zb2xlbW9kZQo+ID4gPiBIQU5ETEUg
aCA9IEdldFN0ZEhhbmRsZShTVERfT1VUUFVUX0hBTkRMRSk7Cj4gPiA+IERXT1JEIG1vZGU7
Cj4gPiA+IEdldENvbnNvbGVNb2RlKGgsICZtb2RlKTsKPiA+IAo+ID4gSWYgeW91IGFyZSBz
YXlpbmcgdGhhdCB3aGVuIFdUIGlzIHVzZWQsIHRoZSB2YWx1ZSByZXR1cm5lZCBieQo+ID4g
R2V0Q29uc29sZU1vZGUgYXQgc3RhcnR1cCB3aWxsIGFsd2F5cyBpbmNsdWRlIHRoZQo+ID4g
RU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORyBiaXQsIHRoZW4gdGhpcyBzaG91
bGQgYmUgZW5vdWdoIHRvCj4gPiBkZXRlY3QgV1QuCj4gCj4gQ29ycmVjdGluZyBteXNlbGY6
IHdlIGNhbiBjb25zaWRlciBvdXJzZWx2ZXMgdG8gYmUgb24gV1QgaWYKPiBTZXRDb25zb2xl
TW9kZSBzdWNjZWVkcyB3aXRoIEVOQUJMRV9WSVJUVUFMX1RFUk1JTkFMX1BST0NFU1NJTkcg
ZmxhZy4KCklmIHRoYXQncyBhIG1vcmUgcmVsaWFibGUgYXBwcm9hY2guCgo+IFdlIGNvdWxk
IGFsc28gdXNlIHRoZSBXVF9TRVNTSU9OIGVudmlyb25tZW50IHZhcmlhYmxlLCBidXQgQUZB
SVUgdGhpcwo+IGlzIG5vdCByZWNvbW1lbmRlZC4KClllcywgdGhlcmUncyBubyBkb2N1bWVu
dGF0aW9uIGZvciBpdCAob3IgYXQgbGVhc3QgSSBjYW5ub3QgZmluZCBpdCksIGFuZAp3aGls
ZSBpdCdzIHVubGlrZWx5IHRvIGNoYW5nZSAoZHVlIHRvIGNvbXBhdGliaWxpdHkpLCBpdCdz
IGJlc3Qgbm90IHRvCnJlbHkgb24gdGhhdCBhc3N1bXB0aW9uLgoKaHR0cHM6Ly9naXRodWIu
Y29tL21pY3Jvc29mdC90ZXJtaW5hbC9pc3N1ZXMvMTMwMDYKCj4gQWxzbyBub3RlIHRoYXQg
dGhlIGZpcnN0IFVSTCBhYm92ZSBzYXlzOgo+IAo+ICAgSWYgeW91IGNhbiBlbmFibGUgRU5B
QkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORywgVlQgaXMKPiAgIHN1cHBvcnRlZDsg
dmVyc2lvbiBkZXRlY3Rpb24gaXMgcmVxdWlyZWQgZm9yIHNvbWUgdGhpbmdzLAo+ICAgdW5m
b3J0dW5hdGVseTogaWYgeW91J3JlIGJleW9uZCAxMC4wLjE1MDYzIDI0LWJpdCBjb2xvciBp
cwo+ICAgc3VwcG9ydGVkLgo+IAo+IEkgZ3Vlc3MgdGhpcyBtZWFucyB3ZSB3aWxsIG5lZWQg
dG8gdGVzdCBXaW5kb3dzIHZlcnNpb24gYXMgd2VsbCwgd2hlcmUKPiB3ZSBkZWNpZGUgd2hl
dGhlciAyNC1iaXQgdHJ1ZS1jb2xvciBzdXBwb3J0IGlzIGF2YWlsYWJsZS4KCklzV2luZG93
c1ZlcnNpb25PckdyZWF0ZXIoMTAsIDAsIDE1MDYzKSBtYXkgaGVscC4gVGhpcyBleHByZXNz
aW9uCnJldHVybmVkIDAgKEZBTFNFLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0KSB3
aGVuIHRlc3RlZCBvbiBXaW5kb3dzIDExLgoKT2YgY291cnNlLCB0aGlzIGlzIG1vcmUgYWJv
dXQgdGhlIFRydWUgQ29sb3IgaXNzdWUgdGhhdCB3YXMgb3JpZ2luYWxseQpkaXNjdXNzZWQg
aW4gdGhpcyBidWcsIHJhdGhlciB0aGFuIHRoZSBhcnRpZmFjdHMu
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 11 Oct 2025 16:57:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 11 12:57:01 2025 Received: from localhost ([127.0.0.1]:46719 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7ctw-0002bI-KD for submit <at> debbugs.gnu.org; Sat, 11 Oct 2025 12:57:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36668) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7ctn-0002ao-Nr for 79298 <at> debbugs.gnu.org; Sat, 11 Oct 2025 12:56:53 -0400 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 1v7ctf-0002hB-Ls; Sat, 11 Oct 2025 12:56:43 -0400 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=JeeJaQf5XuFj7tdhE5i6jy6GbBJ/UTbf3h59VOI1BM8=; b=RY4D3cqEV+xO vpXuomSgZLJ7AAmfnExlgfkAdfDCpE6KV1Z32qbFLINPmeBh3CnYZ8FrBx23/u32LdfZJfbqEWLHv Rj43wiIIN6OWMgyqxpoBgXgH9hqsd6ESB/aQ5QS4RYTjMpWPiqIVJMd6DJafYoBwkJX29Ede+ZlzM r+piGGtSuvx/wSzwDgf+1eUfNwg4pyFmnd/7YKEjpdjn9c0jMPYqFKRncB0frnNOQ+gu5yd7W/lya 9yBmc+vcO6iL2cr1FTA5A6RYfcjnAi7f+uC9g5fNUdsr7AOsoc0LwinKqfooEQA9xPDzEWBJABnOy fipBE/dwk+XkNu9jEOyu6Q==; Date: Sat, 11 Oct 2025 19:56:39 +0300 Message-Id: <86y0ph4bso.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: include_yy@HIDDEN, ewan@HIDDEN In-Reply-To: <86cy6t7vh1.fsf@HIDDEN> (message from Eli Zaretskii on Sat, 11 Oct 2025 10:23:22 +0300) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> <86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> <86cy6t7vh1.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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 (---) > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > Date: Sat, 11 Oct 2025 10:23:22 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > // See also: > > // https://github.com/Textualize/rich/issues/140 > > // https://learn.microsoft.com/en-us/windows/console/setconsolemode > > HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); > > DWORD mode; > > GetConsoleMode(h, &mode); > > If you are saying that when WT is used, the value returned by > GetConsoleMode at startup will always include the > ENABLE_VIRTUAL_TERMINAL_PROCESSING bit, then this should be enough to > detect WT. Correcting myself: we can consider ourselves to be on WT if SetConsoleMode succeeds with ENABLE_VIRTUAL_TERMINAL_PROCESSING flag. We could also use the WT_SESSION environment variable, but AFAIU this is not recommended. Also note that the first URL above says: If you can enable ENABLE_VIRTUAL_TERMINAL_PROCESSING, VT is supported; version detection is required for some things, unfortunately: if you're beyond 10.0.15063 24-bit color is supported. I guess this means we will need to test Windows version as well, where we decide whether 24-bit true-color support is available.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 11 Oct 2025 09:03:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 11 05:03:04 2025
Received: from localhost ([127.0.0.1]:44661 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v7VVI-00029a-Aa
for submit <at> debbugs.gnu.org; Sat, 11 Oct 2025 05:03:04 -0400
Received: from out203-205-221-149.mail.qq.com ([203.205.221.149]:58210)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v7VVC-00028Y-E5
for 79298 <at> debbugs.gnu.org; Sat, 11 Oct 2025 05:03:00 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1760173062; bh=YiMoAuI0cUMr8xHWlgAmwny2OgE1zhQVxD8rZr6Dd6o=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=M6+VQp/fAs4HGXtftGyaVSMdCZv5Q4m0mPXELdjfitKpF3jqBatj9NVKyq94ovGtG
AdO9fvokxvTARGi0Tg9ll8LP1xOJwGjsU3aarStBEyy/AnRKE1yrIC+3jfsk9t3Dh5
H1Q2cJ7dzaUOBjZ7xrkWwyKBDllzv5//rEM14BZA=
X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg=
X-QQ-XMAILINFO: OJPHLf7JleL0rP2QM39fxc6UpT23MNrKm1vPj9Nf9CMTLcve4W1CiM/Qe5QIl7
ckYiyh8n1MqJdHEN+ZjQ22LlxXWHf2+1NHwsvuOhLQ23Q1jnR9M806VP53/5XvVmlHAFpO42WWu8B
NPXbsWxlxjW59fcDXXAzNHtDVRDn1hP27VL+v1OmI3owNsyf1pTH7XfRfKDq/nP41R1qhb3SmEAJE
XTnAo/n4F9yFkynyK203EI3/31fVP/Zkn1VwQA571IqUII77P8AdvAiAQQaQrHSOYzIiJ0Zpdnzri
E2XODw69g2aCiV1iJ4ZlUltxA3gEC2tY9XR1IH+XAANwqwUNEpLVYmS6oE3mJ6O5ki69FozfwpLf3
MAq4zMWVkIDUFL3kwJ4ez0POClySwPHoNAUf82sYrBSFxevx1CAcAT1rh8hk0mc9q6fkyU3XoiZCi
hwlUNru/3F70p/gOR979/Bb1txjaNj5zOdq8gomZeRh83LoNrx2UdbihYS9imSyCNZkJ+rWpyvSGk
y5/xJe6xdq7uop+SAn6f6A5vAnImfy8eoKVrGsnCrz8cqGxME+flJLUq1w5ESwUhvq3LF9VHoZOuy
jHQBqSht5a38dW9CBPPNt2m3+9BuSlX5UZU4QSQALOFQb3eL1fz3ErdGlVWUy5QjJ9ew8woj1kkri
RjnFCS/KSH+skkzMz7EPJTwUJfRV86KyzsEONOfIfBQ7HHsv6AzUAfcuONwKsD/VKLyA3DbBXshwq
IPSrn92h0wrJuprGDcqe846IRhUcitaUoJc7IfX+EOslQPJ6XRwE3AP4W/FiUY/F1DDj6mB+L+Owb
4a39AyKu1Yxjjs1iRXkak2Msr06uoRBoxITnZ7e6pDG67CwQ9iJnPtUEjFxeQ96wPIH7Oi6Ycos2V
UuZJ7i3JOcSjBnaSKNQo8OR+mQ70fvn6geO0pdJpjehPovtPOATCq4eehTMsu9qGq1QdXhgsn4lo4
CS50T9c71AQp56p9diE7P6/Ed9fWe5VaJS4G1zgcMZSH69IJnxueX578etUr+BaXK8YD6Ei/axt+Q
BF1yRD+wx54lAalETwvUtST8tHSwueBv/vQoDFfxHBIifK4+p8DWyAOkKAw==
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Sat, 11 Oct 2025 16:57:42 +0800
X-Priority: 3
Message-ID: <tencent_EFCDD759D169E95D07EEE9786CE557990105@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
<86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN>
<86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN>
<867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN>
<86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN>
<86wm5484cy.fsf@HIDDEN>
<86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN>
<86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN>
<86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN>
<86bjmd7u37.fsf@HIDDEN>
<tencent_5B6D650FB415677DA7E8F704B88A63869507@HIDDEN>
In-Reply-To: <tencent_5B6D650FB415677DA7E8F704B88A63869507@HIDDEN>
X-QQ-mid: xmseza31-0t1760173062tc6hko8fj
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > > That's not what I see on the screenshots you posted:
there,
the above > > 7 characters (they are the last ones on display) are also
half-width.
> > In the conhost case, they are shown as empty rec [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.149 listed in sa-accredit.habeas.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [203.205.221.149 listed in list.dnswl.org]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.149 listed in bl.score.senderscore.com]
0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4)
[203.205.221.149 listed in wl.mailspike.net]
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > > That's not what I see on the screenshots you posted: there,
the above > > 7 characters (they are the last ones on display) are also half-width.
> > In the conhost case, they are shown as empty rec [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.149 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4)
[203.205.221.149 listed in wl.mailspike.net]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.149 listed in bl.score.senderscore.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[203.205.221.149 listed in list.dnswl.org]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
PiA+IFRoYXQncyBub3Qgd2hhdCBJIHNlZSBvbiB0aGUgc2NyZWVuc2hvdHMgeW91IHBvc3Rl
ZDogdGhlcmUsIHRoZSBhYm92ZQo+ID4gNyBjaGFyYWN0ZXJzICh0aGV5IGFyZSB0aGUgbGFz
dCBvbmVzIG9uIGRpc3BsYXkpIGFyZSBhbHNvIGhhbGYtd2lkdGguCj4gPiBJbiB0aGUgY29u
aG9zdCBjYXNlLCB0aGV5IGFyZSBzaG93biBhcyBlbXB0eSByZWN0YW5nbGVzLCB3aGljaCBt
ZWFucwo+ID4gdGhleSBhcmUgdW5zdXBwb3J0ZWQgYnkgdGhlIGZvbnQgdXNlZCBieSBjb25o
b3N0LmV4ZS4KPiA+IAo+ID4gU28gbXkgY29uY2x1c2lvbiBmcm9tIHRoaXMgaXMgdGhhdCBX
VCBtYWtlcyBfYWxsXyB0aGUgYW1iaWd1b3VzLXdpZHRoCj4gPiBjaGFyYWN0ZXJzIGJlIGhh
bGYtd2lkdGgsIGkuZS4gdGhleSB0YWtlIDEgY29sdW1uIG9uIGRpc3BsYXkuICBXaGVyZWFz
Cj4gPiBjb25ob3N0IGJhc2ljYWxseSBnaXZlcyB0aGVtIGFsbCAyLWNvbHVtbiAoZnVsbC13
aWR0aCkgZGlzcGxheS4KPiA+IAo+ID4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZz8KPiAKPiBT
b3JyeSwgaXQgaXMgSmFwYW5lc2UuIFdoZW4gSSBzd2l0Y2ggc3lzdGVtIGxhbmd1YWdlIHRv
IENoaW5lc2UsIHRoZXkKPiBhcmUgYWxsIGhhbGYtd2lkdGguCj4gCj4gSSBhZ3JlZSB3aXRo
IHlvdXIgY29uY2x1c2lvbiBpbiBDaGluZXNlIGVudmlyb25tZW50LgoKU29ycnleMiwgaW4g
Ym90aCBDaGluZXNlIGFuZCBKYXBhbmVzZSBXVCwgdGhleSBhcmUgaGFsZi13aWR0aCBpbiBj
bWQsIApidXQgZnVsbC13aWR0aCBpbiBwb3dlcnNoZWxsLiA=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 11 Oct 2025 08:54:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 11 04:54:01 2025
Received: from localhost ([127.0.0.1]:44635 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v7VMX-0001gy-5O
for submit <at> debbugs.gnu.org; Sat, 11 Oct 2025 04:54:01 -0400
Received: from out162-62-58-211.mail.qq.com ([162.62.58.211]:49137)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v7VMQ-0001gd-Ua
for 79298 <at> debbugs.gnu.org; Sat, 11 Oct 2025 04:53:57 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1760172519; bh=i0tZcvEhSLCjCG2nzEaSHTlghe7ya+KHrAAfLpCrHT4=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=hfp/IBpKSJMtbj7d0C6DmbyQ19CjMv2cjRbaHZg+g045tpvvJf4Fy+BE2FrPQzjWT
thtCLTynVgCV2NpwvSKdWo1WfIVmzpRan5kubhU33ddiKR1TZ8J4g5oVLcz7swJV6L
PHC9vcAP1JBxCUvVz6l9mDzWSSOjOeypN9Lk71Kk=
X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs=
X-QQ-XMAILINFO: OZebYClYfzV+Tw0cM0XFjEpZAeeMtg4X6RZzltql1Lt5OjGOEfSHf0UxakCD43
4scfHK6DKBV7CvXfvqJeV3VEm9bB3y1o5h8a41QaIAeslIQRwgmroMST+rCO+bpXZFOFrNVGsjNXv
T0U3M4bZuU5UD0VpSif2bQLalH5cHmddrHfUL6MukgKY/qVJMtKRAp9mUfKCrqqIc8HypJdGDfU6w
IhajQhFSw1sp3GI0ETWCBvFc11ASpHNuDgEKDDFWORlWjeQRAtgGu2WKCnMit069u+jaV3xxadLQT
347NF6gS8Yu3DxsAe8b7CA3FIdzcM47eG0+MKz/9Ho3n1LHsx6i2G7B6YeZKHAQ9BG7t7rCia/T+i
mPJ9EOMH7sPJOVxGVmpMaDv/FP/ElX+iBaaC2ze4YDPbyF4rt7ST3LUE60T5ARb1XDmTnb+wZMRzo
TDbfQsGO2UCsd/8wF0zXLigAAIDdxFz3nm/x8XQz+G70DOq+gqckEjV3fG8kV/K7UICYTylmQOFlH
B4ZIx7lYn0hmjP3vSPTnraLrQn73J+gI8TaDd7pyJlMChXDaHt2CnfYeRJTdaVdyYwhMtxXejPVMk
VvAA5uC72Q8l0d3mrPiQXEXTEM8pola2yxxPvLHB6bnr/WDKRVwLc1/tMDWcAHAup2e0kFGdZo6p0
hctUP5rfWrLviWxvGG6VVPS1cAgvgDLQjlnE+humLhaYXc7sQB28X5+ZS2UKe5z9RRpPNH2YsrG21
sRfafVVoURf3S5u+bwfTWdJmdq1W0+pWlLrYvJ6+e4PNEP+wheM/1HxtiRvMDLbA0UdcfqkOrMKIA
gPtu1xh5Vidt5osTiL5SWkxlz6EV8D4aV4tlDsMNwYFnJPisJ1lP94MOY7FpflICEu4Hz5eav+TGz
MRNWFuYqDzyk9pXdfv9wDAfEVbkcC6CI/USolGaRNeFqd+e8tEEGQolQ8ZAtvOGCToLHWF4+FT6DZ
o20rsZqpm3f4WaFCXtDb2JBamL5v5uCENlwB1jI6M+yhox6vsBQ+h4C98zjY2soc2fT9uqXe1+Rlg
vVUBFR1EU1NwpWs0=
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Sat, 11 Oct 2025 16:48:39 +0800
X-Priority: 3
Message-ID: <tencent_5B6D650FB415677DA7E8F704B88A63869507@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
<86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN>
<86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN>
<867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN>
<86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN>
<86wm5484cy.fsf@HIDDEN>
<86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN>
<86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN>
<86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN>
<86bjmd7u37.fsf@HIDDEN>
In-Reply-To: <86bjmd7u37.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1760172519t2zmfg5zi
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > That's not what I see on the screenshots you posted: there,
the above > 7 characters (they are the last ones on display) are also
half-width.
> In the conhost case, they are shown as empty rectangle [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in bl.score.senderscore.com]
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.58.211 listed in wl.mailspike.net]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [162.62.58.211 listed in list.dnswl.org]
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > That's not what I see on the screenshots you posted: there,
the above > 7 characters (they are the last ones on display) are also half-width.
> In the conhost case, they are shown as empty rectangle [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.58.211 listed in wl.mailspike.net]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in bl.score.senderscore.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[162.62.58.211 listed in list.dnswl.org]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
PiBUaGF0J3Mgbm90IHdoYXQgSSBzZWUgb24gdGhlIHNjcmVlbnNob3RzIHlvdSBwb3N0ZWQ6
IHRoZXJlLCB0aGUgYWJvdmUKPiA3IGNoYXJhY3RlcnMgKHRoZXkgYXJlIHRoZSBsYXN0IG9u
ZXMgb24gZGlzcGxheSkgYXJlIGFsc28gaGFsZi13aWR0aC4KPiBJbiB0aGUgY29uaG9zdCBj
YXNlLCB0aGV5IGFyZSBzaG93biBhcyBlbXB0eSByZWN0YW5nbGVzLCB3aGljaCBtZWFucwo+
IHRoZXkgYXJlIHVuc3VwcG9ydGVkIGJ5IHRoZSBmb250IHVzZWQgYnkgY29uaG9zdC5leGUu
Cj4gCj4gU28gbXkgY29uY2x1c2lvbiBmcm9tIHRoaXMgaXMgdGhhdCBXVCBtYWtlcyBfYWxs
XyB0aGUgYW1iaWd1b3VzLXdpZHRoCj4gY2hhcmFjdGVycyBiZSBoYWxmLXdpZHRoLCBpLmUu
IHRoZXkgdGFrZSAxIGNvbHVtbiBvbiBkaXNwbGF5LiAgV2hlcmVhcwo+IGNvbmhvc3QgYmFz
aWNhbGx5IGdpdmVzIHRoZW0gYWxsIDItY29sdW1uIChmdWxsLXdpZHRoKSBkaXNwbGF5Lgo+
IAo+IEFtIEkgbWlzc2luZyBzb21ldGhpbmc/CgpTb3JyeSwgaXQgaXMgSmFwYW5lc2UuIFdo
ZW4gSSBzd2l0Y2ggc3lzdGVtIGxhbmd1YWdlIHRvIENoaW5lc2UsIHRoZXkKYXJlIGFsbCBo
YWxmLXdpZHRoLgoKSSBhZ3JlZSB3aXRoIHlvdXIgY29uY2x1c2lvbiBpbiBDaGluZXNlIGVu
dmlyb25tZW50Lg==
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 11 Oct 2025 07:53:37 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 11 03:53:37 2025 Received: from localhost ([127.0.0.1]:44352 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7UQ5-0006q4-1U for submit <at> debbugs.gnu.org; Sat, 11 Oct 2025 03:53:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46546) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7UPz-0006po-8X for 79298 <at> debbugs.gnu.org; Sat, 11 Oct 2025 03:53:34 -0400 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 1v7UPo-0001oy-Cq; Sat, 11 Oct 2025 03:53:20 -0400 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=YL6wTnUxUSjDysK6uxS3PLr4m0IvC3ea0VWsWEsJr74=; b=DLgscyvrjgIEddWkbtS2 iQAGgPnn0Kn72kpDTU3gPhAtjNO/ngPGefSB8bjcBWxBAwL4cDpNCWAeUyvqzG7Shiw3UGDTSbocv rUx7r1QSN0GZlfpAgbYq38NBFzhg8Qa/9CsEVrrat9SKhpUiMXgP+eIauLpAB7QFYT7IzWUS2kYi0 XWBF0JJZ/1ItxM8o8oIUZnwOZFT8FTMUUPrGm4Jb+0GNeOrAg4AAx/zcjraMuugL5QNYEtplV+4ZH 3Dz04VpCGnKTmxOSbTXMNxJ5Bbfe8GKQiX8/DQj9u1m9yNs0/R5B4py84HECUZL6OoyUfDrT+tzvn /EvFYL3qKzGLKA==; Date: Sat, 11 Oct 2025 10:53:16 +0300 Message-Id: <86bjmd7u37.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> <86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Sat, 11 Oct 2025 14:02:35 +0800 > > In WT, most characters have half-width character width, but a few are > full-width; I have listed them here. (both in 936 and 65001) > > ㉈㉉㉊㉋㉌ã‰ã‰Ž That's not what I see on the screenshots you posted: there, the above 7 characters (they are the last ones on display) are also half-width. In the conhost case, they are shown as empty rectangles, which means they are unsupported by the font used by conhost.exe. So my conclusion from this is that WT makes _all_ the ambiguous-width characters be half-width, i.e. they take 1 column on display. Whereas conhost basically gives them all 2-column (full-width) display. Am I missing something?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 11 Oct 2025 07:23:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 11 03:23:41 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 1v7Tx6-0004nD-AC for submit <at> debbugs.gnu.org; Sat, 11 Oct 2025 03:23:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37294) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7Twz-0004lw-9i for 79298 <at> debbugs.gnu.org; Sat, 11 Oct 2025 03:23:37 -0400 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 1v7Twt-0004Bo-3L; Sat, 11 Oct 2025 03:23:27 -0400 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=gqrsbd+O/p5/hFK5OAhScxXM+rWBxAOIkyZ/l+lRwq4=; b=Ta0znHBkq8HuDAzstE7X s/dr7YEd5ggfzXlIIXhwSTLYe5825rmOkXPD1KmvDbuTx646awdoEU/2a+YbY7GzwRSPoFxVGgwCK gWcA8nC9sRkg6xiMmOsxxHAg0vTgqsKAuPAWL/iLjeNzHE3SaCjf4Cfba/MOapEyA192eNikurrm1 1ffUjlZtSdnKHk9Qd32rACDmJpqh0Tiw+46LLxZ00X/12ZcVQEMTSObX9h8MbQqB8j7t6l4iTnAF8 PFBFcbaqdJddGMcC6bt7rCfQ0a7duIvagXGY4kFX5sjAlkGtjKTzkjYzgpFAEx0U3zvlatmctJOEH HICSZtnUp6yI+w==; Date: Sat, 11 Oct 2025 10:23:22 +0300 Message-Id: <86cy6t7vh1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> <86tt067nrz.fsf@HIDDEN> <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Sat, 11 Oct 2025 14:02:35 +0800 > > > The default behavior of Emacs should match the fonts selected by > > conhost and WT, so the differences in which fonts they select is very > > relevant to the issue at hand. The question then becomes how to > > detect which of these is used, from withing the running Emacs session. > > Do you know? > > I believe it's quite unrealistic to try and determine the exact font > used in a terminal for this purpose. Let's first consider the case of > Conhost. The relevant registry entry is > HKEY_CURRENT_USER\Console\FaceName. Its default value is > '__DefaultTTFont__', which probably means it selects the most suitable > font based on the specific locale/language environment. > > Next is WT. I can't think of any way other than reading its > settings.json configuration file. > > However, we can look at this problem from a different angle. Conhost > selects a font most suitable for the locale, which means it works well > with Emacs by default (unless we choose a font with an unsuitable > width). WT's default font is a monospace font, and its rendering quality > is quite poor when a non-monospace font is used. > > My point is that the font in the Conhost environment adapts well to the > locale, while in the WT environment, we can assume a monospace > environment by default. Although there is no reliable way to determine > the specific font, detecting whether WT is being used is possible. > > The following code can determine the console mode: it is 3 under Conhost > and 7 under WT, meaning it includes ENABLE_VIRTUAL_TERMINAL_PROCESSING > (0x0004): > > // See also: > // https://github.com/Textualize/rich/issues/140 > // https://learn.microsoft.com/en-us/windows/console/setconsolemode > HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); > DWORD mode; > GetConsoleMode(h, &mode); If you are saying that when WT is used, the value returned by GetConsoleMode at startup will always include the ENABLE_VIRTUAL_TERMINAL_PROCESSING bit, then this should be enough to detect WT. > > The codepage is not about the locale, it's about the encoding of the > > characters Emacs sends to the terminal. It could be that WT uses > > different fonts or algorithms depending on whether the encoding is > > UTF-8 or codepage 936. So please do test with both, as I asked, > > because I think this might matter. > > Sure. > > Here comes the tests. I first enumerated the relevant characters in > characters.el, then selected the ones that could be displayed correctly > in the terminal, and copied them into the terminal. > > In WT, most characters have half-width character width, but a few are > full-width; I have listed them here. (both in 936 and 65001) > > ㉈㉉㉊㉋㉌ã‰ã‰Ž > > In conhost, also both in 936 and 65001, the number of full-width > characters is significantly higher. I am using an image (screen.png) for > illustration, where the top of the image is Conhost, and the bottom is > WT. > > Beyond this, here is the display effect(all.png) of *all* these > characters in both Conhost(up) and WT(down). Based on my testing, the > display is consistent for both code pages 936 and 65001. Thanks, I will look into this and see what we can do with this information.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 11 Oct 2025 06:07:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 11 02:07:52 2025 Received: from localhost ([127.0.0.1]:44076 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7Slk-0000kS-23 for submit <at> debbugs.gnu.org; Sat, 11 Oct 2025 02:07:52 -0400 Received: from xmbghk7.mail.qq.com ([43.163.128.52]:49089) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v7Slf-0000k5-PS for 79298 <at> debbugs.gnu.org; Sat, 11 Oct 2025 02:07:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1760162557; bh=PjloqsMU3GD3EfKo6BftPlxgHbdQUsleQO6fgjyJ7vg=; h=From:To:Cc:Subject:Date:References:In-Reply-To; b=zXOlf+YTLJzDC1gKcdfRzLT8GOeAvWyknGCy6OmrRqWlTdrcF0pNvf7iK6hPJggC0 CicZQsFqXmlRffvWE+Pr3jQPFVJTA8Jn1RmaSdp/ecHJOE1Iu4jLkaTmanu8DgUn8d YdStX/qbL0BD1eZZoJgXsf2HV1/t00swwAAti+2w= X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= X-QQ-XMAILINFO: M4RjREDp143lCGlcJGOYMYLz1dnBGjnajvkAX+157xgHfZTCpPnEQZOD01IYf5 21arZoCuPRZZKW3B4gX75exVKtlR9EmB7oATtN8jAcl8EacC0kANPWpD510QSCoeL9Zrr56oXksM/ IMv4b47SLVYims01VFrHaDl3RY/hw5tFR5iBkSSPWiybWmGZGqu0DmYnUe84oRbGt14W5P5Gj5K/q QgDC6j9rg6sVGcSCXtx3nsVVaOGKC03VYxqfpoooxoZpvuk2eI40s80Kt/sGhF8JWvIJpGh6dWi7a KTNX+nVWTZsV4rk2AtP60mXXW80eKg/SVDLbsaJLrAtBqxiG2cZAIwcSjzgeaGHc3fHgUcxMSP3uN vRaKF0Iye5yMrIhjtInvJbhhj0yTiXOfbPN10OkARL/Nf8SNbIfy/E8uv/Roft4jNOD4R4G8wwAdx 33Jc78liRJk9yrtkHwnYcaVZvu1VgpPQou6ik3CC7KlYQr9CmeXN+LZ15B2X2TQYR0YvXxJLL95Dh dITHzgK/10kkcwOidwpqaqXtBHx7mDQUXzBRNe1jDH40Ek4mGs1brF8velo/G+yPugIsyp6cMynFG dgS2o24PhyQg37fSQ6mxxC90lc2woM2vCxWXnxeQX84v6DuQNiTbQyISZTCG7umVHBoi7sR81GFtg lml5DTgAlvfk9M5z4RB/6gOn+00zoAtuq4Nd4Ssgw6L1YhgJquDRscXNi0u+stbKKasz6QT39w/j1 EaRewGD+sf/nev0lsD0JsKke6nNzSXC48TIKN7pDfCTxTmx48nRJUaiTzO4hZbZtaLQxgktzJpErX j9j+r4djPoX0GEjq5zH7nNzh4CL+rkYZkZ5YR6t/Ihz3MRJs72FsnQWxEMhFQWD+g3eSnYtE3/pnF +8rcma+ETP4GsEzhLvANtN1vwhwAJi04GoQC5fVxZlT6H8g/hfd2+XnuAMxlHvzL7IMrNmTfK0ekL c+1aIg2migMmQoB6TJ+4Zy67eNLgkP0ZvPWBNxBTuZ+L4in5yh6coTNXASseq4CArcBqzPvGV7jT2 OGM/ml6I+rSHfwwbxLANbaSZRaxZfcAPsK5xtWpgN+reEYpi1llehlPrGFRUaGBx4weUDbgQ0YS6u xaA7lOONSE39TRE++AJ7kJPOdxwJn7s6d5w= From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN> To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_68E9F2FC_8D982EA0_4370A269" Content-Transfer-Encoding: 8Bit Date: Sat, 11 Oct 2025 14:02:35 +0800 X-Priority: 3 Message-ID: <tencent_E33B59BFFBC04D1EABAE4428E7A1B93B2B0A@HIDDEN> X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> <86tt067nrz.fsf@HIDDEN> In-Reply-To: <86tt067nrz.fsf@HIDDEN> X-QQ-mid: xmseza31-0t1760162555t2o3s0f11 X-Debbugs-Envelope-To: 79298 Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>, =?utf-8?B?NzkyOTg=?= <79298 <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. ------=_NextPart_68E9F2FC_8D982EA0_4370A269 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RWxpIFphcmV0c2tpaSwgRnJpLCAxMCBPY3QgMjAyNSAxODo1NzoyMCArMDMwMCwgd3JvdGUs Cgo+ID4gRnVydGhlcm1vcmUsIEkgbm90ZWQgYSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJl dHdlZW4gV2luZG93cyBUZXJtaW5hbAo+ID4gKFdUKSBhbmQgdGhlIHRyYWRpdGlvbmFsIGNv bmhvc3Q6IFdUIGFsbW9zdCAiZm9yY2VzIiB0aGUgdXNlIG9mCj4gPiBtb25vc3BhY2VkIGZv bnRzLiBVc2luZyBzb21lIG5vbi1tb25vc3BhY2VkIENoaW5lc2UgZm9udHMgaXMgcG9zc2li bGUgaW4KPiA+IGNvbmhvc3QsIGJ1dCB0aGlzIHByb2R1Y2VzIGEgZ3JvdGVzcXVlIGVmZmVj dCBpbiBXVCBbMV0uCj4gPiAKPiA+IEluIGVhcmxpZXIgZGlzY3Vzc2lvbnMsIEkgbWVudGlv bmVkIHRoYXQgRW1hY3MgY2FuIGRpc3BsYXkgdGhlIEhlbHAKPiA+IGJ1ZmZlciBpbiBjb25o b3N0IHdpdGhvdXQgYXJ0aWZhY3RzLCB3aGljaCBpcywgaW4gYSBzZW5zZSwgYQo+ID4gY29p bmNpZGVuY2U6IG15IHN5c3RlbSBsYW5ndWFnZSBpcyBDaGluZXNlLCBhbmQgY29uaG9zdCBk ZWZhdWx0cyB0byBhCj4gPiBDaGluZXNlIGZvbnQuIFRoZXJlZm9yZSwgdGhlIHdpZHRoIG9m IHRoZSBzaW5nbGUgcXVvdGF0aW9uIG1hcmtzIGluIHRoZQo+ID4gQ2hpbmVzZSBmb250IG1h dGNoZXMgdGhlIHdpZHRoIGluIHRoZSBjaGFyLXdpZHRoLXRhYmxlICgyLCBvciB3aGF0IGlz Cj4gPiBjYWxsZWQgImZ1bGwtd2lkdGgiKS4gSWYgd2Ugc2VsZWN0IGEgbW9ub3NwYWNlIGZv bnQgKGxpa2UgQ29uc29sYXMpIGZvcgo+ID4gY29uaG9zdCBhbmQgdGVzdCBpdCB3aXRoIHRo ZSBzeXN0ZW0gbGFuZ3VhZ2Ugc2V0IHRvIENoaW5lc2UsIHdlIGNhbiBhbHNvCj4gPiBvYnNl cnZlIHRoZSBhcnRpZmFjdCBwaGVub21lbm9uIFsyXS4gRm9yIGNvbXBhcmlzb24sIEkgcGxh Y2VkIHRoZQo+ID4gZGVmYXVsdCB0ZXN0IGVmZmVjdCBvbiB0aGUgcmlnaHQgc2lkZSBvZiBp dDsgeW91IGNhbiBhbHNvIG5vdGljZSB0aGUKPiA+IGRpZmZlcmVudCBzaXplcyBvZiB0aGUg Y3Vyc29yIG9uIHRoZSBxdW90YXRpb24gbWFya3MuCj4gCj4gVGhlIGRlZmF1bHQgYmVoYXZp b3Igb2YgRW1hY3Mgc2hvdWxkIG1hdGNoIHRoZSBmb250cyBzZWxlY3RlZCBieQo+IGNvbmhv c3QgYW5kIFdULCBzbyB0aGUgZGlmZmVyZW5jZXMgaW4gd2hpY2ggZm9udHMgdGhleSBzZWxl Y3QgaXMgdmVyeQo+IHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBhdCBoYW5kLiAgVGhlIHF1ZXN0 aW9uIHRoZW4gYmVjb21lcyBob3cgdG8KPiBkZXRlY3Qgd2hpY2ggb2YgdGhlc2UgaXMgdXNl ZCwgZnJvbSB3aXRoaW5nIHRoZSBydW5uaW5nIEVtYWNzIHNlc3Npb24uCj4gRG8geW91IGtu b3c/CgpJIGJlbGlldmUgaXQncyBxdWl0ZSB1bnJlYWxpc3RpYyB0byB0cnkgYW5kIGRldGVy bWluZSB0aGUgZXhhY3QgZm9udAp1c2VkIGluIGEgdGVybWluYWwgZm9yIHRoaXMgcHVycG9z ZS4gIExldCdzIGZpcnN0IGNvbnNpZGVyIHRoZSBjYXNlIG9mCkNvbmhvc3QuIFRoZSByZWxl dmFudCByZWdpc3RyeSBlbnRyeSBpcwpIS0VZX0NVUlJFTlRfVVNFUlxDb25zb2xlXEZhY2VO YW1lLiBJdHMgZGVmYXVsdCB2YWx1ZSBpcwonX19EZWZhdWx0VFRGb250X18nLCB3aGljaCBw cm9iYWJseSBtZWFucyBpdCBzZWxlY3RzIHRoZSBtb3N0IHN1aXRhYmxlCmZvbnQgYmFzZWQg b24gdGhlIHNwZWNpZmljIGxvY2FsZS9sYW5ndWFnZSBlbnZpcm9ubWVudC4KCk5leHQgaXMg V1QuIEkgY2FuJ3QgdGhpbmsgb2YgYW55IHdheSBvdGhlciB0aGFuIHJlYWRpbmcgaXRzCnNl dHRpbmdzLmpzb24gY29uZmlndXJhdGlvbiBmaWxlLgoKSG93ZXZlciwgd2UgY2FuIGxvb2sg YXQgdGhpcyBwcm9ibGVtIGZyb20gYSBkaWZmZXJlbnQgYW5nbGUuIENvbmhvc3QKc2VsZWN0 cyBhIGZvbnQgbW9zdCBzdWl0YWJsZSBmb3IgdGhlIGxvY2FsZSwgd2hpY2ggbWVhbnMgaXQg d29ya3Mgd2VsbAp3aXRoIEVtYWNzIGJ5IGRlZmF1bHQgKHVubGVzcyB3ZSBjaG9vc2UgYSBm b250IHdpdGggYW4gdW5zdWl0YWJsZQp3aWR0aCkuIFdUJ3MgZGVmYXVsdCBmb250IGlzIGEg bW9ub3NwYWNlIGZvbnQsIGFuZCBpdHMgcmVuZGVyaW5nIHF1YWxpdHkKaXMgcXVpdGUgcG9v ciB3aGVuIGEgbm9uLW1vbm9zcGFjZSBmb250IGlzIHVzZWQuCgpNeSBwb2ludCBpcyB0aGF0 IHRoZSBmb250IGluIHRoZSBDb25ob3N0IGVudmlyb25tZW50IGFkYXB0cyB3ZWxsIHRvIHRo ZQpsb2NhbGUsIHdoaWxlIGluIHRoZSBXVCBlbnZpcm9ubWVudCwgd2UgY2FuIGFzc3VtZSBh IG1vbm9zcGFjZQplbnZpcm9ubWVudCBieSBkZWZhdWx0LiBBbHRob3VnaCB0aGVyZSBpcyBu byByZWxpYWJsZSB3YXkgdG8gZGV0ZXJtaW5lCnRoZSBzcGVjaWZpYyBmb250LCBkZXRlY3Rp bmcgd2hldGhlciBXVCBpcyBiZWluZyB1c2VkIGlzIHBvc3NpYmxlLgoKVGhlIGZvbGxvd2lu ZyBjb2RlIGNhbiBkZXRlcm1pbmUgdGhlIGNvbnNvbGUgbW9kZTogaXQgaXMgMyB1bmRlciBD b25ob3N0CmFuZCA3IHVuZGVyIFdULCBtZWFuaW5nIGl0IGluY2x1ZGVzIEVOQUJMRV9WSVJU VUFMX1RFUk1JTkFMX1BST0NFU1NJTkcKKDB4MDAwNCk6CgovLyBTZWUgYWxzbzoKLy8gaHR0 cHM6Ly9naXRodWIuY29tL1RleHR1YWxpemUvcmljaC9pc3N1ZXMvMTQwCi8vIGh0dHBzOi8v bGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL2NvbnNvbGUvc2V0Y29uc29sZW1v ZGUKSEFORExFIGggPSBHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpOwpEV09SRCBt b2RlOwpHZXRDb25zb2xlTW9kZShoLCAmbW9kZSk7Cgo+ID4gPiBUaGFua3MsIGJ1dCBJIHRo aW5rIHdlIGNhbiBkbyBiZXR0ZXIgaGVyZSB0aGFuIGFza2luZyBDSksgdXNlcnMgdG8KPiA+ ID4gY3VzdG9taXplIHRoaXMgdmFyaWFibGUgbWFudWFsbHkuICBJJ20gYmVnaW5uaW5nIHRv IHRoaW5rIHRoYXQgd2hlbgo+ID4gPiBFbWFjcyBydW5zIGluIHRleHQtb25seSBtb2RlIG9u IHRoZSBXaW5kb3dzIFRlcm1pbmFsLCB0aGlzIHZhcmlhYmxlCj4gPiA+IHNob3VsZCBiZSBu aWwgYXV0b21hdGljYWxseS4gIENvdWxkIHlvdSBwbGVhc2UgaGVscCBtZSBzZWUgaWYgdGhp cyBpcwo+ID4gPiBzbz8gIFBsZWFzZSB0eXBlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSAiQW1i aWd1b3VzLXdpZHRoIiBzZXQgKHRoZXkgYXJlCj4gPiA+IGxpc3RlZCBpbiBjaGFyYWN0ZXJz LmVsLCBzdGFydGluZyBhdCBsaW5lIDE0MzIpLCBhbmQgc2VlIGlmIHRoZXkgYWxsCj4gPiA+ IGFyZSBkaXNwbGF5ZWQgYXMgc2luZ2xlLWNvbHVtbiBjaGFyYWN0ZXJzIG9uIHRoZSBXaW5k b3dzIFRlcm1pbmFsLgo+ID4gPiBQbGVhc2UgdGVzdCB0aGlzIG9uY2Ugd2hlbiB0aGUgdGVy bWluYWwncyBjb2RlcGFnZSBpcyA2NTAwMSAoVVRGLTgpCj4gPiA+IGFuZCB0aGVuIGFnYWlu IHdoZW4gaXQgaXMgOTM2ICh5b3UgY2FuIHVzZSB0aGUgImNoY3AiIGNvbW1hbmQgdG8KPiA+ ID4gY2hhbmdlIHRoZSBjb2RlcGFnZSBiZWZvcmUgc3RhcnRpbmcgRW1hY3MpLiAgQm9udXMg cG9pbnRzIGlmIHlvdSBjYW4KPiA+ID4gdGVzdCB0aGlzIGFsc28gb24gdGhlIG9sZGVyIGNv bmhvc3QgdGVybWluYWwuICBBcm1lZCB3aXRoIHRoZSByZXN1bHRzCj4gPiA+IG9mIHRoaXMs IHdlIGNvdWxkIG1ha2UgdGhlIGRlZmF1bHRzIG1vcmUgdXNlci1mcmllbmRseSwgSSB0aGlu ay4KPiA+IAo+ID4gQWN0dWFsbHksIEkgc3VzcGVjdCB0aGF0IHRoZSB3aWR0aCBvZiBzb21l IGNoYXJhY3RlcnMgaW4gdGhpcyBhbWJpZ3VvdXMKPiA+IHNldCBtaWdodCBiZSBjbG9zZXIg dG8gMiByYXRoZXIgdGhhbiAxLgo+IAo+IFdoYXQgZG8geW91IG1lYW4gYnkgImNsb3NlciI/ ICBJZiBXVCB1c2VzIGEgbW9ub3NwYWNlZCBmb250LCB0aGUKPiBjaGFyYWN0ZXJzIHNob3Vs ZCBiZSBlaXRoZXIgMSBvciAyIGNvbHVtbnMsIHRoZXkgY2Fubm90IGJlIGluLWJldHdlZW4u Cj4gQW5kIHRoZSBmYWN0IHRoYXQgc2V0dGluZyBjamstYW1iaWd1b3VzLWNoYXJzLWFyZS13 aWRlIG5pbCBmaXhlZCB5b3VyCj4gcHJvYmxlbSBpcyBhbXBsZSBldmlkZW5jZSB0aGF0IHRo ZSBhY3R1YWwgd2lkdGggaXMgMSBjb2x1bW4sIG5vdCB0d28sCj4gd2hlbiBXVCB1c2VzIHRo ZSBmb250IGl0IHVzZXMgdG8gZGlzcGxheSB0aGUgcXVvdGVzIGFuZCBhcG9zdHJvcGhlcy4K PiAKPiBTbyBJIGRvbid0IHF1aXRlIHVuZGVyc3RhbmQgd2hhdCBhcmUgeW91IHNheWluZyBo ZXJlLCBvciB3aHkuCgpZZXMsIG15IHByZXZpb3VzIHN0YXRlbWVudCB3YXMgaW5jb3JyZWN0 LgoKPiA+IFRoaXMgbWVhbnMgd2UgbWlnaHQgbmVlZCB0byBhZGp1c3QgdGhlIGNvZGVwb2lu dCByYW5nZXMgaW4gdGhlCj4gPiByZWxldmFudCBjb2RlIGluIGNoYXJhY3RlcnMuZWwuIEkg d2lsbCBhdHRlbXB0IHRvIHRlc3QgaW4gb3RoZXIgRWFzdAo+ID4gQXNpYW4gbGFuZ3VhZ2Ug ZW52aXJvbm1lbnRzIG11bHRpcGxlIHRpbWVzIGFuZCB0aGVuIHRyeSB0byBzdW1tYXJpemUK PiA+IHRoZSB0ZXN0IHJlc3VsdHMuCj4gCj4gVGhlIGNvZGVwb2ludCByYW5nZXMgaW4gY2hh cmFjdGVycy5lbCBzZXQgdXAgZ2xvYmFsIHRhYmxlcywgc28gd2UgY2FuCj4gb25seSBjaGFu Z2UgdGhhdCBpZiB3ZSBkZXRlY3QgdGhlIHNwZWNpYWwgc2l0dWF0aW9uIHdoZXJlIHRoZSB2 YWx1ZXMKPiBhcmUgaW5jb3JyZWN0Lgo+IAo+ID4gSW4gYSB3YXksIHVzaW5nIGNoY3AgbWln aHQgbm90IGJlIHZlcnkgdXNlZnVsLCBhcyBFbWFjcyBkZXRlcm1pbmVzIHRoZQo+ID4gbG9j YWxlIGJhc2VkIG9uIHN5c3RlbSBzZXR0aW5ncyByYXRoZXIgdGhhbiB0aGUgY29kZSBwYWdl LCBhcyBJCj4gPiBtZW50aW9uZWQgZWFybGllci4gVGhlcmVmb3JlLCBhbGwgbXkgdGVzdHMg YXJlIGNvbmR1Y3RlZCBpbiA2NTAwMQo+ID4gKFVURi04KS4KPiAKPiBUaGUgY29kZXBhZ2Ug aXMgbm90IGFib3V0IHRoZSBsb2NhbGUsIGl0J3MgYWJvdXQgdGhlIGVuY29kaW5nIG9mIHRo ZQo+IGNoYXJhY3RlcnMgRW1hY3Mgc2VuZHMgdG8gdGhlIHRlcm1pbmFsLiAgSXQgY291bGQg YmUgdGhhdCBXVCB1c2VzCj4gZGlmZmVyZW50IGZvbnRzIG9yIGFsZ29yaXRobXMgZGVwZW5k aW5nIG9uIHdoZXRoZXIgdGhlIGVuY29kaW5nIGlzCj4gVVRGLTggb3IgY29kZXBhZ2UgOTM2 LiAgU28gcGxlYXNlIGRvIHRlc3Qgd2l0aCBib3RoLCBhcyBJIGFza2VkLAo+IGJlY2F1c2Ug SSB0aGluayB0aGlzIG1pZ2h0IG1hdHRlci4KClN1cmUuCgpIZXJlIGNvbWVzIHRoZSB0ZXN0 cy4gSSBmaXJzdCBlbnVtZXJhdGVkIHRoZSByZWxldmFudCBjaGFyYWN0ZXJzIGluCmNoYXJh Y3RlcnMuZWwsIHRoZW4gc2VsZWN0ZWQgdGhlIG9uZXMgdGhhdCBjb3VsZCBiZSBkaXNwbGF5 ZWQgY29ycmVjdGx5CmluIHRoZSB0ZXJtaW5hbCwgYW5kIGNvcGllZCB0aGVtIGludG8gdGhl IHRlcm1pbmFsLgoKSW4gV1QsIG1vc3QgY2hhcmFjdGVycyBoYXZlIGhhbGYtd2lkdGggY2hh cmFjdGVyIHdpZHRoLCBidXQgYSBmZXcgYXJlCmZ1bGwtd2lkdGg7IEkgaGF2ZSBsaXN0ZWQg dGhlbSBoZXJlLiAoYm90aCBpbiA5MzYgYW5kIDY1MDAxKQoK44mI44mJ44mK44mL44mM44mN 44mOCgpJbiBjb25ob3N0LCBhbHNvIGJvdGggaW4gOTM2IGFuZCA2NTAwMSwgdGhlIG51bWJl ciBvZiBmdWxsLXdpZHRoCmNoYXJhY3RlcnMgaXMgc2lnbmlmaWNhbnRseSBoaWdoZXIuIEkg YW0gdXNpbmcgYW4gaW1hZ2UgKHNjcmVlbi5wbmcpIGZvcgppbGx1c3RyYXRpb24sIHdoZXJl IHRoZSB0b3Agb2YgdGhlIGltYWdlIGlzIENvbmhvc3QsIGFuZCB0aGUgYm90dG9tIGlzCldU LgoKQmV5b25kIHRoaXMsIGhlcmUgaXMgdGhlIGRpc3BsYXkgZWZmZWN0KGFsbC5wbmcpIG9m ICphbGwqIHRoZXNlCmNoYXJhY3RlcnMgaW4gYm90aCBDb25ob3N0KHVwKSBhbmQgV1QoZG93 bikuIEJhc2VkIG9uIG15IHRlc3RpbmcsIHRoZQpkaXNwbGF5IGlzIGNvbnNpc3RlbnQgZm9y IGJvdGggY29kZSBwYWdlcyA5MzYgYW5kIDY1MDAxLg== ------=_NextPart_68E9F2FC_8D982EA0_4370A269 Content-Type: application/octet-stream; charset="utf-8"; name="screen.png" Content-Disposition: attachment; filename="screen.png" Content-Transfer-Encoding: base64 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 ------=_NextPart_68E9F2FC_8D982EA0_4370A269 Content-Type: application/octet-stream; charset="utf-8"; name="all.png" Content-Disposition: attachment; filename="all.png" Content-Transfer-Encoding: base64 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 nIsdAAAAAElFTkSuQmCC ------=_NextPart_68E9F2FC_8D982EA0_4370A269--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 15:57:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 11:57:49 2025 Received: from localhost ([127.0.0.1]:42488 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7FV3-0005TW-HI for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 11:57:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36218) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7FUr-0005T7-3G for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 11:57:37 -0400 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 1v7FUi-0004Wa-DR; Fri, 10 Oct 2025 11:57:24 -0400 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=HhPQHm78dzN48fDVQzkc4pXE0gPESt9PC204LwY43zw=; b=NxnmnJnUqhxB ZJAdkAHzfAjeauhLq5NWl9aLr03nrU5y1RsxUqEz9OxUk8vracvoaEPy8sF0hVC2ZguHop74wc+cg D9VbwvuI4ZQclvPDTzcrmR/Dh+1LfFrdRs8JksrDpxesnvvViOMSKFB71Q85IJM+/0oEShWoDRTQn tcLkrJDvpMuZHa62bSUDtziAMNHkdNSkNaxM17/68pKHU5MUaYggVG2fAFv/lcYT8ztfFw9lVgsiC 71KFdW+pWNpkVNAZFRuYNmAIlZKTI92O0flL5VA/A5aEI0Fzr+irmp08ZuEIleNj+09Tgtm71Uvh+ LuDGLaIwbz6/AxgnNYpztw==; Date: Fri, 10 Oct 2025 18:57:20 +0300 Message-Id: <86tt067nrz.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN> X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Fri, 10 Oct 2025 21:31:43 +0800 > > Furthermore, I noted a significant difference between Windows Terminal > (WT) and the traditional conhost: WT almost "forces" the use of > monospaced fonts. Using some non-monospaced Chinese fonts is possible in > conhost, but this produces a grotesque effect in WT [1]. > > In earlier discussions, I mentioned that Emacs can display the Help > buffer in conhost without artifacts, which is, in a sense, a > coincidence: my system language is Chinese, and conhost defaults to a > Chinese font. Therefore, the width of the single quotation marks in the > Chinese font matches the width in the char-width-table (2, or what is > called "full-width"). If we select a monospace font (like Consolas) for > conhost and test it with the system language set to Chinese, we can also > observe the artifact phenomenon [2]. For comparison, I placed the > default test effect on the right side of it; you can also notice the > different sizes of the cursor on the quotation marks. The default behavior of Emacs should match the fonts selected by conhost and WT, so the differences in which fonts they select is very relevant to the issue at hand. The question then becomes how to detect which of these is used, from withing the running Emacs session. Do you know? > > Thanks, but I think we can do better here than asking CJK users to > > customize this variable manually. I'm beginning to think that when > > Emacs runs in text-only mode on the Windows Terminal, this variable > > should be nil automatically. Could you please help me see if this is > > so? Please type the characters in the "Ambiguous-width" set (they are > > listed in characters.el, starting at line 1432), and see if they all > > are displayed as single-column characters on the Windows Terminal. > > Please test this once when the terminal's codepage is 65001 (UTF-8) > > and then again when it is 936 (you can use the "chcp" command to > > change the codepage before starting Emacs). Bonus points if you can > > test this also on the older conhost terminal. Armed with the results > > of this, we could make the defaults more user-friendly, I think. > > Actually, I suspect that the width of some characters in this ambiguous > set might be closer to 2 rather than 1. What do you mean by "closer"? If WT uses a monospaced font, the characters should be either 1 or 2 columns, they cannot be in-between. And the fact that setting cjk-ambiguous-chars-are-wide nil fixed your problem is ample evidence that the actual width is 1 column, not two, when WT uses the font it uses to display the quotes and apostrophes. So I don't quite understand what are you saying here, or why. > This means we might need to adjust the codepoint ranges in the > relevant code in characters.el. I will attempt to test in other East > Asian language environments multiple times and then try to summarize > the test results. The codepoint ranges in characters.el set up global tables, so we can only change that if we detect the special situation where the values are incorrect. > In a way, using chcp might not be very useful, as Emacs determines the > locale based on system settings rather than the code page, as I > mentioned earlier. Therefore, all my tests are conducted in 65001 > (UTF-8). The codepage is not about the locale, it's about the encoding of the characters Emacs sends to the terminal. It could be that WT uses different fonts or algorithms depending on whether the encoding is UTF-8 or codepage 936. So please do test with both, as I asked, because I think this might matter. Thanks.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 13:32:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 09:32:15 2025
Received: from localhost ([127.0.0.1]:41459 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v7DEA-000692-LY
for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 09:32:15 -0400
Received: from out162-62-57-137.mail.qq.com ([162.62.57.137]:57885)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v7DDv-00068L-Si
for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 09:32:04 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1760103104; bh=8br1dG0yb/xOZPAUfnu+bHGwLaS38TcqJtPJt+xpfXk=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=Q3onbookhp+GUYVoOU/e0TUcPn23ngEvyjshvzOGZsoU5LgLBvCYC+Wfd9Bb3PrcA
UkluPfMhJnTx4HuHztLbVBz1mCz7pbbInmde5f+8aeB7AWM4CX5kGijGzqepSG7WYx
VDIbVzfjeftvgv3fNN+q/tWRTqUtwXRYqFSEKXVc=
X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs=
X-QQ-XMAILINFO: MRiIwAsynTgYn/Be1daUfOp7Hq//MmMZtIn3HArhoTqkKYQgb3W+rRD1gWXRgv
5ZHwB/o1x/f1B9Ok9pG1L/LFfiGivrphs7BOjfrVkDd8qfeRGU6StTKjVZcNwv+CnydsIn2HZifEs
d2Sy6E5RgsiBrm2wCOxDd2glTlcQvedvCIefN63UzyoAhsQzm5Fmh/P6Z3FJ7MUNtB57PpZwNfDh2
XrWCT0hI9yH5d4Js9TL6Sk16jhUYFq23G0t5ytK25epXOC9DUGER9Bw4hs/xADPdZNL3qOgbNH6Ty
5f0MI9EwWzksCXPi/ahof3TFEpUhqjI+b1gnnZ5pUkewaf0g6dPBbDIv7HINdz7lHkQNuZTfTWA3+
rOS4AUDt/aDl0OxBNc4opjhKx6ssdr7osidEtxA8ZGGDjHvXtGWfOAL3/iDVwvu495ZroNQJIWejn
96Wy7nxWmXVA2zFtgiVg77PjsZeJdaY4kbiGrJBgxUGW1sG0tdwActjVSHTP1+Bbq2rF7/3tb155l
y43p/kILQ8Coix9q3kdh1R5HbX8EswG+LlJTyNnv6yezPNTd4g48uto6NiTdFatp18SNaUuqTUqiE
45j6pLMI2QCi9EbsMDeTyu4hm2yQqkA6A9to2edTCugOLzEVFQ3gQmQ8pYI3kYMShcdr33Jye0xXO
w5RAVN2Ebf4lvfzSLCzcKmf+zxvRzQIIqZtRCT+4+uDbHh5zT5ZsdvNzmzX6E0HQfsnfHY9eOF/se
6I+u8yuWTbhJGXyphjVBIzhz9taz7jUFcy5wADSsdb+F+hZQPW/ygNr6XsCCjxFnm6q5tv7odhZGP
MoiSbB1B2at5W9o00QjoS+CTpp1XuecW31REUNBM19wwtUXN4S5snYhNrVnQOpprccnf4jdZDnOqI
24RpCzFGkK9SUBFowKG7U1nO6CmS2b71YOc6uk/6i7czPF4uywSb0OMZ8vGLxlm4yXdqjtl1A9yzO
nAslNJOntTuTmqIG4Qy1xfwCb+Q5sBShN5IP7AP0lKnwne8Wno0kQgdmIhl/yq1u3cCiatbcY4tQs
Zsh09VJJQSUWJ16lWrQwm6TS5q8rr7T/OOcsqB45Z2pe9acubr0srgj/rUnPriMdKDNxbLOUiYmaT
YUfzx/UshNShMoqxSyS+DQe7Y88S3YwSlRR+vC/m6u9YjQ==
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_68E90ABF_8D0C8DC0_23B1CF33"
Content-Transfer-Encoding: 8Bit
Date: Fri, 10 Oct 2025 21:31:43 +0800
X-Priority: 3
Message-ID: <tencent_D0C649F45D030EE6F87D254B590FADCF7905@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
<86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN>
<86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN>
<867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN>
<86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN>
<86wm5484cy.fsf@HIDDEN>
<86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN>
<86ecrb8bru.fsf@HIDDEN>
In-Reply-To: <86ecrb8bru.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1760103103tdj5d2fhk
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Based on some investigation, I believe I have gathered some
more information that may be helpful for us to further understand this issue.
For ease of presentation, I have stitched together screenshots [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.137 listed in sa-trusted.bondedsender.org]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [162.62.57.137 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.137 listed in bl.score.senderscore.com]
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.57.137 listed in wl.mailspike.net]
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Based on some investigation, I believe I have gathered some
more information that may be helpful for us to further understand this issue.
For ease of presentation, I have stitched together screenshots [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.57.137 listed in wl.mailspike.net]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[162.62.57.137 listed in list.dnswl.org]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.137 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.137 listed in bl.score.senderscore.com]
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
This is a multi-part message in MIME format.
------=_NextPart_68E90ABF_8D0C8DC0_23B1CF33
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
QmFzZWQgb24gc29tZSBpbnZlc3RpZ2F0aW9uLCBJIGJlbGlldmUgSSBoYXZlIGdhdGhlcmVk
IHNvbWUgbW9yZQppbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBoZWxwZnVsIGZvciB1cyB0byBm
dXJ0aGVyIHVuZGVyc3RhbmQgdGhpcwppc3N1ZS4gRm9yIGVhc2Ugb2YgcHJlc2VudGF0aW9u
LCBJIGhhdmUgc3RpdGNoZWQgdG9nZXRoZXIgc2NyZWVuc2hvdHMgb2YKc29tZSB0ZXN0IHJl
c3VsdHMgaW4gdGhlIGltYWdlIGF0dGFjaG1lbnRzLiBQbGVhc2UgcmVmZXIgdG8gW05VTV0g
dG8KdmlldyB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBmcmFnbWVudC4KCkZpcnN0bHksIHRo
cm91Z2ggcmVsYXRlZCBkaXNjdXNzaW9ucyBpbiBidWcgIzY0NDIwLCBJIGxlYXJuZWQgdGhh
dCB0aGUKY2hhci13aWR0aC10YWJsZSBjb250cm9scyBjaGFyYWN0ZXIgd2lkdGgsIGFuZCB0
aGlzIGlzIHNldCBtYW51YWxseS4gVGhlCnNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIENKSyBj
aGFyYWN0ZXIgc2V0IGFyZSBsb2NhdGVkIGluIGNoYXJhY3RlcnMuZWwsCmFzIHdlbGwgYXMg
dGhlIEVhc3QgQXNpYW4gIkFtYmlndW91cyIgY2hhcmFjdGVycyB5b3UgbWVudGlvbmVkLCB3
aGljaAphcmUgZm91bmQgYXQgbGluZSAxNDMyLgoKQnkgcmVhZGluZyB0aGUgaW5pdF9lbnZp
cm9ubWVudCBmdW5jdGlvbiBpbiB3MzIuYywgSSB1bmRlcnN0b29kIHRoZQpsb2NhbGUgaW5p
dGlhbGl6YXRpb24gcHJvY2Vzcy4gSXQgb2J0YWlucyBsb2NhbGUgaW5mb3JtYXRpb24gdmlh
CkdldExvY2FsZUluZm8gcmF0aGVyIHRoYW4gY29tbWFuZC1saW5lIGVudmlyb25tZW50IHZh
cmlhYmxlcy4gV2UgdGhlbgpkZXRlcm1pbmUgaW5mb3JtYXRpb24gbGlrZSBjdXJyZW50LWxh
bmd1YWdlLWVudmlyb25tZW50IGJhc2VkIG9uIHRoZQpsb2NhbGUuIFRoaXMgY2xhcmlmaWVk
IHdoeSBjaGFuZ2luZyB0aGUgc3lzdGVtIGxhbmd1YWdlIGFsdGVycyB0aGUKY2hhcmFjdGVy
IHdpZHRoIGJlaGF2aW9yIGluIHRoZSB0ZXJtaW5hbDogZGlmZmVyZW50IGxhbmd1YWdlcyB1
c2UKZGlmZmVyZW50IGNoYXItd2lkdGgtdGFibGUgc2V0dGluZ3MuCgpGdXJ0aGVybW9yZSwg
SSBub3RlZCBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgYmV0d2VlbiBXaW5kb3dzIFRlcm1p
bmFsCihXVCkgYW5kIHRoZSB0cmFkaXRpb25hbCBjb25ob3N0OiBXVCBhbG1vc3QgImZvcmNl
cyIgdGhlIHVzZSBvZgptb25vc3BhY2VkIGZvbnRzLiBVc2luZyBzb21lIG5vbi1tb25vc3Bh
Y2VkIENoaW5lc2UgZm9udHMgaXMgcG9zc2libGUgaW4KY29uaG9zdCwgYnV0IHRoaXMgcHJv
ZHVjZXMgYSBncm90ZXNxdWUgZWZmZWN0IGluIFdUIFsxXS4KCkluIGVhcmxpZXIgZGlzY3Vz
c2lvbnMsIEkgbWVudGlvbmVkIHRoYXQgRW1hY3MgY2FuIGRpc3BsYXkgdGhlIEhlbHAKYnVm
ZmVyIGluIGNvbmhvc3Qgd2l0aG91dCBhcnRpZmFjdHMsIHdoaWNoIGlzLCBpbiBhIHNlbnNl
LCBhCmNvaW5jaWRlbmNlOiBteSBzeXN0ZW0gbGFuZ3VhZ2UgaXMgQ2hpbmVzZSwgYW5kIGNv
bmhvc3QgZGVmYXVsdHMgdG8gYQpDaGluZXNlIGZvbnQuIFRoZXJlZm9yZSwgdGhlIHdpZHRo
IG9mIHRoZSBzaW5nbGUgcXVvdGF0aW9uIG1hcmtzIGluIHRoZQpDaGluZXNlIGZvbnQgbWF0
Y2hlcyB0aGUgd2lkdGggaW4gdGhlIGNoYXItd2lkdGgtdGFibGUgKDIsIG9yIHdoYXQgaXMK
Y2FsbGVkICJmdWxsLXdpZHRoIikuIElmIHdlIHNlbGVjdCBhIG1vbm9zcGFjZSBmb250IChs
aWtlIENvbnNvbGFzKSBmb3IKY29uaG9zdCBhbmQgdGVzdCBpdCB3aXRoIHRoZSBzeXN0ZW0g
bGFuZ3VhZ2Ugc2V0IHRvIENoaW5lc2UsIHdlIGNhbiBhbHNvCm9ic2VydmUgdGhlIGFydGlm
YWN0IHBoZW5vbWVub24gWzJdLiBGb3IgY29tcGFyaXNvbiwgSSBwbGFjZWQgdGhlCmRlZmF1
bHQgdGVzdCBlZmZlY3Qgb24gdGhlIHJpZ2h0IHNpZGUgb2YgaXQ7IHlvdSBjYW4gYWxzbyBu
b3RpY2UgdGhlCmRpZmZlcmVudCBzaXplcyBvZiB0aGUgY3Vyc29yIG9uIHRoZSBxdW90YXRp
b24gbWFya3MuCgo+IFRoYW5rcywgYnV0IEkgdGhpbmsgd2UgY2FuIGRvIGJldHRlciBoZXJl
IHRoYW4gYXNraW5nIENKSyB1c2VycyB0bwo+IGN1c3RvbWl6ZSB0aGlzIHZhcmlhYmxlIG1h
bnVhbGx5LiAgSSdtIGJlZ2lubmluZyB0byB0aGluayB0aGF0IHdoZW4KPiBFbWFjcyBydW5z
IGluIHRleHQtb25seSBtb2RlIG9uIHRoZSBXaW5kb3dzIFRlcm1pbmFsLCB0aGlzIHZhcmlh
YmxlCj4gc2hvdWxkIGJlIG5pbCBhdXRvbWF0aWNhbGx5LiAgQ291bGQgeW91IHBsZWFzZSBo
ZWxwIG1lIHNlZSBpZiB0aGlzIGlzCj4gc28/ICBQbGVhc2UgdHlwZSB0aGUgY2hhcmFjdGVy
cyBpbiB0aGUgIkFtYmlndW91cy13aWR0aCIgc2V0ICh0aGV5IGFyZQo+IGxpc3RlZCBpbiBj
aGFyYWN0ZXJzLmVsLCBzdGFydGluZyBhdCBsaW5lIDE0MzIpLCBhbmQgc2VlIGlmIHRoZXkg
YWxsCj4gYXJlIGRpc3BsYXllZCBhcyBzaW5nbGUtY29sdW1uIGNoYXJhY3RlcnMgb24gdGhl
IFdpbmRvd3MgVGVybWluYWwuCj4gUGxlYXNlIHRlc3QgdGhpcyBvbmNlIHdoZW4gdGhlIHRl
cm1pbmFsJ3MgY29kZXBhZ2UgaXMgNjUwMDEgKFVURi04KQo+IGFuZCB0aGVuIGFnYWluIHdo
ZW4gaXQgaXMgOTM2ICh5b3UgY2FuIHVzZSB0aGUgImNoY3AiIGNvbW1hbmQgdG8KPiBjaGFu
Z2UgdGhlIGNvZGVwYWdlIGJlZm9yZSBzdGFydGluZyBFbWFjcykuICBCb251cyBwb2ludHMg
aWYgeW91IGNhbgo+IHRlc3QgdGhpcyBhbHNvIG9uIHRoZSBvbGRlciBjb25ob3N0IHRlcm1p
bmFsLiAgQXJtZWQgd2l0aCB0aGUgcmVzdWx0cwo+IG9mIHRoaXMsIHdlIGNvdWxkIG1ha2Ug
dGhlIGRlZmF1bHRzIG1vcmUgdXNlci1mcmllbmRseSwgSSB0aGluay4KCkFjdHVhbGx5LCBJ
IHN1c3BlY3QgdGhhdCB0aGUgd2lkdGggb2Ygc29tZSBjaGFyYWN0ZXJzIGluIHRoaXMgYW1i
aWd1b3VzCnNldCBtaWdodCBiZSBjbG9zZXIgdG8gMiByYXRoZXIgdGhhbiAxLiBUaGlzIG1l
YW5zIHdlIG1pZ2h0IG5lZWQgdG8KYWRqdXN0IHRoZSBjb2RlcG9pbnQgcmFuZ2VzIGluIHRo
ZSByZWxldmFudCBjb2RlIGluIGNoYXJhY3RlcnMuZWwuIEkKd2lsbCBhdHRlbXB0IHRvIHRl
c3QgaW4gb3RoZXIgRWFzdCBBc2lhbiBsYW5ndWFnZSBlbnZpcm9ubWVudHMgbXVsdGlwbGUK
dGltZXMgYW5kIHRoZW4gdHJ5IHRvIHN1bW1hcml6ZSB0aGUgdGVzdCByZXN1bHRzLgoKSW4g
YSB3YXksIHVzaW5nIGNoY3AgbWlnaHQgbm90IGJlIHZlcnkgdXNlZnVsLCBhcyBFbWFjcyBk
ZXRlcm1pbmVzIHRoZQpsb2NhbGUgYmFzZWQgb24gc3lzdGVtIHNldHRpbmdzIHJhdGhlciB0
aGFuIHRoZSBjb2RlIHBhZ2UsIGFzIEkKbWVudGlvbmVkIGVhcmxpZXIuIFRoZXJlZm9yZSwg
YWxsIG15IHRlc3RzIGFyZSBjb25kdWN0ZWQgaW4gNjUwMDEKKFVURi04KS4KCldJUC4=
------=_NextPart_68E90ABF_8D0C8DC0_23B1CF33
Content-Type: application/octet-stream;
charset="utf-8";
name="fig.webp"
Content-Disposition: attachment; filename="fig.webp"
Content-Transfer-Encoding: base64
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
AAA=
------=_NextPart_68E90ABF_8D0C8DC0_23B1CF33--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 11:37:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 07:37:15 2025 Received: from localhost ([127.0.0.1]:41307 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7BQx-0000ML-2U for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 07:37:15 -0400 Received: from mail-australiaeastazolkn19011061.outbound.protection.outlook.com ([52.103.72.61]:14780 helo=SY2PR01CU004.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <pRoMMMModE@HIDDEN>) id 1v7BQm-0000LJ-9f for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 07:37:09 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w9O+lIaoTtK1dy4HpLvH4VbF/gM2VinvkHn2Pbw0qiKtA1u8tBA6WP4Lpo3whUN+jcCDZQdWciZPfEVbo5AVv7qA588nf9m7nQ1RHVJmbJtKQT0AC0HhpojLBCNHxB5meB8jhBVTzZh4U+hvcUKf4NNLTYkOY3A8ZWTm4ugMyAaUHwuEn4mEFpe9FsBsBCk0zTIjn5yW3AttGyyxj5DADYjHUm4i6au34PfCTqkjiXTi4mQrqgENT4fOMJG/YeulWFXyUBORWa91IS9B8KnCS1WPRLYYaeSJ68pNyltCgjc5Rt6MuBC8Q9TIhgyLSq36CBTWxysjV6G3yUd8/I+iUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RG+nlf1CYeUDnGin4XFoRwDivhaa60YkJRHEfUjr4K8=; b=jvhDCNhpswb+tCovwd7fHLy0zMb2MM+ZyR0QZmz3xo5g025NLGWsXSPhEpU3RG4YsMI4H0OpbI4u/kg+oFTPZ9kbB29Kl76mY2JG75g5Zn8wFqoZSPb6QkURot3N9924mMo+DcxOJwU9ItLtxrfGYJO/q9iUtYXUdDMZ+EMN1rckCZg/jqGFOGqI60ERXNRKwAwDRlYwL8H+8asKK4nrE87doVtX4r0Xhw/t1y+TW2p86tsXB3K8NQcmZt6l0bX5o1Nnuz7WsLysIIfwuytXoJD5y01VZUUj2ZOs2TX3ajdE88/Gn1nWAtgFGJatMKgtc3/aYQhvJDxDf0uexhZkPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RG+nlf1CYeUDnGin4XFoRwDivhaa60YkJRHEfUjr4K8=; b=kGUot7gP6t+mRhSmWuGW97TgjeV9pLQNPHKq104yEUzXNdE81Pud6z4DU8RD508kLQvn0U0TBIF1o2ilEQGbtwP6q9y63q5I+RLK8ESCeJMTn1pP4rinnWdl4CVNgYVVhIVCdBzprksQAJGumOJc3i5Qjw80sP70xXE4pidlqs2Vn8DVjIVRzk5nLA9g4EyDeLVbW88vYMO28JQX0f8Ujc7s1jCm0jC0tYRQOT0J5VKhfGTTta6EHMEaX4JlcXmXbMIWh5W/NideaYZH39qkeU9uHTDCtqQhoEg0bKVCqnSZ6lUrxh8E+wx+sFDmspyX/y1acafdZ51ECKLUURnrSw== Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:28f::5) by ME0P300MB1437.AUSP300.PROD.OUTLOOK.COM (2603:10c6:220:243::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Fri, 10 Oct 2025 11:36:48 +0000 Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4]) by SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4%4]) with mapi id 15.20.9203.009; Fri, 10 Oct 2025 11:36:48 +0000 From: Haoyuan Wang <pRoMMMModE@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Thread-Topic: bug#79298: patch: full color in windows terminal Thread-Index: AQHcOMO8419jP7j4FkWmXwLJGYT11bS5aLqsgAAznTmAACEqvIAA9Yi1gABKsveAADE2u4AADfPe Date: Fri, 10 Oct 2025 11:36:48 +0000 Message-ID: <SY7P300MB1034E205CA71E2B6D4ADC2A3DFEFA@HIDDEN> References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> <86ikgoa6ei.fsf@HIDDEN> <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> <861pnc9sd1.fsf@HIDDEN> <SY7P300MB1034A5620E0DA122721798BFDFEFA@HIDDEN> <86cy6v8bah.fsf@HIDDEN> <867bx38353.fsf@HIDDEN> In-Reply-To: <867bx38353.fsf@HIDDEN> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SY7P300MB1034:EE_|ME0P300MB1437:EE_ x-ms-office365-filtering-correlation-id: b4063412-0494-4e2d-3f1f-08de07f14c4c x-ms-exchange-slblob-mailprops: 02NmSoc12Dc43FlQvP2yewYSt45NTkBZeZrHbNdiHOHXRnm3qnWfB3XKG02uH9tE7h/9dUtmeUv4Iteh3EWKfSHNDQOHxFWaCLwwJzxy5qSYPtXm/XUgp5VCcyJSeXEPizZTAuBxh//DW7q4Iv/nPA39OlF660vomvA+Pz3s5DdqyqzPAC8ttCEVVlPCGca1QyB0FlZHLVQuJTV3fg5u7W4ci+YVth9gi1zxnFVxpNRDO7V6bNM8yqXJh6LBI8rH8rfpYIxOMTn1zI1TyI6eZ22Kja9aUoECKsv7LO6gOrXCgDvscvmGbIqN8O3EHG+k9uyLhysOS0EiH24i1PTgsAKEmKjE2k8fdfbQ4SLkSAH2f84/B3dNDhbYFG7D0Bn1jsEjVx3F8NBWB6cF5IjbV4kNIcG7zFoitquwyQXwS/RMUal5R1pVRxFPogEeJinIh633WUqji+mMxddmkDRkHS3yg41GK33Q5v6LJM6cL+8xkJ+947+3Vn9wrUHm5H2WusAlk9TaCBDZa7CHMzqgHSHinyT+ayWxmezNiWrRWq+X39a8/myk/jaZU3okcN1Qa5DMtyZedyPYJg1IRQ4lP5rRXgvUMLyxNDRbJ1LjnhEF9CySThxhTaZxDVGGsIB1tAXyfIf8DRGQ/kW8d7NzwwODb/mmcAfXziIEgMkLkH0kqpPVpZ8EngNbDWTUkERsYSb7LDBwgZUvaM101l3m4qGnJ0WXwVs6XNfm4Qibp6WmGikjhYYaDiWII0xo5V28 x-microsoft-antispam: BCL:0; ARA:14566002|19110799012|8062599012|8060799015|31061999003|15030799006|15080799012|461199028|3412199025|40105399003|440099028|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?ZNUhALATuqkjzlys3BUHhDeKZqTxcfl4Da9iwENwh0ZO/8n5wYOSnCUSSj?= =?iso-8859-1?Q?ibmKGFH6hIMDj6iX4QQRYSATKtWTWINScVyC3ONd5hbQDY46n0jsjJUjrv?= =?iso-8859-1?Q?/jYOT6qvWjrToX8QhZ0J12Kr4olOWk0YgOd07jXcZ/rIfbM4gvLmFfyJss?= =?iso-8859-1?Q?ifJBwH6doCpYT3/uhMNSNbsYsVoCEYYoNsYXpAN9hpE9Kk39Pd7J7Oq15h?= =?iso-8859-1?Q?a6AQwsy/w3cEM4NtuUpVIFdNpXpvawNuSAAxqAAjGr3A5FKSeoI4liSlGn?= =?iso-8859-1?Q?HrE2fSEbPLL3umT3oYzzlFGyErXex/iCzr154LPXk9chpd87sxPWjt+Q8r?= =?iso-8859-1?Q?28+la/kU3IO7JOGD+hlFUef2+xU03f+GgCH38MmqXoWMvgUjAvg7+uo/mK?= =?iso-8859-1?Q?F0K7gd48Oe1Wq0FchVNtTnJvYvEqHWC+W73u03aNEC+um0xPdRaAoCP+gx?= =?iso-8859-1?Q?nEntIuaPw4fHlSqwHAvJmHLM5HfMc+tHwqvtSJBf6b2/H/g22XPXHSNK4W?= =?iso-8859-1?Q?GfMogCW//NqtoSUH17r2hihX/GFlQXVF1EnMI/iS1aT6GHK37lmxMX6IKv?= =?iso-8859-1?Q?vCzyV1JlvKHDB6KtnIjPZTcd2A3SbvOcMjLTOoUoNCBWLatU12bvKeHN4h?= =?iso-8859-1?Q?6jy2OE5OYcbcqrdJ0RE+L8En9EJ94xQukBbqbMv7EcdSWPG4eECl7vIcf3?= =?iso-8859-1?Q?RPb+7od+jXPFPcGnzZBjAxnMFg96I5SfJEHDZzf6sYOzHGBCCN4WRBukjF?= =?iso-8859-1?Q?/yIuwl4LKgtShgBS62R3aLMJ/e89VTQrCbxW6mq3f92YCpHdxX1G4PxgCq?= =?iso-8859-1?Q?OjrmveM/mcGSPhmWD53kx4THFgmOAW+D/DbzQG6R9o4cI2f2W3ZRrs0mzE?= =?iso-8859-1?Q?9ZT6LhsH6chrvyFV+KPAobh7iPeDjAMcyFeQdCeRyGknYxXomuMsGisTBp?= =?iso-8859-1?Q?pYEd+GRSkyAKs46PUGRGq2iSlg1uVzJsTkAVBa3/ZclrRWvJ+VeeCA4KIa?= =?iso-8859-1?Q?GO2KGnV/kxm0u3GK8tzvT8k0ldxZwTVZJRpIxqDFBYVJLWQaMyYVlwwC9F?= =?iso-8859-1?Q?P4op21PoG20qyCoRwqNei92OnOXzQe3BoQ1tRJI6RCKt94LxoHTYT4bm6R?= =?iso-8859-1?Q?CTHqkG8leeNs2Ysb2B4SiVBCsbgBoDFTUiqfXl79DeJLLvrjg0gpA2HS+h?= =?iso-8859-1?Q?xXF3jhYwIRAGD+adQAdmJ3JFHcIKmE/K4JrupbU/wlHwzMTWA6oYEy1i?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?4EHdayyIujjlGeoF3j7zsGkqwVXMNNviUC31a9vVXk9TkU806TVGpx/qMn?= =?iso-8859-1?Q?r4MlWBiE6BRm69fSLX7QxyQjh0S/IT6BNgHMEpsLcJTzpnIK4vLvGGHopi?= =?iso-8859-1?Q?CIg5MYydUJ/kwrzre5xrOJqaW30215dBA1IwwJRBjoriHwcWZF5SfUimq/?= =?iso-8859-1?Q?KFIgUGfeJtczKeaW8u51zFzjS2u3GL8XJSuUGRR8Nsf9n0LIDjBNcItpyV?= =?iso-8859-1?Q?rpD8Z0iBIknaPgpnDVPwtSs2bxrkYOUF/2kJ5WDLJ4PE2Hs6tvHojfEWsz?= =?iso-8859-1?Q?lBDBYkVdpn4pQiD4tjDKbU893eTcqwMtXK6gdLlb6FWpBhkL5SNBGbUG4S?= =?iso-8859-1?Q?kHO00V3MYWq4cMBFUDtlFGrS7iYgEbSdC53U1EP79Eedm5+Z+bPqhAv7xJ?= =?iso-8859-1?Q?zoCqzRC6YBsPFGc7J4GoOAhM4jd8/8M3d/2OnZrcUC9DPi1vY5hOTgj7b2?= =?iso-8859-1?Q?s0Rtu1ObNs6mWoK9PK/ZQPQGdyLwmXbv58DKvuqH01IMMZ7gXNijrZNafJ?= =?iso-8859-1?Q?3gbRoIGlAg+CPQjYmDw7sJQlHUmqcHfhclQmnACPJtAq47xhOyxU7vPLgE?= =?iso-8859-1?Q?zT5Bo5kpTrRB0ITcwyuKcl7qkcqf4NquCGe3UJplAWnAR+3Krfw8ituWYu?= =?iso-8859-1?Q?ILirpCi9cXjypHiMqZ1yOsWoXXIEGXB5vh69lFfuzvRmszFpl6kOJhqB+S?= =?iso-8859-1?Q?O30C4Zv0ogYHS+Df5zKUw0VF6O+dktkMTQ6yq9mp1YFmOE0It0NN+J/egw?= =?iso-8859-1?Q?nJbWfi4ooBxvZFOyCpDjakUkkp0ICPdg1LA6uDYXYTmqzArZvSDt5SSiV8?= =?iso-8859-1?Q?XXqPaqUWgvOt9dklXcGpSrK+4MOeT9WR4F/eCWFORYdkpe4QSrGK8xa74Z?= =?iso-8859-1?Q?LfZHhJcMcbH+ExmqEQTkmLd8MFI7uLXrEOroLDTlErKOeEbeoR1NLq3TYo?= =?iso-8859-1?Q?PjYo4P5dXL8tTJJz3+K3EADiBROa5GeJdrswUrzpvNKMzAk++NUyG6dEgP?= =?iso-8859-1?Q?kGJx0P8LLEFh/ezOyy6kxT8KD+k1vTp40UsEim/cYZzZ7YdAe1nbHzxbd0?= =?iso-8859-1?Q?zBNcWxZcbE7dxnaeW4DKc08my+mZaKImunFztjfqxfrnqe2phYl1ZcWs1l?= =?iso-8859-1?Q?3vHWXrcFLXnDbo0ZZLVsn1YAn4twyQsw0gFnbC9MRXFNFFxzicQd1kAhtk?= =?iso-8859-1?Q?hQp2GRZpJEMh5XI+axhOBkwgnMVZk+QnU9wuZ12hbasUfLiw1ARLIXp7kr?= =?iso-8859-1?Q?wsfRihoPNHXuudyLPrKe3pFuRHIo1AssXCWIEC9YE=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: b4063412-0494-4e2d-3f1f-08de07f14c4c X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2025 11:36:48.1405 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ME0P300MB1437 X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79298 Cc: "ewan@HIDDEN" <ewan@HIDDEN>, "79298 <at> debbugs.gnu.org" <79298 <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: 0.0 (/) I could't find a consistant way to do it, I'm start to thinking this might = just be Emacs choking on GC,=0A= but I think the following step may inscrease the possibility of line-clear= ing issue.=0A= =0A= So start from a `emacs -nw -Q`:=0A= =0A= 1. (setq scroll-conservatively 1000)=0A= 2. Max out the terminal window, display as many lines on screen as possible= .=0A= 3. Open a file that has syntax highlighting, or something like a large patc= h file that uses alot of overlay.=0A= 4. Keep scrolling with C-n/C-p, sometimes Emacs will freeze for a second th= en back to normal again, but sometimes the freeze will lead to very slow li= ne-clearing.=0A= 5. This might be placebo, but I think launch Emacs from a new login session= , ie. logout then login then start Emacs, will increase the poosibility of = slow line-clearing.=0A= =0A= =0A= ________________________________________=0A= From: Eli Zaretskii <eliz@HIDDEN>=0A= Sent: Friday, October 10, 2025 10:25=0A= To: pRoMMMModE@HIDDEN=0A= Cc: ewan@HIDDEN; 79298 <at> debbugs.gnu.org=0A= Subject: Re: bug#79298: patch: full color in windows terminal=0A= =0A= =0A= Do you have a reproducible recipe for this "slow-speed clearing of=0A= lines"? I think I need that to find what causes this. So if you can=0A= show me how to reproduce starting from 'emacs -Q -nw", that would=0A= help.=0A= =0A= TIA=0A=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 10:25:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 06:25:52 2025 Received: from localhost ([127.0.0.1]:41223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v7AJs-0002If-5u for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 06:25:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52866) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v7AJk-0002IB-7Z for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 06:25:49 -0400 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 1v7AJd-0000n4-2t; Fri, 10 Oct 2025 06:25:38 -0400 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=3TpfnpcmwAHLGpFLWF1Bkh2HNJiv/gTI3hu3qVqLFqU=; b=HqWEtQsM2ssf cOlUucmCJy4f4/ARZNJHzYlCzWXWt4JP1kT8w66uU9cMsJcsLY6SF2wzMFaVWPiUUVw5mvgZh35a4 lSeo9mCbHh1rqNKWGMWDAoaxPwLvU0aPbd/OYMRZUe4vg/ThNL0cAg5LI8/Za9G44KAaCoQ10+fjL 6ePTiNLAQC7B45naI6AMWyLvrqvG9QphffN0qX8WCq2KKCkrXMBSbNGRg0oAdxn+Cm8/MJGHSvyE4 iV+I2DCLOeh98gZ2+/kn/b06eKYdxZsBXdUsE9W2i2tCrp2DW9MUuwmIg0bXtwhnwClpaVC4Fdhun TjMCLZWvf7Y3z93XamgB0A==; Date: Fri, 10 Oct 2025 13:25:28 +0300 Message-Id: <867bx38353.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: pRoMMMModE@HIDDEN In-Reply-To: <86cy6v8bah.fsf@HIDDEN> (message from Eli Zaretskii on Fri, 10 Oct 2025 10:29:26 +0300) Subject: Re: bug#79298: patch: full color in windows terminal References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> <86ikgoa6ei.fsf@HIDDEN> <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> <861pnc9sd1.fsf@HIDDEN> <SY7P300MB1034A5620E0DA122721798BFDFEFA@HIDDEN> <86cy6v8bah.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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 (---) > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > Date: Fri, 10 Oct 2025 10:29:26 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > From: Haoyuan Wang <pRoMMMModE@HIDDEN> > > CC: "ewan@HIDDEN" <ewan@HIDDEN>, "79298 <at> debbugs.gnu.org" > > <79298 <at> debbugs.gnu.org> > > Date: Fri, 10 Oct 2025 03:31:31 +0000 > > > > Now `emacs -nw` works in windows terminal without problem, even with simplified > > chinese as display language for Windows, but sometimes when Emacs updating > > display output, certain lines are cleared at such low speed I can see the process > > of each characters get cleared and re-filled with new character, it also seems > > to be happening randomly. > > Thanks. I will look into the line-clearing code. Do you have a reproducible recipe for this "slow-speed clearing of lines"? I think I need that to find what causes this. So if you can show me how to reproduce starting from 'emacs -Q -nw", that would help. TIA
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 09:20:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 05:20:54 2025 Received: from localhost ([127.0.0.1]:41130 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v79Iz-0007Wi-V0 for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 05:20:54 -0400 Received: from mail-10626.protonmail.ch ([79.135.106.26]:23501) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v79Im-0007Vp-7h for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 05:20:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1760088031; x=1760347231; bh=wy7ERh8NKsnAcKhPSMc0oQFIztF1ZlRwtIqma8RcJJg=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=xBnIEUns1keeSxdzzrKm00q7FZhI/c5aFzzvrNXip9zaD4aS7fJmK+Q3758OKbVzb ObFjqE9EYwpuldLm+MY4H80KSHR4G7GPHcAVXmzWoatwEEj0cPaCf0NJw2OOCwALUt 7dFMFttN9NSkVjah/6vLNHOokGn7r12EKTOefG5pa72ALhnFvUuwKUQyP+4IFOvIrS kxstTjs9HaLzwQRUITm07IzmHEBstbkLYX1r4v/Rwx1xvTYGDQElpy8CoMY0QJX3dg M2FjCI/bxwlHiRk+Z7JYfD7rj7OO8Jk/2mLKAyQ5itwmAZus0pry/nB7jRDosDAv1a vFLG4Tv4kljpA== Date: Fri, 10 Oct 2025 09:20:26 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <xqrLEbU91pHDAfQS2OgD5cyP8Jzl8am6We4NoCQ4aQkx_VvhbJnpckPG1qIUk86rmPKFSrwUX-3ierKtjNhiqYYMfLjXf576RrsgoqY-bxo=@etown.dev> In-Reply-To: <86a51z8a6w.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <QPwJYfXzn3H1ZBZLVwqrffFd9bavHgdmU3uJSPxbqtyubWZkdurTvtKu1dnBG6h0b7wkFdcjmUBpB25D0f80Xe8w1lmVARxv1BtEOIE-KRQ=@etown.dev> <86a51z8a6w.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 62d9b26d9bd56e02f9582efa052bfc9fae566499 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: 79298 Cc: sebastian@HIDDEN, include_yy@HIDDEN, 79298 <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 (-) > Does WriteConsole move the cursor to after the text it wrote? If so, > we will be better off taking the cursor position from what > GetConsoleScreenBufferInfo returns, instead of computing the visual > columns ourselves. That's because the functions I used in that > computation don't (and cannot) know about character compositions done > by the terminal, so they will err from time to time, in particular > when displaying Emoji and other complex scripts. >=20 > If WriteConsole does not move the cursor, then using the same code as > I used with the current 16-color display to compute the columns is the > only way I have found to get a good approximation. WriteConsole /does/ move the cursor, so retrieving the cursor position with GetConsoleCursorInfo after writing will probably be the best bet=20 when virtual terminal sequences are enabled. I'll implement that fix=20 for when the feature flag is on, and use your code when the older=20 mechanism (with 16-color display) is in use.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 07:53:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 03:53:30 2025 Received: from localhost ([127.0.0.1]:40972 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v77wP-0003T1-PI for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:53:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50310) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v77wI-0003Sj-FK for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:53:26 -0400 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 1v77wA-0007gM-Ej; Fri, 10 Oct 2025 03:53:14 -0400 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=43aZXDCPnEJLRpF3ffxEvSW5MAynRFpSlTZo3cfUjT4=; b=oJ57a+N0+dlyERdVA8je heWBY0OxYzYTa5G010i4R158GtaycEQHhGbU15M98wIlFSTudE3s92CRYSwOBAC1OIxdguSXEiCtU HmEqtJ3YEFesqoZMEbNVk2nYQ7EJrZJj6dMEusr2I+WvTTbKMoIRh8k2fLuGmqsT4nX6qbA7lKndT NeWZwu4a2jzATqt1VKxyhMkpUwguf3visN90GUDlenpNXw0Uaap2YFjH+xb8xPUEqWVhz+PCyW6u5 0IeQVKTxxcNEIBlt1JvDzbNMw+Wd5bnM8x3ANDB9VjZH4K0ClGGYLGr0EepBCWJz/3FK3FqmZwD4R dv6V1QviqrCTOA==; Date: Fri, 10 Oct 2025 10:53:11 +0300 Message-Id: <86a51z8a6w.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <QPwJYfXzn3H1ZBZLVwqrffFd9bavHgdmU3uJSPxbqtyubWZkdurTvtKu1dnBG6h0b7wkFdcjmUBpB25D0f80Xe8w1lmVARxv1BtEOIE-KRQ=@etown.dev> (message from Ewan on Fri, 10 Oct 2025 07:32:27 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> <QPwJYfXzn3H1ZBZLVwqrffFd9bavHgdmU3uJSPxbqtyubWZkdurTvtKu1dnBG6h0b7wkFdcjmUBpB25D0f80Xe8w1lmVARxv1BtEOIE-KRQ=@etown.dev> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: sebastian@HIDDEN, include_yy@HIDDEN, 79298 <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, 10 Oct 2025 07:32:27 +0000 > From: Ewan <ewan@HIDDEN> > Cc: Yue Yi <include_yy@HIDDEN>, "sebastian@HIDDEN" <sebastian@HIDDEN>, Eli Zaretskii <eliz@HIDDEN> > > Hi all, > > I've been busy with work, so just getting caught up here. I have some > time this weekend to make required changes to the true-color patch. > > I gather others have experienced the cursor "flashing" in echo area > with the main patch applied, and slight in-place "flicker" > (if blinking off) / irregular blinking (if blinking on), with the > additional patch applied (re: Sebastián). This is as expected, so no > planned changes for that (yet). See the original bug for discussion. > > Re: "ghosting" / artifacts mentioned by Yue Yi... I have experienced > something similar in the past. AFAIK not related to the patch, and it > seems like (1) Eli's changes and (2) the ambiguous-chars suggestion > fixed it. So: I will plan to integrate Eli's changes (now in master) > into the patch, so that we compute cursor position based on visible > (column) width rather than logical (char count) width, and we can > hopefully handle (2) with some automatic defaults in text-only mode > (re: Eli's last message). > > Let me know if I've missed anything. Does WriteConsole move the cursor to after the text it wrote? If so, we will be better off taking the cursor position from what GetConsoleScreenBufferInfo returns, instead of computing the visual columns ourselves. That's because the functions I used in that computation don't (and cannot) know about character compositions done by the terminal, so they will err from time to time, in particular when displaying Emoji and other complex scripts. If WriteConsole does not move the cursor, then using the same code as I used with the current 16-color display to compute the columns is the only way I have found to get a good approximation.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 07:32:48 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 03:32:48 2025 Received: from localhost ([127.0.0.1]:40935 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v77cO-0002bR-Ct for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:32:48 -0400 Received: from mail-10624.protonmail.ch ([79.135.106.24]:14081) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v77cK-0002b0-0e for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:32:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1760081554; x=1760340754; bh=62qH+akff+iRN1fu6/WUB/o5jxlUATEchaVVX1W7200=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=AG1UF1ECNwxihbGxT+On+DJWJFCC7Ex8i8w7I3k4AmBLO2oeM5BN3PnNjT2uw5u9J gBE/IYPzt2K8ju3pOoRvpvNEU2GFlcwNJYxTrv3vbynnBmfOSUJqDCNr2CiQCo979+ MaeU+WRRTqtP4DloU2tyRE48f6IJ2hvKv4e3X/QRZc1Tpls0jgc3qomYGD88DBIML5 jaTbuVIU4tWfJP2lLBNn+Z8mfZaBPT2gO9IsuReljDQXmITgiao/woX3XtbALjA+F4 bQMXGowYQppDoE4YZl+GriFL+m0vN/6w0bJARdMhfFP2nYLxS6+nqM/di+QC+JNjHP D/IhX4W/AuVSw== Date: Fri, 10 Oct 2025 07:32:27 +0000 To: 79298 <at> debbugs.gnu.org From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <QPwJYfXzn3H1ZBZLVwqrffFd9bavHgdmU3uJSPxbqtyubWZkdurTvtKu1dnBG6h0b7wkFdcjmUBpB25D0f80Xe8w1lmVARxv1BtEOIE-KRQ=@etown.dev> In-Reply-To: <86ecrb8bru.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> <86ecrb8bru.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 6a91809e953cb5bd1b8924ec090c25021cc2c07d 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: 79298 Cc: "sebastian@HIDDEN" <sebastian@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>, Yue Yi <include_yy@HIDDEN> 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 (-) Hi all, I've been busy with work, so just getting caught up here. I have some time this weekend to make required changes to the true-color patch. I gather others have experienced the cursor "flashing" in echo area with the main patch applied, and slight in-place "flicker" (if blinking off) / irregular blinking (if blinking on), with the additional patch applied (re: Sebasti=C3=A1n). This is as expected, so no planned changes for that (yet). See the original bug for discussion. Re: "ghosting" / artifacts mentioned by Yue Yi... I have experienced something similar in the past. AFAIK not related to the patch, and it seems like (1) Eli's changes and (2) the ambiguous-chars suggestion fixed it. So: I will plan to integrate Eli's changes (now in master) into the patch, so that we compute cursor position based on visible (column) width rather than logical (char count) width, and we can=20 hopefully handle (2) with some automatic defaults in text-only mode (re: Eli's last message). Let me know if I've missed anything. -- Ewan
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 07:29:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 03:29:40 2025 Received: from localhost ([127.0.0.1]:40919 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v77ZL-0002N7-Lr for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:29:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46090) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v77ZH-0002Mk-S8 for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:29:36 -0400 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 1v77ZB-0007u2-GC; Fri, 10 Oct 2025 03:29:29 -0400 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=Nj+OyxLIbi3egAUulRUZpUA18GEND05lSxRs8XkXfLQ=; b=K2WGuT7ffNs2 LJEaht7QmFvrbYeIOo5z+BAMXqXfzzmb1qfN3vrNEeBDpyfmUxarbeBXzU5usmhk9Ue3wUMpuDCBc +S62KSf9BmwLinAkfVvogbbOqvXkx9cMNElqPhLMnUIjxuCSXKeFgUzqvAodwRHtFHFTx6WQinGhy PNUqvf25mqe7BFG6nkznJLbhORrlM0xvHHV1twfeo2jJXt97WXTHtwnaMBBLUbtSbg67WlRrsSHSU j+siA3aDFSKQLLfUYxP/XSnc2yji78wyQ7ePWD9GIe244niRI21f6tTBjmmjUYNNjY7K3c+HI2Mox oiscQZmds61cVBzP3v5wGA==; Date: Fri, 10 Oct 2025 10:29:26 +0300 Message-Id: <86cy6v8bah.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Haoyuan Wang <pRoMMMModE@HIDDEN> In-Reply-To: <SY7P300MB1034A5620E0DA122721798BFDFEFA@HIDDEN> (message from Haoyuan Wang on Fri, 10 Oct 2025 03:31:31 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> <86ikgoa6ei.fsf@HIDDEN> <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> <861pnc9sd1.fsf@HIDDEN> <SY7P300MB1034A5620E0DA122721798BFDFEFA@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: Haoyuan Wang <pRoMMMModE@HIDDEN> > CC: "ewan@HIDDEN" <ewan@HIDDEN>, "79298 <at> debbugs.gnu.org" > <79298 <at> debbugs.gnu.org> > Date: Fri, 10 Oct 2025 03:31:31 +0000 > > Hi Eli, I don't know how to merge the tty patch onto master branch properly so I > just build the latest vanilla master branch, > > Now `emacs -nw` works in windows terminal without problem, even with simplified > chinese as display language for Windows, but sometimes when Emacs updating > display output, certain lines are cleared at such low speed I can see the process > of each characters get cleared and re-filled with new character, it also seems > to be happening randomly. Thanks. I will look into the line-clearing code.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 07:19:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Oct 10 03:19:19 2025 Received: from localhost ([127.0.0.1]:40894 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v77PH-0001iM-Jl for submit <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:19:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50864) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v77PC-0001i6-Ph for 79298 <at> debbugs.gnu.org; Fri, 10 Oct 2025 03:19:12 -0400 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 1v77P6-0003mw-Nx; Fri, 10 Oct 2025 03:19:04 -0400 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=12/vd+tZgD5Dn7me2Bw/Kwo7YtWzqRKAq2qyU8Ck2Z4=; b=V4xdXBNFYLDc sbZlnNoGcUT8pRZhw1rpCx4dUbehHvMuDw5mvf+AAdNteK1N+zEPAnxRmOgo40XJzeMyMLGxdUvB7 7Xt/Pv1XvOx4+lt4W4CYuzBfeY0qejafUzlFzbuIt0TuTC6YsijBROsPlxW0mbhs4j09Dba+/I6jX SZDzczoJVJBL0LPPVZ8wrxyILiYmsJI/lzbCjV5A8PFAPS8aieBCTEwrryBG/L2GwJiUZOH7msh67 CUSrMp508MS+vxn1I4EdxJ/tvsvcRAlqkVVknOGh6jmfYio1N2GpSxGzBbcmnTU21PLUnpds521d9 dq+xfKPObgWcM2OOjEALgw==; Date: Fri, 10 Oct 2025 10:19:01 +0300 Message-Id: <86ecrb8bru.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Fri, 10 Oct 2025 08:18:32 +0800 > > > Btw, does anything change if you customize > > cjk-ambiguous-chars-are-wide to the nil value, while your Windows > > display language is set to Chinese? > > By (setopt cjk-ambiguous-chars-are-wide nil), it works! > > > And another question: what is the value of > > current-language-environment when you start Emacs with the Windows > > display language set to Chinese? If it isn't "Chinese-SOMETHING", try > > setting it manually to one of the Chinese language environments, and > > see if something changes in the text-mode display on the master > > branch, wrt these artifacts. > > It's Chinese-GBK. With this option, the artifacts all disappeared. > > Thanks very much for this tip. Considering it's a new option introduced > in Emacs 30, maybe it's understandable that I couldn't find it. > > Thanks bug#64420. > > https://lists.gnu.org/archive/html/bug-gnu-emacs/2023-07/msg00134.html Thanks, but I think we can do better here than asking CJK users to customize this variable manually. I'm beginning to think that when Emacs runs in text-only mode on the Windows Terminal, this variable should be nil automatically. Could you please help me see if this is so? Please type the characters in the "Ambiguous-width" set (they are listed in characters.el, starting at line 1432), and see if they all are displayed as single-column characters on the Windows Terminal. Please test this once when the terminal's codepage is 65001 (UTF-8) and then again when it is 936 (you can use the "chcp" command to change the codepage before starting Emacs). Bonus points if you can test this also on the older conhost terminal. Armed with the results of this, we could make the defaults more user-friendly, I think.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 03:31:56 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 23:31:55 2025 Received: from localhost ([127.0.0.1]:40454 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v73rE-0004qX-L7 for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 23:31:54 -0400 Received: from mail-australiaeastazolkn190110001.outbound.protection.outlook.com ([2a01:111:f403:d40d::1]:11658 helo=SY2PR01CU004.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <pRoMMMModE@HIDDEN>) id 1v73r4-0004my-UG for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 23:31:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DonDlCY76pVBY3dFUd3XHPOgh4diTdtEGWYVEdHzro/aHSHZIL0MbBiCalZOffrtTX4eUWwI1MLApuRGUzuFO84uQ2DviDlf8S1U5QyUzLgOyxUx7g5vWkhqWLNXOu86KpyBKnUdi6iTgywRLTVjB06/Sf6YOSFKPSx/GJ/65Yti9NhZf7TIXWYnOTChKnJ4K/qXa+l3UBa4zkGiQMhgNNw5uiNVNkq9RG6PkA68mY1gRTrEVtDvgL5+RzbRHWS2BcYLvEFQsqxINtY1WoRR5x0V7xLmdzJ/mZUHdnqI0hZqmeJFlRRWC15iFFAx7C00S/Gbt2f+EH+ssdwPdy5SRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0eIfIv7gXId4Aa4/Zr7SRgaI1hO1kr/N5bsfdzLlxHQ=; b=nflslKZIqRRA/NCC/6rjtVube5ZwuLyJ1TjMSHLeDPvlHXX+HPrjmyivEHE7dFAMYHpFBQGR1zWRCIcb3h1RAXek2PQMjpPY3+MARJoC4ymBsMWRuOIeFk0Y9BktpIS2lINmY5FHDTmsXsPdMH1I7YpThFADvoZus0nTjIPlZQsF15JwnKEBrO9jo+P7fKTVweNKwW3y4wvufpTbBy8bcNDVKYcPZaM9MLLcdavsRy7TfiQCvnEqELjVaLV1TZ1o9i/Fondw8x34gckrALXctXdAmYRwHY7VFprhk4WqtZSOrn7mZL7BgWVBpc81CAZa+6BgE+xHdhjVMISVd5xsPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0eIfIv7gXId4Aa4/Zr7SRgaI1hO1kr/N5bsfdzLlxHQ=; b=kJdVcLamUdhNRq81JJZgayQpXcRILsYPbvLT8MhDu4ezm/zslk12SOPYx1MEbAPCf2nEkV/FzYyLzHEXf8sZG74dk3FI8PkMBNlPafL8Jo38cBM0kzWQdtAxmMnIV/vosMuAImJMMIFYPtjBiZOUDeC0qm0cAGab5asiPjiJ8cAr6EkGq17CZWeVT0zUvRPXMPEY9IAeJgSDcy6rsiNMTqyDSpkENqFqL4l0nmmaQILf7+bWeY1cQdCZrnAXDmkFbwBlUlHsYbPe2W607h5MjWM9yjMFRKqsjIKcV9WRDBphWWWZi7UKN1mTUgnI5TdEgjygBTs3MgGbA+E1KUDSBQ== Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:28f::5) by SY0P300MB0755.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:284::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Fri, 10 Oct 2025 03:31:31 +0000 Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4]) by SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4%4]) with mapi id 15.20.9203.009; Fri, 10 Oct 2025 03:31:31 +0000 From: Haoyuan Wang <pRoMMMModE@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Thread-Topic: bug#79298: patch: full color in windows terminal Thread-Index: AQHcOMO8419jP7j4FkWmXwLJGYT11bS5aLqsgAAznTmAACEqvIAA9Yi1 Date: Fri, 10 Oct 2025 03:31:31 +0000 Message-ID: <SY7P300MB1034A5620E0DA122721798BFDFEFA@HIDDEN> References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> <86ikgoa6ei.fsf@HIDDEN> <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> <861pnc9sd1.fsf@HIDDEN> In-Reply-To: <861pnc9sd1.fsf@HIDDEN> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SY7P300MB1034:EE_|SY0P300MB0755:EE_ x-ms-office365-filtering-correlation-id: f97743b1-a29c-4598-4da3-08de07ad814c x-ms-exchange-slblob-mailprops: 02NmSoc12Dc43FlQvP2yewYSt45NTkBZeZrHbNdiHOFYWimGFLC17Yg4qjRyCMnDzHJDjUymFi2fel7ZJjB4KzbjPZ1sAxGSM5uxlRQedXAdc5dMgXDtJcAPnmTkTe0kOheG0GBAI3F599VFvsWvQSOZa+SNS3OtycjV7ilQUhLYxo/d4ZTDTe0wnwH9oDlgu/V9PdUdzt0EFRo0F4/gI50x9dxRqZxUtZr5OWoN2tMojxiVboK+UbcIh1rVMEauEcVxH5kZX/gXI6Sop/26Kh2nnl7ovvgGYwRpfTFDKZYi6vQa+ycEA9bbm7jDTTDC/u8KgCvXlPoumyQrQk7jiwGTyV1t2rZK3IgXfDaK1DU1ektj+D5uMYFvNywBWnbBFM9NngE2qFmfZOkHyUCApjnhPzJHtukjfv0chewHyDeaCIuuUa9saK7nBWdi0FhgkFCvw6BjEdfsVyPFh9RM3JsMhgiAiH9eMflvoC2QkQn3lCvWBfAZGosSYLqivJLCOkj3SJSP/lkClA11VsVfYNkgHp/wfIc/zWKKeSEvFIHdc6a9FtxF7yBGfWP7cseY14+1JPh60+GzTf6g+8IxIRG3nu8shmlcNTLH+1OPUFJe3gkSZsDQRuVb6I+dPcScETK5jgXjx6m3fqLM+0k1Ymf2TO2P+nrsorRKy8SIcL+ebSh8VF9IZ3Oph+3LpXqoWkUUhNaJ3OS+H2eq63FYl+eggK4EZrjCc2s5J3W/ZynYLNNpQqEuKNQku446+fDB x-microsoft-antispam: BCL:0; ARA:14566002|15080799012|461199028|15030799006|8062599012|8060799015|19110799012|31061999003|3412199025|40105399003|440099028|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?nVWwZBi3neLegwUmGcVq+y5CMPSj68K6E59qPNSUlk3Dvoc/ZKdNyYRP4V?= =?iso-8859-1?Q?LAsdhkmbbQKPI1bu3A25VSbNmMO3vYHu/CgLZNOXDcIMIV1ewHeoBYu0Gh?= =?iso-8859-1?Q?J/C9HqRkxEQuP18BVbWQOnRT7SAyZStfAwRlKdsLHzqoi2aLaYpoJqo6he?= =?iso-8859-1?Q?rSDd7TyWMUtqQn9XHYrTpYlCjLtJTQ4BhgFdNTOREYF8NwroHt1DDayuM8?= =?iso-8859-1?Q?Dh5PFPnLG8dvNne/XwFsXNPlhsXY0WOl48fZtBofFwWRiTdGH+mXjr1bPU?= =?iso-8859-1?Q?tTPqWRoIlZGB3/PyScdkB+7tkpo0Ek6g6iuAh/XxxeQLSb0ZEaHFF2ymC5?= =?iso-8859-1?Q?mU3C6e1G1OGEInHKlagUUy62vHs1a7cS0guAtf8D1R428Mr+FiPgKv0KOG?= =?iso-8859-1?Q?dXyf+qIuutGnK4xuZPTJiOJyQoVKWO2QPS8tZeTnV266XEXKrdNYkCgowd?= =?iso-8859-1?Q?LJ/sxJBV7UHIUvi57jntqzGjrd1X9ggaeXPKFY7rRjxzz1SWTXXVqqTzVt?= =?iso-8859-1?Q?fP73E6LZr6rtgWC7j0YsPiRUhom8o/Tmsxhjjvpuc/TtoFL1TdWoXauhqt?= =?iso-8859-1?Q?UjP7wM9FmWohSdAmx1/MjEdKN93viZ9ISC2oFXPZvlfuWdA7DpDkGCzgR6?= =?iso-8859-1?Q?sUCTYVVds2Dx0whCWMXg3dvcnzmjkhNhfZiwOBeoIOTTT2RKAC395WYq++?= =?iso-8859-1?Q?hJ5RgaO3K7RuNC4rsAWxw2I2SgghOIV8cyFqpFys3FMuMUTazbjsWcSA+u?= =?iso-8859-1?Q?ugs6UWAoHyEf2jJiDu+Gc0aWbexgKYy5kFI4v/ymJYYn0HeWsUdiaHvfKX?= =?iso-8859-1?Q?GNTO+RveyAwZtvV1OZr28g46EhGRdlrCMLqNNErjyNY5qIP0/yH3fnUkgC?= =?iso-8859-1?Q?Cr+0guwKMICPaEVJlLKFxei8qF7Y1WdiNHy2PtSAcAVwxS+TTGn9ysT7lv?= =?iso-8859-1?Q?wIYpYQ3ncUptfU8/VcTThJlfpJIfi8vFgfpuOX5IYKb0bdq8yq0/lzQvKO?= =?iso-8859-1?Q?gcFnTC5TAajuqD1XoR+yy/lgt3fdKRsESfYo5KRU4Zilbi1VIOuFsRuLmf?= =?iso-8859-1?Q?vvEKVfoEY4irkG0qWyeX1OGy7j1/suou+zB9A60U6M0zf6dRSg5YsUWuji?= =?iso-8859-1?Q?7zr/juiMQR+Zq8EcOyFEDOX2SvjEMQRO1YVruPsOUTjmWbj3TnamqPN1/t?= =?iso-8859-1?Q?M2Vprs7xFMBdVI8A5DJG+EZfhXGHSBevEkbaKpP++p7UPsy7tOm69KJm?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?LAiqJTirMybcNixLfYRtnS0KB3Pl5VohQR0S7fFz5QmZuAIvxFDhefUo7Z?= =?iso-8859-1?Q?MMDvZtgY46fKVRqGgue4brBSDqz+F8/tTfRdFog2Plrnvq8CJgrF8Zb6tS?= =?iso-8859-1?Q?nLKwILjocwwhb7O6QNapqb5/iuYXKdZ8KvacLCtaVZh7AayloFmvMBYftd?= =?iso-8859-1?Q?nKqS+MF3x56VOSjChCH4d/oeLrSpq4igH+tjwIjYC/hGS5BaRdizgijOSd?= =?iso-8859-1?Q?inngf2lQrqMJiVLwdq+cv5rU9Q8v93zdDfKiM36ItPBRSbOsMsMXnKpchB?= =?iso-8859-1?Q?AZmImXm3s3w7m+jyMQTgLXNFY2OTOaj4O/a/p5vm3W3t3kn/UZGqhU56vV?= =?iso-8859-1?Q?sW0AAoYlKnHuDrziExjCdbI5islNMI0mTCL892oIYaRNJA+5kdymjfm3AB?= =?iso-8859-1?Q?ipAbU7reyumNKdPfOtnufJhk2QZAhQoXbU6voue9MPSJsCsvFZwk30hBiJ?= =?iso-8859-1?Q?WOmZVopBDGIvV+u0R0EuJKE9e96v0hnIaFC9/zD4gQHzXYBCdqKMKlxMqy?= =?iso-8859-1?Q?egGptVjvroffzstmRCURbRIZwE0iWzZVCC1nV3OIKVeIel5mro5CiPYnAj?= =?iso-8859-1?Q?Ukt+FylUYii0y4CFRpHqQdjQr7cePn7dcOyItDuuSw6CeBjG3ZY5UBjcAy?= =?iso-8859-1?Q?TEMtQ9CiJPBq6MPLY1C+PzFQYRHefrfbHTftPIfh9Hfelv8ahvGhJqd1SO?= =?iso-8859-1?Q?c60LdxB512k9GN+97kwfwmam01t1+v3mcWoh+yDeGrxUIcNHERNBfnQHEf?= =?iso-8859-1?Q?+60BML/s+EWL63tZJ42Y5uejPd/btIk9+yL3XvxDpBeFzwVtxcP+MSj+b0?= =?iso-8859-1?Q?zOIRHzpOU2DqX/vQSsftJt5o9B9S1D/1PtPOoUBXHsuzFriHsUCE1KDUQt?= =?iso-8859-1?Q?fOyQDSK6P42ufHWQCe3yNC0IHL+m6SIThZUGar4xeOhx2O9uPRCA6H2C8M?= =?iso-8859-1?Q?yaIBhEsXYt/eoyQUPsZ5AwI7DvnMIWE5Gz4HflIQxYA9ZS3K/FTyhKnppB?= =?iso-8859-1?Q?cFWqU9fMzMq/g3AR0oyLooK7qE47Imuz/+uLxgSIJjpLATbIYBusq+naKF?= =?iso-8859-1?Q?Qu1jbTLxJGYnYcFeurlXrk0lsmtjdPrG2ytq0uZAK7Pbmk5VveM/LU3iod?= =?iso-8859-1?Q?ihMA07KeVsXYfJW4jZyRUwdCRN79BKsQamoxWUgvn/DF1GmBavkfCiN2zL?= =?iso-8859-1?Q?0r2+RWTGdCeJDb/fdBXEbZJ7xsFL4iGoL/njulutYqUbXaAPschXEOO4M/?= =?iso-8859-1?Q?CwctG9pemq1G8YzVYs4k7FGDhccVwEvu02c+5WcwI=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: f97743b1-a29c-4598-4da3-08de07ad814c X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2025 03:31:31.2693 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY0P300MB0755 X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79298 Cc: "ewan@HIDDEN" <ewan@HIDDEN>, "79298 <at> debbugs.gnu.org" <79298 <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: -0.0 (/) Hi Eli, I don't know how to merge the tty patch onto master branch properly= so I=0A= just build the latest vanilla master branch,=0A= =0A= Now `emacs -nw` works in windows terminal without problem, even with simpli= fied=0A= chinese as display language for Windows, but sometimes when Emacs updating= =0A= display output, certain lines are cleared at such low speed I can see the p= rocess=0A= of each characters get cleared and re-filled with new character, it also se= ems=0A= to be happening randomly.=0A=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 10 Oct 2025 00:18:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 20:18:55 2025 Received: from localhost ([127.0.0.1]:40016 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v70qV-0007kV-DZ for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 20:18:55 -0400 Received: from xmbghk7.mail.qq.com ([43.163.128.49]:39333) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v70qP-0007kB-Hf for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 20:18:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1760055514; bh=xdJZOLRtcA1+9B6XdWNVoupohbUZjsP9/fXnkaUS5Ik=; h=From:To:Cc:Subject:Date:References:In-Reply-To; b=wSJP3MtMskichAWI4vmDmcHDi+YExYzsVoyGl5EMijlQiMXHXovdqDFPgJJP2JWVj hWIeHomZnJqya2HnBFUztaiV4Wj7/4wf9DluC4vcdMsGVu5m/Rlk3JrA1AJjNwiJv7 lJaRbmBTNjt86bAckHABaBUuRCyUnckYWeW+AnIM= X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= X-QQ-XMAILINFO: McF9JvsryK5JwOepJV79hzYbcmOZH7EAGf4anjmWv4njhmcF1HgNC4jWqr2k/B Wl5EtSse7CPYUv0aZqLgO283fWj93e6G7CMbJ8T4mRmDve6484T+kXVF64MRlkKXLaOqHG4jL4naR JxVr+Zyb+nnoP8q6GAt4R5lfBjdFvW+s6/hah7zS4VL9Q758oPZANQvE2QlVBQIPOUJ4QRlsDkfzZ 2wEYo1d5DDRyKFZYYqVeCEAL+69JbzY6EMP9GgRWZ4+y2tf6EgnkMyMqQT2SyCDO/KxWV8nFIn3dc t5auSq4+ur0/pr+/5rD3lhw6I1u47z2c1OUjo9n15H6f5Sq1RU1gVzCYBNwcpWX3uh+O3tVfv4KMH wFsUBf4UtX7V9rQLST7798ioV0gPu5YJ2HwSla5RjLW7JEnXv89AHAYwtkNNB+h3HODA1QaAUkK8x FV1hW7o9nhK4IvS3ayLMM2YCeLSsucDQ1xv89+0sNURomVFlXDQMIOOR+415BB+emsJOlZpnZi2Rk WGVaKuwSx3PYmNVyHd7GpFsDOVyf+L09R0QRoF7WszdV6gE1kmMWbpkTyjINOT/E/nzLn8eNBxIxS 83nFoHlsxtKrt6ScRoFMYzwYsix6PcL0JsV4lCqqBpPl3xftI11tBMOnuLkheQT+6WC0ezPbML20y TmyMYSmo4KY3nM3tp885T5xs/NKxWUH8cOVIisZxIagGZ7la7vMSqmKAGBjcPz0KAoYO7eKLOKLgA 66HeyK2DLB++VWD6twQoPpzk2dUenQCoIbxfF9WOPA3efRfBxkt6aG61Xh+n6Oo2Fy2QJD5/KjJ71 6JOL1JTJZ76iXiWKonr7+BscuYfbVtn7kHpy75gN4R0MF2+kmXIMrqT7mxlRBuxuSZ0zRpEOppuLD F7zYDr4oENz2TlokEDjE+0FmN1P7MRcJ6trzEMXoyWl9s4qCoGj5bzw2bCntRbrYcsU4+fvLxRNsS ot98IL8wFvFyeIXqG27zb8tZ3TefImU22BITW5w1WQdP1fiUhg22MAxxmNccKJUr9CRVOEczJw8Ja DP82AiM0Fc5ZSlG8yOOUtbeiEN/s7AG++tKPwjm1UPHoUZTg= From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN> To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Date: Fri, 10 Oct 2025 08:18:32 +0800 X-Priority: 3 Message-ID: <tencent_DB10E531B456E71A27FDF704B8FDE3E99507@HIDDEN> X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> <86tt0883mh.fsf@HIDDEN> In-Reply-To: <86tt0883mh.fsf@HIDDEN> X-QQ-mid: xmseza31-0t1760055512tw8qrqyzf X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>, =?utf-8?B?NzkyOTg=?= <79298 <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 (-) PiA+ID4gU2luY2UgZnVsbC13aWR0aCBhbmQgaGFsZi13aWR0aCBxdW90YXRpb24gbWFya3Mg dXNlIHRoZSBzYW1lIGNvZGVwb2ludHMKPiA+ID4gKGluY2x1ZGluZyBib3RoIHNpbmdsZSBh bmQgZG91YmxlIHF1b3Rlcywgc3BlY2lmaWNhbGx5IFUrMjAxOCwgVSsyMDE5LAo+ID4gPiBV KzIwMUMsIGFuZCBVKzIwMUQpLCBpdCBjcmVhdGVzIGNvbXBsZXhpdHkgZm9yIG1peGluZyBD aGluZXNlIGFuZAo+ID4gPiBFbmdsaXNoIGNvbnRlbnQgd2hlcmUgdGhlIHF1b3RhdGlvbiBt YXJrcycgZGlzcGxheSAoZnVsbC13aWR0aAo+ID4gPiB2cy4gaGFsZi13aWR0aCkgaXMgYW1i aWd1b3VzLgo+ID4gPiAKPiA+ID4gTXkgaHlwb3RoZXNpcyBpcyB0aGF0IHdoZW4gQ2hpbmVz ZSBpcyBzZWxlY3RlZCBhcyB0aGUgc3lzdGVtIGRpc3BsYXkKPiA+ID4gbGFuZ3VhZ2UsIGV2 ZW4gaWYgd2Ugc3BlY2lmeSBhIG1vbm9zcGFjZSBmb250IGluIHRoZSBXaW5kb3dzIFRlcm1p bmFsCj4gPiA+IChXVCkgcHJvZmlsZSwgdGhlIHN5c3RlbSBzdGlsbCBkZWZhdWx0cyB0byBh IENoaW5lc2UgZm9udCBmb3IgcmVuZGVyaW5nCj4gPiA+IHRob3NlIHNwZWNpZmljIHNpbmds ZS9kb3VibGUgcXVvdGF0aW9uIG1hcmtzLiBUaGlzIHVsdGltYXRlbHkgbGVhZHMgdG8KPiA+ ID4gdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gdGhlIGV4cGVjdGVkIGxvZ2ljYWwgd2lkdGgg KG9uZSBjaGFyYWN0ZXIgc3BhY2UpCj4gPiA+IGFuZCB0aGUgYWN0dWFsIHJlbmRlcmVkIGRp c3BsYXkgd2lkdGggKHR3byBjaGFyYWN0ZXIgc3BhY2VzKS4KPiAKPiBCdHcsIGRvZXMgYW55 dGhpbmcgY2hhbmdlIGlmIHlvdSBjdXN0b21pemUKPiBjamstYW1iaWd1b3VzLWNoYXJzLWFy ZS13aWRlIHRvIHRoZSBuaWwgdmFsdWUsIHdoaWxlIHlvdXIgV2luZG93cwo+IGRpc3BsYXkg bGFuZ3VhZ2UgaXMgc2V0IHRvIENoaW5lc2U/CgpCeSAoc2V0b3B0IGNqay1hbWJpZ3VvdXMt Y2hhcnMtYXJlLXdpZGUgbmlsKSwgaXQgd29ya3MhCgo+IEFuZCBhbm90aGVyIHF1ZXN0aW9u OiB3aGF0IGlzIHRoZSB2YWx1ZSBvZgo+IGN1cnJlbnQtbGFuZ3VhZ2UtZW52aXJvbm1lbnQg d2hlbiB5b3Ugc3RhcnQgRW1hY3Mgd2l0aCB0aGUgV2luZG93cwo+IGRpc3BsYXkgbGFuZ3Vh Z2Ugc2V0IHRvIENoaW5lc2U/ICBJZiBpdCBpc24ndCAiQ2hpbmVzZS1TT01FVEhJTkciLCB0 cnkKPiBzZXR0aW5nIGl0IG1hbnVhbGx5IHRvIG9uZSBvZiB0aGUgQ2hpbmVzZSBsYW5ndWFn ZSBlbnZpcm9ubWVudHMsIGFuZAo+IHNlZSBpZiBzb21ldGhpbmcgY2hhbmdlcyBpbiB0aGUg dGV4dC1tb2RlIGRpc3BsYXkgb24gdGhlIG1hc3Rlcgo+IGJyYW5jaCwgd3J0IHRoZXNlIGFy dGlmYWN0cy4KCkl0J3MgQ2hpbmVzZS1HQksuIFdpdGggdGhpcyBvcHRpb24sIHRoZSBhcnRp ZmFjdHMgYWxsIGRpc2FwcGVhcmVkLgoKVGhhbmtzIHZlcnkgbXVjaCBmb3IgdGhpcyB0aXAu IENvbnNpZGVyaW5nIGl0J3MgYSBuZXcgb3B0aW9uIGludHJvZHVjZWQKaW4gRW1hY3MgMzAs IG1heWJlIGl0J3MgdW5kZXJzdGFuZGFibGUgdGhhdCBJIGNvdWxkbid0IGZpbmQgaXQuCgpU aGFua3MgYnVnIzY0NDIwLgoKaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9i dWctZ251LWVtYWNzLzIwMjMtMDcvbXNnMDAxMzQuaHRtbA==
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 16:07:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 12:07:57 2025
Received: from localhost ([127.0.0.1]:39006 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v6tBM-00033b-TC
for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 12:07:57 -0400
Received: from out162-62-57-87.mail.qq.com ([162.62.57.87]:49295)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v6tBF-00033G-Ue
for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 12:07:53 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1760025754; bh=XjjvsK/AxsiWoumTJRmZDNmjG5nyaXDj2OJYoMPQWqg=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=r8latDmsD0Bds7RUa466Zbb/Hb5aPA9/CSZhDTQGozLBWuq0m9YiNI5Huk9ZbLMh5
ie7Uau5c4MMWKb9tjSmiiF4LljffSKUTqZQHYoWRneCpUrVzEAy+tEWev3M4wEM9cw
udIZuvWiELuGyM+ajAIwPftUEeWqW0IPU50uO0N4=
X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg=
X-QQ-XMAILINFO: N2nZekq4carkEa+W15Lmy4Fj6vVEAQG9XZqPM5dgCiKYv2EdQOrxx/IdTut/Pj
fpXRbz6WTIra1J+sxu1tK5blbQdjweUYlw1DHpwrdHWMHA8QxMR5xnFAzTHL7jKPT76toZSkfFLQy
ik+M92TrGnGW2JVbatyboXcy1WeeShvMj2874N+m8KTo+31U6FYEV5iJ7G/3B4lEpcL8oYidJ1Kup
LvQTVELGnjXlcTuSYVo4iz1H4RUbDkKF868iubKcGeSyFU2vnaQuIYUBgfisYWJPbl+nBJ82SH/sB
GoB5zS3DoVcO2gzrOPFtPLuefGTpLUXvuwIT/oKwFo1vltkGYZRTMlnwc3ZT84+tpXQwqzSr0AY3d
emf9tU0zo687RdG8LtgSDpD6aMNuUpN59l15alBfGxbXinnCGoId//wVGLz7kSpDx3tiINRQ6KHKN
8PnbXLVXG43Ff/NcPQUWuObXfZ/33GUj0BmhVPUanA1xm+PhZFHfOOKvgYPGnH4YAL7p0Gm+miBMf
DyDLpX5wowSAqe3u/iBy/AviGRXf+psd4nfKCTjUghn1U/AykyVYogoymRNphRLuFObfiE+G2SzE+
H36BCbO0krJjXRMzqXIc0/N0BHFlljgd52ehN5BobdqPECz+85B6UnWsmxKmDP070UDCP4YkSMsFB
1shbz7a0jfem8HTiGHKZcZhFZm1FWWGhSwWrlXccJ5AI/AeF8qFLgWCe5LrkEvapWJw04MHUpZjUu
kDSGnImyQeGBgT6Gb4yCcfgFus1K+cJ/FwsiezPMwKpurH6lH43h7x2tyySVcNTSzl7xHI1EYyHLZ
LZ3jI+6BYzKYw5WMNVQGgdxVG6qc3mSIRHbBR1L8MIwWL8n4avw5Jg6f4PNxF9iCoJt+VeymbnNVZ
8m85p/oBlSqx5L3SkA7OmH5yoseEEnWLqdimGDEmi4tWbQuZDsJIw1o3EE7tdTE6/wf5KSQ61Ddgl
3rUGc6apJw3b+xfVBGhZfTzRmpSvHYyuabvtP6LAhE3QFOJd7LosjPBL5EFtY6mRdV/G06NTLYM/P
CdChkI8Yp4GPz3Wr3hDV7AshJfrOzohUGN/hO
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Fri, 10 Oct 2025 00:02:34 +0800
X-Priority: 3
Message-ID: <tencent_A1386B39C5BE13C3851F4BAC282807A1890A@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
<86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN>
<86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN>
<867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN>
<86347s9u54.fsf@HIDDEN>
<tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN>
<tencent_42BF3B09BD13C3F11CEFAE6829CBA2ED3A0A@HIDDEN>
<86v7ko83z3.fsf@HIDDEN>
In-Reply-To: <86v7ko83z3.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1760025754tq0x74z3q
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > Thanks. If this is the problem, we may be unable to fix
it except > after installing the true-color patch. Because the only way I
see to > fix this is to let the Windows Terminal move the cursor acc [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.87 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.87 listed in bl.score.senderscore.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [162.62.57.87 listed in list.dnswl.org]
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.57.87 listed in wl.mailspike.net]
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > Thanks. If this is the problem, we may be unable to fix
it except > after installing the true-color patch. Because the only way I
see to > fix this is to let the Windows Terminal move the cursor acc [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.87 listed in sa-trusted.bondedsender.org]
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.57.87 listed in wl.mailspike.net]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[162.62.57.87 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.87 listed in bl.score.senderscore.com]
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
PiBUaGFua3MuICBJZiB0aGlzIGlzIHRoZSBwcm9ibGVtLCB3ZSBtYXkgYmUgdW5hYmxlIHRv
IGZpeCBpdCBleGNlcHQKPiBhZnRlciBpbnN0YWxsaW5nIHRoZSB0cnVlLWNvbG9yIHBhdGNo
LiAgQmVjYXVzZSB0aGUgb25seSB3YXkgSSBzZWUgdG8KPiBmaXggdGhpcyBpcyB0byBsZXQg
dGhlIFdpbmRvd3MgVGVybWluYWwgbW92ZSB0aGUgY3Vyc29yIGFjY29yZGluZyB0bwo+IHRo
ZSBkaXNwbGF5IHdpZHRoIG9mIHRoZSB0ZXh0IGl0IGFjdHVhbGx5IHdyaXRlcyB0byB0aGUg
c2NyZWVuLiAgR2l2ZW4KPiB0aGF0IHRoZSB0ZXh0LW9ubHkgZGlzcGxheSBjb2RlIGhhcyBu
byBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9udChzKQo+IGJlaW5nIHVzZWQgYnkgdGhlIHRl
cm1pbmFsLCB3ZSBjYW5ub3Qga25vd24gdGhlIGV4YWN0IHdpZHRoIG9uIGRpc3BsYXkKPiBp
biBzdWNoIGNhc2VzIGV2ZW4gaW4gcHJpbmNpcGxlLgoKVW5kZXJzdGFuZCwgdGhhbmtzLgoK
PiBPaCB3ZWxsLCBhdCBsZWFzdCBJJ3ZlIGZvdW5kIGFuZCBmaXhlZCBhIHNlcmlvdXMgcHJv
YmxlbSB3aXRoIHRoZQo+IGV4aXN0aW5nIHczMmNvbnNvbGUgY29kZSAoaXQgYXNzdW1lZCB0
aGF0IGV2ZXJ5IGJ5dGUgaXQgd3JvdGUgdG8gdGhlCj4gdGVybWluYWwgbW92ZWQgdGhlIGN1
cnNvciBieSAxIGNvbHVtbikuCgpHbGFkIHRvIGhlYXIgdGhhdCA6KQoKPiA+ID4gTXkgaHlw
b3RoZXNpcyBpcyB0aGF0IHdoZW4gQ2hpbmVzZSBpcyBzZWxlY3RlZCBhcyB0aGUgc3lzdGVt
IGRpc3BsYXkKPiA+ID4gbGFuZ3VhZ2UsIGV2ZW4gaWYgd2Ugc3BlY2lmeSBhIG1vbm9zcGFj
ZSBmb250IGluIHRoZSBXaW5kb3dzIFRlcm1pbmFsCj4gPiA+IChXVCkgcHJvZmlsZSwgdGhl
IHN5c3RlbSBzdGlsbCBkZWZhdWx0cyB0byBhIENoaW5lc2UgZm9udCBmb3IgcmVuZGVyaW5n
Cj4gPiA+IHRob3NlIHNwZWNpZmljIHNpbmdsZS9kb3VibGUgcXVvdGF0aW9uIG1hcmtzLiBU
aGlzIHVsdGltYXRlbHkgbGVhZHMgdG8KPiA+ID4gdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4g
dGhlIGV4cGVjdGVkIGxvZ2ljYWwgd2lkdGggKG9uZSBjaGFyYWN0ZXIgc3BhY2UpCj4gPiA+
IGFuZCB0aGUgYWN0dWFsIHJlbmRlcmVkIGRpc3BsYXkgd2lkdGggKHR3byBjaGFyYWN0ZXIg
c3BhY2VzKS4KPiA+IAo+ID4gTm8sIHRvIGJlIG1vcmUgcHJlY2lzZSwgdGhlIGlzc3VlIGlz
IGxpa2VseSByZWxhdGVkIHRvIGhvdyBkaWZmZXJlbnQgbmV3Cj4gPiBhbmQgb2xkIEFQSXMg
YmVoYXZlIHdpdGhpbiBXaW5kb3dzIFRlcm1pbmFsLgo+ID4gCj4gPiBodHRwczovL2dpdGh1
Yi5jb20vbWljcm9zb2Z0L3Rlcm1pbmFsL2lzc3Vlcy8xNzAxNiNpc3N1ZWNvbW1lbnQtMzA5
MDcxMDU0Mgo+ID4gCj4gPiBodHRwczovL2dpdGh1Yi5jb20vdHpuaW5kLzE2LWNvbG9yLWNv
bnNvbGUtdGVzdHMvdHJlZS9tYWluCj4gCj4gSSdtIG5vdCBzdXJlIHRoaXMgaXMgdGhlIHBy
b2JsZW0uCj4gCj4gRmlyc3QsIHdlIGRvbid0IHVzZSBXcml0ZUNvbnNvbGVPdXRwdXRXLCB3
ZSB1c2UKPiBXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXJBLiAgSW4gdGhlIGNhc2Ugb2Yg
Y29kZXBhZ2UgNjUwMDEsIHdlIHBhc3MKPiB0byB0aGF0IGZ1bmN0aW9uIFVURi04IGVuY29k
ZWQgdGV4dCB0byB3cml0ZSwgYW5kIEkgc2VlIG5vIHByb2JsZW1zCj4gd3JpdGluZyBDaGlu
ZXNlIGNoYXJhY3RlcnMgdXNpbmcgdGhpcyBtZXRob2QgKHRyeSAiQy1oIGgiIGFuZCBzZWUg
Zm9yCj4geW91cnNlbGYpLgo+IAo+IEFzIGZvciBXcml0ZUNvbnNvbGVXLCB3ZSBpbnRlbmQg
dG8gdXNlIFdyaXRlQ29uc29sZUEgaW5zdGVhZC4gIElmCj4gZG9pbmcgdGhhdCBtb3ZlcyB0
aGUgY3Vyc29yIGJ5IHRoZSBjb3JyZWN0IG51bWJlciBvZiBjaGFyYWN0ZXIgY2VsbHMsCj4g
d2UgY291bGQgcmVzb2x2ZSB0aGUgcHJvYmxlbXMgeW91IGRlc2NyaWJlIGFmdGVyIGluc3Rh
bGxpbmcgdGhlCj4gdHJ1ZS1jb2xvciBwYXRjaC4gIElmIG5vdCwgd2Ugd2lsbCBuZWVkIHRv
IGxvb2sgZm9yIHNvbWUgb3RoZXIKPiBzb2x1dGlvbiwgYW5kIGFzIEkgd3JvdGUgaW4gbXkg
cHJldmlvdXMgbWVzc2FnZSwgSSdtIG5vdCBzdXJlIHRoYXQgYQo+IHNvbHV0aW9uIGNhbiBi
ZSBmb3VuZCBldmVuIGluIHByaW5jaXBsZS4KClVuZGVyc3RhbmReMi4KCkknbGwgd2FpdCBm
b3IgdGhlIHRydWUtY29sb3IgcGF0Y2ggbWVyZ2UgZm9yIG5vdy4gVElBLg==
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 16:03:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 12:03:02 2025 Received: from localhost ([127.0.0.1]:38999 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6t6c-0002pq-7v for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 12:03:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44538) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6t6W-0002pB-Pv for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 12:02:58 -0400 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 1v6t6Q-00071i-6x; Thu, 09 Oct 2025 12:02:50 -0400 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=GlXf1HdD9B47ttAZguF5ceP91iEnR2Ewy2nP06rNvJM=; b=HSAi9+x9HPp5 WMN60mS+LOEc2go2m9rUb6+X3EsXmAQPLtHyOjQKgQLd/RXtBWJBI/D56fLuw5Q3uC32T9c1SFe4e EW/agGcKJZez1oZZqWSGTO/++7XDr94pVtxNup3tsgsKFoZJMSMVlqLS+00gNI6lfvtra0C23BKnm iqbPhXnQlztFPFSKFT+U4IM10hcwZHniHRNlAST0719orpMAXhTyn67ivREZ2xmZeCiZXAygXOlNw NtDMIcNWpQX0Tgd3YtayOi85Xuq/EuMRRyJjC7r94eQzSyAZEs6i8YqZ1sVaexPnvUI8N3jhszaXr tkkMRCFCzhpKBB4ePg36KA==; Date: Thu, 09 Oct 2025 19:02:46 +0300 Message-Id: <86tt0883mh.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: include_yy@HIDDEN In-Reply-To: <86wm5484cy.fsf@HIDDEN> (message from Eli Zaretskii on Thu, 09 Oct 2025 18:46:53 +0300) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <86wm5484cy.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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 (---) > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > Date: Thu, 09 Oct 2025 18:46:53 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > Since full-width and half-width quotation marks use the same codepoints > > (including both single and double quotes, specifically U+2018, U+2019, > > U+201C, and U+201D), it creates complexity for mixing Chinese and > > English content where the quotation marks' display (full-width > > vs. half-width) is ambiguous. > > > > My hypothesis is that when Chinese is selected as the system display > > language, even if we specify a monospace font in the Windows Terminal > > (WT) profile, the system still defaults to a Chinese font for rendering > > those specific single/double quotation marks. This ultimately leads to > > the discrepancy between the expected logical width (one character space) > > and the actual rendered display width (two character spaces). Btw, does anything change if you customize cjk-ambiguous-chars-are-wide to the nil value, while your Windows display language is set to Chinese? And another question: what is the value of current-language-environment when you start Emacs with the Windows display language set to Chinese? If it isn't "Chinese-SOMETHING", try setting it manually to one of the Chinese language environments, and see if something changes in the text-mode display on the master branch, wrt these artifacts.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 15:55:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 11:55:42 2025 Received: from localhost ([127.0.0.1]:38983 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6szS-0002TI-PB for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:55:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35330) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6szL-0002Sh-71 for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:55:34 -0400 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 1v6szE-0006AZ-2v; Thu, 09 Oct 2025 11:55:24 -0400 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=5phtFVbTcU1XBdkVehJRImS6tfPVn7QBDT5wjVziGRg=; b=TX8DpDoSNiem 6IiXZwvdKVKqaTV4oagVR6KEE2CD3pPmTJ48VLAF0SOBWV12+g6lkADx9bxG9RmQ7z0t/doI94bcE mKDljp5i14QlJfWklpiLw+2mi0YNqCv7SDrSMOiN7Z3/OyvBibjcEFJuUmjTWym7JJyEZYM6t0cSP bJLyqiLYzeWwEMfQFt7lnAGQma0cy39zOH63qmvaFeAjpfgsBrK9Eu6g+Hxi+RwVYUwvzTepxDFWV yaveK0XEz2xfzaHFJWILzmQGFnbbw9XVmmopKAOXRwPcBq8ePen9dljfDD+lSWyHnBvWpNQfSNcav wTsyrXzqjC8lkgUw7A4zRg==; Date: Thu, 09 Oct 2025 18:55:12 +0300 Message-Id: <86v7ko83z3.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_42BF3B09BD13C3F11CEFAE6829CBA2ED3A0A@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> <tencent_42BF3B09BD13C3F11CEFAE6829CBA2ED3A0A@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Thu, 9 Oct 2025 23:14:50 +0800 > > > My hypothesis is that when Chinese is selected as the system display > > language, even if we specify a monospace font in the Windows Terminal > > (WT) profile, the system still defaults to a Chinese font for rendering > > those specific single/double quotation marks. This ultimately leads to > > the discrepancy between the expected logical width (one character space) > > and the actual rendered display width (two character spaces). > > No, to be more precise, the issue is likely related to how different new > and old APIs behave within Windows Terminal. > > https://github.com/microsoft/terminal/issues/17016#issuecomment-3090710542 > > https://github.com/tznind/16-color-console-tests/tree/main I'm not sure this is the problem. First, we don't use WriteConsoleOutputW, we use WriteConsoleOutputCharacterA. In the case of codepage 65001, we pass to that function UTF-8 encoded text to write, and I see no problems writing Chinese characters using this method (try "C-h h" and see for yourself). As for WriteConsoleW, we intend to use WriteConsoleA instead. If doing that moves the cursor by the correct number of character cells, we could resolve the problems you describe after installing the true-color patch. If not, we will need to look for some other solution, and as I wrote in my previous message, I'm not sure that a solution can be found even in principle.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 15:47:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 11:47:15 2025 Received: from localhost ([127.0.0.1]:38937 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6srL-0001rx-9Y for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:47:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51904) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6srB-0001qs-KE for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:47:10 -0400 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 1v6sr3-00057v-4H; Thu, 09 Oct 2025 11:46:57 -0400 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=1PgYyrlom1WWsljIqP//55O5tG6ZN1nrYi53rJGbQCA=; b=OmsAAQJ/6YzU Cb6uS3+pgX3Cl+I9BneUwNA3YpxRsgAhs2IaaZWWTEVrB1VY3Cfd/2VtpoF+EezWGK2r7S3u2hzN4 CPohOQrTfTq901rnqhZI+qJRYKHZOo1j6qFj5zU3ZLZ19pGZgbBxGAUuri1CaZy2gofEL3RdyXtlg pQEYdaqT0XvSm1njtkJUADsoB0T64UjJhl9g8J2V3iCuSmdGDNDBLm18W4jF5v6zga8zSgYRosF0f jkFAMOa8ehEMS1Gzh/cFiPq0ImysdOLr48tHxO4H/YDkegQPYWBBrWC/0J9FARA99haaYgDDyZpUO mLyN9YpQoTUK6mRzNse56A==; Date: Thu, 09 Oct 2025 18:46:53 +0300 Message-Id: <86wm5484cy.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Thu, 9 Oct 2025 21:56:50 +0800 > > > Is this with or without the true-color patch? And what is your > > version of Windows Terminal and its default Profile you use? Also, > > what is the font used by the Windows Terminal in the console windows > > where you run "emacs -nw"? > > Without true-color patch; My WT Version is 1.23.12681.0; All Default > profile. The font is Consolas. The last released version is 1.22.12111.0, which is what I have. Are you using a pre-release version or something? > When I realized my quotation marks were taking up two character spaces > in the terminal, I finally considered that even though we were both > using Windows 11, our system's primary display language might be > different. So, I changed my system language to English, and the problem > I described completely disappeared. > > The setting I changed was: > > Settings -> Time & language -> Language & region -> > Windows display language -> Select English (United States). > > Since full-width and half-width quotation marks use the same codepoints > (including both single and double quotes, specifically U+2018, U+2019, > U+201C, and U+201D), it creates complexity for mixing Chinese and > English content where the quotation marks' display (full-width > vs. half-width) is ambiguous. > > My hypothesis is that when Chinese is selected as the system display > language, even if we specify a monospace font in the Windows Terminal > (WT) profile, the system still defaults to a Chinese font for rendering > those specific single/double quotation marks. This ultimately leads to > the discrepancy between the expected logical width (one character space) > and the actual rendered display width (two character spaces). > > If you want to reproduce the issue, you might be able to do so with the > following steps: > > 1. In the settings page mentioned above, add Chinese as a display language. > 2. Select Chinese, then launch WT and Emacs for testing. Thanks. If this is the problem, we may be unable to fix it except after installing the true-color patch. Because the only way I see to fix this is to let the Windows Terminal move the cursor according to the display width of the text it actually writes to the screen. Given that the text-only display code has no information about the font(s) being used by the terminal, we cannot known the exact width on display in such cases even in principle. Oh well, at least I've found and fixed a serious problem with the existing w32console code (it assumed that every byte it wrote to the terminal moved the cursor by 1 column).
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 15:36:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 11:36:39 2025 Received: from localhost ([127.0.0.1]:38905 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6sh5-0001Du-EA for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:36:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57778) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6sgz-0001DT-QN for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:36:34 -0400 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 1v6sgp-00040D-7x; Thu, 09 Oct 2025 11:36:23 -0400 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=GE199E9oPsjXvBvLHS8se3VR0t1TNoqqlyU7v5TISWc=; b=fHK37g87p2oYXrPRfHRR mWs05ekfAZ7viys8kn7fTzJAcCa3qfjjbb2r1ItvlGwNx5foIjsT2vQ/JiI25M5NzZAwHquQ1yxT1 5Qr1zY9rsP1g5uEN+uzcdKGTFNAGfbwaAYCMz7nX+8dyl8asHRPlRfZdAtXHr3lmtMnmiLNhGhyUE qlQnvQQ/ywIC4cbA6FncTgBw2aWpC9Tw1HG8i4YYRMLLq2S5i05KCPWnJY+0KNu/yIxPnYMKg9Ddz BJBIuAg71BS3CZday4SmPvIn/UESc2uDwX3TnF1Ma7O39DIBPyh6eScjF3eawaYkoCT8N5Ihf0lg8 tTzZqY6NCpgk6w==; Date: Thu, 09 Oct 2025 18:35:53 +0300 Message-Id: <86zfa084va.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Corwin Brust <corwin@HIDDEN> In-Reply-To: <CAJf-WoS8Au_fTP3KWJYPVMuxPiphp86JZmdDKaUSin47-Or-yw@HIDDEN> (message from Corwin Brust on Thu, 9 Oct 2025 07:58:16 -0500) Subject: Re: bug#79298: patch: full color in windows terminal References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> <86ikgoa6ei.fsf@HIDDEN> <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> <861pnc9sd1.fsf@HIDDEN> <CAJf-WoS8Au_fTP3KWJYPVMuxPiphp86JZmdDKaUSin47-Or-yw@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org, pRoMMMModE@HIDDEN 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: Corwin Brust <corwin@HIDDEN> > Date: Thu, 9 Oct 2025 07:58:16 -0500 > Cc: Haoyuan Wang <pRoMMMModE@HIDDEN>, ewan@HIDDEN, 79298 <at> debbugs.gnu.org > > FWIBW, I am unable to build Emacs 31.x (development branch) due to > compile errors. I have not been watching my CI for Windows builds due > to being out of town so I'm not sure when this started. In theory, I > should have build logs from most commits to both this as the release > branch if passing those along may be helpful. > > On Thu, Oct 9, 2025 at 7:23 AM Eli Zaretskii <eliz@HIDDEN> wrote: > > > > I made a further change, please try the latest master branch. > > > > gcc -c -mtune=generic -fno-tree-sra -DUSE_CRT_DLL=1 -I > /g/git/emacs-31/nt/inc -Demacs -I. -I. -I../lib -I../lib > -fno-tree-sra -mtune=generic -isystem > C:/msys64/mingw64/include/librsvg-2.0 -isystem > C:/msys64/mingw64/include/gdk-pixbuf-2.0 -isystem > C:/msys64/mingw64/include/webp -DLIBDEFLATE_DLL -isystem > C:/msys64/mingw64/include/cairo -isystem > C:/msys64/mingw64/include/freetype2 -isystem > C:/msys64/mingw64/include/libpng16 -isystem > C:/msys64/mingw64/include/harfbuzz -isystem > C:/msys64/mingw64/include/glib-2.0 -isystem > C:/msys64/mingw64/lib/glib-2.0/include -isystem > C:/msys64/mingw64/include/pixman-1 -isystem > C:/msys64/mingw64/include/libxml2 -isystem > C:/msys64/mingw64/include/webp -isystem > C:/msys64/mingw64/include/harfbuzz -isystem > C:/msys64/mingw64/include/freetype2 -isystem > C:/msys64/mingw64/include/libpng16 -isystem > C:/msys64/mingw64/include/glib-2.0 -isystem > C:/msys64/mingw64/lib/glib-2.0/include -MMD -MF deps/tparam.d -MP > -isystem C:/msys64/mingw64/include/p11-kit-1 > -fstrict-flex-arrays -Wall -Warith-conversion -Wdate-time > -Wdouble-promotion -Wduplicated-cond -Wextra -Wformat-signedness > -Wflex-array-member-not-at-end -Winit-self -Winvalid-pch -Wlogical-op > -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes > -Wmissing-variable-declarations -Wnested-externs -Wnull-dereference > -Wold-style-definition -Wopenmp-simd -Wpacked -Wpointer-arith > -Wstrict-flex-arrays -Wstrict-prototypes -Wsuggest-attribute=noreturn > -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines > -Wuninitialized -Wunknown-pragmas -Wunused-macros -Wvariadic-macros > -Wvector-operation-performance -Wwrite-strings -Warray-bounds=2 > -Wattribute-alias=2 -Wformat=2 -Wformat-truncation=2 > -Wimplicit-fallthrough=5 -Wshift-overflow=2 -Wuse-after-free=3 > -Wvla-larger-than=4031 -Wno-missing-field-initializers > -Wno-override-init -Wno-sign-compare -Wno-type-limits > -Wno-unused-parameter -Wno-format-nonliteral -Wno-bidi-chars > -Wno-pointer-sign -O2 tparam.c > w32.c:10301:20: error: conflicting types for '_dstbias'; have 'int' > 10301 | __MINGW_IMPORT int _dstbias; > | ^~~~~~~~ > In file included from ../lib/time.h:54, > from w32.c:37: > C:/msys64/mingw64/include/time.h:130:23: note: previous declaration of > '_dstbias' with type 'long int' > 130 | __MINGW_IMPORT long _dstbias; > | ^~~~~~~~ > make[2]: *** [Makefile:444: w32.o] Error 1 Is this some new change in MinGW64 headers? In any case, it should be easy top work around, since the declaration is not needed for MinGW64 anyway. The rest are warnings.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 15:15:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 11:15:31 2025 Received: from localhost ([127.0.0.1]:38834 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6sMd-0008Dn-3O for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:15:31 -0400 Received: from xmbghk7.mail.qq.com ([43.163.128.50]:54673) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v6sMG-00086v-SJ for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 11:15:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1760022896; bh=DxFFYaljzzKdVDNKZYsiS87fFtsNGCRBtqDp8I2T2PY=; h=From:To:Cc:Subject:Date:References:In-Reply-To; b=uorIe67Nmqi/hbHJQbgQzxnGrKLoB1Q19rjfJQE0nKhJG4JKiPteHBJk4skX5SFek t7R152BSzQL1Om3W5sxatFpgznhqaA6U5QDEVzQF2jKAf1IhKxay/UDlfD0Nw3FjlU imwuaoDW8nsiK+4CE+SGtM1lbwvLKbsCNljWsg9M= X-QQ-XMRINFO: M/715EihBoGSf6IYSX1iLFg= X-QQ-XMAILINFO: McF9JvsryK5JO59Dbhkng13ArLHsnKgyCuXdi5wQVb9rGfZPf8hVEw1DQ8e5QB 2VbWRJj3TOOsM9MrIIogCaE+g7KiZXQHc+U4XRt4pxsjSe+BjZKTRiuPQTCwhu0NLFp0NHulqHeQA XMh+ERarVUL6He5sOzpgrIVL2w3ITA4k78WbOM41h6g6KII/dEkvCUpdlQ+aOAoD8HX4caC6CNqtv YJF+y7W8udIzl78tK4AIUNAyuympbuVfWjdX8CH79/YXw2z6Ee/UBGe/0ITGoB7hMr7PbwM7BRXl+ C6yGbTFodO9vFDrTI28nJJS0ftdksXxH7DZ+aH5pv9BxKfCU+S0H4ptXluikF2aDuHjp162a4n+KT 6oEs/GfbmfGXrv+fJySHXCsKoZ78RI7gK5s5pHQzOa6wLRFPlJlO02yM/kp9ArZi7gAgb2HFJ+qfe qelLzIG24z/QgT6yOutb56B9edbmOidKnEvv32Ua445XI0U8V1Hl/idvwL29M6kH6QZkjQ7voo3To v+KIZcytgIfucPvYo7JsxNkpZXl6PsAe3Es0Zkum2cO/5HNjkj9mZEo1/SA697TNx8nkn+C2k3CDC aFTJXVA3nbKoZUZSOC9ofYZDD0y057snUSb4NHcGxUDhBToMrIIZqSGEy6qTzS+JMK6nXnw8+3NAG 0b3MY/BuQgstNQ0Y3il9U9yU6VbKX56iaJp4dSVzqfOxx3k/pZ5Rnshl1XUPH+WAdCI996Okaz2TI a09GN2H9R2Wl0KL48YqyvVzfZDQ/c5QsmwEdOnYhsAVQgqOXjcACHWq/xS4Qhh/NiO8o0Yw9PQMi2 bSbhl/caP0hgs8JRc0LIegn8OLmrWD2y/5MSCUIc5qvmE5GLqkrYDQs6qN2FJvPDZ19lCQ2lbb+kO /hmj1Az31aflmY3VOIvzjm1KnR8MULP8Fxdk5bsI2nLm7X/0OLTOrbwHPKEPrJZDYn1UOfNk4aq7q ETqpSE3bSkTNuWbqx+9KlqE/+UW73hsTaeQc5iJ97tkmwpsF3hrM2yYvpBLA8tAizSBBbOkTMVK1e 6mmJ6aj5QMqjSy5Dpy1SwIj3920KjenMZYmrWNVgMtUisxtqcqPmoP1AdNrbcKUyxJbEGAXpjrE9g cjI= From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN> To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Date: Thu, 9 Oct 2025 23:14:50 +0800 X-Priority: 3 Message-ID: <tencent_42BF3B09BD13C3F11CEFAE6829CBA2ED3A0A@HIDDEN> X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> <86347s9u54.fsf@HIDDEN> <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> In-Reply-To: <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN> X-QQ-mid: xmseza31-0t1760022890tpnox0rzv X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>, =?utf-8?B?NzkyOTg=?= <79298 <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 (-) PiBNeSBoeXBvdGhlc2lzIGlzIHRoYXQgd2hlbiBDaGluZXNlIGlzIHNlbGVjdGVkIGFzIHRo ZSBzeXN0ZW0gZGlzcGxheQo+IGxhbmd1YWdlLCBldmVuIGlmIHdlIHNwZWNpZnkgYSBtb25v c3BhY2UgZm9udCBpbiB0aGUgV2luZG93cyBUZXJtaW5hbAo+IChXVCkgcHJvZmlsZSwgdGhl IHN5c3RlbSBzdGlsbCBkZWZhdWx0cyB0byBhIENoaW5lc2UgZm9udCBmb3IgcmVuZGVyaW5n Cj4gdGhvc2Ugc3BlY2lmaWMgc2luZ2xlL2RvdWJsZSBxdW90YXRpb24gbWFya3MuIFRoaXMg dWx0aW1hdGVseSBsZWFkcyB0bwo+IHRoZSBkaXNjcmVwYW5jeSBiZXR3ZWVuIHRoZSBleHBl Y3RlZCBsb2dpY2FsIHdpZHRoIChvbmUgY2hhcmFjdGVyIHNwYWNlKQo+IGFuZCB0aGUgYWN0 dWFsIHJlbmRlcmVkIGRpc3BsYXkgd2lkdGggKHR3byBjaGFyYWN0ZXIgc3BhY2VzKS4KCk5v LCB0byBiZSBtb3JlIHByZWNpc2UsIHRoZSBpc3N1ZSBpcyBsaWtlbHkgcmVsYXRlZCB0byBo b3cgZGlmZmVyZW50IG5ldwphbmQgb2xkIEFQSXMgYmVoYXZlIHdpdGhpbiBXaW5kb3dzIFRl cm1pbmFsLgoKaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC90ZXJtaW5hbC9pc3N1ZXMv MTcwMTYjaXNzdWVjb21tZW50LTMwOTA3MTA1NDIKCmh0dHBzOi8vZ2l0aHViLmNvbS90em5p bmQvMTYtY29sb3ItY29uc29sZS10ZXN0cy90cmVlL21haW4=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 14:08:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 10:08:21 2025
Received: from localhost ([127.0.0.1]:38475 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v6rJd-0003bg-Dm
for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 10:08:21 -0400
Received: from out162-62-58-216.mail.qq.com ([162.62.58.216]:48063)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v6rJQ-0003ZK-EE
for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 10:08:11 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1760018878; bh=CTteSWR+zkq8iHcNMfb3mjqsC1zlU2HIGk9By/5oR7E=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=nY9B3c12St/MApoN/ig1aU4bo5pmgyKiGBhveq2pNrdttt0HrIj6AHPkGgL68J8Yo
S94Xl6lQOPHdhwB4Q2ao8cFFcenONp1PQg5FFCDcXRLlrM5ja/DE4GkS4l2E/IcZr5
04GVKnwbKSic9igC6s+wOnJqUaXDdzKCYoyByU9s=
X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU=
X-QQ-XMAILINFO: NXN72yHKdg1B3sQvwS5HOfdr/kc0mpIfvCjz0lJxIGFXs1M56qZ36syYjCSEJT
7yiVHe6Swauqvi5gMDKoXvfH2ivTD+R6jNHvuRPoVlGmsPZw1XUyc+jrXOuZqV/FmS7ZVl+XUvbi5
neCH3aIK2FGCOGNvO3/O0niFBK9LOesMh/OmuV+AOXWnWyeTfnkjopvi6bNUzD911cozht8nIU1Zl
GMHXxjwBu0QpKHz2og1FB8ye/A3YweKcmK+WIV4fh5MrW1o+u4+K2cqZ6643YIbJ+Nd3sOz+LuD8Q
mqaC7y1Ao6HCNxbPGMrCyyLN5EzuD0B6a/neO+AkQqCnsaIKXdmRdCvEowWUBWrl0qKAWJLoHrWFQ
Fv1zJWH6sQ5/NhcKh9n/3fBfamp7xvtDLIVJXmYDmHwOP52TEM+opd16mMKxTC3MmcWzCX5ctt21b
vyYSbzWTatfHuwp5L/AtHrxyz6r9DCLvQlupvmcbNOfJw/jHYjpwYCBmxNZibQF2S8p+Fzm6G/ehe
ya0D4lleGEJ5uwGa6BIPwB8F9El1dZcaadfVZOnY2VBwQIpjw85Xi2M3ysoUuBNJTSSaRi4XQBQlv
o8wjXoj5kpFXUqDUndsP3l4pTeFKWNvhh5mRPet3LTs29KJmAbQwLOKY1O44lxji/H5mOgbDgIEE8
Wn4+ddhn+ZM9FNCLgs2HXKULSwtBkzyR9fNInzajGLxCraRTgvbssbX0FVpYLMGV48jGHnhtf5ixD
H7MTjm0Uhcz5eNcrwGWfdS+J7LeTtLlzrGQhSCkfXN/BH1XqLquiCeSabZ0iOk641L69yJBLwD5g5
jU17vOVsPl7qM9JFaFlPT27Pu5Ta8el8OywaolwlG2EQ6H8wTgNCMhmixC5XeSTBqSRqF8nXOPNB4
a6+LJ2SJWolVjDrIn/96F0ezFHSNGfQY1McjiPEuD9wHgziyKPl6cW1UKA+qs12JdT5c1yee/bBFH
jKflUhAgxA7qAdidI/Bj11UHeZ40rHvKcYclJXUMwB8CgwDFEFgUZHHQGpKCvttQTHcHDAgjJb8u7
s/ftZekSYQxMk8F8=
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Thu, 9 Oct 2025 21:56:50 +0800
X-Priority: 3
Message-ID: <tencent_F88E51577C9549D1E29C1F9DF4DE07E1A409@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
<86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN>
<86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN>
<867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN>
<86347s9u54.fsf@HIDDEN>
In-Reply-To: <86347s9u54.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1760018210tmukhb86g
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > Is this with or without the true-color patch? And what is
your > version of Windows Terminal and its default Profile you use? Also,
> what is the font used by the Windows Terminal in the console win [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.216 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.216 listed in bl.score.senderscore.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [162.62.58.216 listed in list.dnswl.org]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > Is this with or without the true-color patch? And what is
your > version of Windows Terminal and its default Profile you use? Also,
> what is the font used by the Windows Terminal in the console win [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[162.62.58.216 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.216 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.216 listed in bl.score.senderscore.com]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
PiBJcyB0aGlzIHdpdGggb3Igd2l0aG91dCB0aGUgdHJ1ZS1jb2xvciBwYXRjaD8gIEFuZCB3
aGF0IGlzIHlvdXIKPiB2ZXJzaW9uIG9mIFdpbmRvd3MgVGVybWluYWwgYW5kIGl0cyBkZWZh
dWx0IFByb2ZpbGUgeW91IHVzZT8gIEFsc28sCj4gd2hhdCBpcyB0aGUgZm9udCB1c2VkIGJ5
IHRoZSBXaW5kb3dzIFRlcm1pbmFsIGluIHRoZSBjb25zb2xlIHdpbmRvd3MKPiB3aGVyZSB5
b3UgcnVuICJlbWFjcyAtbnciPwoKV2l0aG91dCB0cnVlLWNvbG9yIHBhdGNoOyBNeSBXVCBW
ZXJzaW9uIGlzIDEuMjMuMTI2ODEuMDsgQWxsIERlZmF1bHQKcHJvZmlsZS4gVGhlIGZvbnQg
aXMgQ29uc29sYXMuCgpXaGVuIEkgcmVhbGl6ZWQgbXkgcXVvdGF0aW9uIG1hcmtzIHdlcmUg
dGFraW5nIHVwIHR3byBjaGFyYWN0ZXIgc3BhY2VzCmluIHRoZSB0ZXJtaW5hbCwgSSBmaW5h
bGx5IGNvbnNpZGVyZWQgdGhhdCBldmVuIHRob3VnaCB3ZSB3ZXJlIGJvdGgKdXNpbmcgV2lu
ZG93cyAxMSwgb3VyIHN5c3RlbSdzIHByaW1hcnkgZGlzcGxheSBsYW5ndWFnZSBtaWdodCBi
ZQpkaWZmZXJlbnQuIFNvLCBJIGNoYW5nZWQgbXkgc3lzdGVtIGxhbmd1YWdlIHRvIEVuZ2xp
c2gsIGFuZCB0aGUgcHJvYmxlbQpJIGRlc2NyaWJlZCBjb21wbGV0ZWx5IGRpc2FwcGVhcmVk
LgoKVGhlIHNldHRpbmcgSSBjaGFuZ2VkIHdhczoKClNldHRpbmdzIC0+IFRpbWUgJiBsYW5n
dWFnZSAtPiBMYW5ndWFnZSAmIHJlZ2lvbiAtPgpXaW5kb3dzIGRpc3BsYXkgbGFuZ3VhZ2Ug
LT4gU2VsZWN0IEVuZ2xpc2ggKFVuaXRlZCBTdGF0ZXMpLgoKU2luY2UgZnVsbC13aWR0aCBh
bmQgaGFsZi13aWR0aCBxdW90YXRpb24gbWFya3MgdXNlIHRoZSBzYW1lIGNvZGVwb2ludHMK
KGluY2x1ZGluZyBib3RoIHNpbmdsZSBhbmQgZG91YmxlIHF1b3Rlcywgc3BlY2lmaWNhbGx5
IFUrMjAxOCwgVSsyMDE5LApVKzIwMUMsIGFuZCBVKzIwMUQpLCBpdCBjcmVhdGVzIGNvbXBs
ZXhpdHkgZm9yIG1peGluZyBDaGluZXNlIGFuZApFbmdsaXNoIGNvbnRlbnQgd2hlcmUgdGhl
IHF1b3RhdGlvbiBtYXJrcycgZGlzcGxheSAoZnVsbC13aWR0aAp2cy4gaGFsZi13aWR0aCkg
aXMgYW1iaWd1b3VzLgoKTXkgaHlwb3RoZXNpcyBpcyB0aGF0IHdoZW4gQ2hpbmVzZSBpcyBz
ZWxlY3RlZCBhcyB0aGUgc3lzdGVtIGRpc3BsYXkKbGFuZ3VhZ2UsIGV2ZW4gaWYgd2Ugc3Bl
Y2lmeSBhIG1vbm9zcGFjZSBmb250IGluIHRoZSBXaW5kb3dzIFRlcm1pbmFsCihXVCkgcHJv
ZmlsZSwgdGhlIHN5c3RlbSBzdGlsbCBkZWZhdWx0cyB0byBhIENoaW5lc2UgZm9udCBmb3Ig
cmVuZGVyaW5nCnRob3NlIHNwZWNpZmljIHNpbmdsZS9kb3VibGUgcXVvdGF0aW9uIG1hcmtz
LiBUaGlzIHVsdGltYXRlbHkgbGVhZHMgdG8KdGhlIGRpc2NyZXBhbmN5IGJldHdlZW4gdGhl
IGV4cGVjdGVkIGxvZ2ljYWwgd2lkdGggKG9uZSBjaGFyYWN0ZXIgc3BhY2UpCmFuZCB0aGUg
YWN0dWFsIHJlbmRlcmVkIGRpc3BsYXkgd2lkdGggKHR3byBjaGFyYWN0ZXIgc3BhY2VzKS4K
CklmIHlvdSB3YW50IHRvIHJlcHJvZHVjZSB0aGUgaXNzdWUsIHlvdSBtaWdodCBiZSBhYmxl
IHRvIGRvIHNvIHdpdGggdGhlCmZvbGxvd2luZyBzdGVwczoKCjEuIEluIHRoZSBzZXR0aW5n
cyBwYWdlIG1lbnRpb25lZCBhYm92ZSwgYWRkIENoaW5lc2UgYXMgYSBkaXNwbGF5IGxhbmd1
YWdlLgoyLiBTZWxlY3QgQ2hpbmVzZSwgdGhlbiBsYXVuY2ggV1QgYW5kIEVtYWNzIGZvciB0
ZXN0aW5nLgoKUmVnYXJkcy4=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 12:58:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 08:58:56 2025
Received: from localhost ([127.0.0.1]:37320 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v6qEN-0006YU-TY
for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 08:58:55 -0400
Received: from mail-pj1-f43.google.com ([209.85.216.43]:38738)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <mplscorwin@HIDDEN>)
id 1v6qE8-0006WJ-Ru
for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 08:58:41 -0400
Received: by mail-pj1-f43.google.com with SMTP id
98e67ed59e1d1-3352a28d28eso125372a91.3
for <79298 <at> debbugs.gnu.org>; Thu, 09 Oct 2025 05:58:36 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1760014709; x=1760619509;
h=content-transfer-encoding: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=yHje3rGPrZ88q5WFykh3hmSz2WbwntNR5LcGC1VhFxw=;
b=cFmOneAw9t3tuep3dyR5a+8b/bxMFIPLOyuly78CZNFThLNSVLQaf0vSb2wftjMYTa
fq2gYLFgJy0PoW2Qy1DwHpQQGBlyEv55ouCeXhRAOkl8u2osvJIst6dTTUVGD6fHhg3a
eGY4Q7Xb81Wgi/Re5QufpyWl4VxTVZqjQhiW22kWyH3dvR+02P95CsJw+g6/bnnlUjun
C+Pi4yitMjhTFWuasfyppSKyy+ZXqS1++o7Wg1jK1PGT/KpbTrPsHU5qDSvjrg+V0S//
7EpiQbvhoF0Y1bfYkQQwzcyOWBFH7mAzAxPAUspwt4iZT37NsGlhBs/MmYyv277LMgqx
WIRQ==
X-Forwarded-Encrypted: i=1;
AJvYcCUZoxyPFUdRzda29AFJwhmYCCOAiesVLkV0InYlXon1CQpu79QrR0kcZbsHoTnxYLc3hDDuDA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxXKdblRm8//c4xEOlGQ8mcN46gdJWSJP9SbCYdyydMxi9VfO2K
ARvDxKWL4wW9jpOtuQ5zYppwwGhLQXDNws5n4mj900bO78fVEd0GYiGRBIJArikBbf9OiOWlTMz
5iX/RtkvOkXqdNxk1SN7sujK1cdcHBUg=
X-Gm-Gg: ASbGncvsSGHlkaQLx21ziw0npJWVhhgGyFFdN3ZNfdVIpTmMG6MPDWw3LiWWDxRaYXR
AgB1x7azTOybQm6OyM8StqDfGNltICdzVBbY2hAz1eU3kisiPZ+GfBFGew512yF2g5GU6brGEad
V2QfVjxB2rntbvR0LoPehaCv7SLBKrqoa3rjfzWa5rJ3HprWkIIWsMQ4rOjJ8A2arUAP0iwIOrE
UNBDU8Wc6mLOfomY6OHU37q6Ir+BG2gCGK5zXCH
X-Google-Smtp-Source: AGHT+IEe8iD8KPVVP4V5JHzNRqNlkMQDJsIGTKxG/FQmJCPjTJLbI/bR1x3s044pxI3n0fzhXEaQqx+HK5QN9F+mWag=
X-Received: by 2002:a17:90b:1c0d:b0:330:7a07:edb5 with SMTP id
98e67ed59e1d1-33b511172b2mr4784298a91.2.1760014708392; Thu, 09 Oct 2025
05:58:28 -0700 (PDT)
MIME-Version: 1.0
References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev>
<SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN>
<86ikgoa6ei.fsf@HIDDEN>
<SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN>
<861pnc9sd1.fsf@HIDDEN>
In-Reply-To: <861pnc9sd1.fsf@HIDDEN>
From: Corwin Brust <corwin@HIDDEN>
Date: Thu, 9 Oct 2025 07:58:16 -0500
X-Gm-Features: AS18NWAfIw0-_MhMr_syPSET4aMZ2wvjyEV5xJBdKrjXe_0FDS_YpitAtm0cyOo
Message-ID: <CAJf-WoS8Au_fTP3KWJYPVMuxPiphp86JZmdDKaUSin47-Or-yw@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79298
Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org,
Haoyuan Wang <pRoMMMModE@HIDDEN>
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 (-)
FWIBW, I am unable to build Emacs 31.x (development branch) due to
compile errors. I have not been watching my CI for Windows builds due
to being out of town so I'm not sure when this started. In theory, I
should have build logs from most commits to both this as the release
branch if passing those along may be helpful.
On Thu, Oct 9, 2025 at 7:23=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote:
>
> I made a further change, please try the latest master branch.
>
gcc -c -mtune=3Dgeneric -fno-tree-sra -DUSE_CRT_DLL=3D1 -I
/g/git/emacs-31/nt/inc -Demacs -I. -I. -I../lib -I../lib
-fno-tree-sra -mtune=3Dgeneric -isystem
C:/msys64/mingw64/include/librsvg-2.0 -isystem
C:/msys64/mingw64/include/gdk-pixbuf-2.0 -isystem
C:/msys64/mingw64/include/webp -DLIBDEFLATE_DLL -isystem
C:/msys64/mingw64/include/cairo -isystem
C:/msys64/mingw64/include/freetype2 -isystem
C:/msys64/mingw64/include/libpng16 -isystem
C:/msys64/mingw64/include/harfbuzz -isystem
C:/msys64/mingw64/include/glib-2.0 -isystem
C:/msys64/mingw64/lib/glib-2.0/include -isystem
C:/msys64/mingw64/include/pixman-1 -isystem
C:/msys64/mingw64/include/libxml2 -isystem
C:/msys64/mingw64/include/webp -isystem
C:/msys64/mingw64/include/harfbuzz -isystem
C:/msys64/mingw64/include/freetype2 -isystem
C:/msys64/mingw64/include/libpng16 -isystem
C:/msys64/mingw64/include/glib-2.0 -isystem
C:/msys64/mingw64/lib/glib-2.0/include -MMD -MF deps/tparam.d -MP
-isystem C:/msys64/mingw64/include/p11-kit-1
-fstrict-flex-arrays -Wall -Warith-conversion -Wdate-time
-Wdouble-promotion -Wduplicated-cond -Wextra -Wformat-signedness
-Wflex-array-member-not-at-end -Winit-self -Winvalid-pch -Wlogical-op
-Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes
-Wmissing-variable-declarations -Wnested-externs -Wnull-dereference
-Wold-style-definition -Wopenmp-simd -Wpacked -Wpointer-arith
-Wstrict-flex-arrays -Wstrict-prototypes -Wsuggest-attribute=3Dnoreturn
-Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines
-Wuninitialized -Wunknown-pragmas -Wunused-macros -Wvariadic-macros
-Wvector-operation-performance -Wwrite-strings -Warray-bounds=3D2
-Wattribute-alias=3D2 -Wformat=3D2 -Wformat-truncation=3D2
-Wimplicit-fallthrough=3D5 -Wshift-overflow=3D2 -Wuse-after-free=3D3
-Wvla-larger-than=3D4031 -Wno-missing-field-initializers
-Wno-override-init -Wno-sign-compare -Wno-type-limits
-Wno-unused-parameter -Wno-format-nonliteral -Wno-bidi-chars
-Wno-pointer-sign -O2 tparam.c
w32.c:10301:20: error: conflicting types for '_dstbias'; have 'int'
10301 | __MINGW_IMPORT int _dstbias;
| ^~~~~~~~
In file included from ../lib/time.h:54,
from w32.c:37:
C:/msys64/mingw64/include/time.h:130:23: note: previous declaration of
'_dstbias' with type 'long int'
130 | __MINGW_IMPORT long _dstbias;
| ^~~~~~~~
make[2]: *** [Makefile:444: w32.o] Error 1
make[2]: *** Waiting for unfinished jobs....
image.c: In function 'image_create_x_image_and_pixmap_1.constprop':
image.c:4121:30: warning: trailing array 'RGBQUAD[1]' {aka 'struct
tagRGBQUAD[1]'} should not be used as a flexible array member
[-Wstrict-flex-arrays]
4121 | (*pimg)->info.bmiColors[1].rgbBlue =3D 255;
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
In file included from C:/msys64/mingw64/include/windows.h:71,
from C:/msys64/mingw64/include/winsock2.h:23,
from G:/git/emacs-31/nt/inc/sys/socket.h:57,
from thread.h:25,
from lisp.h:2298,
from image.c:41:
C:/msys64/mingw64/include/wingdi.h:673:13: note: while referencing 'bmiColo=
rs'
673 | RGBQUAD bmiColors[1];
| ^~~~~~~~~
image.c:4122:30: warning: trailing array 'RGBQUAD[1]' {aka 'struct
tagRGBQUAD[1]'} should not be used as a flexible array member
[-Wstrict-flex-arrays]
4122 | (*pimg)->info.bmiColors[1].rgbGreen =3D 255;
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
C:/msys64/mingw64/include/wingdi.h:673:13: note: while referencing 'bmiColo=
rs'
673 | RGBQUAD bmiColors[1];
| ^~~~~~~~~
image.c:4123:30: warning: trailing array 'RGBQUAD[1]' {aka 'struct
tagRGBQUAD[1]'} should not be used as a flexible array member
[-Wstrict-flex-arrays]
4123 | (*pimg)->info.bmiColors[1].rgbRed =3D 255;
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
C:/msys64/mingw64/include/wingdi.h:673:13: note: while referencing 'bmiColo=
rs'
673 | RGBQUAD bmiColors[1];
| ^~~~~~~~~
image.c:4124:30: warning: trailing array 'RGBQUAD[1]' {aka 'struct
tagRGBQUAD[1]'} should not be used as a flexible array member
[-Wstrict-flex-arrays]
4124 | (*pimg)->info.bmiColors[1].rgbReserved =3D 0;
| ~~~~~~~~~~~~~~~~~~~~~~~^~~
C:/msys64/mingw64/include/wingdi.h:673:13: note: while referencing 'bmiColo=
rs'
673 | RGBQUAD bmiColors[1];
| ^~~~~~~~~
image.c: At top level:
image.c:11867:12: warning: macro "rsvg_handle_set_stylesheet" is not
used [-Wunused-macros]
11867 | # define rsvg_handle_set_stylesheet fn_rsvg_handle_set_stylesheet
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: Leaving directory '/g/git/emacs-31/src'
make[1]: *** [Makefile:546: src] Error 2
make[1]: Leaving directory '/g/git/emacs-31'
make: *** [GNUmakefile:97: install] Error 2
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 12:23:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 08:23:42 2025 Received: from localhost ([127.0.0.1]:36996 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6pgL-0003NN-Fe for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 08:23:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50678) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6pg6-0003Lw-Oh for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 08:23:29 -0400 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 1v6pfw-0001tV-3Y; Thu, 09 Oct 2025 08:23:17 -0400 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=eZ4wxREiWGe2dOGQP/P83NDZ4vyFaCheFVonCugV5hw=; b=rqRkOBdq3zYj yje4VZuKrz22t6BnomQcKSNxlsXNceWvwA6ChI3vWNgCF8HTPQCaoOamFlHlXI9S0EM9VQDFAihPu ylsRlF9cyFE84/xE2DvoYVo7aBKUlAUFlO2efU7pHWYJwCIXS2R01RRDS7YmeQH6HeDFzjXU/IDyY eBE5Xen/ZpdVvCCHUZ65P/vvUb4Fgde/MSIbr4qHwjwdq/S5qxyhFC7Hw7azlIsmn1GEevRLJL/dc sMs036IbaKuxcP52crdx+md2wle8hbhQ6JogZb1ezF2Cbmgi3XrFCWRUYISBOw3sRKJGNTh5H+KeF Mm221nYAdGPP2WqriHBqvQ==; Date: Thu, 09 Oct 2025 15:23:06 +0300 Message-Id: <861pnc9sd1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Haoyuan Wang <pRoMMMModE@HIDDEN> In-Reply-To: <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> (message from Haoyuan Wang on Thu, 9 Oct 2025 10:42:13 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> <86ikgoa6ei.fsf@HIDDEN> <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: Haoyuan Wang <pRoMMMModE@HIDDEN> > CC: "ewan@HIDDEN" <ewan@HIDDEN>, "79298 <at> debbugs.gnu.org" > <79298 <at> debbugs.gnu.org> > Date: Thu, 9 Oct 2025 10:42:13 +0000 > msip_labels: > > > This sounds like some build or system configuration snafu. > > clock_gettime64 is a function provided by MinGW, so maybe something > > went wrong during the build or some DLL is not on PATH or something. > > Turns out I have to `make install`, simply running the exe at src/ won't work. > > I just rebuild emacs with the patches applied on top of commit > 73423a1e0e98534512f63929e174a8578a1ac4f2, the one before the w32console.c change > because the patches are conflicting with this commit. > > Now `emacs -nw` can run in windows terminal and command prompt and mintty with true color, > but command prompt still has the charactors not being cleared properly issue. > > > What does this produce in your -nw session: > > > M-: (w32-get-console-output-codepage) RET > > The output is 936, same output as runing chcp in command prompt on my machine, > which looks correct since I use simplified chinese as a fallback locale. I made a further change, please try the latest master branch.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 11:45:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 07:45:08 2025 Received: from localhost ([127.0.0.1]:36613 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6p4v-0000As-Um for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 07:45:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54468) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6p4j-00009k-KS for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 07:44:56 -0400 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 1v6p4c-0005Om-W1; Thu, 09 Oct 2025 07:44:43 -0400 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=zkG+aE9uJs9U3h+EwntX+7/EVWvaOS4y7FW+YPiiCiI=; b=ADWnOy64zIkkshzq8nOt e42OFQyKrp8My0w1W9bWWk0ZYa4UvgpbkWkkE4KLmCalmeA7UHFTeV62bBFXNg5oqkPNHo9dKHpWs lg3EJOU3gVptxiVC5SYu1y6VsE/MfvBs1tqd19Y0zEpC+fu2PJcz2vyHYJGCjYIxkDZFvR6eL2OaG e5ColHGnmh1GZxMf4R4NZzt0ycJ0CVNLksKXK0Ii8ahzU3TUKX0PnJ94Kgy107/fQL0b14wWgf8g+ En7KqllmeLvhSGUf0wCZYaoM4QT2n/t/7mIEbe/1+N9I3v1+pb3fYyvglSbhcTZAKddloPuOZVspo GEL1NalUPYx0og==; Date: Thu, 09 Oct 2025 14:44:39 +0300 Message-Id: <86347s9u54.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> <867bx4a0ti.fsf@HIDDEN> <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "79298" <79298 <at> debbugs.gnu.org> > Date: Thu, 9 Oct 2025 18:26:08 +0800 > > Thu, 09 Oct 2025 12:20:25 +0300, Eli Zaretskii wrote, > > > > But I have an idea why this could happen. Please tell what does the > > > below show in your -nw sessions: > > > > > > M-: (w32-get-console-output-codepage) RET > > > > On a hunch, I went ahead and made an improvement in MS-Windows TTY > > output in the case where the terminal's encoding is UTF-8 > > (a.k.a. "codepage 65001"). So please try the latest master branch and > > see if the artifacts you were observing are now gone, by and large. > > Sorry for the late response. I have tried to search for relevant > problems, but the documentation is too scarce... In my Emacs, the value > of the expression mentioned above is 65001, which is the UTF-8 codepage. > > I tested the scrolling effect on the latest master branch, and the > artifact effect has been greatly reduced, but a small amount still > persists. It looks like this: > > ----------------------------->8<----------------------------------- > WIDTH and HEIGHT can’t exceed the frame’s canonical character size. > > When the buffer is displayed in a non-selected window, the > cursor’s appearance is instead controlled by the variablhe > ‘cursor-in-non-selected-windows’.nt ^^here > ^^here > Automatically becomes buffer-local when set. > You can customize this variable. > Probably introduced at or before Emacs version 21.1. > ----------------------------->8<----------------------------------- > > > The current code still doesn't support character compositions, so > > displaying scripts for which the Windows Terminal produces composed > > glyphs will still not work correctly, and you could see artifacts as > > result. > > Yes. When I move the cursor using C-f and C-b in the document above, I > noticed that the apostrophe and one character after it in words like > "can’t" or "cursor’s" seems to be treated as a single, combined unit. > > That's interesting. I don't see any of this. For me, when the codepage 65001 is used, the problems disappeared completely. Is this with or without the true-color patch? And what is your version of Windows Terminal and its default Profile you use? Also, what is the font used by the Windows Terminal in the console windows where you run "emacs -nw"?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 10:42:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 06:42:28 2025 Received: from localhost ([127.0.0.1]:36348 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6o6O-0001oN-00 for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 06:42:28 -0400 Received: from mail-australiaeastazolkn19012008.outbound.protection.outlook.com ([52.103.72.8]:63056 helo=SY5PR01CU010.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <pRoMMMModE@HIDDEN>) id 1v6o6K-0001o2-94 for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 06:42:25 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zWdimJpIrsxin8u+NMtcdeGqIxTXJ9GvPMDkyaECIV4SKzUFg1BevkhfYw8kXXnVtnoHCozxOdGFUvQB6qexyP3Xn0QHYnygBFFQCR+PTCWZlYFJGwXZEyQx8YJ6X8HTjEp3/5j4rrUFCvNwKlx456sD40Vdma/UAx6TvFm05g/eszVxYqasPKnBQMQjRk/vYjgO+67dCioSymvDpeeBUgEQZU7+FAEJ7wEPJk5MF/sj0CxZNPWkak8DSYwSRUiHvuRcJpkXeLyN2Pa3rPvlZm2rzLmJw2GIKnTjAV7Kze31QrLLLsT9QmgBLi4QWXLNrXqrRtZOx+sgHwdZn21osg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8Z36/kV1Qi9+RPWjaxrDzTESfy9WWyTWTV866jmVjBI=; b=wPNgqTELc3YUQW88F6+qaP60RWDEyAL66OK0+3f8DEptTQDySH/p1qDq8/KMhXJUSbgXteBK4AagHYXG4gpk8TUihsQIG6dmJLwRBspWiHDo2egT8ymlMN7w1nMKLS8gIiu4JrvsRWqkF9gpyda8aCb8hvWEcd26CblK3jzBZNw/A3pdtKar/pKdC9rs3GfsPIJAuZJEwaixlacLOIvwoZVc7TTE3E6ATzu5IHY5pQq9g0M750K0Oc/PPLXLyGpduedAMAy+BQsUTHwXF24Pg9wNk+cPxCr4grpw8amiCMYbCoD3pnd2Vz2++/FnkGe5ASc2+Ru+zcQzj8toD//0oQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8Z36/kV1Qi9+RPWjaxrDzTESfy9WWyTWTV866jmVjBI=; b=ZzKpNpViW5123qEX+1gn2GipLB7geojYuQxiTLz8EpUJ8OSt4jz+hyt2/MvUGff2JXGd7lrScmCLnHwyqcaettbWBV9EewmTGd9IR9IC3HWfZoU4HdIkzfZ8+vvEbpIrbfbCxckHIFJm02Tx/UjSWNbvWC2bdlA1+ITzXazZqJaVqf2X8lHBEISz9uB5Q9sRrv7un9KEy760mnrGQH0ez5At5tlr7h4XZMajm3o4wR5j/2D5+Eb6JUB0zB0+KJb6kIkYLA4iyCQQrhEn9nizJZV5p8SmLM9HDCTk9XcrUaX0sj9wFsKq4/nl930EvGR+PvBMqrMPxWL94SU0Ya04+Q== Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:28f::5) by SY8P300MB0424.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:295::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Thu, 9 Oct 2025 10:42:13 +0000 Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4]) by SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4%4]) with mapi id 15.20.9203.009; Thu, 9 Oct 2025 10:42:13 +0000 From: Haoyuan Wang <pRoMMMModE@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Thread-Topic: bug#79298: patch: full color in windows terminal Thread-Index: AQHcOMO8419jP7j4FkWmXwLJGYT11bS5aLqsgAAznTk= Date: Thu, 9 Oct 2025 10:42:13 +0000 Message-ID: <SY7P300MB103473AFF42CE48F75C333B3DFEEA@HIDDEN> References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> <86ikgoa6ei.fsf@HIDDEN> In-Reply-To: <86ikgoa6ei.fsf@HIDDEN> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SY7P300MB1034:EE_|SY8P300MB0424:EE_ x-ms-office365-filtering-correlation-id: e3860d59-79b3-4f19-e5ae-08de072081d4 x-ms-exchange-slblob-mailprops: 02NmSoc12Dc43FlQvP2yewYSt45NTkBZeZrHbNdiHOFYWimGFLC17YwbchdQ02usj7rOaw/ZUkdgEXWKtsxFG/gtjtMQCGONw2H6lfaeAdlUPj8KPgSk3kSVvocm+CtgFHUbeT+gE9kl+xy/d0J+Cr96pRi3lU9J/7JFimmQtDfDe/KxNgy+iMme7ChDnlqxnS4bPkYAEuQsBJfigBB8xttcESi4mmnLRpA6QqKISgvDRwPZjNaO9ZzW60ua0tbQZOhi3kB00bKKYhWGpjSZQqhqmlCXGu2YI46jmAB2yVHDYBluQy0I8puiuRnPpwUCBGhJuychHyZgJ/3hzBtN6Ghg7nOgCek1lFmhj1cwy/Rz1b3ebpOvtU7AtI8dn66lImoQmbinBO/bwDS6SeG/Ma2qSFrhQTKn2USAiRm9aTR+OiLXhRTPChHpDcYsNJIiRGpGZbSI/XgCOvxGzfvFDb+7gKNjMMPvfh0UIsU0gzzpWUj0IY2jMj6+7GZofwHYdUZySnxC1fmVCB6CP/xeTc6q1fR1hB8vc8ecdSKFz+3DUvshdxwWwLeOYaEyYYaJbRFxh8lI0p7RzlAQkw73uyiT8wLDpS7UyflN+txB0ZMCMNWAiMIH/0M8gPXKypRgtKuZx1RgGjYvBEmmu0QCLV2t/kPy+zhm9nI6hP0ITHbxT4RjnsYfPKz9JxHsI6YRg5haOKWx/hSXDhabvTGAxuUGxfFC4Vc8AEgh7RPaUPhOkrj3MuexhMQsRLgA0r2V x-microsoft-antispam: BCL:0; ARA:14566002|31061999003|15080799012|15030799006|8062599012|19110799012|8060799015|461199028|102099032|40105399003|440099028|3412199025; x-microsoft-antispam-message-info: =?iso-8859-1?Q?6V3U04jXhCV/ylD+r92MXBiUz9gCmxnaPt6x6EXkR4r2t94TsZBSOqE/Ab?= =?iso-8859-1?Q?YFgB+V8PuUXLmA7BmFrkbnYs3Y3A091cAvXZi36XQupsjy9EqdyHDk5B9t?= =?iso-8859-1?Q?sXPfiBHVu63BLChPAUTqNvIGvXhzdWasQC9fqiMwOBnGoUL3fMdWB/w75d?= =?iso-8859-1?Q?rS3vT+thh7uPiIlGpHZPNJRBb3px6L3D4y8+g5eWUoJhFT4LHkf9oJ/szo?= =?iso-8859-1?Q?B0G910P/F6801MreFyqrZldhrt1AleEBuzYF0qXUDXar8SWYyf6droHPkJ?= =?iso-8859-1?Q?aWXtn8Hp4X0GGOa+boRtyVXJUkW7+RHQVaf/8DreY49BA8y2SOhVxT4itf?= =?iso-8859-1?Q?MxtbBzknLvbMo+6GJZaMGZ/mBDMQJ83w+KgzrLFKHquNQ1FbIeZzjzVZn5?= =?iso-8859-1?Q?gjUNEr965N8cIlhxkcGBAX5Jezc1X9mdWp81oaUyUX8r2uMTy0S+HdP85d?= =?iso-8859-1?Q?ERzfrbUszKSd76UeGG2XEjk0inm80nNq2caoUN8UHu9x1s5RXsDpbFKQTo?= =?iso-8859-1?Q?jqRdoBTirAwxfrMdzBVbU6TMejU4fsjwRLYdd9gifhMpwFfrLG6wz389dV?= =?iso-8859-1?Q?wKh0X+YR9qXUD+Q5YAQimdRZAN1GtzX1luXM44jfNnu5mdWiI14uo7mTb0?= =?iso-8859-1?Q?t69pOEmC3OtBmEwHwArCcvTkSvJQCuHKEBwNZ3MxJUHGV6ZLJPmabJwgVX?= =?iso-8859-1?Q?MMjattYVy/f1SeM2rfv6tVqpvf2hhbPt5k4+yyOYLaEVA9JiToGMLz7JQ3?= =?iso-8859-1?Q?HZ9r+Etp0NpCRYJ1nghDJaBasRDr43Sn0PF+n3dVA//14Vw5OeRUPc92qv?= =?iso-8859-1?Q?5sC9I5rVto0BaXes5xrJ+uIjuXIm3wUAuzVjY+DbgDjD9PYORNJ7/QShdZ?= =?iso-8859-1?Q?7+uVO4aYtGIrPdRf2pzuufaQBAuzjyN0vOcQNsp+ybqR32ytd6J2FC+Z6P?= =?iso-8859-1?Q?Y/XWLiCSkpKBVf5BUMM72g0MKVwzyNxtQG3FpTIK4AgTmC6EoHcNMis3/G?= =?iso-8859-1?Q?AIzmciaqqj3ecvEngpvrI9XWkoCh+PyMXRiT5EltH92q1w/yFM26c53iQs?= =?iso-8859-1?Q?nwPE3RClXPvcBnDedCWGATLsJ4ao17qMcZUjPFNTrRuIdn/9OQHGjiP4CJ?= =?iso-8859-1?Q?Hjo5YIo/KkTgkc7P5WAGWI2+0F7jkiKzDUS4R6uzC+LP1wxYpeiCC+qViS?= =?iso-8859-1?Q?yXIMtVwUdNq8Y0Q8avQ+7TUOgGQ4OYK2xMWyLITF/C675aflbTQDVS8R?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?C16HYsQ8+UDb0AM5YBp5d/mtzKwzWKMrTEfcDjNPKpzZ/v6sYzsU/Ttdfw?= =?iso-8859-1?Q?MKvnimcnZoSLJn/aM+FloBO2gsVhgCqVyVv5pU1U0PCxyWkcH99iso/K6Y?= =?iso-8859-1?Q?X+tVcxLeY+xRJ66fwPFYEWQHavS8UhfdztjMyAQal68fyE2JP42EMqCVqe?= =?iso-8859-1?Q?/LQvzb5iPYZlfTcrH/fNzn17zAiSk8BHQBZaioHsHZHV4pAZj2W5vujaFa?= =?iso-8859-1?Q?HEq/IamrqQUomf9IfaTWt9Lq0Zwdr08WAT/xffTkSADVwLgGydoxHWdo5m?= =?iso-8859-1?Q?8bf+sty6p3XoQZd/uU6XFp2FW0nthNHL3nLLI626gZSi2AuHYCzL79PCp8?= =?iso-8859-1?Q?dXQI1Tv2oVSjmLrPTYnJaGvM/axmhF5lMLpotOREZxKlZ1BkCE8kQHDhkF?= =?iso-8859-1?Q?HYNCz9xYZIfQYIYnr0dhE6l131/BXzBs4eLKMNCROalM/5aaXQs6i8Qzw4?= =?iso-8859-1?Q?wBXgDpw/u43uB3xKNY6xyNYUe/bEt01mRUris6ZWi7KsSpbR5ydWwbymkd?= =?iso-8859-1?Q?nqwVgXx1IaW0XX2L6r6xvLU6gjwlLAZcgwc4AHuvQLJjey3BcnQXL4PjCp?= =?iso-8859-1?Q?WUo5obyKk3cMq/3BTQBAHuHN+Nz0U/v/7pUAddZq33V2jmLEdx9h/o+QpC?= =?iso-8859-1?Q?C009knxq5LOnV16hIN2egm7fcJEP2MR8K4CjJ91WhlVivMo7CsRmxX9IZH?= =?iso-8859-1?Q?UuAyZRvfxPlxykdR8AGiZWU7Hr3MA6/9Vvi1brC6A+fDhB0rWgRp8R30FJ?= =?iso-8859-1?Q?lbxNOfM/aSNIz6ny/fcpCbL/0MwqUSb7DtpVAmepyq0qD4CG/fEHwllpBv?= =?iso-8859-1?Q?rOgczLtmv01Xo7mAmh0RTtBoHOpTPSBDVHfly56Tc/ZaIwqL4+yz6jOGp7?= =?iso-8859-1?Q?NWammOXOdkM/DXNL43gTB7M2TH2p9e51RTo77VHR7efpwk0RAnIU69oM+t?= =?iso-8859-1?Q?R2wNqWcquF9/diFAbCwEVwXaU05DVkf061HsL1canBLuaVYYMTaxQt5SPx?= =?iso-8859-1?Q?UBZ53XXdUrKoJTDcEwzJyf3WTo167v/pjzdkJu51ngVmcHwZ+HktmCkRND?= =?iso-8859-1?Q?o24o8iB9lOaV1l9Ug1AFqDWhX5lt0rA3o4VQKBclCD4577CUGAL8xZmUPo?= =?iso-8859-1?Q?trnBmY1RMw1VnjfWUvQaA/ykwpO+Vi6vWFMSnJvKfXeWWI/N8dtDozPhGw?= =?iso-8859-1?Q?y33iPbGzfOILJlHl2u5PjFkzbuLzxTnvRCqACFa8rZnmCMr60GH8Ct61LW?= =?iso-8859-1?Q?/wuPpnjMXEA0bbvIBImH3JFbC9DEW81THI5kTqOm0=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: e3860d59-79b3-4f19-e5ae-08de072081d4 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2025 10:42:13.1722 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY8P300MB0424 X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79298 Cc: "ewan@HIDDEN" <ewan@HIDDEN>, "79298 <at> debbugs.gnu.org" <79298 <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: 0.0 (/) > This sounds like some build or system configuration snafu.=0A= > clock_gettime64 is a function provided by MinGW, so maybe something=0A= > went wrong during the build or some DLL is not on PATH or something.=0A= =0A= Turns out I have to `make install`, simply running the exe at src/ won't wo= rk.=0A= =0A= I just rebuild emacs with the patches applied on top of commit=0A= 73423a1e0e98534512f63929e174a8578a1ac4f2, the one before the w32console.c c= hange=0A= because the patches are conflicting with this commit.=0A= =0A= Now `emacs -nw` can run in windows terminal and command prompt and mintty w= ith true color,=0A= but command prompt still has the charactors not being cleared properly issu= e.=0A= =0A= > What does this produce in your -nw session:=0A= =0A= > M-: (w32-get-console-output-codepage) RET=0A= =0A= The output is 936, same output as runing chcp in command prompt on my machi= ne,=0A= which looks correct since I use simplified chinese as a fallback locale.=0A=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 10:31:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 06:31:35 2025
Received: from localhost ([127.0.0.1]:36330 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v6nvq-0001Hs-EW
for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 06:31:34 -0400
Received: from out203-205-221-173.mail.qq.com ([203.205.221.173]:57177)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v6nvi-0001Gw-KD
for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 06:31:30 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1760005569; bh=mRKaEFiUROJpEqL6Flcv3QVic/DRfGpmlVZ7w+H+D3I=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=UMcBsNBPv66qoplkeorDW53tZzv4BpXGwV5q+HLOp5uxDAt+eTi2c8rh605dBuEql
sgOE3F14D25Dnr87GQL8vk6aEw9O1p6KhO27mXilx37qC/PY+zIg6sLOyK9Uh9MOdP
3GV78/Ug7UR0ikuIW/bSTWkcrgrYCfL/izRQXv4k=
X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w=
X-QQ-XMAILINFO: NGbyafB8Lluuyz+yMEBIQFMHMa8CqDQBVcItwbjMzOnGCPeairU1Apjd6fzSGV
b6K7Qlnzap5mHLFKJvGgzl4e01VMBMRg5aVMg8tikzZnKDDKmKazXkV6+ib6gP7suPLBGhPRGbbY9
3Y6mkVPMxn1Ps3L28m2V7/kmAqGV1kYuL/QpQnSrxv+ckimRcX26dlgTosb1wooMQ7DbQ9wlEePZw
+HqLQDgJEh5E25Sgx3+EW8RweXMu2egU/5PLcJKin9NqX7m+FrcF9gVkyaN7NnLNV2Y9XZ3/v1dfv
8mlYKcNXlMOPgJIVT0cE3Uo4DLZoYUVmPZHdcNVYFJUOgPUmk1pol5943aO5aDiDKKLXtQkkxE/Li
J5w11oJbjh9niD/MrrnbyJowTx93fraz82rqI2Wn5EV+nbtba3Gj/udYxqAVwchR0EZGt70RccZBq
cs3zGSYQiIhsDibWIzeNP6Um7D3E2T0suDmmW8Byoe6ZN6SC3H00on+u/LwMS7bKA8DBBcINq273v
RsEfGPwL9G4Saa6TfaBX0kcR5fc9cJTcTBorOJ8qOUTLjGgEyvIWfBWWUoXV/8u8tVBRV6QaGqF29
4Xr5tLJzfAnNv1LymPjviWoygA10UExL78T8btC0QxGFRGG9tmosvhQJLerVoX6qNUreFU4j8Glpa
ey3AmlYMS7aRU78hOLIY0F2gdu7f1dChpOxgM18cb46y1X7VJEMtopxcSjW2H3CsWDjgB2tN3Pg4z
SVCYhwuz3rOwvg9c7+D15/O3qvk/usPWKm/00HXJ32TU4YEj1rIcvCLw0Lw6/kgippY6rsf5dntme
rnIPP6jjqBXCD9/anXqv0AWV/Tp2Vyr/ilR/8uXdSS6HHOB5l3QuCjtftaWoA5Ed0RGJZ3om22/Fa
XYCrkKvDBqtzDqsiSfW/eB5527I3VBxhgLrp57q1uSZdMdixJxYB7vXRq9A7oFIQd+WoQyii6O1Sj
L31aksswoMH6cKXAyZwZuA3FDzSFQhdq3p66g+ys2hK8Thnzla6QQ5z3BCu984goRzqr5qgKEvLj8
yEklCpVQKqcujNiY=
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>,
"=?utf-8?B?ZXdhbg==?=" <ewan@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Thu, 9 Oct 2025 18:26:08 +0800
X-Priority: 3
Message-ID: <tencent_17EED860E548F90A8DC559CD29E45D0AAE05@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
<86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN>
<86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN>
<867bx4a0ti.fsf@HIDDEN>
In-Reply-To: <867bx4a0ti.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1760005568tadh0ge33
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Thu, 09 Oct 2025 12:20:25 +0300, Eli Zaretskii wrote, > >
Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > > Date: Thu, 09 Oct 2025 10:25:37
+0300 > > From: Eli Zaretskii > > > > > Cc: ewan@HIDDEN,
79298 <at> debbugs.gnu.org > > > Date: Wed, 08 Oct 2025 10:08 [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in bl.score.senderscore.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [203.205.221.173 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
[203.205.221.173 listed in wl.mailspike.net]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: Thu, 09 Oct 2025 12:20:25 +0300, Eli Zaretskii wrote, > >
Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > > Date: Thu, 09 Oct 2025 10:25:37
+0300 > > From: Eli Zaretskii > > > > > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org
> > > Date: Wed, 08 Oct 2025 10:08 [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
[203.205.221.173 listed in wl.mailspike.net]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[203.205.221.173 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in bl.score.senderscore.com]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
VGh1LCAwOSBPY3QgMjAyNSAxMjoyMDoyNSArMDMwMCwgRWxpIFphcmV0c2tpaSB3cm90ZSwK
Cj4gPiBDYzogZXdhbkBldG93bi5kZXYsIDc5Mjk4QGRlYmJ1Z3MuZ251Lm9yZwo+ID4gRGF0
ZTogVGh1LCAwOSBPY3QgMjAyNSAxMDoyNTozNyArMDMwMAo+ID4gRnJvbTogRWxpIFphcmV0
c2tpaSA8ZWxpekBnbnUub3JnPgo+ID4gCj4gPiA+IENjOiBld2FuQGV0b3duLmRldiwgNzky
OThAZGViYnVncy5nbnUub3JnCj4gPiA+IERhdGU6IFdlZCwgMDggT2N0IDIwMjUgMTA6MDg6
NTkgKzAzMDAKPiA+ID4gRnJvbTogRWxpIFphcmV0c2tpaSA8ZWxpekBnbnUub3JnPgo+ID4g
PiAKPiA+ID4gPiBGcm9tOiAiWXVlIFlpIiA8aW5jbHVkZV95eUBxcS5jb20+Cj4gPiA+ID4g
Q2M6ICJld2FuIiA8ZXdhbkBldG93bi5kZXY+LCAiNzkyOTgiIDw3OTI5OEBkZWJidWdzLmdu
dS5vcmc+Cj4gPiA+ID4gRGF0ZTogV2VkLCA4IE9jdCAyMDI1IDExOjE1OjE2ICswODAwCj4g
PiA+ID4gCj4gPiA+ID4gPiA+ID4gVGhlbiBJIHRoaW5rIHRoaXMgaXMgc29tZXRoaW5nIHNw
ZWNpZmljIHRvIHlvdXIgc3lzdGVtLCBiZWNhdXNlIEkKPiA+ID4gPiA+ID4gPiBkZWZpbml0
ZWx5IGRvbid0IHNlZSBpdCBoZXJlLiAgSWYgeW91IGhhdmUgc29tZSAiZGlzcGxheSBvcHRp
bWl6YXRpb24iCj4gPiA+ID4gPiA+ID4gb2YgeW91ciB2aWRlbyBkcml2ZXIgc29mdHdhcmUg
dHVybmVkIG9uLCB0cnkgdHVybmluZyBpdCBvZmYgYW5kIHNlZSBpZgo+ID4gPiA+ID4gPiA+
IHRoYXQgaGVscHMuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEVtbSwgSSB0aGluayBzbyB0
b28uIEkgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0gd2l0aCBFbWFjcyBvcGVuZWQgaW4KPiA+
ID4gPiA+ID4gKmNvbmhvc3QuZXhlKiwgYnV0IGl0IGV4aXN0cyBpbiAqV2luZG93cyBUZXJt
aW5hbCouCj4gPiA+ID4gPgo+ID4gPiA+ID4gRGlkIHlvdSBjdXN0b21pemUgYW55IHNldHRp
bmdzIG9mIHRoZSBXaW5kb3dzIFRlcm1pbmFsPyAgSWYgc28sIGNvdWxkCj4gPiA+ID4gPiB5
b3UgdHJ5IHJlc3RvcmluZyB0aG9zZSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8KPiA+
ID4gPiAKPiA+ID4gPiBZZXMsIEkgdHJpZWQgZGVmYXVsdGluZyBhbGwgV2luZG93cyBUZXJt
aW5hbCAoV1QpIG9wdGlvbnMgYW5kIGNhbiBzdGlsbAo+ID4gPiA+IG9ic2VydmUgdGhpcyBw
cm9ibGVtLiBJIGFsc28gb2JzZXJ2ZWQgdGhlIHNhbWUgcHJvYmxlbSBvbiBXVCBvbiBhbm90
aGVyCj4gPiA+ID4gbWFjaGluZSwgYW5kIGEgZnJpZW5kIG9mIG1pbmUgdGVzdGVkIGl0IGFu
ZCBzYXcgdGhlIHNhbWUgdGhpbmcuIE9mCj4gPiA+ID4gY291cnNlLCB3ZSBhbGwgdGVzdGVk
IG9uIFdpbmRvd3MgMTEsIHNvIG1heWJlIFdpbmRvd3MgMTAgd29ya3Mgbm9ybWFsbHkuCj4g
PiA+IAo+ID4gPiBJIGhhdmUgV2luZG93cyAxMSBoZXJlLCBhbmQgSSBkb24ndCBzZWUgdGhl
IHByb2JsZW0uCj4gPiAKPiA+IEJ1dCBJIGhhdmUgYW4gaWRlYSB3aHkgdGhpcyBjb3VsZCBo
YXBwZW4uICBQbGVhc2UgdGVsbCB3aGF0IGRvZXMgdGhlCj4gPiBiZWxvdyBzaG93IGluIHlv
dXIgLW53IHNlc3Npb25zOgo+ID4gCj4gPiAgIE0tOiAodzMyLWdldC1jb25zb2xlLW91dHB1
dC1jb2RlcGFnZSkgUkVUCj4gCj4gT24gYSBodW5jaCwgSSB3ZW50IGFoZWFkIGFuZCBtYWRl
IGFuIGltcHJvdmVtZW50IGluIE1TLVdpbmRvd3MgVFRZCj4gb3V0cHV0IGluIHRoZSBjYXNl
IHdoZXJlIHRoZSB0ZXJtaW5hbCdzIGVuY29kaW5nIGlzIFVURi04Cj4gKGEuay5hLiAiY29k
ZXBhZ2UgNjUwMDEiKS4gIFNvIHBsZWFzZSB0cnkgdGhlIGxhdGVzdCBtYXN0ZXIgYnJhbmNo
IGFuZAo+IHNlZSBpZiB0aGUgYXJ0aWZhY3RzIHlvdSB3ZXJlIG9ic2VydmluZyBhcmUgbm93
IGdvbmUsIGJ5IGFuZCBsYXJnZS4KClNvcnJ5IGZvciB0aGUgbGF0ZSByZXNwb25zZS4gSSBo
YXZlIHRyaWVkIHRvIHNlYXJjaCBmb3IgcmVsZXZhbnQKcHJvYmxlbXMsIGJ1dCB0aGUgZG9j
dW1lbnRhdGlvbiBpcyB0b28gc2NhcmNlLi4uIEluIG15IEVtYWNzLCB0aGUgdmFsdWUKb2Yg
dGhlIGV4cHJlc3Npb24gbWVudGlvbmVkIGFib3ZlIGlzIDY1MDAxLCB3aGljaCBpcyB0aGUg
VVRGLTggY29kZXBhZ2UuCgpJIHRlc3RlZCB0aGUgc2Nyb2xsaW5nIGVmZmVjdCBvbiB0aGUg
bGF0ZXN0IG1hc3RlciBicmFuY2gsIGFuZCB0aGUKYXJ0aWZhY3QgZWZmZWN0IGhhcyBiZWVu
IGdyZWF0bHkgcmVkdWNlZCwgYnV0IGEgc21hbGwgYW1vdW50IHN0aWxsCnBlcnNpc3RzLiBJ
dCBsb29rcyBsaWtlIHRoaXM6CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44PC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCldJRFRIIGFuZCBIRUlHSFQgY2Fu
4oCZdCBleGNlZWQgdGhlIGZyYW1l4oCZcyBjYW5vbmljYWwgY2hhcmFjdGVyIHNpemUuCgpX
aGVuIHRoZSBidWZmZXIgaXMgZGlzcGxheWVkIGluIGEgbm9uLXNlbGVjdGVkIHdpbmRvdywg
dGhlCmN1cnNvcuKAmXMgYXBwZWFyYW5jZSBpcyBpbnN0ZWFkIGNvbnRyb2xsZWQgYnkgdGhl
IHZhcmlhYmxoZQrigJhjdXJzb3ItaW4tbm9uLXNlbGVjdGVkLXdpbmRvd3PigJkubnQgICAg
ICAgICAgICAgICAgICAgICBeXmhlcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXl5oZXJlICAgCiAgQXV0b21hdGljYWxseSBiZWNvbWVzIGJ1ZmZlci1sb2NhbCB3aGVu
IHNldC4KICBZb3UgY2FuIGN1c3RvbWl6ZSB0aGlzIHZhcmlhYmxlLgogIFByb2JhYmx5IGlu
dHJvZHVjZWQgYXQgb3IgYmVmb3JlIEVtYWNzIHZlcnNpb24gMjEuMS4KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0+ODwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQoKPiBUaGUgY3VycmVudCBjb2RlIHN0aWxsIGRvZXNuJ3Qgc3VwcG9ydCBjaGFyYWN0ZXIg
Y29tcG9zaXRpb25zLCBzbwo+IGRpc3BsYXlpbmcgc2NyaXB0cyBmb3Igd2hpY2ggdGhlIFdp
bmRvd3MgVGVybWluYWwgcHJvZHVjZXMgY29tcG9zZWQKPiBnbHlwaHMgd2lsbCBzdGlsbCBu
b3Qgd29yayBjb3JyZWN0bHksIGFuZCB5b3UgY291bGQgc2VlIGFydGlmYWN0cyBhcwo+IHJl
c3VsdC4KClllcy4gV2hlbiBJIG1vdmUgdGhlIGN1cnNvciB1c2luZyBDLWYgYW5kIEMtYiBp
biB0aGUgZG9jdW1lbnQgYWJvdmUsIEkKbm90aWNlZCB0aGF0IHRoZSBhcG9zdHJvcGhlIGFu
ZCBvbmUgY2hhcmFjdGVyIGFmdGVyIGl0IGluIHdvcmRzIGxpa2UKImNhbuKAmXQiIG9yICJj
dXJzb3LigJlzIiBzZWVtcyB0byBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlLCBjb21iaW5lZCB1
bml0LgoKVGhhdCdzIGludGVyZXN0aW5nLgo=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 09:20:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 05:20:46 2025 Received: from localhost ([127.0.0.1]:36040 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6mpJ-0004sD-FC for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 05:20:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58102) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6mpC-0004rV-D4 for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 05:20:41 -0400 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 1v6mp5-00081a-Fv; Thu, 09 Oct 2025 05:20:31 -0400 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=7pUnkS3Ej1SnXR++eG7ykY+Zcho5otw7QBd79tlHwgs=; b=bPXclAxcfm0z/6q60XIx mHhisyIYwinlVB4erHAujXTmvnRI16BaaGoDw/aUtNNg9EIVVT+tjLPsnMh/JHAdJESnhCT94dOoL C8uNBGthdnoKhXMSXd3v9rszfTHXC+ciGEPQ+Mr6CpYa4QYkTfcH60ZF3qlLwd9Q+2IQajMZNAoKd qeELAMkpXtSWL8jk0pb92uA4eAc9VPO3k9sVba96fiMwY2vAKYmG+P7ey6GEPjcyVcMIUIzfpbJvc SzwTOc5PEmRnlNrOaNMWI4BZ5eQKZQWZ9+gD9dWXGynSRNs6CBIEYqCoSSAtFo4zMmVaRWkdT8fzB t6QQE/DgtbzgDw==; Date: Thu, 09 Oct 2025 12:20:25 +0300 Message-Id: <867bx4a0ti.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: include_yy@HIDDEN, ewan@HIDDEN In-Reply-To: <86frbsa64u.fsf@HIDDEN> (message from Eli Zaretskii on Thu, 09 Oct 2025 10:25:37 +0300) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> <86frbsa64u.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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 (---) > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > Date: Thu, 09 Oct 2025 10:25:37 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > > Date: Wed, 08 Oct 2025 10:08:59 +0300 > > From: Eli Zaretskii <eliz@HIDDEN> > > > > > From: "Yue Yi" <include_yy@HIDDEN> > > > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > > > Date: Wed, 8 Oct 2025 11:15:16 +0800 > > > > > > > > > Then I think this is something specific to your system, because I > > > > > > definitely don't see it here. Â If you have some "display optimization" > > > > > > of your video driver software turned on, try turning it off and see if > > > > > > that helps. > > > > > > > > > > Emm, I think so too. I don't have this problem with Emacs opened in > > > > > *conhost.exe*, but it exists in *Windows Terminal*. > > > > > > > > Did you customize any settings of the Windows Terminal? Â If so, could > > > > you try restoring those settings to their defaults? > > > > > > Yes, I tried defaulting all Windows Terminal (WT) options and can still > > > observe this problem. I also observed the same problem on WT on another > > > machine, and a friend of mine tested it and saw the same thing. Of > > > course, we all tested on Windows 11, so maybe Windows 10 works normally. > > > > I have Windows 11 here, and I don't see the problem. > > But I have an idea why this could happen. Please tell what does the > below show in your -nw sessions: > > M-: (w32-get-console-output-codepage) RET On a hunch, I went ahead and made an improvement in MS-Windows TTY output in the case where the terminal's encoding is UTF-8 (a.k.a. "codepage 65001"). So please try the latest master branch and see if the artifacts you were observing are now gone, by and large. The current code still doesn't support character compositions, so displaying scripts for which the Windows Terminal produces composed glyphs will still not work correctly, and you could see artifacts as result. Ewan, we'll need a similar fix for moving the cursor in the true-color branch of your patch.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 07:25:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 03:25:58 2025 Received: from localhost ([127.0.0.1]:35646 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6l2D-00069y-Ga for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 03:25:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52442) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6l27-00069I-1r for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 03:25:54 -0400 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 1v6l1y-0001Lh-AX; Thu, 09 Oct 2025 03:25:42 -0400 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=2hrfnHJia39zdBEs/FjYkFb/FRZnkbTfjlvGprzIjk8=; b=AJBzW/BEoKkLuImk4LOR jYSWVRLKaKfX7VOxepCP+ch0z4a9N5XvbLb3tubZkyn9f9wcOf6jAdpvbWhrjWR2/SxEp+J1k/JZA 7TaypggCTO6gyf61iXXU1mOtFVMoOvYIl+iiOY2d/v2CwSUhzM2bs1J24Duv1Nl63qQOsVkXiHU2Y uY8pJQ7bpuI84C+4wi4jeiqbzIw1IMxgsVAZXXuwUZW+7gf6Z8DyMWkZkCzz4ZDmpAUIKMWL3p/cm XHq2lEdvEHxfqEpnff5cBwBMmCSKBnRun9s6Ep4W5UsR93gCnZzEa4fl6oUVaS5UOr/SDPZZfb/TY n03xwp252vEOfg==; Date: Thu, 09 Oct 2025 10:25:37 +0300 Message-Id: <86frbsa64u.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: include_yy@HIDDEN In-Reply-To: <86ms61c1kk.fsf@HIDDEN> (message from Eli Zaretskii on Wed, 08 Oct 2025 10:08:59 +0300) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> <86ms61c1kk.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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 (---) > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > Date: Wed, 08 Oct 2025 10:08:59 +0300 > From: Eli Zaretskii <eliz@HIDDEN> > > > From: "Yue Yi" <include_yy@HIDDEN> > > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > > Date: Wed, 8 Oct 2025 11:15:16 +0800 > > > > > > > Then I think this is something specific to your system, because I > > > > > definitely don't see it here. Â If you have some "display optimization" > > > > > of your video driver software turned on, try turning it off and see if > > > > > that helps. > > > > > > > > Emm, I think so too. I don't have this problem with Emacs opened in > > > > *conhost.exe*, but it exists in *Windows Terminal*. > > > > > > Did you customize any settings of the Windows Terminal? Â If so, could > > > you try restoring those settings to their defaults? > > > > Yes, I tried defaulting all Windows Terminal (WT) options and can still > > observe this problem. I also observed the same problem on WT on another > > machine, and a friend of mine tested it and saw the same thing. Of > > course, we all tested on Windows 11, so maybe Windows 10 works normally. > > I have Windows 11 here, and I don't see the problem. But I have an idea why this could happen. Please tell what does the below show in your -nw sessions: M-: (w32-get-console-output-codepage) RET
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 07:20:06 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Oct 09 03:20:06 2025 Received: from localhost ([127.0.0.1]:35621 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6kwY-0005hk-A8 for submit <at> debbugs.gnu.org; Thu, 09 Oct 2025 03:20:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53210) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6kwT-0005gv-R8 for 79298 <at> debbugs.gnu.org; Thu, 09 Oct 2025 03:20:02 -0400 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 1v6kwL-0000Pk-Rd; Thu, 09 Oct 2025 03:19:53 -0400 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=eJNwUSDMqSf/kooNsz8uQdg5E5+f8Vp/4U3xmyk/GaQ=; b=jETZsCouRuUS TEHZQm34EWjznnkMtwf5QhRcYWfEuwQeTmKvbY0CVaz8IlJ91ZGB+AJBGXG1VNIO0Pa4pR/G56Ew0 gUD7Pp+pnQmvdZUNwkjF0Nu4p9Jc7KtmQOvc/UH9RDI1x3hXav7avQn5BEbvvvemSFJbHEd9KzfiY /1y8lN6QTPsqrdtb0bNQ+vIdapWqDYLNm1Z+BLafMGQIpnm08+4kKEXXKu3UFG89/0Ai0z+Rwmd7d jZBvITn76krZlgdNdl5f071nfV714u+m7UIFd11wIuAmrq3tGyUjuw9FzAyPOYn/GFWX3ym+k8zZq R0H9GwEFFuWiar8zLYtzzw==; Date: Thu, 09 Oct 2025 10:19:49 +0300 Message-Id: <86ikgoa6ei.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Haoyuan Wang <pRoMMMModE@HIDDEN> In-Reply-To: <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> (message from Haoyuan Wang on Thu, 9 Oct 2025 02:48:58 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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 (---) > Cc: "79298 <at> debbugs.gnu.org" <79298 <at> debbugs.gnu.org> > From: Haoyuan Wang <pRoMMMModE@HIDDEN> > Date: Thu, 9 Oct 2025 02:48:58 +0000 > msip_labels: > > Hi, I installed these patch in my local msys2 UCRT64 build (Windows 10), no problem with compilation but Emacs will crash at launch. > > In powershell, `emacs -nw` will crash silently, in command line, an error window will popup and says something like: > > "Cannot locate program entry point clock_gettime64 on dynamic library \path\to\emacs.exe" This sounds like some build or system configuration snafu. clock_gettime64 is a function provided by MinGW, so maybe something went wrong during the build or some DLL is not on PATH or something. It is highly unlikely that this is related to the patch. > However this emacs build work fine with Msys2's mintty console, the frame rate is definitly slower than the GUI, but I think its probably mintty. > I also want to mention that master branch emacs build without the tty patch can also launch in tty mode in mintty, but it does not function properly, but it can work in both windows terminal app and the classic command prompt (no true color ofcourse), however there are visual artifact bugs like Yue Yi has mentioned. I also find that pulse.el can easily create color blockes that won't be cleared, in mintty with the tty patch build pulse does works fine. Thanks for the feedback. What does this produce in your -nw session: M-: (w32-get-console-output-codepage) RET
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 9 Oct 2025 02:49:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 08 22:49:15 2025 Received: from localhost ([127.0.0.1]:35202 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6giQ-0005Rf-KK for submit <at> debbugs.gnu.org; Wed, 08 Oct 2025 22:49:14 -0400 Received: from mail-australiaeastazolkn19012008.outbound.protection.outlook.com ([52.103.72.8]:8433 helo=SY5PR01CU010.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <pRoMMMModE@HIDDEN>) id 1v6giK-0005R5-MS for 79298 <at> debbugs.gnu.org; Wed, 08 Oct 2025 22:49:12 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vEnvLBu5as3sMY7Uj6JG3LYK8dYDGZajAVgi3WL4CIBOqt5JkOF9WaE8MEY8DtdnyGgaktfjG2hxLdr+aoAWrmAZUCtxod7RhMEq3ZIBbSirnZUG/0XJW3XXFGl17/EuPl2h/np3Sk7GTxtW85L5il580r3CtXeIXnEjlGleLTy0j/l++nCwbnUxhUkXua26m7ewf3pcOWsm+6QGihIKesQHYvkAT8YUDY4wAMAInzEXBM/amckVPo3nByYkrnhCT+bfZBF8+2lqWVBA7equ0NX2CWNVYEwjczj41/QGBpwBX/Hl/s/js8IdhU3EtreA3WkvwxzFEZHPMYJi0Xye+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bvfYP2bWhkV0zAvz9lgYp2SG03BBVDn2fyRyen9+D6g=; b=xQQZ0cJztgqKlpTe5F71Q0+AapsDV0JZzLXwgUfwgscXB2I6rBuaB533GSXxz0znD9MzHRXk676t5mywZhmgBRju3/uQABA0Mc5BFFbx1ON91qm9RoSx4OO/nYp+QfIOxZT4vaSEqMwr/3mvPMJ7a21ap2u60DPv+6QmcVqYIIpSQ4o36wHFl1aQn/2GkOyJm9/9wU88/vql0G0dFXvoHo3mIAyHDcPl4dBGk9pODcLXHgHY15h94z/IZCC378kFhaempq4U4YrUVRLfTOnig5l0qf+FMwwLoZMgGKF6sWOjeaXYrv4ifkd7iL26t5+3iY3lqpCRBWTFgk44ZQakVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bvfYP2bWhkV0zAvz9lgYp2SG03BBVDn2fyRyen9+D6g=; b=T+b6zvFq1cVP8sd3LEor6SoPd0+SRADy3qJ0QI/0XGWKDcN50WWO+nsIkXLe8rlM2IttrQ4lgS7QO2UvsLumLU/5dvNmn8dd15gkjKV/EqHx0mvc43io82HV8HkBLRwcA+B5RGNVUEBBWt93G18dS8D+VZYCiSYLPTvNYvHfQ6dt6UGZFb4Tk400VKTtEv1r3bXLCbEj9xlKMIbYuTaa9tSoOEYrPjTWgfUCK11WVEqMcdY8wmX66vfaPCFNd4/i5sTpLrifZ2L69KFrtLYay6Vd+xPAWScNV9AmxVdrw9wYe4eMjvN8sGj2nTn+43ewzWcteb5nCH0MV6POpOv8BA== Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:28f::5) by SY7P300MB0410.AUSP300.PROD.OUTLOOK.COM (2603:10c6:10:28b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Thu, 9 Oct 2025 02:48:58 +0000 Received: from SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4]) by SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM ([fe80::a3bb:c9bd:2690:45a4%4]) with mapi id 15.20.9203.009; Thu, 9 Oct 2025 02:48:58 +0000 From: Haoyuan Wang <pRoMMMModE@HIDDEN> To: "ewan@HIDDEN" <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Thread-Topic: bug#79298: patch: full color in windows terminal Thread-Index: AQHcOMO8419jP7j4FkWmXwLJGYT11Q== Date: Thu, 9 Oct 2025 02:48:58 +0000 Message-ID: <SY7P300MB10345F805E3856B8ED025120DFEEA@HIDDEN> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SY7P300MB1034:EE_|SY7P300MB0410:EE_ x-ms-office365-filtering-correlation-id: 6650fd38-59c3-4930-e295-08de06de6546 x-microsoft-antispam: BCL:0; ARA:14566002|15080799012|15030799006|461199028|31061999003|8062599012|8060799015|19110799012|4295299021|40105399003|39105399003|3412199025|440099028|51005399003|102099032; x-microsoft-antispam-message-info: =?iso-8859-1?Q?eAMlteiDkWf0MfjFC6xHJrkdlgh1njxunFtXWwtduFHJ4LpDxqxM3Dm8Jo?= =?iso-8859-1?Q?o8M3ytjpo2I95byZCvbI7OMgw7PHSkx5hK8PhpdEN+QGSKaGLZS0tfGal8?= =?iso-8859-1?Q?DXC1WAu+QFy35CyPT2gJ6MzCkg0XPjcHpK7MLRmYoOqwaFNWGkzVSkOASd?= =?iso-8859-1?Q?Ys/KdbSn4KftUEaUmr7V9OxhsEKNqbgBn4O3yYNVX06ewBETUL2aZRT6E8?= =?iso-8859-1?Q?8Xnmgt//VTVwrpsOqIa6g/rMFd0qGnHILq1U2CaFqFduXz4tfdWcrD/Kod?= =?iso-8859-1?Q?7VNB1t2M4tMhCzypeL1e2S8AfSCUNAq9ciFu5VQYkl2Tioyv/pumf35kwm?= =?iso-8859-1?Q?WMT9y2TonMk+U+lvu/lS+EodtioalWnF25iVvOjPBY9/QpnnyFwZ9QM5hw?= =?iso-8859-1?Q?XW0vDS0bTWSlDjW2GEnXSTC1EdfxcrwjTh+RqcFsAq4p74mXyh87yWEB8F?= =?iso-8859-1?Q?iZByQ3PspZawYhWZJrIfwO0AZY4VoNJai5IF00wUyeKX63DHCb+5TbnBEQ?= =?iso-8859-1?Q?9jxYabr3yWmySNnP97O2rJQxuGts8PsnsudhxDOG+Y6+Nw10xtYp3JCMi/?= =?iso-8859-1?Q?8P/gkg8d+JOVlZzQBuCY0pmXv3qp5arkBfEwswEmWSj4VqQjFIaZqwUNXa?= =?iso-8859-1?Q?JEz3qsfwMLFBAVwZXgRjxQYRt5Rh+qqCqW6oB3UQodIA6F10eP6t1N7Jc1?= =?iso-8859-1?Q?Ox+IhEqKopmRMid7ROguYE385rfLPNiBk0WPb8uedUCCMs7xsF77ByTqhX?= =?iso-8859-1?Q?ZzjBDitHU6nPl/bH9kPeHWadsNveO2IgQYhL8zIveu2GKGT2qsnh7wHnUY?= =?iso-8859-1?Q?Tlrv2R2NVdodnxCDbpawV9jE2WDkpx9x0ebFsmik0rKt4vUiY1I1Xppj0w?= =?iso-8859-1?Q?o+R39dak/p7mOefgbPE9aDXl1rLeIyOIgeCqWnldxbBx6c5CIKEOZAqcTY?= =?iso-8859-1?Q?iGeamhv5W3epLOx2AU4d+F3jFniHwoKBHkm2zVz0QjF6I7cASahNMriNuy?= =?iso-8859-1?Q?1WJJ0Ajp6jK/9IgHP6eQeYetXBR9UP6hKP6Bvn2SpoN27GO6eWreNbZxUd?= =?iso-8859-1?Q?o4QVnq7+Kt5+FDp5U9sS9np3yZNXqnWYxsrJBrXNNZlgZcLrvKCJau55j3?= =?iso-8859-1?Q?hNdhkpO5D6sww+1AbKKfqPF9SB6uSsOtO3zzIqG+Xe35HSjDEYoaogQ6nv?= =?iso-8859-1?Q?fi+3t457cDoy4k96U+MZVNO8PNFD5GHyx47VTPVAHtYdkSYVAQCH+aPnHe?= =?iso-8859-1?Q?j7I5C8EnqEauiy8ry3mov/p2K4zzTlK86sMjzemJb61lB0xaim6QjPreEO?= =?iso-8859-1?Q?nQ22?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xSLPoELNEW9HSwCAzRN2EuiyxF9qwGTZ8quJXT9ITI9MRHHsEri9ejfdYt?= =?iso-8859-1?Q?6QZ6ECMk4T4n5nSadJ6wLXtmJsyN+AeW6jOeYEmqS/3KlkjdzX7tYxIP3n?= =?iso-8859-1?Q?nayVdYI2HkHZbMaltklnomXPMycMhbAACRX/HScK0SHFWqinmzBldGfLsu?= =?iso-8859-1?Q?WRP6N9iTy6CGqxYDhizU1yprHiuEJP42C4ymR/QLfPUacJcC+8FDgfWlHY?= =?iso-8859-1?Q?JM1u9i1PirgmrZUIxS4O/drC6pjNwxS9K/9iAEhLvuLuHMw6OOpIadPlVv?= =?iso-8859-1?Q?yEFvJs+MFoeRQlZn6X3JsZbL4h2Issk/nPY6VSwoxUdYNmZD0PkWaQ6h82?= =?iso-8859-1?Q?dgTJ8Tra5XX3eekag6XI98noCCyIhMKNl2myqJfX16Kj9saSzLBi1Codeq?= =?iso-8859-1?Q?fYMPuf07AMo82N9vdb7ItZ7KuDr/Hax0eHmOi5nssRgwU/Z4SMNtdw4Xov?= =?iso-8859-1?Q?0F36BZ19CqVDffnWZpztW8J6hbABJQqAqZQ0brS8VNy3JREX0UU8oKFyiN?= =?iso-8859-1?Q?SsaEwUtV6arLFrjcqY4lyVHdLX9g69jAOSfUkNpNhtHgDe9qRQUKryXNnY?= =?iso-8859-1?Q?UiaP1cVilnrY1ebOM47yncFqIc/o+BD7H5z3omY2kKrsLuSzuiTYwlw8hF?= =?iso-8859-1?Q?lX6GRhdMFQllS+ieQp/ZBam5ydStfGuXTYQanLDIZgbe0J1cUdV5LomNJc?= =?iso-8859-1?Q?mqD/hNw8YGa24TJcCd6WwwAAqvpHN2B5nwI0cE72PYAwb/9TdYEAuPcEHC?= =?iso-8859-1?Q?CRF+ixPjsnwoIOvTfEC4g9tf0VTG6ll5mqY85dg9NDQ55l/PjmnGIzzCs+?= =?iso-8859-1?Q?WOK60BL4OSh8mOxVnuLGboxRCKjRLUrAPGnUNQA3EIp3i9gnTXrZbmzbu/?= =?iso-8859-1?Q?k7hu9zyI/banb5QW3n/i8Rb4Y70uYFlrEjISiQjWJOZ8BDIdfdNZ5g/3Nm?= =?iso-8859-1?Q?14rFI5XdbM0srvE5o29ZrlVa9JTiA4oiudIyks7LQzNlZ/X+ZEX3sXcTET?= =?iso-8859-1?Q?jayzUgXs3/SWJm92BddzOPYoL09lzwHKu8fC0Qhlkdo6RQZC9KthubvlJu?= =?iso-8859-1?Q?DaFLWcpm/NdjwTLI1w99G+Sa2TueK6YqIop+ciYEnNUHvsOaLxIN40yZlp?= =?iso-8859-1?Q?G1yOGB2Cmf5jWO/gWD4YW5yaclSEqs3ePTtM9U93wQQooVdp+AyYpPL1id?= =?iso-8859-1?Q?whrLgW64L72xxQzIGFOJIGRrGrXl7bnkHIEEKurQaPZZe1JIz2udEBatg1?= =?iso-8859-1?Q?mqbt/VkkhZzymy+7OL3sCAU9sIxhF67SdanOMpkoY=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SY7P300MB1034.AUSP300.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 6650fd38-59c3-4930-e295-08de06de6546 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2025 02:48:58.4289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY7P300MB0410 X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 79298 Cc: "79298 <at> debbugs.gnu.org" <79298 <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: 0.0 (/) Hi, I installed these patch in my local msys2 UCRT64 build (Windows 10), no= problem with compilation but Emacs will crash at launch.=0A= =0A= In powershell, `emacs -nw` will crash silently, in command line, an error w= indow will popup and says something like: =0A= =0A= "Cannot locate program entry point clock_gettime64 on dynamic library \path= \to\emacs.exe"=0A= =0A= However this emacs build work fine with Msys2's mintty console, the frame r= ate is definitly slower than the GUI, but I think its probably mintty.=0A= I also want to mention that master branch emacs build without the tty patch= can also launch in tty mode in mintty, but it does not function properly, = but it can work in both windows terminal app and the classic command prompt= (no true color ofcourse), however there are visual artifact bugs like Yue = Yi has mentioned. I also find that pulse.el can easily create color blockes= that won't be cleared, in mintty with the tty patch build pulse does works= fine.=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 8 Oct 2025 07:09:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 08 03:09:13 2025 Received: from localhost ([127.0.0.1]:60101 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6OIT-0004vX-98 for submit <at> debbugs.gnu.org; Wed, 08 Oct 2025 03:09:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49076) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6OIO-0004vG-W4 for 79298 <at> debbugs.gnu.org; Wed, 08 Oct 2025 03:09:11 -0400 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 1v6OIH-0007o6-Tc; Wed, 08 Oct 2025 03:09:01 -0400 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=56RJ0OyOI9Ic+5ZYa0qQyYCvAIO0KsUeIsBf9rs73Hs=; b=qXllsrrr2KctJCh8rWQa XUPq8PM7TuKYYsYyPoxuMRjbdWPeG/7AB468ah9GFf0nR9H9ibcPGaODntmI9doXLXRMCDnFKccrL N5ELYWyqrCjRuzjQ/G8uWHpJjLJNgdvLnyTUgvB1tOt6iSr9BFI3J/E4dNN7xNJAJmnWi+Z1jGBOU NWKr21lQuR3fZtvMAP8UeED/CUuaJA4mCbLrymu4Px0rQVribEkh88WuICnbIMqdsYAMcojzNhBKW I3hkgjo/nc0QyQXtMzVahfkEd3UB6Xvax/omUgSXifna32E9rmLBuZFW0JUy8VOmKZzVSgbaXxo2i cqTsK5InT6DBDQ==; Date: Wed, 08 Oct 2025 10:08:59 +0300 Message-Id: <86ms61c1kk.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Wed, 8 Oct 2025 11:15:16 +0800 > > > > > Then I think this is something specific to your system, because I > > > > definitely don't see it here. Â If you have some "display optimization" > > > > of your video driver software turned on, try turning it off and see if > > > > that helps. > > > > > > Emm, I think so too. I don't have this problem with Emacs opened in > > > *conhost.exe*, but it exists in *Windows Terminal*. > > > > Did you customize any settings of the Windows Terminal? Â If so, could > > you try restoring those settings to their defaults? > > Yes, I tried defaulting all Windows Terminal (WT) options and can still > observe this problem. I also observed the same problem on WT on another > machine, and a friend of mine tested it and saw the same thing. Of > course, we all tested on Windows 11, so maybe Windows 10 works normally. I have Windows 11 here, and I don't see the problem. What is your version of the Windows Terminal? And what is its Default profile (shown in WT's Settings under Startup)? > For now, I believe this discussion and this full-color patch might not > be very related. Perhaps I'll re-open a bug report when I find the root. Yes, it's unrelated, according to what you describe.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 8 Oct 2025 03:20:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 23:20:38 2025 Received: from localhost ([127.0.0.1]:59777 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6KjG-0000ao-A1 for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 23:20:38 -0400 Received: from xmbghk7.mail.qq.com ([43.163.128.53]:48599) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v6KjA-0000aQ-SN for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 23:20:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1759893317; bh=vc/svy7U1ton1OYKRMkLHbjMp6rDrjkWMpuZE1o3QNU=; h=From:To:Cc:Subject:Date:References:In-Reply-To; b=IiQG/7klu4bP00cdw+ZsDCSrv8U9V4XV+NYxHrfvuoQWYCsaV0f4g+Nk6LJQIhuTa 14kWZmNngSEUutYHtPAi86E4lzvLBwfWqIibFk2zX3FUw+EKuF0tgsX9rjL43Xl1CK x2jtOrmfA7zLaSazAERK6g63Okb1TMlxiqAKjmbI= X-QQ-XMRINFO: NyFYKkN4Ny6FSmKK/uo/jdU= X-QQ-XMAILINFO: N3gQe50fu4Esb9CstcuwG3jE8uB/vqwDwcNN6MSIvMQhQ2e4jflltbH8X8FGK/ zSaGtEnv2zZg5E8rwv8vrmSXVZmTWTBjtxFTrwWxruOFje2R79X/jxhfvDAmllUhJydXGMAJHwBDi 7KtmTFrUeHEWT0Uno7vZm4OK+QJhI77GBPKj9Ctaki2saqh7KZ98PDC5phYNBePO5Y0Y8nK+pIjrt sQdcnc5zGqQ+ZZLbvv0aHj3RyGku6U6gMjPhkE56ldJK4nhzRe7vwGDJJ2Cd86iPjAfDJWXqBceQu c+wzT07DmY7aap7r8xny1cvN55pvbozHQSKW324+5aPt8bkZjAHpeGiMrUbVn9TzYpHEE+l7q5kpe q2Y6idYOgfo4lBOMiHaeevdRcLtPmti3Dsey1SoEjWIy/Dtn1cjW+r9aHkzcjm37OIho7k0b+ujEE qkrYTzwFWFR/ylvhE/9blqqVPa+vrOSNsgckMO/3VVXJEMOG/nclamXDL07jI8NQrGx5lJgjFhoSZ 8qRudtzys+/sntr2jiYMUljygFLUO7Xqfzyj4owmFLFEk1elrRzip9dgFKs85GPMOKF5SDEmRSXi/ WK7ohAjebI+H/6JuTuIUF48ckGDiHhe2ynjp7O6PWiaaAsMnGI9Ob157CLYQ6ZSZmKttsTVt3b3Jj a8nEO1Ev3G503rRJo3kik7BUhVBBYbGGRDOoqGzn5FzKzCKGdOF44A1B52gO6pkR4XiXM0c4dt6RH Bi+BvAIF/oSdLOps7UdCUEji1FA+Bbg66hDs2eFgtzvTwTbzL0kIZO0pMnIvyBABJuur6WAA/elt/ ZS31NLxR8cJ+WVCMmPU02uylaB+j0nPItubz0o+UIFl8TkmOC3c46LW/wyXTnh2XXVjN1D2F/GVDp MtruKtMqUggtXwscb3zPhnRAgKpfZdBxvY960SgORGBkklSAmvMkE93jxaimw40z4Au0SYaTPwjgC BHHTyScgUUHaheM6Cx8OWUvPB6K0FqeaNN9BHp97nHxXWF2Yxtu2EBNYZvJRDNcsg9kzly0NtJn0C GfSdZLz9AA/uNsVGIOgd9Nx6Ng5Aj1xVRwsjE2U9CIb7Gt/xjRlmYwXJFz/pXjF7wgwvPooiqDbyA r4+VmJgZGH1Vf3fPlITntIsW From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN> To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Date: Wed, 8 Oct 2025 11:15:16 +0800 X-Priority: 3 Message-ID: <tencent_09C7892BC9CA226828CEE04E80EFAE702308@HIDDEN> X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> <86y0pmbsgh.fsf@HIDDEN> In-Reply-To: <86y0pmbsgh.fsf@HIDDEN> X-QQ-mid: xmseza31-0t1759893316txh6czy1s X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>, =?utf-8?B?NzkyOTg=?= <79298 <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 (-) PiA+ID4gVGhlbiBJIHRoaW5rIHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIHlvdXIg c3lzdGVtLCBiZWNhdXNlIEkKPiA+ID4gZGVmaW5pdGVseSBkb24ndCBzZWUgaXQgaGVyZS4g wqBJZiB5b3UgaGF2ZSBzb21lICJkaXNwbGF5IG9wdGltaXphdGlvbiIKPiA+ID4gb2YgeW91 ciB2aWRlbyBkcml2ZXIgc29mdHdhcmUgdHVybmVkIG9uLCB0cnkgdHVybmluZyBpdCBvZmYg YW5kIHNlZSBpZgo+ID4gPiB0aGF0IGhlbHBzLgo+ID4KPiA+IEVtbSwgSSB0aGluayBzbyB0 b28uIEkgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0gd2l0aCBFbWFjcyBvcGVuZWQgaW4KPiA+ ICpjb25ob3N0LmV4ZSosIGJ1dCBpdCBleGlzdHMgaW4gKldpbmRvd3MgVGVybWluYWwqLgo+ Cj4gRGlkIHlvdSBjdXN0b21pemUgYW55IHNldHRpbmdzIG9mIHRoZSBXaW5kb3dzIFRlcm1p bmFsPyDCoElmIHNvLCBjb3VsZAo+IHlvdSB0cnkgcmVzdG9yaW5nIHRob3NlIHNldHRpbmdz IHRvIHRoZWlyIGRlZmF1bHRzPwoKWWVzLCBJIHRyaWVkIGRlZmF1bHRpbmcgYWxsIFdpbmRv d3MgVGVybWluYWwgKFdUKSBvcHRpb25zIGFuZCBjYW4gc3RpbGwKb2JzZXJ2ZSB0aGlzIHBy b2JsZW0uIEkgYWxzbyBvYnNlcnZlZCB0aGUgc2FtZSBwcm9ibGVtIG9uIFdUIG9uIGFub3Ro ZXIKbWFjaGluZSwgYW5kIGEgZnJpZW5kIG9mIG1pbmUgdGVzdGVkIGl0IGFuZCBzYXcgdGhl IHNhbWUgdGhpbmcuIE9mCmNvdXJzZSwgd2UgYWxsIHRlc3RlZCBvbiBXaW5kb3dzIDExLCBz byBtYXliZSBXaW5kb3dzIDEwIHdvcmtzIG5vcm1hbGx5LgoKRm9yIG5vdywgSSBiZWxpZXZl IHRoaXMgZGlzY3Vzc2lvbiBhbmQgdGhpcyBmdWxsLWNvbG9yIHBhdGNoIG1pZ2h0IG5vdApi ZSB2ZXJ5IHJlbGF0ZWQuIFBlcmhhcHMgSSdsbCByZS1vcGVuIGEgYnVnIHJlcG9ydCB3aGVu IEkgZmluZCB0aGUgcm9vdC4KClRoYW5rcy4=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 16:13:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 12:13:55 2025 Received: from localhost ([127.0.0.1]:58726 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6AK2-0008Gq-7V for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 12:13:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46418) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v6AJv-0008GZ-W2 for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 12:13:49 -0400 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 1v6AJn-00011W-DH; Tue, 07 Oct 2025 12:13:40 -0400 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=ao5s/n9ucMEVqrl8FEq51XnbD1c0I+E5/ksWwqKPlVI=; b=ViDzQBHu8M6i 0xnYQNH+23VrH9lY5Liswy64ARQoJVhxgsUroN5uF2RFLpfJVd4JWZo5jZoJ1lXXOMIxFeONw3vmC 6TFsnLyQ0EpfEUImPAZx8YlYOUm4dGy37L+QI9rD3WFwzGF6TNPD94TuMmgIgzfs2drxIv2Sl4sXq 1YF10mxqaCOFfuPMoJgzd6Z8NzL1UzRXOEyjo1GFFwEqErkZV2WBp7SyWVYxihaBFlCAKINN0ThDL ZbLWMXSmJCVkXiXHjcodpbX0MHVGSpHN7KcjnKF2sbh/MnLyLBfccP+LB+90LJU/F7d3KuGqUgn+K tkKQJmlGRK7oz61zGnyTdw==; Date: Tue, 07 Oct 2025 19:13:34 +0300 Message-Id: <86y0pmbsgh.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> <861pnedats.fsf@HIDDEN> <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Tue, 7 Oct 2025 23:56:44 +0800 > > > > > Do you see the same problems in an unpatched Emacs from the master > > > > branch? > > > > > > After removing the patch and recompiling the master branch, I > > > encountered the same issue. > > > > Then I think this is something specific to your system, because I > > definitely don't see it here. If you have some "display optimization" > > of your video driver software turned on, try turning it off and see if > > that helps. > > Emm, I think so too. I don't have this problem with Emacs opened in > *conhost.exe*, but it exists in *Windows Terminal*. Did you customize any settings of the Windows Terminal? If so, could you try restoring those settings to their defaults?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 16:10:21 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 12:10:21 2025 Received: from localhost ([127.0.0.1]:58711 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v6AGa-0008BL-OT for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 12:10:21 -0400 Received: from fhigh-b3-smtp.messagingengine.com ([202.12.124.154]:51377) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <sebastian@HIDDEN>) id 1v6AGS-00085I-Km for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 12:10:16 -0400 Received: from phl-compute-10.internal (phl-compute-10.internal [10.202.2.50]) by mailfhigh.stl.internal (Postfix) with ESMTP id 62A097A0231; Tue, 7 Oct 2025 12:10:06 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-10.internal (MEProxy); Tue, 07 Oct 2025 12:10:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sebasmonia.com; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1759853406; x= 1759939806; bh=1Y92j9IGUB7xendOYjD83lGFrpSfP5TIX4UpXCIXTGw=; b=z DCsrHQRrzW/TlkiKwqmr/mo7kobaoL8ecE3/OOfroe8AiMdWq+ukaW0Xte8EEZDR IuANGtDFn+PuJsfmSOTFCFudY2mI1yNxG6ClQnOvSKWKdCwp53YGCZkY2o2m55GE Ta9Z6Jd87MwlB/+BlYlAWF2u3qGonxhGjw+Z+y8xTpDvmXqh5eWrWBnos7wLigUC tA91UMWGi9+HiXR++JwEl76En/o45fisqFjcP8JAAt+qmBYhYabXv+5EahF8//lt FcZ8kEd0QC5IRxdLGSnmG1Txt3tmGC9SWn0csiuRujs04XP+FUe4/r6O+0LLvcWw mVRqbMI7G7tH2GPW57Eww== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1759853406; x=1759939806; bh=1Y92j9IGUB7xendOYjD83lGFrpSfP5TIX4U pXCIXTGw=; b=jgFsOW3XAKwnFrT/kC9EIlRjK6NZgaMOuYpOwp+vmIj56lqe/W9 2DfQUVLRT4K0LGDV3YmnmXBMkHkHW6KfTZREyih/37KOWm2RkXhJRJd6frpr0407 92ighHR+vXtqXqmnAfWbe9grDOjZB7Yk0JJpP7MBqNQVAo7GEZf/utNxUy7TPvZ3 428HSp0crb9U/L61R/QrrgHBI9I+HmBbjPkQp8JYSr81jZAqwAWQ5XXV4PBMUvSL k/HlHpaR41q3kmGHTwHIL0crdw3c7ij9STpZtk6w6v8B1oFS0oJyM0UHOVce3FES dCqyD9oJTeXoSOWauZco3xXYPJuR1DXz9TQ== X-ME-Sender: <xms:XTvlaNecnLA-XdwnDxWZKw2CH34ddrnbMoB6p9aQKPHbLpCTS5RKog> <xme:XTvlaCrpnaGrpkas79f3-wL6GcSOW0bvMLXZJfFac5R4sRyP_4QB-wVEmYujHll0t fh0bZs7R7IfI3iKCuVbjCzf41ziqozp2pzRyqxUxON_EktDpyWyTQ> X-ME-Received: <xmr:XTvlaD4L7kIZfMBbl_IErcackVBJiwRVTjATTL8EYuHD2h1q9WNM3DmKj8uGKG54aqk> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddutddtkeeiucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhephffvvefujghffffkfgggtgesthdtredttderjeenucfhrhhomhepufgvsggrshht ihojnhcuofhonhovrgcuoehsvggsrghsthhirghnsehsvggsrghsmhhonhhirgdrtghomh eqnecuggftrfgrthhtvghrnhepgeeffeejkeeuieevkeeugfeguedvtdevtdelhfdvfeff gfevtddtudeugfeiueelnecuffhomhgrihhnpehsvggsrghsmhhonhhirgdrtghomhenuc evlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehsvggsrghs thhirghnsehsvggsrghsmhhonhhirgdrtghomhdpnhgspghrtghpthhtohepfedpmhhoug gvpehsmhhtphhouhhtpdhrtghpthhtohepjeelvdelkeesuggvsggsuhhgshdrghhnuhdr ohhrghdprhgtphhtthhopegvfigrnhesvghtohifnhdruggvvhdprhgtphhtthhopegvlh hiiiesghhnuhdrohhrgh X-ME-Proxy: <xmx:XTvlaAoBZ2ejc80t98t3BHG5d7v0-rN_p8cPWdyWj1ggFwU-5B3ouA> <xmx:XTvlaNjoY50npUGEn02OjVkBI7ZqvJJVtKMYbpr0BJmlcKSceZDIJA> <xmx:XTvlaCK1bcikEDk8sH3BaCOOPy6YRh-IGmSjJYVSdlDv3NDo3XtrMg> <xmx:XTvlaFC1ncxWrJqFW1TD6v5qtJtxBOLnev4XbMuYgSqzpTRHd1Hktg> <xmx:XjvlaGAPerdWPfn0oK4UxJlVw3E3vgosGgzG5ue0A0FhKVnqG44NSBw1> Feedback-ID: iab2c46da:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 7 Oct 2025 12:10:05 -0400 (EDT) From: =?utf-8?Q?Sebasti=C3=A1n_Mon=C3=ADa?= <sebastian@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal In-Reply-To: <86347udazv.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <thqnfrbuhqg1.fsf@HIDDEN> <86347udazv.fsf@HIDDEN> Date: Tue, 07 Oct 2025 12:10:05 -0400 Message-ID: <thqn5xcqy9pe.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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 (-) Eli Zaretskii <eliz@HIDDEN> writes: > When you type in the minibuffer, the cursor is supposed to be where > you type, i.e. also in the minibuffer, at the end of the text that you > have already typed. Is that where it blinks, or does it blink in some > other place on the frame? It blinks only in that place, so that is good. > The text-mode cursor blinks twice a second on Windows, and that's > independent from Emacs. It could blink more frequently as you type, > because we turn the cursor off when redisplaying, and typing involves > showing the characters you type. So if this is what you see, it's > normal, and is not related to the patch. You can also compare with > the unpatched Emacs. Unpatched Emacs doesn't have the "extra blinking" or "flickering" of the cursor when typing (more noticeable in the minibuffer), while patched does. But the cursor does show _only_ where I am typing, and the patched version does have the additional colors. -- Imagination will often carry us to worlds that never were. But without it we go nowhere. - Carl Sagan https://site.sebasmonia.com/
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 15:57:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 11:57:07 2025
Received: from localhost ([127.0.0.1]:58694 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v6A3n-0007aO-Ef
for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 11:57:07 -0400
Received: from out162-62-57-252.mail.qq.com ([162.62.57.252]:42781)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v6A3f-0007Zj-NO
for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 11:57:02 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1759852604; bh=7enBZDhwvOy9u16LJ4neYzmMk4rK2mPLbDGRGtRqEAk=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=TcBlVhbmUW2hzmPlhIcuax7fDM17zJYEoJ7egHpzYt/+ci/a5s+4I2AEU1uWw1yIX
ouounPzjqyshv6VklIAw4GnSQxCKAs+CIgt+C+C9EO6dwCvPzQAlzcvOaTiYV2HOxd
4ypZfrHWkbKlvehVMWXtrvv785RTXpwPKpva6iU8=
X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc=
X-QQ-XMAILINFO: NkQGnmzToUyFqpDLMQhKN2AQ09b1DiZUK+uG1B7GFcJ7Co4WySCnfLndEp+b6R
I8W/AJHjNNCYOlo9RRwk35DKM+g9lRQb2AbuL30dxmZpCRDFXdv0eSTPs5i2Ns1p/oiQ6xLncrgF0
4Fez3iUAieXA9paQzCH17bp5EJK5IjLf2j5iQCViM1NU+kyuB4ZaKIstZj4dM68Ws6Uo9MSYFksKC
t+jHHXCiD1nOu71UGuiPScVzlihDw9//HFjKWQ8C7M2UQZXIAjZ3HKV7KtdHVWcU5PPL0yOcRjb6+
0CGgiDF7mDD5aWaVCDNrdrhCgDSuwxCGkIfG4WHT9LD5m0MVtuczmGWq/iohOEQC5Ewb7/jwNBmSf
qA3SijB8D7EaoVt3tgTsSJzTlRMXvBJwBsglWlglTeHnI8xaVxccuht0UtZDAOIkqpb6EQMK1+7+i
I0+kohmk490eNMLNchzdDvPxZBiXk+W1Enz4kTDgiAoAzqLDJ+448/63Bq3+W69STMPQYlhu1lCfo
7A4yWp5181oMaDslZm4acF/p+ZlVyPQeS7ZklQh3P2OJKlMTpheq2R4rOwGaL3r1q7aiVbmfOvA7T
GDWXbytvTC+IxXUkRggeAcUZrWjkX2m4WqhhfiPR8bCcXqbl3RGqfHABOjm90KjVavz09Z6Q2gMC+
z3jk8TU37fr9OASsQMHCGKXDH/jiVHNt39svVZVcl52YuH3x00ZcOOpVjKYAILRBcGhW94M7cwNG3
fQcJefk7HEdYx+X9u5mvF45fKp72qeqg7G0kHfQHL/PAg69Tfjr6tpOdvK6bCfSOnF3iv8eUYgOFH
6Rn/PsWz47MnlkwQU3+iG4D1n1HGjLWzdnqXj4yjhp4TpoGWX7CX1TtHQgSLbCYZage5h2euRExvF
rlFn/l2kPnc2VAIkzjmkVRYaet6qu4BZGxfTbZovXizPKo1Uz92MTdeppFyZ3cEKcRBtRKqKr6bb6
AqOgxOn7pdpovKixmFB0WXyo5VpCn9WypW9L6bGMIRIJOhOZoqgeT+lhg8NVmApbxfqmG1xNLNHhF
8bGmuGBB89TSPsdGMNfYO0IWF4NmomNeQYbL5LuYw4VgwIYAhX0AnHVYqYFr+aMBGG57g86QsK9jJ
uxHgSKX2ZX2h4Q==
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_68E5383C_62D4E520_4E3C4BB6"
Content-Transfer-Encoding: 8Bit
Date: Tue, 7 Oct 2025 23:56:44 +0800
X-Priority: 3
Message-ID: <tencent_0499BCC7C1011CD3AE182BDFA23139C3390A@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
<861pnedats.fsf@HIDDEN>
In-Reply-To: <861pnedats.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1759852604t7enh2up1
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > > > Do you see the same problems in an unpatched
Emacs from the master > > > branch? > > > > After removing
the patch and recompiling the master branch, I > > enc [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
[162.62.57.252 listed in wl.mailspike.net]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 HTML_MESSAGE BODY: HTML included in message
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.252 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.252 listed in bl.score.senderscore.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [162.62.57.252 listed in list.dnswl.org]
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > > > Do you see the same problems in an unpatched
Emacs from the master > > > branch? > > > > After removing
the patch and recompiling the master branch, I > > enc [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[162.62.57.252 listed in list.dnswl.org]
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.252 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.57.252 listed in bl.score.senderscore.com]
0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
[162.62.57.252 listed in wl.mailspike.net]
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 HTML_MESSAGE BODY: HTML included in message
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
This is a multi-part message in MIME format.
------=_NextPart_68E5383C_62D4E520_4E3C4BB6
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Jmd0OyAmZ3Q7ICZndDsgRG8geW91IHNlZSB0aGUgc2FtZSBwcm9ibGVtcyBpbiBhbiB1bnBh
dGNoZWQgRW1hY3MgZnJvbSB0aGUgbWFzdGVyDQomZ3Q7ICZndDsgJmd0OyBicmFuY2g/DQom
Z3Q7ICZndDsNCiZndDsgJmd0OyBBZnRlciByZW1vdmluZyB0aGUgcGF0Y2ggYW5kIHJlY29t
cGlsaW5nIHRoZSBtYXN0ZXIgYnJhbmNoLCBJDQomZ3Q7ICZndDsgZW5jb3VudGVyZWQgdGhl
IHNhbWUgaXNzdWUuDQomZ3Q7DQomZ3Q7IFRoZW4gSSB0aGluayB0aGlzIGlzIHNvbWV0aGlu
ZyBzcGVjaWZpYyB0byB5b3VyIHN5c3RlbSwgYmVjYXVzZSBJDQomZ3Q7IGRlZmluaXRlbHkg
ZG9uJ3Qgc2VlIGl0IGhlcmUuICZuYnNwO0lmIHlvdSBoYXZlIHNvbWUgImRpc3BsYXkgb3B0
aW1pemF0aW9uIg0KJmd0OyBvZiB5b3VyIHZpZGVvIGRyaXZlciBzb2Z0d2FyZSB0dXJuZWQg
b24sIHRyeSB0dXJuaW5nIGl0IG9mZiBhbmQgc2VlIGlmDQomZ3Q7IHRoYXQgaGVscHMuDQoN
Cg0KRW1tLCBJIHRoaW5rIHNvIHRvby4gSSBkb24ndCBoYXZlIHRoaXMgcHJvYmxlbSB3aXRo
IEVtYWNzIG9wZW5lZCBpbg0KKmNvbmhvc3QuZXhlKiwgYnV0IGl0IGV4aXN0cyBpbiAqV2lu
ZG93cyBUZXJtaW5hbCouDQoNCg0KVGhhbmtzIGZvciB0aGUgdGlwLg==
------=_NextPart_68E5383C_62D4E520_4E3C4BB6
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: base64
PGRpdiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgbGluZS1oZWlnaHQ6IDEuNDM7Ij4m
Z3Q7ICZndDsgJmd0OyBEbyB5b3Ugc2VlIHRoZSBzYW1lIHByb2JsZW1zIGluIGFuIHVucGF0
Y2hlZCBFbWFjcyBmcm9tIHRoZSBtYXN0ZXI8L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdi
KDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS40MzsiPiZndDsgJmd0OyAmZ3Q7IGJyYW5jaD88
L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS40
MzsiPiZndDsgJmd0OzwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGxp
bmUtaGVpZ2h0OiAxLjQzOyI+Jmd0OyAmZ3Q7IEFmdGVyIHJlbW92aW5nIHRoZSBwYXRjaCBh
bmQgcmVjb21waWxpbmcgdGhlIG1hc3RlciBicmFuY2gsIEk8L2Rpdj48ZGl2IHN0eWxlPSJj
b2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS40MzsiPiZndDsgJmd0OyBlbmNv
dW50ZXJlZCB0aGUgc2FtZSBpc3N1ZS48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAs
IDAsIDApOyBsaW5lLWhlaWdodDogMS40MzsiPiZndDs8L2Rpdj48ZGl2IHN0eWxlPSJjb2xv
cjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS40MzsiPiZndDsgVGhlbiBJIHRoaW5r
IHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIHlvdXIgc3lzdGVtLCBiZWNhdXNlIEk8
L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS40
MzsiPiZndDsgZGVmaW5pdGVseSBkb24ndCBzZWUgaXQgaGVyZS4gJm5ic3A7SWYgeW91IGhh
dmUgc29tZSAiZGlzcGxheSBvcHRpbWl6YXRpb24iPC9kaXY+PGRpdiBzdHlsZT0iY29sb3I6
IHJnYigwLCAwLCAwKTsgbGluZS1oZWlnaHQ6IDEuNDM7Ij4mZ3Q7IG9mIHlvdXIgdmlkZW8g
ZHJpdmVyIHNvZnR3YXJlIHR1cm5lZCBvbiwgdHJ5IHR1cm5pbmcgaXQgb2ZmIGFuZCBzZWUg
aWY8L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDog
MS40MzsiPiZndDsgdGhhdCBoZWxwcy48L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAs
IDAsIDApOyBsaW5lLWhlaWdodDogMS40MzsiPjxiciAgLz48L2Rpdj48ZGl2IHN0eWxlPSJj
b2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS40MzsiPkVtbSwgSSB0aGluayBz
byB0b28uIEkgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0gd2l0aCBFbWFjcyBvcGVuZWQgaW48
L2Rpdj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS40
MzsiPipjb25ob3N0LmV4ZSosIGJ1dCBpdCBleGlzdHMgaW4gKldpbmRvd3MgVGVybWluYWwq
LjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGxpbmUtaGVpZ2h0OiAx
LjQzOyI+PGJyICAvPjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGxp
bmUtaGVpZ2h0OiAxLjQzOyI+VGhhbmtzIGZvciB0aGUgdGlwLjwvZGl2Pg==
------=_NextPart_68E5383C_62D4E520_4E3C4BB6--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 14:51:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 10:51:49 2025 Received: from localhost ([127.0.0.1]:58545 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v692b-0001JD-1Q for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 10:51:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45854) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v692T-0001IW-I9 for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 10:51:45 -0400 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 1v692K-0007Pu-Jl; Tue, 07 Oct 2025 10:51:33 -0400 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=30Si0TXdDqTr1M0SPgycYBJltWcAuvpRpLT50WZXjnE=; b=mysAL6PVyYBof8jhz0kB OmC+6oftAd6rvaE0GTXERgsA3grkN5S1qCgSP6RTBL709CFyscwyewg9a/nfA7IupLseBGSLS6QS4 yFSGLVhO6F3Rv3de/wbBrvxmSsyta9F+LQ806HrniGnNcDe/R/LNavJt7DW+AktJpTOkIhSEzrfIe Q9bfWL5+DiDcXu7A0fHS+qb0WaSFW3WEjlh8D4a3vNIij56wI9Sqx1WWbRQfFEGFeVE6SdmTcMzi1 uXaAXfcCMijKb3pNNZaq9iARUOFh/wNeOiDpxpNrU1M0ksraSJbfN2w6GYWlsJA5FNXl16bDbsbun Ezzeys1c7W3x8w==; Date: Tue, 07 Oct 2025 17:51:27 +0300 Message-Id: <861pnedats.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> <865xcrca39.fsf@HIDDEN> <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Tue, 7 Oct 2025 20:07:40 +0800 > > Of course, a simple example is when you start Emacs in the terminal, you > can check the help documentation for the option `cursor-type' by using > `C-h v cursor-type'. The final part of its documentation looks like this: > > ------------------------>8<------------------------------- > When the buffer is displayed in a non-selected window, the > cursor’s appearance is instead controlled by the variable > ‘cursor-in-non-selected-windows’. > > >  Automatically becomes buffer-local when set. >  You can customize this variable. >  Probably introduced at or before Emacs version 21.1. > ------------------------>8<------------------------------- > > The reason I discovered this issue is that when the *Help* buffer pops > up, the window is split vertically (top and bottom), which prevents the > window size from displaying the full content of the documentation. > > When you use C-n (next-line) to move down to the bottom, the content you > see might look like this (the following content may require a monospace > font to achieve the desired display effect):" > > ------------------------>8<------------------------------- > When the buffer is displayed in a non-selected window, the > cursor’s appearance is instead controlled by the variablhe > ‘cursor-in-non-selected-windows’.            he >                             he >  Automatically becomes buffer-local when set.      he >  You can customize this variable.            he >  Probably introduced at or before Emacs version 21.1.  he > ------------------------>8<------------------------------- > > or like this: > > ------------------------>8<------------------------------- > When the buffer is displayed in a non-selected window, the > cursor’s appearance is instead controlled by the variablhe > ‘cursor-in-non-selected-windows’.nt >                   >  Automatically becomes buffer-local when set.     >  You can customize this variable.          >  Probably introduced at or before Emacs version 21.1. > ------------------------>8<------------------------------- This means some parts of the window are not cleared as they should. > > Do you see the same problems in an unpatched Emacs from the master > > branch? > > After removing the patch and recompiling the master branch, I > encountered the same issue. Then I think this is something specific to your system, because I definitely don't see it here. If you have some "display optimization" of your video driver software turned on, try turning it off and see if that helps. Thanks.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 14:48:05 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 10:48:05 2025 Received: from localhost ([127.0.0.1]:58528 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v68yy-00017j-Jl for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 10:48:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56650) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v68yu-00017B-1S for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 10:48:01 -0400 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 1v68ym-0006wQ-9b; Tue, 07 Oct 2025 10:47:52 -0400 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=VVBovTynLsqnG8nJNZpG7xHknFc2bwJ0IFtdZYgd21I=; b=KlbfChOdh4a9a4/Iial9 QMvwogRLxQKpfqZL9XwKAbbeDTbIhig2nYQbksZab1CbnYcwlosjA07ZBGPwS/lg1qdyJdqjo6LBb Huwx50WxI822jadJBRF29a/TSe6H691lyjM3WUXsktXG8hGm9z6P3EMKooodFNOXmtvJOJcTMiAdP hDi1/imNaQ4D63b2w4Fm2suKdrqDEPHlp46yukyaxzeO9mIkFuvacoq6mrQzkY4qtJ4GgfqLj5qsx Y/M9f+0A6jDUjxvzOnLwkX9wF7CnCXZcLXutH3da1dpzXTudm8eJNlvWbkkKiQ0hzVjAMQCCmcXr4 4S70/klaBwxxmA==; Date: Tue, 07 Oct 2025 17:47:48 +0300 Message-Id: <86347udazv.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?iso-8859-1?Q?Sebasti=E1n_Mon=EDa?= <sebastian@HIDDEN> In-Reply-To: <thqnfrbuhqg1.fsf@HIDDEN> (message from =?iso-8859-1?Q?Sebasti=E1n_Mon=EDa?= on Tue, 07 Oct 2025 08:00:30 -0400) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <thqnfrbuhqg1.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: 79298 Cc: ewan@HIDDEN, 79298 <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: Sebastián Monía <sebastian@HIDDEN> > Cc: ewan@HIDDEN, 79298 <at> debbugs.gnu.org > Date: Tue, 07 Oct 2025 08:00:30 -0400 > > Eli Zaretskii <eliz@HIDDEN> writes: > > > Are you saying you saw the cursor flickering even after applying the > > second patch (which was supposed to prevent that)? > > I applied both patches indeed, but... > > > The flickering that I was talking about is the occasional appearance > > of the cursor at the left corner of the echo-area. For me, it > > disappeared after applying the second patch. > > ...that is not what I see! so the patch fixed it :) > > The cursor has "extra blinks in-place" when typing in the minibuffer. When you type in the minibuffer, the cursor is supposed to be where you type, i.e. also in the minibuffer, at the end of the text that you have already typed. Is that where it blinks, or does it blink in some other place on the frame? > I was thinking just now, I don't use the Terminal app regularly, so it > might be a normal behaviour in it. I was testing it some more, and > typing in general has the cursor blinking/flashing like that. > So maybe it is nothing. The text-mode cursor blinks twice a second on Windows, and that's independent from Emacs. It could blink more frequently as you type, because we turn the cursor off when redisplaying, and typing involves showing the characters you type. So if this is what you see, it's normal, and is not related to the patch. You can also compare with the unpatched Emacs.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 12:08:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 08:08:14 2025
Received: from localhost ([127.0.0.1]:57085 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v66UH-0005Tf-Pd
for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 08:08:14 -0400
Received: from out203-205-221-173.mail.qq.com ([203.205.221.173]:44943)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v66U7-0005Sr-9K
for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 08:08:09 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1759838861; bh=HZqb/av65Jh1SFSVO6Rir7yBW5Y57D5851pjTYO04a8=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=Gr24Y0yrER0GP+L7Wxysfuf+/m4o1hmQ1ceiLv/m0BYeNhk6mhama0rLFhTzGyg+S
bP/IDEOMcsZMKgXDtHidhKuyKJSrTPv+nhvL+AseaW7Qkt+KCkRShcQ1M9wLOsqfj4
LqwYvS4gIXie4hl7auSMy7bPTAZ9TfzCDJ3sVMnc=
X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0=
X-QQ-XMAILINFO: OQac6g2KrvnWWX3nG4ynvkDs12sXin2qNMo3NHGCryVgGOg8CGdTVv+nNWPbtJ
gyv30Z2ox4vjSgprbw6gGCW1rlt95ix71fxNvYGsNOslE1xt4lwKPsUI84wvNp4irxz3bpISkggaQ
wxTz8RPAv4Lx5b7aN6svOByG3hxShpDHi85fcMdhHexZ1vg6zGI35GoMF4kOhT8o7gRKqlBMJ93RY
AXTRAHHYlL5G9RDkFaS0PL9ULcSuH6/kD9kovK4FqT9vsFDmK4FYIxnmTOXHm3PKVEgQIN3bMrnAA
qwti3z9nZZfKvjCxqNQXamkrSRTHlop7V20aQz4a2rS42ZPYFdQzwEUEfpGyqvwN6q747mZEOcE3W
IVCp6YAJCgvStkZ/CONOu4zYd0Sbo1Bw+Y8Cbhlb1dUmH1hoxrOmhlrWPYKYpB4OM4lDBPkGVTxpb
GBsruX8r39EJtfLUvGW/blvX87m55mf8Hp9NIVZM+Z8WHKbeiPCnN+kKCvPydWsjOHCsqbQo25efG
F2Vt+rd881Nc7ZUqMU6YuCjgMswUvPa7jSVG0JnIcoTrfw9Qq5SVstOLFsep44nzvT9Jh0NpwdFIt
T4jUXWM/jv1Ic24ZiO6B5qZ7Tm/BfmSKw/RwzDamOUVZzHir6NBoyqm0yGSs6F8BI0/MMT4MHNSp4
3XeCv6H914sqT9FSIeknfO5k7E8I8pYqQKJO1JEtpqn9jhxeFirmtFs0MpP5wkUu+MfCLICu/TKmc
BLhhORYY5L83Il6Zlj+tLiQR7A0L0GgAZFXkOhQfAefa0BO3ImlEtek5S/BmhV/33MPpdLW0hPAW3
lOtusNi2WkDnBvHITx1WHFzm4cJYt5CTyGEzlAZXrrKSSic0ygdVaHhd4QnhzqTFaW9bVjM3yoKUV
ZyLlFO9aEjgi0JDFyvC/rCsXp6QUG6RdLZCOxtegMSNIFui3ekMfUnA8zGmUrIMU2CQ2ayqtXuyO9
TyMv0/h5zsJNN2kOFKJa+2b/tXGGYJwdMpj/T8DG6jebil3ha6ApwpL8GlLjfB3xOr5Nwb2GNfcvN
wgonYFKUt21BDs5hqTokc1QRJOm9yhDiZtZjYrm6hXViG03T9rk61X7TvxUoWlkMX/MrT
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Tue, 7 Oct 2025 20:07:40 +0800
X-Priority: 3
Message-ID: <tencent_BAAF68292FA22138BF395DBCEBC1B11F670A@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
<tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
<865xcrca39.fsf@HIDDEN>
In-Reply-To: <865xcrca39.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1759838860t1u8zgvni
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: >> When I move up or down in a help buffer for a function
or variable, some >> characters on one line will `ghost' or `trail' onto the
next or previous >> line. However, this phenomenon occurs even wh [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in bl.score.senderscore.com]
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in sa-accredit.habeas.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [203.205.221.173 listed in list.dnswl.org]
0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
[203.205.221.173 listed in wl.mailspike.net]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: >> When I move up or down in a help buffer for a function
or variable, some >> characters on one line will `ghost' or `trail' onto the
next or previous >> line. However, this phenomenon occurs even wh [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in sa-accredit.habeas.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[203.205.221.173 listed in list.dnswl.org]
0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
[203.205.221.173 listed in wl.mailspike.net]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[203.205.221.173 listed in bl.score.senderscore.com]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
Pj4gV2hlbiBJIG1vdmUgdXAgb3IgZG93biBpbiBhIGhlbHAgYnVmZmVyIGZvciBhIGZ1bmN0
aW9uIG9yIHZhcmlhYmxlLCBzb21lCj4+IGNoYXJhY3RlcnMgb24gb25lIGxpbmUgd2lsbCBg
Z2hvc3QnIG9yIGB0cmFpbCcgb250byB0aGUgbmV4dCBvciBwcmV2aW91cwo+PiBsaW5lLiBI
b3dldmVyLCB0aGlzIHBoZW5vbWVub24gb2NjdXJzIGV2ZW4gd2hlbiB0aGUgbmV3bHkgYWRk
ZWQKPj4gdnRlcm1pbmFsIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuCj4+Cj4+IFRoaXMgc3Vn
Z2VzdHMgdGhlIGlzc3VlIGlzIGxpa2VseSB1bnJlbGF0ZWQgdG8gdGhlIHBhdGNoIGFuZCBt
aWdodCBiZQo+PiBhc3NvY2lhdGVkIHdpdGggdGhlIG5vbi1ncmFwaGljYWwgaW1wbGVtZW50
YXRpb24gb24gV2luZG93cy4KPgo+IENhbiB5b3UgZGVzY3JpYmUgaW4gbW9yZSBkZXRhaWwg
aG93IHRoZXNlIGFydGlmYWN0cyBsb29rIGxpa2UgYW5kCj4gd2hlcmUgaW4gdGhlIHdpbmRv
dyAod2hpY2ggbGluZSkgZG8gdGhleSBhcHBlYXI/IMKgQW5kIGhvdyBkbyB5b3UgbW92ZQo+
IGluIHRoZSAqSGVscCogYnVmZmVyLCBleGFjdGx5LCB0byB0cmlnZ2VyIHRoZW0/CgpPZiBj
b3Vyc2UsIGEgc2ltcGxlIGV4YW1wbGUgaXMgd2hlbiB5b3Ugc3RhcnQgRW1hY3MgaW4gdGhl
IHRlcm1pbmFsLCB5b3UKY2FuIGNoZWNrIHRoZSBoZWxwIGRvY3VtZW50YXRpb24gZm9yIHRo
ZSBvcHRpb24gYGN1cnNvci10eXBlJyBieSB1c2luZwpgQy1oIHYgY3Vyc29yLXR5cGUnLiBU
aGUgZmluYWwgcGFydCBvZiBpdHMgZG9jdW1lbnRhdGlvbiBsb29rcyBsaWtlIHRoaXM6Cgot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+ODwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCldoZW4gdGhlIGJ1ZmZlciBpcyBkaXNwbGF5ZWQgaW4gYSBub24tc2VsZWN0ZWQgd2lu
ZG93LCB0aGUKY3Vyc29y4oCZcyBhcHBlYXJhbmNlIGlzIGluc3RlYWQgY29udHJvbGxlZCBi
eSB0aGUgdmFyaWFibGUK4oCYY3Vyc29yLWluLW5vbi1zZWxlY3RlZC13aW5kb3dz4oCZLgoK
CsKgIEF1dG9tYXRpY2FsbHkgYmVjb21lcyBidWZmZXItbG9jYWwgd2hlbiBzZXQuCsKgIFlv
dSBjYW4gY3VzdG9taXplIHRoaXMgdmFyaWFibGUuCsKgIFByb2JhYmx5IGludHJvZHVjZWQg
YXQgb3IgYmVmb3JlIEVtYWNzIHZlcnNpb24gMjEuMS4KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tPjg8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIHJlYXNvbiBJIGRp
c2NvdmVyZWQgdGhpcyBpc3N1ZSBpcyB0aGF0IHdoZW4gdGhlICpIZWxwKiBidWZmZXIgcG9w
cwp1cCwgdGhlIHdpbmRvdyBpcyBzcGxpdCB2ZXJ0aWNhbGx5ICh0b3AgYW5kIGJvdHRvbSks
IHdoaWNoIHByZXZlbnRzIHRoZQp3aW5kb3cgc2l6ZSBmcm9tIGRpc3BsYXlpbmcgdGhlIGZ1
bGwgY29udGVudCBvZiB0aGUgZG9jdW1lbnRhdGlvbi4KCldoZW4geW91IHVzZSBDLW4gKG5l
eHQtbGluZSkgdG8gbW92ZSBkb3duIHRvIHRoZSBib3R0b20sIHRoZSBjb250ZW50IHlvdQpz
ZWUgbWlnaHQgbG9vayBsaWtlIHRoaXMgKHRoZSBmb2xsb3dpbmcgY29udGVudCBtYXkgcmVx
dWlyZSBhIG1vbm9zcGFjZQpmb250IHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgZGlzcGxheSBl
ZmZlY3QpOiIKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44PC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KV2hlbiB0aGUgYnVmZmVyIGlzIGRpc3BsYXllZCBpbiBhIG5vbi1z
ZWxlY3RlZCB3aW5kb3csIHRoZQpjdXJzb3LigJlzIGFwcGVhcmFuY2UgaXMgaW5zdGVhZCBj
b250cm9sbGVkIGJ5IHRoZSB2YXJpYWJsaGUK4oCYY3Vyc29yLWluLW5vbi1zZWxlY3RlZC13
aW5kb3dz4oCZLiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZQrCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZQrCoCBBdXRvbWF0aWNhbGx5IGJlY29tZXMgYnVm
ZmVyLWxvY2FsIHdoZW4gc2V0LiDCoCDCoCDCoCDCoCDCoGhlCsKgIFlvdSBjYW4gY3VzdG9t
aXplIHRoaXMgdmFyaWFibGUuIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaGUK
wqAgUHJvYmFibHkgaW50cm9kdWNlZCBhdCBvciBiZWZvcmUgRW1hY3MgdmVyc2lvbiAyMS4x
LiDCoGhlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44PC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KCm9yIGxpa2UgdGhpczoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44
PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KV2hlbiB0aGUgYnVmZmVyIGlzIGRp
c3BsYXllZCBpbiBhIG5vbi1zZWxlY3RlZCB3aW5kb3csIHRoZQpjdXJzb3LigJlzIGFwcGVh
cmFuY2UgaXMgaW5zdGVhZCBjb250cm9sbGVkIGJ5IHRoZSB2YXJpYWJsaGUK4oCYY3Vyc29y
LWluLW5vbi1zZWxlY3RlZC13aW5kb3dz4oCZLm50CsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgCsKgIEF1dG9tYXRpY2FsbHkgYmVjb21l
cyBidWZmZXItbG9jYWwgd2hlbiBzZXQuIMKgIMKgIMKgIMKgCsKgIFlvdSBjYW4gY3VzdG9t
aXplIHRoaXMgdmFyaWFibGUuIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgCsKgIFByb2Jh
Ymx5IGludHJvZHVjZWQgYXQgb3IgYmVmb3JlIEVtYWNzIHZlcnNpb24gMjEuMS4KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPjg8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK
T2YgY291cnNlLCB0aGUgKkhlbHAqIHdpbmRvdyBtaWdodCBhY3R1YWxseSBwb3AgdXAgYXMg
YSBob3Jpem9udGFsCihsZWZ0L3JpZ2h0KSBzcGxpdC4gVGhlcmVmb3JlLCBhIHNpbXBsZXIg
d2F5IHRvIHJlcHJvZHVjZSB0aGUgaXNzdWUKbWlnaHQgYmUgdG8gbWFudWFsbHkgcGVyZm9y
bSBhIHZlcnRpY2FsICh0b3AvYm90dG9tKSBzcGxpdCwgdGhlbiB1c2UKQy14IFsgKGJhY2t3
YXJkLXBhZ2UpIHRvIG1vdmUgdG8gdGhlIHRvcCBvZiB0aGUgKkhlbHAqIGJ1ZmZlciwgYW5k
CnN1YnNlcXVlbnRseSB1c2UgQy1uIHRvIHNjcm9sbCBkb3dud2FyZHMgdW50aWwgeW91IHJl
YWNoIHRoZSBib3R0b20uCgpZb3UgbWlnaHQgbmVlZCB0byB1c2UgKHNldG9wdCBzY3JvbGzi
iJJzdGVwIDEpIHRvIGFjaGlldmUgYSBzbW9vdGhlcgpzY3JvbGxpbmcgZWZmZWN0LgoKPiBE
byB5b3Ugc2VlIHRoZSBzYW1lIHByb2JsZW1zIGluIGFuIHVucGF0Y2hlZCBFbWFjcyBmcm9t
IHRoZSBtYXN0ZXIKPiBicmFuY2g/CgpBZnRlciByZW1vdmluZyB0aGUgcGF0Y2ggYW5kIHJl
Y29tcGlsaW5nIHRoZSBtYXN0ZXIgYnJhbmNoLCBJCmVuY291bnRlcmVkIHRoZSBzYW1lIGlz
c3VlLgoKClJlZ2FyZHM=
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 12:00:48 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 08:00:48 2025 Received: from localhost ([127.0.0.1]:57075 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v66N5-0005BT-1U for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 08:00:48 -0400 Received: from fhigh-b1-smtp.messagingengine.com ([202.12.124.152]:36549) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <sebastian@HIDDEN>) id 1v66Mw-0005B7-D7 for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 08:00:42 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.stl.internal (Postfix) with ESMTP id 87E5E7A01B7; Tue, 7 Oct 2025 08:00:31 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Tue, 07 Oct 2025 08:00:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sebasmonia.com; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1759838431; x= 1759924831; bh=m49Ym+mc8yFe/DeclNqiiauirFD4Z2fxw8OgxjI2gPc=; b=1 e5TkqGtCM4XFhEyRDcmRdpgYU4+RWveNmX+AUtCV9iUhHhEHK9JgVOpGvbBo/CdD Kg1UFzdySNgFh2PfItkbOZR1dDU7S6y3AmeyIa/ofxkKLLqgDWTb/y9ag01HIiHi aZTpmHTNVBxImyRYNwbohs8QkPO5D7JO5IeOuiTKQQjyiB4M+mS/ZC0vFvUuq8Hk zw1ktHAS++hRpEb9ZlYjHTm1rl8MCuawhH3QR3VDX41yCAMcxLGSvGZCbMbN/AFt JoBnzipT9txzafRp81riuT8u8KKF59U8vP/hoo1/I7WB1uHnzWqWvuOYzYBYtabu 3O+3NeXnA5knb4ymRbU1A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1759838431; x=1759924831; bh=m49Ym+mc8yFe/DeclNqiiauirFD4Z2fxw8O gxjI2gPc=; b=XkFvQZhgKfUWnXkXWh2KqkEdcQvSO6287FNA2vRkf61tfGzfxa6 GiKpUrqH0es2PnMAHRyihhqTr2DtHVKPLViG0XvMnAFE9KKi0hjuhK0IWeuGTuHQ kS85SZFfGs0Jioo82bDuODPzlPdB5ZehxTAjvRuyEM2BjDsh/3HHGxPUmyZipJsA BL2ITtek/fke7Gxv9v2DwtXQpvcf8l7W/iffcTbEhnJzrOdlcNHe7/f4OdhXG5+T vuGc05tDzXjo4e+3rMOyypWLgoxAofwHOx4cHj4D1nvLCPOSw+OEq9MDRY1ODgv3 3AYrguXu4voJnew4yrPlPi+RNd3Lbr/NeHQ== X-ME-Sender: <xms:3wDlaDJ0aWp6f1O55nok6MEAPeJjP-XGeqzuR7lNk1K_Mi0R5NTCHA> <xme:3wDlaOlcNTnrQtjAg5FhTI7-MmQeiocFamhSJNr-MBINP7UTAu_ovQFAy2fTXOHyQ sF4VdoRnXx9SQpT4iZMqV8Nux6JUnGUSdNZZ5WwO3D1hnjygH0utQ> X-ME-Received: <xmr:3wDlaJHtezbZnnM2hjZlWX_x3hAM4F1dE_bUXoY1qz8C2IQ90l6PaDRa7IK6rJNmaF0> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddutddtfeeiucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhephffvvefujghffffkfgggtgesthdtredttderjeenucfhrhhomhepufgvsggrshht ihojnhcuofhonhovrgcuoehsvggsrghsthhirghnsehsvggsrghsmhhonhhirgdrtghomh eqnecuggftrfgrthhtvghrnhepgeeffeejkeeuieevkeeugfeguedvtdevtdelhfdvfeff gfevtddtudeugfeiueelnecuffhomhgrihhnpehsvggsrghsmhhonhhirgdrtghomhenuc evlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehsvggsrghs thhirghnsehsvggsrghsmhhonhhirgdrtghomhdpnhgspghrtghpthhtohepfedpmhhoug gvpehsmhhtphhouhhtpdhrtghpthhtohepjeelvdelkeesuggvsggsuhhgshdrghhnuhdr ohhrghdprhgtphhtthhopegvfigrnhesvghtohifnhdruggvvhdprhgtphhtthhopegvlh hiiiesghhnuhdrohhrgh X-ME-Proxy: <xmx:3wDlaGHwqjKlT3YvuNL2PUVFW_kiHJjsK2oBJSHSU1b5rXl3xPQnSg> <xmx:3wDlaOP6jEg7Cf5Yur_KiGokNhiXCq6GbaMcX-jkLMaXQQWKZ5otnw> <xmx:3wDlaNFFRLse0cZJOj_KVeVwi9kwTBRJTbGAA456_MPyYotyVVlsJQ> <xmx:3wDlaNOJShuhU2ho0CFo058ow8tPBFQEiOCE1sRsvEiEAmm6XAuHfg> <xmx:3wDlaI-j6eBzy-fihup2-YzH6vJdj2b_PNz-eUJ7TqWyPZdk7-y6kDLt> Feedback-ID: iab2c46da:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 7 Oct 2025 08:00:30 -0400 (EDT) From: =?utf-8?Q?Sebasti=C3=A1n_Mon=C3=ADa?= <sebastian@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal In-Reply-To: <86bjmjck4a.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> Date: Tue, 07 Oct 2025 08:00:30 -0400 Message-ID: <thqnfrbuhqg1.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: 79298 Cc: ewan@HIDDEN, 79298 <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 (-) Eli Zaretskii <eliz@HIDDEN> writes: > Are you saying you saw the cursor flickering even after applying the > second patch (which was supposed to prevent that)? I applied both patches indeed, but... > The flickering that I was talking about is the occasional appearance > of the cursor at the left corner of the echo-area. For me, it > disappeared after applying the second patch. ...that is not what I see! so the patch fixed it :) The cursor has "extra blinks in-place" when typing in the minibuffer. I recorded a video, but it is a 28 MB mp4 file. Should probably convert it to gif or something. I was thinking just now, I don't use the Terminal app regularly, so it might be a normal behaviour in it. I was testing it some more, and typing in general has the cursor blinking/flashing like that. So maybe it is nothing. -- Imagination will often carry us to worlds that never were. But without it we go nowhere. - Carl Sagan https://site.sebasmonia.com/
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 09:53:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 05:53:00 2025 Received: from localhost ([127.0.0.1]:56772 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v64NP-0002FU-T1 for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 05:53:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33234) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v64NN-0002FH-R0 for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 05:52:58 -0400 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 1v64ND-0003Qd-6j; Tue, 07 Oct 2025 05:52:50 -0400 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=ELXnKXJADHoDrpl5Y98NvPa4ECPIbXcI7OqvURD5YkM=; b=YoRFXV58s+7S BfPp4AOmND7mCnJhEkMD5QagOVgwbO3gv672xZ+bPTbjl5qsPX115MTtAvdbgqAQo9jEM84yox1ty hIwETmI65Z+ilM1dwyd+GZ+SPKDardIzFxk0nMTRbH+2WXJyE7tanE+MGVP04MJ2cmNg4noKgaD80 9RBZVMB4PBWr34JTonkegwwlGLUiS+Fdm4uySQMzYSXwYqI+QMTx78sbLDL2CtMd/IRQzjw+6WQjY C2OFSBSvOWEIw/15HAr8dbWggzJj9XOjhlBQfDlJ9u9RllBX4SHeP6CRVnOu6jKMEyR687ixs+SUK bMP9/6CKgA4wO8QLTNmN+g==; Date: Tue, 07 Oct 2025 12:52:42 +0300 Message-Id: <865xcrca39.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: "Yue Yi" <include_yy@HIDDEN> In-Reply-To: <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> (include_yy@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> <86bjmjck4a.fsf@HIDDEN> <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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: "Yue Yi" <include_yy@HIDDEN> > Cc: "ewan" <ewan@HIDDEN>, "79298" <79298 <at> debbugs.gnu.org> > Date: Tue, 7 Oct 2025 15:39:52 +0800 > > I tested these two patches on Windows 11 using the latest main branch > 7f925b0. Everything works fine in the terminal and looks good. Thanks for the feedback. > When I move up or down in a help buffer for a function or variable, some > characters on one line will `ghost' or `trail' onto the next or previous > line. However, this phenomenon occurs even when the newly added > vterminal support is not enabled. > > This suggests the issue is likely unrelated to the patch and might be > associated with the non-graphical implementation on Windows. Can you describe in more detail how these artifacts look like and where in the window (which line) do they appear? And how do you move in the *Help* buffer, exactly, to trigger them? Do you see the same problems in an unpatched Emacs from the master branch?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 07:45:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 03:45:14 2025
Received: from localhost ([127.0.0.1]:56612 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v62Nm-0003Ba-CE
for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 03:45:14 -0400
Received: from out162-62-58-211.mail.qq.com ([162.62.58.211]:32797)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <include_yy@HIDDEN>) id 1v62Nh-00034h-AS
for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 03:45:12 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;
t=1759822793; bh=KZ827h7mWnmcW+YB1YOF/5HmNE6F3DImzGdqBZxrlvk=;
h=From:To:Cc:Subject:Date:References:In-Reply-To;
b=bJddyYZENcszfxrSLYlcVd0CZeJHS4s6QJZ9y/lASZA4uqZy2Yfxdv9u785ikFiW4
u7eKPPDczGZEOkIjihW1SYLGvLzlBL6ua47t3fIVtWWfvyYdHeQVBOroNZ79aXNkN/
vX6sd7aGhaomhqBkh6gdnqZ53/yaaaUoI74aYBm0=
X-QQ-XMRINFO: NV153Ut7BKVGqje6viCZjP4=
X-QQ-XMAILINFO: N55iztL8edgQ7JngejUbIg2zhU4owmtSowcUOrVX3bWhBbKuurOXWFWqBvfc1o
eU7OVcH6yG4eKHeemZYdyNMV6dKa6kgmp6C2BaWQbmqJdTfbylvMApvikX+sdgtLjGd7zTffVqhbD
3hR85t6R6ajkep72f5RM4hjNsYIJI7oXwzVIft6h+G+4WXNO8cQlSUY3wk5d3JWuE5vtxmUFLseqk
U87L+ADXR+5ja5NLrCx1VTFMMRPoSgdOEM61VvgJ+yxsfV1jy4rtteFo0ZucZnwG2cvk0Y4qYjjjB
5t/geV22FCdzqmzUwmT8DBjOPZmDatANpBxk6yUI2aIauj+wSeBgTjWyxTl2ZeBEW1rCl9spKPssh
jzdmbMR/Xlqm9lZS6Fmb/BzDRZylwfzxHQnYHgkPhvyiE8T7aiEuPInufF1hgu1Lg9uIyAG0sD2wI
vBvHhpkh7X6xK3+nKenWXOE2xTyyqjAUYqZbV96NMjW0OTtBnyiwLIzQEkYMy3SCtCHmJ6RgNHyGV
1pGyvuqnIK8d9prU27e/++gGqg4LdWSiFlHdIMRbvoIIlfSsNVmQUyd4rHg6wD+TKKpawbeZ/bybm
z8d8pF5zeBlhYfJId17/HgJcexzw71ZRny5xyeMgVZwreEuMc3dUO5u//TlCMnQJAG883SUZgDCIy
nK2cQWSEDJJAKxAX4WIengzdZBIUfEbUW2SHfX+aQKQ2qmuT3oFitXAe29YGJc56XK6Scjz23KZ+s
FmueIE39J4IyY48gviG5UsjsQWIgzZWRRA7RppnJBgnZCuKUmarV+StXh9kTXCMdTwUBsrAWlLatM
esIco3YN2OKbC1ZYx2vWwkKT3SF0o9sGLUqp2rrQUkXsS65T4XKvTibB6oM8hOwYHUUb99zFng8LQ
CpRclgyfni74EQzjIMYOEjt64zgM+7YUN99IPrx6cXMFZ7xTUMYut4Wqwc4ZFZ8dH6n8MM1vBkTRa
r/6fWiHF7p2W5o5aItgONOmKs557WiJHEaBaAD6O1k4Z10seKwgHWrxWJ3tRk7HKtvPa+6+7kjv4Z
hVSZUMnnGaZCQyLTB0utc/yVu4KopmjcMyAobf6GalH6NSWQSBP8Xpc3LrZ1mvbE8f3Tw
From: "=?utf-8?B?WXVlIFlp?=" <include_yy@HIDDEN>
To: "=?utf-8?B?RWxpIFphcmV0c2tpaQ==?=" <eliz@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Mime-Version: 1.0
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
Date: Tue, 7 Oct 2025 15:39:52 +0800
X-Priority: 3
Message-ID: <tencent_6CB5F2091AA773B493C1FB1A9CC531C3CA06@HIDDEN>
X-QQ-MIME: TCMime 1.0 by Tencent
X-Mailer: QQMail 2.x
X-QQ-Mailer: QQMail 2.x
References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN>
<86bjmjck4a.fsf@HIDDEN>
In-Reply-To: <86bjmjck4a.fsf@HIDDEN>
X-QQ-mid: xmseza31-0t1759822792tgfdfb1lc
X-Spam-Score: 3.6 (+++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > In bug#79298, we discuss changes for adding 24-bit True
Color support > for Emacs TTY frames on MS-Windows. Would people who use Emacs
on > Windows (versions 10 and later) please try the patch there [...]
Content analysis details: (3.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in sa-accredit.habeas.com]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in bl.score.senderscore.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [162.62.58.211 listed in list.dnswl.org]
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.58.211 listed in wl.mailspike.net]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
X-Debbugs-Envelope-To: 79298
Cc: =?utf-8?B?ZXdhbg==?= <ewan@HIDDEN>,
=?utf-8?B?NzkyOTg=?= <79298 <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: 2.6 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: > In bug#79298, we discuss changes for adding 24-bit True
Color support > for Emacs TTY frames on MS-Windows. Would people who use Emacs
on > Windows (versions 10 and later) please try the patch there [...]
Content analysis details: (2.6 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
The query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in sa-accredit.habeas.com]
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[162.62.58.211 listed in list.dnswl.org]
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[162.62.58.211 listed in wl.mailspike.net]
0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
query to Validity was blocked. See
https://knowledge.validity.com/hc/en-us/articles/20961730681243
for more information.
[162.62.58.211 listed in bl.score.senderscore.com]
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (include_yy[at]qq.com)
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
0.0 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager
3.2 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP
addr 1)
PiBJbiBidWcjNzkyOTgsIHdlIGRpc2N1c3MgY2hhbmdlcyBmb3IgYWRkaW5nIDI0LWJpdCBU
cnVlIENvbG9yIHN1cHBvcnQKPiBmb3IgRW1hY3MgVFRZIGZyYW1lcyBvbiBNUy1XaW5kb3dz
LiAgV291bGQgcGVvcGxlIHdobyB1c2UgRW1hY3Mgb24KPiBXaW5kb3dzICh2ZXJzaW9ucyAx
MCBhbmQgbGF0ZXIpIHBsZWFzZSB0cnkgdGhlIHBhdGNoIHRoZXJlIGFuZCBwcm92aWRlCj4g
ZmVlZGJhY2sgYW5kIGNvbW1lbnRzLCBiZWZvcmUgd2UgZ28gYWhlYWQgYW5kIGluc3RhbGwg
aXQgb24gdGhlIG1hc3Rlcgo+IGJyYW5jaD8KPiAKPiBUaGUgbGFzdCB2ZXJzaW9uIG9mIHRo
ZSBwYXRjaCBpcyBpbgo+IGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQu
Y2dpP2J1Zz03OTI5OCMxMTIsIHdoaWNoIGFsc28KPiBpbmNsdWRlcyBhIGZvbGxvd3VwIHBh
dGNoIHRvIHByZXZlbnQgZmxpY2tlcmluZyBjdXJzb3IgaW4gdGhlCj4gZWNoby1hcmVhLgoK
SSB0ZXN0ZWQgdGhlc2UgdHdvIHBhdGNoZXMgb24gV2luZG93cyAxMSB1c2luZyB0aGUgbGF0
ZXN0IG1haW4gYnJhbmNoCjdmOTI1YjAuIEV2ZXJ5dGhpbmcgd29ya3MgZmluZSBpbiB0aGUg
dGVybWluYWwgYW5kIGxvb2tzIGdvb2QuCgpXaGlsZSBJIHVzdWFsbHkgdXNlIEVtYWNzIGlu
IGEgR1VJLCBpdCdzIG5pY2UgdG8gYmUgYWJsZSB0byBzZWUgYQpjb2xvcmZ1bCB2ZXJzaW9u
IGluIHRoZSB0ZXJtaW5hbCBhcyB3ZWxsLgoKV2hlbiBJIG1vdmUgdXAgb3IgZG93biBpbiBh
IGhlbHAgYnVmZmVyIGZvciBhIGZ1bmN0aW9uIG9yIHZhcmlhYmxlLCBzb21lCmNoYXJhY3Rl
cnMgb24gb25lIGxpbmUgd2lsbCBgZ2hvc3QnIG9yIGB0cmFpbCcgb250byB0aGUgbmV4dCBv
ciBwcmV2aW91cwpsaW5lLiBIb3dldmVyLCB0aGlzIHBoZW5vbWVub24gb2NjdXJzIGV2ZW4g
d2hlbiB0aGUgbmV3bHkgYWRkZWQKdnRlcm1pbmFsIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQu
CgpUaGlzIHN1Z2dlc3RzIHRoZSBpc3N1ZSBpcyBsaWtlbHkgdW5yZWxhdGVkIHRvIHRoZSBw
YXRjaCBhbmQgbWlnaHQgYmUKYXNzb2NpYXRlZCB3aXRoIHRoZSBub24tZ3JhcGhpY2FsIGlt
cGxlbWVudGF0aW9uIG9uIFdpbmRvd3Mu
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 7 Oct 2025 06:16:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 07 02:16:19 2025 Received: from localhost ([127.0.0.1]:56395 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v60zi-0005BW-HX for submit <at> debbugs.gnu.org; Tue, 07 Oct 2025 02:16:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34398) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v60zg-0005B1-0D for 79298 <at> debbugs.gnu.org; Tue, 07 Oct 2025 02:16:16 -0400 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 1v60zY-0006vX-Hy; Tue, 07 Oct 2025 02:16:09 -0400 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=0NRrqhC7zVaYeTH0TCb8y6B6pnSMyl7KX4WemgG48S4=; b=k0zFWRPajzNHW3ItPIab YO2IPiJXtTRJrvmLtTZ+owR76Mbch9CEVmxcFHONpkGWTDza03YpZAZYh1iO9HvmiGcnqvyZjhkpq n3RZKSK83b/jq+Cnv8FOlCGjF9yS2f4PIHNPIiy1GpHFVjV/1F0xcJfsQ3+sKFvnypk09prxyMVgw boB8DLh14R77SbZdQVI94L+/HrRScXGWX9TDr/VHBTBKmN2nd8rJ3yOrk4tKCn6W41DDcVO5yTDdy c281lPhqmctD0Hb4tmSVDxaprtwbiHvbNAE3UbiRavG7e49/bsSK43kIm2/eeP7PuXcjXd8UTIJ+A A7YdfO1ZUxaQXA==; Date: Tue, 07 Oct 2025 09:16:05 +0300 Message-Id: <86bjmjck4a.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?Sebasti=C3=A1n_Mon=C3=ADa?= <sebastian@HIDDEN> In-Reply-To: <thqno6qjhiiu.fsf@HIDDEN> (sebastian@HIDDEN) Subject: Re: bug#79298: patch: full color in windows terminal References: <thqntt0bhl4x.fsf@HIDDEN> <thqno6qjhiiu.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: ewan@HIDDEN, 79298 <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 (---) > Cc: 79298 <at> debbugs.gnu.org > From: Sebastián MonÃa > <sebastian@HIDDEN> > Date: Mon, 06 Oct 2025 16:39:21 -0400 > > I just compiled using the patches shared here. > > I can confirm I can see all colors in the picker when trying > customize-face. I also noticed some flickering of the cursor in the > minibuffer, which from what I saw in the patch was a problem. > > It is less noticeable in mintty than in Terminal, but it is there in > both. Thanks for the feedback. Are you saying you saw the cursor flickering even after applying the second patch (which was supposed to prevent that)? The flickering that I was talking about is the occasional appearance of the cursor at the left corner of the echo-area. For me, it disappeared after applying the second patch.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 6 Oct 2025 20:39:32 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Oct 06 16:39:32 2025 Received: from localhost ([127.0.0.1]:55307 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v5rzX-00044L-Ts for submit <at> debbugs.gnu.org; Mon, 06 Oct 2025 16:39:32 -0400 Received: from fout-b7-smtp.messagingengine.com ([202.12.124.150]:41215) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <sebastian@HIDDEN>) id 1v5rzU-00043x-Fk for 79298 <at> debbugs.gnu.org; Mon, 06 Oct 2025 16:39:29 -0400 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfout.stl.internal (Postfix) with ESMTP id 902A41D004AB; Mon, 6 Oct 2025 16:39:22 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-04.internal (MEProxy); Mon, 06 Oct 2025 16:39:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sebasmonia.com; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1759783162; x=1759869562; bh=OhQqRxjKIuYqpMvz4fgu7WbHtya511Jo 9z/S/SryKV0=; b=w+YubLoqP1d4D5NV7W3U4HWwvwq0Q5WIfSVVrLC/qe5Xmqry uzU/HXKQwV8bbSk00iNoNXvS42g3kQ6S7EkVVDaQA3do52ZIuJ6EUsycTpkyGfTP Yo5EPy3HPposobYEi2H6YrrcDOIWoF5LfFxYCtvnsVyDNcPk8nX71TqZCq9hCgKK MntzUYLoy/gCD44xh7xxENneA/zNtbHkn6xKHwxPjw8bw/vuT97BMoy/qZ1WWGaj t5nPgYln6a3+aaWho860RcMQZa/7JMYEW5mrHKbax/E7yl2OfUtkeJn10g/Z+ftW dc/peV6fzKiTjNX6dwNtgXhGHlhsEN2oycKSvQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1759783162; x= 1759869562; bh=OhQqRxjKIuYqpMvz4fgu7WbHtya511Jo9z/S/SryKV0=; b=X XToY1CIJFdYVusyJHoaoAO3sSivvm856V9yY2uAIUtMuaELw/Le3jZhCqW9kIuUm ZYR2dKwLVyZLIkhIiZ9A/++TLZYVr+DGTinOnRbJjlq/so28ijVXpXwn6fV3RgMo MK2iYMO+NYOMSFojCoQyzPfWJKqwQ23LMFJlLzC4/xkr5NWk384Q39MX8YSBf4Kn P1zyZUO/P6tDEzPlSboBWa4IzoWPXQNbbIX3YxuvdUE7jcx4HRkFumvSsnNG/v1y mJO0K2cyxvGKGLLf0T2VUSql3X1y4nLRVmKBHB65d+8MeXu/q8Hw5FIfjYw4xv4x BSPwaNi+VeWpoGiBtZoTg== X-ME-Sender: <xms:-ijkaCXCK2g_DTT4hcwFTtwzagQOS2zrEcGEnQ-AThDdM5tIwHyVUw> <xme:-ijkaEmHvpMI6B-vzr1d_z6HPnx-u2K3k5SYYAiqTS18zWW3_EgTZhF9HukP_cFNF zXaObDowxkkeey7BRzTX5Q-7oM0bL7nvtEG4rA927wrQRVQaI1CvoE> X-ME-Received: <xmr:-ijkaEAmQE8jyV8JTDMsh4i2j3MgYkuCJiFsGOJ45Neve4S7ur4SJgX0STb7jtprXm75> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdelkeehvdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecunecujfgurhephffvvefujghffgffkfggtgfgsehtqhertd dtreejnecuhfhrohhmpefuvggsrghsthhijohnucfoohhnvogruceoshgvsggrshhtihgr nhesshgvsggrshhmohhnihgrrdgtohhmqeenucggtffrrghtthgvrhhnpeffkefhleeugf ekleffudetuedvveeuudekueetheffgeffieffieekveduhfeihfenucffohhmrghinhep shgvsggrshhmohhnihgrrdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehmrghilhhfrhhomhepshgvsggrshhtihgrnhesshgvsggrshhmohhnihgrrdgtohhm pdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeejle dvleekseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepvgifrghnsegvthho fihnrdguvghv X-ME-Proxy: <xmx:-ijkaEcSiEvyAoZVzEwt599dvTr1xAIfmjtuqy1ies_gSnwWb9JEmQ> <xmx:-ijkaPIPlr55LuJ0OSWJupAbIWQRBc0hewMwEuFN3FoL9rrjlSyfGg> <xmx:-ijkaHch6CSNwol5wbqR8l6kc4ztMD5Tgq_QExfTU6g7k8RQX5Zp7Q> <xmx:-ijkaG3cLyykTk12VLgrnV2OVHyKUFd_8T3pt43mJlcpS41YWPASjQ> <xmx:-ijkaM4-WKugBgEwquhSfyGxc34_cjZH1tupFI1bjVfGJEWMHxyC1Txl> Feedback-ID: iab2c46da:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 6 Oct 2025 16:39:21 -0400 (EDT) From: =?utf-8?Q?Sebasti=C3=A1n_Mon=C3=ADa?= <sebastian@HIDDEN> To: ewan@HIDDEN Subject: Re: bug#79298: patch: full color in windows terminal In-Reply-To: <thqntt0bhl4x.fsf@HIDDEN> References: <thqntt0bhl4x.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Date: Mon, 06 Oct 2025 16:39:21 -0400 Message-ID: <thqno6qjhiiu.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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 (-) Sending again to the correct address and with debbugs in CC. Sebasti=C3=A1n Mon=C3=ADa <sebastian@HIDDEN> writes: > Hello, > > I just compiled using the patches shared here. > > I can confirm I can see all colors in the picker when trying > customize-face. I also noticed some flickering of the cursor in the > minibuffer, which from what I saw in the patch was a problem. > > It is less noticeable in mintty than in Terminal, but it is there in > both. > I have my cursor set to not blink, if that matters. > > Regards, > Seb --=20 Imagination will often carry us to worlds that never were. But without it we go nowhere. - Carl Sagan https://site.sebasmonia.com/
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 6 Oct 2025 19:43:05 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Oct 06 15:43:05 2025 Received: from localhost ([127.0.0.1]:55257 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v5r6v-0001Po-81 for submit <at> debbugs.gnu.org; Mon, 06 Oct 2025 15:43:05 -0400 Received: from fout-b7-smtp.messagingengine.com ([202.12.124.150]:43477) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <sebastian@HIDDEN>) id 1v5r6r-0001PG-Is for 79298 <at> debbugs.gnu.org; Mon, 06 Oct 2025 15:43:02 -0400 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfout.stl.internal (Postfix) with ESMTP id F1DB01D00056 for <79298 <at> debbugs.gnu.org>; Mon, 6 Oct 2025 15:42:54 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-04.internal (MEProxy); Mon, 06 Oct 2025 15:42:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sebasmonia.com; h=cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm3; t=1759779774; x=1759866174; bh=v/Wc81r4lhS00hoV0UwFvenG41UH5oMd tcKnAqA+iWw=; b=etHtQeIy4Itt5mhk1n8LQ2ij5tAirnFJ8qFgwnbu1TtIzCy+ wdcfGZbPAqODyrj2a1jVdVD8r1lofwTWh88fWqKZCtmW8Db/9PHn2LUN1mSFba9E i4Sea5+FsCLggORxV0NgHkFRMtZq1OJw1dGWaq0DL+PU9crr0KniqiLDKjAEr10N hLahcfRNvNPp1+z1hJ6jPRyozM4He+wrvu7I8D1Guz6RmGAtGP5IbffjHQrgSbA/ C70NB4TWPTBlQf3ZyRVNSGnhLaoaVXeK0Pzt1OETMqt9EuwKw+G+7f9XQoRb5zhK 7qckAMw00DYBC+A5EwpBsbI1KR2CVnN9t9IMNg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1759779774; x= 1759866174; bh=v/Wc81r4lhS00hoV0UwFvenG41UH5oMdtcKnAqA+iWw=; b=J ktqkwOu/uSNAj9pn12i32Kt+HIiBOGOswauGkaZpJT9j68W2focN4u99j3mPBX61 F5jqYOOSqd69Qfi7FfOX+uTCCYRfe7/ZmyNfooHcTJ00ArMxKCf2Dj4fEnBeR8Df YaIIKkhM688kYnTQfw6rTLrSgVu3ynzpRcCJMoLoA19mv7sgDzKoeb3NQxOtiLAX QO+YSVFIp61Y+A9pjUcdc9J/qMf4R11yK9k+zhAPG8kCI/LYiUfapGVAFchw/ZP7 MqP31Be54ph4SFiZJkx7uJsg0ritShW1N1J+pwei/V31JCX/D8QsHJdd6zkzDP/e ra6F+XjRZQJcSeCKN+G5w== X-ME-Sender: <xms:vhvkaNuY3CAEJinCwi-LRKvVT10JGGytpqkHlxWQCnheuFos5rk4eQ> <xme:vhvkaNbrxamdYI84VuXUb5cJReD0lsz4JDqvjUq5E5JqazTW8HiiMWddaVCKw7Hlj TSSoOMBfQTNFxDiEgRIjhpw5Im1kJAJPBAWX1rUNo3PokXBnhwmPBk> X-ME-Received: <xmr:vhvkaGYZkpTkfhANoXFLdQqC9AE-MUt6cIo0aH4toj-qe5reb-7x4LLA-k8-JgoKK5ZD> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdelkeegudcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecunecujfgurhephffvufffkfgfgggtsehttdertddtreejne cuhfhrohhmpefuvggsrghsthhijohnucfoohhnvogruceoshgvsggrshhtihgrnhesshgv sggrshhmohhnihgrrdgtohhmqeenucggtffrrghtthgvrhhnpeeuuddtveeikeetgeevff dujeduveefieehfffhieeiffehffevffehvdeftdehheenucffohhmrghinhepshgvsggr shhmohhnihgrrdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrg hilhhfrhhomhepshgvsggrshhtihgrnhesshgvsggrshhmohhnihgrrdgtohhmpdhnsggp rhgtphhtthhopedupdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeejledvleekse guvggssghughhsrdhgnhhurdhorhhg X-ME-Proxy: <xmx:vhvkaJX1g8vLdRj-_QQCW-W9d-zubPkktD7F9aL0k2XWIwg9UyUIFQ> <xmx:vhvkaN1jVHIKpm3I45aAQRFg_4JWfFdCkOPhjxFH3Bg9TRUcfdnb2A> <xmx:vhvkaAYADvciYKVOBKBGSIV29iP_g4jqz0B69N9mziQGfgLBaNjkpA> <xmx:vhvkaApwgg2wzARji_kAV8wZLlktbWu-QmzkoRWlPismPelLaFTT1A> <xmx:vhvkaOk2-boG9r2pIY3q9izTk3i7iVVjibDWQKzmavdJsSWwcoZYs3lP> Feedback-ID: iab2c46da:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for <79298 <at> debbugs.gnu.org>; Mon, 6 Oct 2025 15:42:54 -0400 (EDT) From: =?utf-8?Q?Sebasti=C3=A1n_Mon=C3=ADa?= <sebastian@HIDDEN> To: 79298 <at> debbugs.gnu.org Subject: Re: bug#79298: patch: full color in windows terminal Date: Mon, 06 Oct 2025 15:42:54 -0400 Message-ID: <thqntt0bhl4x.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 79298 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 (-) Hello, I just compiled using the patches shared here. I can confirm I can see all colors in the picker when trying customize-face. I also noticed some flickering of the cursor in the minibuffer, which from what I saw in the patch was a problem. It is less noticeable in mintty than in Terminal, but it is there in both. I have my cursor set to not blink, if that matters. Regards, Seb -- Imagination will often carry us to worlds that never were. But without it we go nowhere. - Carl Sagan https://site.sebasmonia.com/
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 1 Oct 2025 18:08:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 01 14:08:45 2025 Received: from localhost ([127.0.0.1]:36805 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1v41Ft-0003xE-5E for submit <at> debbugs.gnu.org; Wed, 01 Oct 2025 14:08:45 -0400 Received: from mail-4323.protonmail.ch ([185.70.43.23]:19675) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v41Fm-0003ws-1N for 79298 <at> debbugs.gnu.org; Wed, 01 Oct 2025 14:08:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1759342110; x=1759601310; bh=+298SNsHXeVRA8nwOn4PLDKMKJXfeYwI3Mi67PAImPk=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=AXRVQ6N/XuRak/q4DuYxcflkd3xgPs+SbEjEAv18CK4ceNRRTwWs6YMx9dzGANqB0 1rzebFBYy6nM9RUT+qz4ia9psdhdX+/yGgODUy7elOlyRGeUUz0G8rlyBuJqVVa4An a8F+qPbrpmBjftBfFe/yoWy+8MIGSd85a+SHANeLDDLvWN8ii1ahGW3WG3r2JxBp7A aDkFwfrZJEy5XgL0KSG9Y9Zi2z9xOrtbTb2VLhv0e3SmkXzMktZ+kdIjZqDAT76+g7 f7MQBWVtIvzd4cM8vd00zdRmCgTXNxuKKTpmpUtmpkNjeMQzcfACeOIKkFbM8IHWKl HhsnJdcKP5wSQ== Date: Wed, 01 Oct 2025 18:08:23 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <ovF4GJwWzHBtmMVMggwtj48KRW2u_09X-87lARohlBd4SxRi-SfGXv-OPEPcGHkrN_aGanr-h0RWG5JlBeTWObLprVTLQJex51t4W9_zf78=@etown.dev> In-Reply-To: <86zfaahfii.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev> <86wm61nsuv.fsf@HIDDEN> <aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev> <861po0grbt.fsf@HIDDEN> <cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev> <86qzvs6lwm.fsf@HIDDEN> <9UJtrNaIFnI47rBiAEb05O2V2tV5bY_t7wuYrnvIuMAAgpEb8X_QxsfrwYPaMxV_8mhLnbYOjH5aHgdh-3khO-BGrEUpc1g3brQUpITzKgU=@etown.dev> <86zfaahfii.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: cc1b17fce9b12e3c8f140824373c3a881608aa71 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_mSPV0sEBAfMuCrYGWcflim3sLJsBX2sO8fb5TpNiiY" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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 (-) --b1=_mSPV0sEBAfMuCrYGWcflim3sLJsBX2sO8fb5TpNiiY Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Revised patch attached. > This works for me: >=20 > (declare-function w32-tty-setup-colors "term/w32console" ()) > (defun tty-set-up-initial-frame-faces () > (progn > (when (and (eq system-type 'windows-nt) > (featurep 'term/w32console)) > (w32-tty-setup-colors)) > (let ((frame (selected-frame))) > (frame-set-background-mode frame t) > (face-set-after-frame-default frame)))) >=20 > You may need to delete src/bootstrap-emacs.exe, and maybe also > lisp/faces.elc and lisp/term/w32console.elc, but eventually this > should compile cleanly, and should work as expected. If it works okay > for you (including when creating additional TTY frames), let's go with > the above. This worked for me as well. > > > > --- a/lisp/term/tty-colors.el > > > > +++ b/lisp/term/tty-colors.el > > > > @@ -764,7 +764,8 @@ > > > > (auto . 0) > > > > (ansi8 . 8) > > > > (always . 8) > > > > - (yes . 8)) > > > > + (yes . 8) > > > > + (24bit . 16777216)) > > > > "An alist of supported standard tty color modes and their aliases."= ) > > >=20 > > > Shouldn't 256 be here as well? Otherwise, --color=3D256 will not work= . > > > (I tried that, and it indeed tells Emacs to use only 16 colors.) > >=20 > > I've added '(8bit . 256), for consistency, and since these are both > > only effective on MS-Windows, and set-frame-parameter accepts either > > the alist keys, or the numbers. >=20 >=20 > OK, but after "emacs -Q -nw --color=3D256", I get a session where > display-color-cells reports 256, but "M-x list-colors-display" still > shows only 16 colors. Shouldn't it show 256? Good catch - that was due to a typo. Making "emacs -Q -nw --color=3D8bit" work required fixing the parsing of this command line arg. The previous regex for numerical values matched on any string starting with a number. > > Just load any colored-background theme, e.g. deeper-blue, then watch > > the lower left corner (in the echo area), when moving the cursor > > or typing input into a buffer (the more rapidly, the more pronounced). > > It is specifically an issue when the background is colored > > -- or at least I don't have it otherwise. >=20 >=20 > That's okay: I see similar flickering of the cursor on GNU/Linux in > "emacs -nw", so I think we are okay there. But do you understand why > we show the cursor there although we hide the cursor when displaying? For each display cycle, we hide the cursor in the first call to the terminal-specific write_glyphs function (term->write_glyphs_hook). In dispnew.c, write_matrix calls write_row for the echo area first. When we have colored spaces, we re-write the row every cycle, and=20 write_row moves the cursor to the beginning of the row, before calling=20 the terminal-specific write_glyphs function. So there is a short phase, right at the beginning of each display cycle, where the cursor is visible, and located at the beginning of the echo area row. I've attached an additional patch that handles this in a=20 terminal-agnostic way, basically, trading the flash-in-echo-area for=20 flashing in place, or when the system cursor is configured to blink,=20 just slightly irregular blinking. Up to you whether this is preferable. Neither is optimal. But AFAICT the only way around some visual effect is for Emacs to draw the cursor, and always hide the system cursor. If it would be accepted, I can submit a terminal-agnostic feature after=20 this one, which "draws" the cursor every cycle, by setting a glyph to have= =20 the cursor face, and hides the system cursor always, when e.g.=20 "use-virtual-cursor" is t. This is what I have implemented in the fork that I am using, as I've found it to be the best UX, given the above. --b1=_mSPV0sEBAfMuCrYGWcflim3sLJsBX2sO8fb5TpNiiY Content-Type: application/octet-stream; name=tty-echo-cursor-flicker.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=tty-echo-cursor-flicker.patch RnJvbSBiNjQwY2U4MGQ3NWU3M2E5OTFiMmJkOTg3MTExOWE1NjRhYjcxN2E1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFdlZCwg MSBPY3QgMjAyNSAxMDoyNDozNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHR0eS1lY2hvLWN1cnNv ci1mbGlja2VyCgotLS0KIHNyYy9kaXNwbmV3LmMgfCAxMSArKysrKysrKysrLQogMSBmaWxlIGNo YW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMv ZGlzcG5ldy5jIGIvc3JjL2Rpc3BuZXcuYwppbmRleCBkNjVhN2NiYzFmMS4uOGU3OWUzZmYyNmQg MTAwNjQ0Ci0tLSBhL3NyYy9kaXNwbmV3LmMKKysrIGIvc3JjL2Rpc3BuZXcuYwpAQCAtNTc0Nyw3 ICs1NzQ3LDE2IEBAIHdyaXRlX21hdHJpeCAoc3RydWN0IGZyYW1lICpmLCBib29sIGluaGliaXRf aWRfcCwgYm9vbCB1cGRhdGluZ19tZW51X3ApCiAgICAgIGlzIGRvbmUgc28gdGhhdCBtZXNzYWdl cyBhcmUgbWFkZSB2aXNpYmxlIHdoZW4gcGF1c2luZy4gICovCiAgIGludCBsYXN0X3JvdyA9IGYt PmRlc2lyZWRfbWF0cml4LT5ucm93cyAtIDE7CiAgIGlmIChNQVRSSVhfUk9XX0VOQUJMRURfUCAo Zi0+ZGVzaXJlZF9tYXRyaXgsIGxhc3Rfcm93KSkKLSAgICB3cml0ZV9yb3cgKGYsIGxhc3Rfcm93 LCB1cGRhdGluZ19tZW51X3ApOworICAgIHsKKyAgICAgIGludCBjdXJzb3JfaGlkZGVuID0gKEZS QU1FX1RUWSAoZikpLT5jdXJzb3JfaGlkZGVuOworICAgICAgaWYgKCFjdXJzb3JfaW5fZWNob19h cmVhICYmICFjdXJzb3JfaGlkZGVuKQorCXR0eV9oaWRlX2N1cnNvciAoRlJBTUVfVFRZIChmKSk7 CisKKyAgICAgIHdyaXRlX3JvdyAoZiwgbGFzdF9yb3csIHVwZGF0aW5nX21lbnVfcCk7CisKKyAg ICAgIGlmICghY3Vyc29yX2luX2VjaG9fYXJlYSAmJiAhY3Vyc29yX2hpZGRlbikKKwl0dHlfc2hv d19jdXJzb3IgKEZSQU1FX1RUWSAoZikpOworICAgIH0KIAogICBpZiAoZmlyc3Rfcm93ID49IDAp CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0X3JvdzsgaSA8IGxhc3Rfcm93OyArK2kpCgoyLjQ5LjAK Cg== --b1=_mSPV0sEBAfMuCrYGWcflim3sLJsBX2sO8fb5TpNiiY Content-Type: application/octet-stream; name=w32-virtual-terminal-color.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=w32-virtual-terminal-color.patch RnJvbSA2MGY2NjY3MGM5NzA0ZWVmYjliMjY4Y2VmY2Q1ZWNiNmFmMzAzN2YwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFdlZCwg MSBPY3QgMjAyNSAxMDoxODoyOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHczMiB2aXJ0dWFsIHRl cm1pbmFsIGNvbG9yCgotLS0KIGRvYy9lbWFjcy9jbWRhcmdzLnRleGkgIHwgIDE3ICsrLQogZG9j L2VtYWNzL21zZG9zLnRleGkgICAgfCAgMjcgKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICAg fCAgMTIgKysKIGxpc3AvZmFjZXMuZWwgICAgICAgICAgIHwgIDEyICstCiBsaXNwL3N0YXJ0dXAu ZWwgICAgICAgICB8ICAgMiArLQogbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwgfCAgIDQgKy0KIGxp c3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTQ4ICsrKysrKysrKysrKysrLS0tLS0KIHNyYy90ZXJt LmMgICAgICAgICAgICAgIHwgIDUxICsrKysrKy0KIHNyYy90ZXJtY2hhci5oICAgICAgICAgIHwg ICAyICsKIHNyYy93MzJjb25zb2xlLmMgICAgICAgIHwgMzE4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgICAyICstCiAx MSBmaWxlcyBjaGFuZ2VkLCA0OTIgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhp CmluZGV4IDc5YWUyZDA2NGQxLi4zNzgyZjVkYWQxYSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2Nt ZGFyZ3MudGV4aQorKysgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCkBAIC0xMDI0LDE5ICsxMDI0 LDI2IEBAIGNvbG9yZWQgZGlzcGxheS4KIEBpdGVteCBhbnNpOAogVHVybiBvbiB0aGUgY29sb3Ig c3VwcG9ydCB1bmNvbmRpdGlvbmFsbHksIGFuZCB1c2UgY29sb3IgY29tbWFuZHMKIHNwZWNpZmll ZCBieSB0aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZvciB0aGUgOCBzdGFuZGFyZCBjb2xvcnMu CitAaXRlbSA4Yml0CitUdXJuIG9uIHN1cHBvcnQgZm9yIDgtYml0ICgyNTYgY29sb3IpIGRpc3Bs YXkgaWYgYXZhaWxhYmxlLgorQ3VycmVudGx5IHRoaXMgb3B0aW9uIGlzIGVmZmVjdGl2ZSBvbiBN Uy1XaW5kb3dzICgxMCspIG9ubHkuCitPbiBvdGhlciBzeXN0ZW1zLCBtYXhpbWFsIGNvbG9yIHN1 cHBvcnQgaXMgZW5hYmxlZCBhdXRvbWF0aWNhbGx5LgorQGl0ZW0gMjRiaXQKK1R1cm4gb24gc3Vw cG9ydCBmb3IgMjQtYml0ICh0cnVlIGNvbG9yKSBkaXNwbGF5IGlmIGF2YWlsYWJsZS4KK0N1cnJl bnRseSB0aGlzIG9wdGlvbiBpcyBlZmZlY3RpdmUgb24gTVMtV2luZG93cyAoMTArKSBvbmx5Lgor T24gb3RoZXIgc3lzdGVtcywgMjQtYml0IGNvbG9yIGlzIGVuYWJsZWQgYXV0b21hdGljYWxseSBp ZiBzdXBwb3J0ZWQuCiBAaXRlbSBAdmFye251bX0KIFVzZSBjb2xvciBtb2RlIGZvciBAdmFye251 bX0gY29sb3JzLiAgSWYgQHZhcntudW19IGlzIEBtaW51c3t9MSwgdHVybiBvZmYKIGNvbG9yIHN1 cHBvcnQgKGVxdWl2YWxlbnQgdG8gQHNhbXB7bmV2ZXJ9KTsgaWYgaXQgaXMgMCwgdXNlIHRoZQog ZGVmYXVsdCBjb2xvciBzdXBwb3J0IGZvciB0aGlzIHRlcm1pbmFsIChlcXVpdmFsZW50IHRvIEBz YW1we2F1dG99KTsKIG90aGVyd2lzZSB1c2UgYW4gYXBwcm9wcmlhdGUgc3RhbmRhcmQgbW9kZSBm b3IgQHZhcntudW19IGNvbG9ycy4KIERlcGVuZGluZyBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJp bGl0aWVzLCBFbWFjcyBtaWdodCBiZSBhYmxlIHRvIHR1cm4KLW9uIGEgY29sb3IgbW9kZSBmb3Ig OCwgMTYsIDg4LCBvciAyNTYgYXMgdGhlIHZhbHVlIG9mIEB2YXJ7bnVtfS4gIElmCi10aGVyZSBp cyBubyBtb2RlIHRoYXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBp ZgotQHZhcntudW19IHdlcmUgMCwgaS5lLiwgaXQgdXNlcyB0aGUgdGVybWluYWwncyBkZWZhdWx0 IGNvbG9yIHN1cHBvcnQKLW1vZGUuCitvbiBhIGNvbG9yIG1vZGUgZm9yIDgsIDE2LCA4OCwgMjU2 LCBvciAxNjc3NzIxNiBhcyB0aGUgdmFsdWUgb2YgQHZhcntudW19LgorSWYgdGhlcmUgaXMgbm8g bW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMsIEVtYWNzIGFjdHMgYXMgaWYKK0B2 YXJ7bnVtfSB3ZXJlIDAsIGkuZS4sIGl0IHVzZXMgdGhlIHRlcm1pbmFsJ3MgZGVmYXVsdCBjb2xv ciBzdXBwb3J0IG1vZGUuCiBAZW5kIHRhYmxlCiAKLVRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qg b24gTVMtV2luZG93cyBhbmQgTVMtRE9TLgorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBN Uy1ET1MsIG5vciBNUy1XaW5kb3dzIHByaW9yIHRvIFdpbmRvd3MgMTAuCiAKIEBjaW5kZXggY29s b3JzIG9uIGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdpbmcgZHVyaW5nIHNlc3Npb24KIEBjaW5k ZXggY2hhcmFjdGVyIHRlcm1pbmFsLCBjaGFuZ2UgY29sb3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9j L2VtYWNzL21zZG9zLnRleGkgYi9kb2MvZW1hY3MvbXNkb3MudGV4aQppbmRleCBmOTcxNTFjNjMw Zi4uN2NlNmU5YjczNmQgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCisrKyBiL2Rv Yy9lbWFjcy9tc2Rvcy50ZXhpCkBAIC0xMjAwLDYgKzEyMDAsMzMgQEAgeW91IHNob3VsZCBzZXQg aXRzIHZhbHVlIGluIHlvdXIgaW5pdCBmaWxlIChAcHhyZWZ7SW5pdCBGaWxlfSksIGVpdGhlcgog ZGlyZWN0bHkgb3IgdmlhIEBrYmR7TS14IGN1c3RvbWl6ZS12YXJpYWJsZX0sIHdoaWNoIGxldHMg eW91IHNhdmUgdGhlCiBjdXN0b21pemVkIHZhbHVlLCBzZWUgQHJlZntTYXZpbmcgQ3VzdG9taXph dGlvbnN9LgogCitAZmluZGV4IHczMi11c2UtdmlydHVhbC10ZXJtaW5hbAorQGNpbmRleCBXaW5k b3dzIFRlcm1pbmFsLCBXaW5kb3dzIENvbnNvbGUsIE1TLVdpbmRvd3MKKyAgVGhlIGltcGxlbWVu dGF0aW9uIG9mIGRpc3BsYXkgZnVuY3Rpb25hbGl0eSBmb3IgV2luZG93cyBDb25zb2xlCitkaWZm ZXJzIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGZvciBvdGhlciB0ZXJtaW5hbCBlbXVsYXRvcnMs CitiZWNhdXNlIGhpc3RvcmljYWxseSwgV2luZG93cyByZXF1aXJlZCB1c2Ugb2YgYW4gaWRpb3N5 bmNyYWN0aWMgQVBJLgorVGhhdCBBUEkgbGltaXRlZCBXaW5kb3dzIENvbnNvbGUgZGlzcGxheSBv ZiBFbWFjcyB0byAxNiBiYXNpYyBjb2xvcnMuCitXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgV2lu ZG93cyBUZXJtaW5hbCwgTWljcm9zb2Z0IGltcGxlbWVudGVkCitzdXBwb3J0IGZvciBBTlNJIGNv bnRyb2wgc2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUgVlQxMDAgYW5kIFh0ZXJtLAorYXMgd2Vs bCBhcyAyNC1iaXQgUkJHIGNvbG9yIGRpc3BsYXkuCisKKyAgVGhlIGZ1bmN0aW9ucyBAY29kZXt3 MzItdXNlLXZpcnR1YWwtdGVybWluYWx9IGFuZAorQGNvZGV7dzMyLXVzZS12aXJ0dWFsLXRlcm1p bmFsLXB9IGNhbiBiZSB1c2VkIHRvIHNldCBhbmQgaW5zcGVjdAorKHJlc3BlY3RpdmVseSkgYW4g aW50ZXJuYWwgdmFyaWFibGUgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgbmV3ZXIKK21l Y2hhbmlzbSBpcyB1c2VkIGZvciBkaXNwbGF5LCBvciB0aGUgb2xkZXIgb25lLiAgVGhlIGludGVy bmFsIHZhcmlhYmxlIGlzCithdXRvbWF0aWNhbGx5IHNldCBiYXNlZCBvbiB5b3VyIHRlcm1pbmFs J3MgY2FwYWJpbGl0aWVzIG9uIHN0YXJ0dXAuCitCeSBkZWZhdWx0LCAyNC1iaXQgUkdCIGNvbG9y IHdpbGwgYmUgdXNlZCwgYnV0IG90aGVyICg4LCAxNiwgMjU2KSBjb2xvcgorc3BhY2VzIG1heSBi ZSB1c2VkLCBieSBwYXNzaW5nIHRoZSBAY29kZXstLWNvbG9yfSBjb21tYW5kIGxpbmUgYXJndW1l bnQsCitvciBzZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgQGNvZGV7dHR5LWNvbG9yLW1vZGV9IGZy YW1lIHBhcmFtZXRlci4KKworICAgQGNvZGV7Jyh3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtcCl9 IGV2YWx1YXRlcyB0byBAY29kZXt0fSBpZiBhbmQgb25seSBpZgordGhlIGludGVybmFsIHZhcmlh YmxlIGhhcyBhIG5vbi16ZXJvIG51bWVyaWNhbCB2YWx1ZSwgYW5kIG90aGVyd2lzZSB0bworQGNv ZGV7bmlsfS4gIElmIGl0IGV2YWx1YXRlcyB0byBAY29kZXt0fSwgQU5TSSBlc2NhcGUgc2VxdWVu Y2VzIGFyZSB1c2VkCitmb3IgY29sb3IsIG90aGVyd2lzZSwgdGhlIG9sZGVyIG1lY2hhbmlzbSBp cyB1c2VkLiAgVGhlIGludGVybmFsIHZhcmlhYmxlCitjYW4gYmUgc2V0IGJ5IGV2YWx1YXRpbmcg QGNvZGV7KHczMi11c2UtdmlydHVhbC10ZXJtaW5hbCB4KX0sIHdoZXJlIEBjb2Rle3h9IGlzCitA Y29kZXt0fSBvciBAY29kZXtuaWx9OiBpZiBAY29kZXt4fSBpcyBAY29kZXt0fSBhbmQgdGhlIGZl YXR1cmUgaXMgc3VwcG9ydGVkIGJ5Cit5b3VyIHRlcm1pbmFsLCBpdCB3aWxsIGJlIGVuYWJsZWQu ICBPdGhlcndpc2UsIHRoZSBmZWF0dXJlIHdpbGwgYmUgZGlzYWJsZWQuCisKIEBpZm5vdHRleAog QGluY2x1ZGUgbXNkb3MteHRyYS50ZXhpCiBAZW5kIGlmbm90dGV4CmRpZmYgLS1naXQgYS9ldGMv TkVXUyBiL2V0Yy9ORVdTCmluZGV4IDdmMzQyYmI3ZTQ4Li5jMzU1MThiYjgyZCAxMDA2NDQKLS0t IGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMzNzQsNiArMzM3NCwxOCBAQCBBY2NvcmRp bmdseSwgd2UgaGF2ZSByZXZpc2VkIG91ciByZWNvbW1lbmRhdGlvbnMgZm9yIGEgc3VpdGFibGUg REpHUFAKIHRvb2xjaGFpbiB0byBHQ0MgMTQuMi4wIGFuZCBCaW51dGlscyAyLjM1LjEgaW4gbGll dSBvZiBHQ0MgMy40LnggYW5kCiBCaW51dGlscyAyLjI2LgogCisrKysKKyoqIFdpbmRvd3MgVGVy bWluYWwgY2FuIG5vdyBkaXNwbGF5IDI1NiBhbmQgMjQtYml0IFJHQiBjb2xvci4KK1ByZXZpb3Vz bHksIHRlcm1pbmFsIHNlc3Npb25zIG9uIFdpbmRvd3Mgc3VwcG9ydGVkIGRpc3BsYXkgb2YgMTYg Y29sb3JzLgorVGhlcmUgaXMgbm93IHN1cHBvcnQgZm9yIDgtYml0ICgyNTYgY29sb3IpIGFuZCAy NC1iaXQgUkdCICh0cnVlIGNvbG9yKS4KK1RoZSBuZXcgbWVjaGFuaXNtIHdpbGwgYmUgZW5hYmxl ZCBhdXRvbWF0aWNhbGx5IHdoZW4gc3VwcG9ydGVkLgorSXQgZGVmYXVsdHMgdG8gMjQtYml0IFJH QiBjb2xvciwgYnV0IGNhbiBiZSBzZXQgdG8gOCwgMTYsICc4Yml0LCBvciAnMjRiaXQKK2J5IHBh c3NpbmcgdGhlICctLWNvbG9yJyBmbGFnIG9yIHNldHRpbmcgdGhlICd0dHktY29sb3ItbW9kZScg ZnJhbWUgcGFyYW1ldGVyLgorVXNlIG9mIHRoZSBuZXcgbWVjaGFuaXNtIGlzIGNvbnRyb2xsZWQg YnkgYW4gaW50ZXJuYWwgdmFyaWFibGUgdGhhdCBjYW4gYmUKK3NldCBhbmQgaW5zcGVjdGVkIHZp YSB0aGUgZnVuY3Rpb25zICd3MzItdXNlLXZpcnR1YWwtdGVybWluYWwnIGFuZAorJ3czMi11c2Ut dmlydHVhbC10ZXJtaW5hbC1wJyAocmVzcGVjdGl2ZWx5KS4gIFNlZSB0aGUgbWFudWFsIGVudHJ5 IHNwZWNpZmljCit0byBNUy1XaW5kb3dzIGZvciBtb3JlIGRldGFpbHMuCisKIAwKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KZGlmZiAtLWdpdCBhL2xpc3Av ZmFjZXMuZWwgYi9saXNwL2ZhY2VzLmVsCmluZGV4IGNkNDA4NmExMmYyLi40NzVhMDk3OTFlZSAx MDA2NDQKLS0tIGEvbGlzcC9mYWNlcy5lbAorKysgYi9saXNwL2ZhY2VzLmVsCkBAIC0yNDA1LDEx ICsyNDA1LDE1IEBAIElmIHlvdSBzZXQgYHRlcm0tZmlsZS1wcmVmaXgnIHRvIG5pbCwgdGhpcyBm dW5jdGlvbiBkb2VzIG5vdGhpbmcuIgogCiA7OyBDYWxsZWQgZnJvbSBDIGZ1bmN0aW9uIGluaXRf ZGlzcGxheSB0byBpbml0aWFsaXplIGZhY2VzIG9mIHRoZQogOzsgZHVtcGVkIHRlcm1pbmFsIGZy YW1lIG9uIHN0YXJ0dXAuCi0KKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi10dHktc2V0dXAtY29sb3Jz ICJ0ZXJtL3czMmNvbnNvbGUiICgpKQogKGRlZnVuIHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1m YWNlcyAoKQotICAobGV0ICgoZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpCi0gICAgKGZyYW1lLXNl dC1iYWNrZ3JvdW5kLW1vZGUgZnJhbWUgdCkKLSAgICAoZmFjZS1zZXQtYWZ0ZXItZnJhbWUtZGVm YXVsdCBmcmFtZSkpKQorICAocHJvZ24KKyAgICAod2hlbiAoYW5kIChlcSBzeXN0ZW0tdHlwZSAn d2luZG93cy1udCkKKyAgICAgICAgICAgICAgIChmZWF0dXJlcCAndGVybS93MzJjb25zb2xlKSkK KyAgICAgICh3MzItdHR5LXNldHVwLWNvbG9ycykpCisgICAgKGxldCAoKGZyYW1lIChzZWxlY3Rl ZC1mcmFtZSkpKQorICAgICAgKGZyYW1lLXNldC1iYWNrZ3JvdW5kLW1vZGUgZnJhbWUgdCkKKyAg ICAgIChmYWNlLXNldC1hZnRlci1mcmFtZS1kZWZhdWx0IGZyYW1lKSkpKQogCiAMCiA7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsKZGlmZiAtLWdpdCBhL2xpc3Avc3RhcnR1cC5lbCBiL2xpc3Avc3RhcnR1cC5lbApp bmRleCA4MzZlYWQ2ZGViMC4uNDg3ODNiNTE3NWYgMTAwNjQ0Ci0tLSBhL2xpc3Avc3RhcnR1cC5l bAorKysgYi9saXNwL3N0YXJ0dXAuZWwKQEAgLTk1OCw3ICs5NTgsNyBAQCB0byBwcmVwYXJlIGZv ciBvcGVuaW5nIHRoZSBmaXJzdCBmcmFtZSAoZS5nLiBvcGVuIGEgY29ubmVjdGlvbiB0byBhbiBY IHNlcnZlcikuIgogCSAgICAgICAocHVzaCAoY29ucyAndHR5LWNvbG9yLW1vZGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChu dW1iZXJwIGFyZ3ZhbCkgYXJndmFsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3Ry aW5nLW1hdGNoICItP1swLTldKyIgYXJndmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoc3RyaW5nLW1hdGNoICItP1swLTldKyQiIGFyZ3ZhbCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy10by1udW1iZXIgYXJndmFsKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodCAoaW50ZXJuIGFyZ3ZhbCkpKSkKICAgICAgICAgICAgICAgICAgICAgIGRlZmF1 bHQtZnJhbWUtYWxpc3QpKQpkaWZmIC0tZ2l0IGEvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwgYi9s aXNwL3Rlcm0vdHR5LWNvbG9ycy5lbAppbmRleCBkZmQyMDdkNzFjMS4uYThhNWE4YjY2MGEgMTAw NjQ0Ci0tLSBhL2xpc3AvdGVybS90dHktY29sb3JzLmVsCisrKyBiL2xpc3AvdGVybS90dHktY29s b3JzLmVsCkBAIC03NjQsNyArNzY0LDkgQEAKICAgICAoYXV0byAuIDApCiAgICAgKGFuc2k4IC4g OCkKICAgICAoYWx3YXlzIC4gOCkKLSAgICAoeWVzIC4gOCkpCisgICAgKHllcyAuIDgpCisgICAg KDhiaXQgLiAyNTYpCisgICAgKDI0Yml0IC4gMTY3NzcyMTYpKQogICAiQW4gYWxpc3Qgb2Ygc3Vw cG9ydGVkIHN0YW5kYXJkIHR0eSBjb2xvciBtb2RlcyBhbmQgdGhlaXIgYWxpYXNlcy4iKQogCiAo ZGVmdW4gdHR5LWNvbG9yLWFsaXN0ICgmb3B0aW9uYWwgX2ZyYW1lKQpkaWZmIC0tZ2l0IGEvbGlz cC90ZXJtL3czMmNvbnNvbGUuZWwgYi9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAppbmRleCAxYjQ0 ZGE0OGJmNy4uMDRhMDg2Y2ZjZWQgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVybS93MzJjb25zb2xlLmVs CisrKyBiL2xpc3AvdGVybS93MzJjb25zb2xlLmVsCkBAIC00Niw5ICs0Niw3NyBAQAogIkEgbGlz dCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFs dWVzLiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAidGVybS9j b21tb24td2luIiAoZnJhbWUpKQotKGRlY2xhcmUtZnVuY3Rpb24gZ2V0LXNjcmVlbi1jb2xvciAi dzMyY29uc29sZS5jIiAoKSkKKyhkZWNsYXJlLWZ1bmN0aW9uIGdldC1zY3JlZW4tY29sb3IgIncz MmNvbnNvbGUuYyIgKCZvcHRpb25hbCB2dHApKQorKGRlY2xhcmUtZnVuY3Rpb24gc2V0LXNjcmVl bi1jb2xvciAidzMyY29uc29sZS5jIiAoJm9wdGlvbmFsIHZ0cCkpCiAoZGVjbGFyZS1mdW5jdGlv biB3MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAoZGVjbGFyZS1mdW5j dGlvbiB3MzItZ2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlICJ3MzJwcm9jLmMiICgpKQorKGRl Y2xhcmUtZnVuY3Rpb24gdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsICJ3MzJjb25zb2xlLmMiIChl bmFibGUpKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXAgIncz MmNvbnNvbGUuYyIgKCkpCisKKyhkZWZ1biB3MzItdHR5LXNldC1iYXNlLWNvbG9ycyAodnRwKQor ICAiUmUtb3JkZXIgYHczMi10dHktc3RhbmRhcmQtY29sb3JzJyBiYXNlZCBvbiB0aGUgdmFsdWUg b2YgVlRQLiIKKyAgKGxldCAoKHNlcQorICAgICAgICAgKGlmIHZ0cAorICAgICAgICAgICAgICco ImJsYWNrIiAgICAgInJlZCIgICAgICAgICAgImdyZWVuIiAgICAgICJicm93biIKKyAgICAgICAg ICAgICAgICJibHVlIiAgICAgICJtYWdlbnRhIiAgICAgICJjeWFuIiAgICAgICAibGlnaHRncmF5 IgorICAgICAgICAgICAgICAgImRhcmtncmF5IiAgImxpZ2h0cmVkIiAgICAgImxpZ2h0Z3JlZW4i ICJ5ZWxsb3ciCisgICAgICAgICAgICAgICAibGlnaHRibHVlIiAibGlnaHRtYWdlbnRhIiAibGln aHRjeWFuIiAgIndoaXRlIikKKyAgICAgICAgICAgJygiYmxhY2siICAgICAiYmx1ZSIgICAgICAg ICAiZ3JlZW4iICAgICAgImN5YW4iCisgICAgICAgICAgICAgInJlZCIgICAgICAgIm1hZ2VudGEi ICAgICAgImJyb3duIiAgICAgICJsaWdodGdyYXkiCisgICAgICAgICAgICAgImRhcmtncmF5IiAg ImxpZ2h0Ymx1ZSIgICAgImxpZ2h0Z3JlZW4iICJsaWdodGN5YW4iCisgICAgICAgICAgICAgImxp Z2h0cmVkIiAgImxpZ2h0bWFnZW50YSIgInllbGxvdyIgICAgICJ3aGl0ZSIpKSkpCisgICAgKHNl dHEgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMKKyAgICAgICAgICAobWFwY2FyCisgICAgICAgICAg IChsYW1iZGEgKG4pIChsZXQgKChjIChhc3NvYyBuIHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkp CisgICAgICAgICAgICAgICAgICAgIChjb25zIG4gKGNvbnMgKHNlcS1wb3NpdGlvbiBzZXEgbikg KGNkZHIgYykpKSkpCisgICAgICAgICAgIHNlcSkpKSkKKworKGRlZnVuIHczMi10dHktZGVmaW5l LWJhc2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJhc2UgMTYtY29sb3Igc3BhY2UgZm9yIHczMiB0 dHkgZGlzcGxheS4iCisgIChsZXQqICgoY29sb3JzIHczMi10dHktc3RhbmRhcmQtY29sb3JzKQor ICAgICAgICAgKG5iYXNlIChsZW5ndGggY29sb3JzKSkKKyAgICAgICAgIChjb2xvciAoY2FyIGNv bG9ycykpKQorICAgIChwcm9nbiAod2hpbGUgY29sb3JzCisgICAgICAgICAgICAgKHR0eS1jb2xv ci1kZWZpbmUgKGNhciBjb2xvcikgKGNhZHIgY29sb3IpIChjZGRyIGNvbG9yKSkKKyAgICAgICAg ICAgICAoc2V0cSBjb2xvcnMgKGNkciBjb2xvcnMpCisgICAgICAgICAgICAgICAgICAgY29sb3Ig IChjYXIgY29sb3JzKSkpCisgICAgICAgICAgIG5iYXNlKSkpCisKKyhkZWZ1biB3MzItdHR5LWRl ZmluZS04Yml0LWNvbG9ycyAoKQorICAiRGVmaW5lcyA4LWJpdCBjb2xvciBzcGFjZSBmb3IgdzMy IHR0eSBkaXNwbGF5LiIKKyAgKGxldCAoKHIgMCkgKGIgMCkgKGcgMCkKKyAgICAgICAgKG4gKC0g MjU2ICh3MzItdHR5LWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVydC10by0x NmJpdCAobGFtYmRhIChwcmltKSAobG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQorICAgICh3 aGlsZSAoPiBuIDI0KSA7IG5vbi1ncmV5CisgICAgICAobGV0ICgoaSAoLSAyNTYgbikpCisgICAg ICAgICAgICAoYyAobWFwY2FyIGNvbnZlcnQtdG8tMTZiaXQKKyAgICAgICAgICAgICAgICAgICAg ICAgKG1hcGNhciAobGFtYmRhICh4KSAoaWYgKHplcm9wIHgpIDAgKCsgKCogeCA0MCkgNTUpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCByIGcgYikpKSkpCisgICAgICAg ICh0dHktY29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNl dHEgYiAoMSsgYikpCisgICAgICAod2hlbiAoPiBiIDUpIChzZXRxIGcgKDErIGcpIGIgMCkpCisg ICAgICAod2hlbiAoPiBnIDUpIChzZXRxIHIgKDErIHIpIGcgMCkpCisgICAgICAoc2V0cSBuICgx LSBuKSkpCisgICAgKHdoaWxlICg+IG4gMCkgOyBhbGwtZ3JleQorICAgICAgKGxldCogKChpICgt IDI1NiBuKSkKKyAgICAgICAgICAgICAodiAoZnVuY2FsbCBjb252ZXJ0LXRvLTE2Yml0ICgrIDgg KCogKC0gMjQgbikgMTApKSkpCisgICAgICAgICAgICAgKGMgKGxpc3QgdiB2IHYpKSkKKyAgICAg ICAgKHR0eS1jb2xvci1kZWZpbmUgKGZvcm1hdCAiY29sb3ItJWQiIGkpIGkgYykpCisgICAgICAo c2V0cSBuICgxLSBuKSkpKSkKKworKGRlZnVuIHczMi10dHktZGVmaW5lLTI0Yml0LWNvbG9ycyAo KQorICAiRGVmaW5lcyAyNC1iaXQgY29sb3Igc3BhY2UgZm9yIHczMiB0dHkgZGlzcGxheS4iCisg IChsZXQgKChpICh3MzItdHR5LWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgIChtYXBjIChsYW1i ZGEgKGMpICh1bmxlc3MgKGFzc29jIChjYXIgYykgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCisg ICAgICAgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjKSBpIChjZHIgYykpCisg ICAgICAgICAgICAgICAgICAgKHNldHEgaSAoMSsgaSkpKSkKKyAgICAgICAgICBjb2xvci1uYW1l LXJnYi1hbGlzdCkpKQorCis7OyB0dHktY29sb3ItZGVmaW5lIHN3YXBzIGluZGljZXMgZm9yIHBp eGVsIHZhbHVlcyBvbiAyNGJpdCBkaXNwbGF5CisoZGVmdW4gdzMyLXR0eS1nZXQtcGl4ZWwgKGlu ZGV4KQorICAiQ29udmVydCBhIGxlZ2FjeSBjb2xvciBJTkRFWCAoMC4uMTUpIGludG8gYSBwaXhl bCB2YWx1ZS4iCisgIChsZXQgKChjb2xvciAobnRoIGluZGV4IHczMi10dHktc3RhbmRhcmQtY29s b3JzKSkpCisgICAgKG9yICh0dHktY29sb3ItMjRiaXQgKGNkZHIgY29sb3IpKSBpbmRleCkpKQog CiAoZGVmdW4gdGVybWluYWwtaW5pdC13MzJjb25zb2xlICgpCiAgICJUZXJtaW5hbCBpbml0aWFs aXphdGlvbiBmdW5jdGlvbiBmb3IgdzMyIGNvbnNvbGUuIgpAQCAtNTYsNDMgKzEyNCw1MyBAQAog ICAoeC1zZXR1cC1mdW5jdGlvbi1rZXlzIChzZWxlY3RlZC1mcmFtZSkpCiAgIDs7IFNldCB0ZXJt aW5hbCBhbmQga2V5Ym9hcmQgZW5jb2RpbmdzIHRvIHRoZSBjdXJyZW50IE9FTSBjb2RlcGFnZS4K ICAgKGxldCAoKG9lbS1jb2RlLXBhZ2UtY29kaW5nCi0JIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIg KHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSkpKSkKLQkob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29k aW5nCi0JIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29k ZXBhZ2UpKSkpCi0Jb2VtLWNzLXAgb2VtLW8tY3MtcCkKLQkoc2V0cSBvZW0tY3MtcCAoY29kaW5n LXN5c3RlbS1wIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKLQkoc2V0cSBvZW0tby1jcy1wIChjb2Rp bmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKLQkod2hlbiBvZW0tY3Mt cAotCSAgKHNldC1rZXlib2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQot CSAgKHNldC10ZXJtaW5hbC1jb2Rpbmctc3lzdGVtCi0JICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNv ZGUtcGFnZS1vdXRwdXQtY29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKLSAgICAgICAgICA7 OyBTaW5jZSB3ZSBjaGFuZ2VkIHRoZSB0ZXJtaW5hbCBlbmNvZGluZywgd2UgbmVlZCB0byByZXBl YXQKLSAgICAgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxh eWFibGUuCi0gICAgICAgICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKLSAgKGxl dCogKChjb2xvcnMgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCi0gICAgICAgICAoY29sb3IgKGNh ciBjb2xvcnMpKSkKLSAgICAodHR5LWNvbG9yLWNsZWFyKQotICAgICh3aGlsZSBjb2xvcnMKLSAg ICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xv cikpCi0gICAgICAoc2V0cSBjb2xvcnMgKGNkciBjb2xvcnMpCi0gICAgICAgICAgICBjb2xvciAo Y2FyIGNvbG9ycykpKSkKLSAgKGNsZWFyLWZhY2UtY2FjaGUpCi0gIDs7IEZpZ3VyZSBvdXQgd2hh dCBhcmUgdGhlIGNvbG9ycyBvZiB0aGUgY29uc29sZSB3aW5kb3csIGFuZCBzZXQgdXAKLSAgOzsg dGhlIGJhY2tncm91bmQtbW9kZSBjb3JyZXNwb25kaW5nbHkuCi0gIChsZXQqICgoc2NyZWVuLWNv bG9yIChnZXQtc2NyZWVuLWNvbG9yKSkKLQkgKGJnIChjYWRyIHNjcmVlbi1jb2xvcikpCi0JIChk ZXNjciAodHR5LWNvbG9yLWJ5LWluZGV4IGJnKSkKLQkgciBnIGIgYmctbW9kZSkKLSAgICAoc2V0 cSByIChudGggMiBkZXNjcikKLQkgIGcgKG50aCAzIGRlc2NyKQotCSAgYiAobnRoIDQgZGVzY3Ip KQotICAgIChpZiAoPCAoKyByIGcgYikgKCogLjYgKCsgNjU1MzUgNjU1MzUgNjU1MzUpKSkKLQko c2V0cSBiZy1tb2RlICdkYXJrKQotICAgICAgKHNldHEgYmctbW9kZSAnbGlnaHQpKQotICAgIChz ZXQtdGVybWluYWwtcGFyYW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKQorICAg ICAgICAgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLWNvZGVwYWdlKSkp KQorICAgICAgICAob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nCisgICAgICAgICAoaW50ZXJu IChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlKSkpKQorICAg ICAgICBvZW0tY3MtcCBvZW0tby1jcy1wKQorICAgIChzZXRxIG9lbS1jcy1wIChjb2Rpbmctc3lz dGVtLXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAgIChzZXRxIG9lbS1vLWNzLXAgKGNvZGlu Zy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcpKQorICAgICh3aGVuIG9lbS1j cy1wCisgICAgICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1jb2Rp bmcpCisgICAgICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0ZW0KKyAgICAgICAoaWYgb2VtLW8t Y3MtcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQor ICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQg dG8gcmVwZWF0CisgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlz cGxheWFibGUuCisgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkpKQogICAodHR5 LXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzKQogICAocnVuLWhvb2tzICd0ZXJtaW5hbC1pbml0 LXczMi1ob29rKSkKIAorOzsgQ2FsbGVkIGZyb20gdHR5LXNldC11cC1pbml0aWFsLWZyYW1lLWZh Y2VzIGluIGZhY2VzLmVsCisoZGVmdW4gdzMyLXR0eS1zZXR1cC1jb2xvcnMgKCkKKyAgIlNldCB1 cCBjb2xvciBkZWZpbml0aW9ucyBhbmQgZnJhbWUgcGFyYW1ldGVycyBmb3IgdzMyIHR0eSBkaXNw bGF5LiIKKyAgKHR0eS1jb2xvci1jbGVhcikKKyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29s b3ItY2VsbHMpKQorICAgICAgICAodnRwICh3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtcCkpKQor ICAgICh3MzItdHR5LXNldC1iYXNlLWNvbG9ycyB2dHApCisgICAgKGlmIHZ0cAorICAgICAgICAo Y29uZCAoKD0gbmNvbG9ycyAxNjc3NzIxNikgKHczMi10dHktZGVmaW5lLTI0Yml0LWNvbG9ycykp CisgICAgICAgICAgICAgICgoPSBuY29sb3JzIDI1NikgICAgICAodzMyLXR0eS1kZWZpbmUtOGJp dC1jb2xvcnMpKQorICAgICAgICAgICAgICAodCAgICAgICAgICAgICAgICAgICAgKHczMi10dHkt ZGVmaW5lLWJhc2UtY29sb3JzKSkpCisgICAgICAodzMyLXR0eS1kZWZpbmUtYmFzZS1jb2xvcnMp KQorICAgIChjbGVhci1mYWNlLWNhY2hlKQorICAgIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQt c2NyZWVuLWNvbG9yIHZ0cCkpCisgICAgICAgICAgIChmZyAoY2FyICBzY3JlZW4tY29sb3IpKQor ICAgICAgICAgICAoYmcgKGNhZHIgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJvb3RzdHJh cCAoYW5kIHZ0cCAoPSBuY29sb3JzIDE2Nzc3MjE2KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgKDwgZmcgMTYpICg8IGJnIDE2KSAobm90ICg9IDAgZmcgYmcpKSkpCisgICAgICAgICAgIChm YWxsYmFjayAgKGFuZCB2dHAgKDwgbmNvbG9ycyAxNjc3NzIxNikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIChvciAoPCBuY29sb3JzIGZnKSAoPCBuY29sb3JzIGJnKSkpKQorICAgICAgICAg ICAoc2NyZWVuLWNvbG9yIChpZiBmYWxsYmFjayAoZ2V0LXNjcmVlbi1jb2xvciB0KSBzY3JlZW4t Y29sb3IpKQorICAgICAgICAgICAoZmcgKGlmIGJvb3RzdHJhcCAodzMyLXR0eS1nZXQtcGl4ZWwg ZmcpIChjYXIgIHNjcmVlbi1jb2xvcikpKQorICAgICAgICAgICAoYmcgKGlmIGJvb3RzdHJhcCAo dzMyLXR0eS1nZXQtcGl4ZWwgYmcpIChjYWRyIHNjcmVlbi1jb2xvcikpKQorICAgICAgICAgICAo YmctY29sICh0dHktY29sb3ItYnktaW5kZXggYmcpKQorICAgICAgICAgICAoYmctZGFyayAoPCAo KyAobnRoIDIgYmctY29sKSAobnRoIDMgYmctY29sKSAobnRoIDQgYmctY29sKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgKCogLjYgKCsgNjU1MzUgNjU1MzUgNjU1MzUpKSkpCisgICAgICAgICAg IChiZy1tb2RlIChpZiBiZy1kYXJrICdkYXJrICdsaWdodCkpKQorICAgICAgKHNldC10ZXJtaW5h bC1wYXJhbWV0ZXIgbmlsICdiYWNrZ3JvdW5kLW1vZGUgYmctbW9kZSkKKyAgICAgICh3aGVuIChv ciBib290c3RyYXAgZmFsbGJhY2spCisgICAgICAgIChzZXQtc2NyZWVuLWNvbG9yIGZnIGJnIHQp KSkpKQorCiAocHJvdmlkZSAndGVybS93MzJjb25zb2xlKQogCiA7OzsgdzMyY29uc29sZS5lbCBl bmRzIGhlcmUKZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVybS5jCmluZGV4IGExZTNm NjMxMmM2Li5lZjQ2MWI1YjRjYiAxMDA2NDQKLS0tIGEvc3JjL3Rlcm0uYworKysgYi9zcmMvdGVy bS5jCkBAIC0yMjA3LDcgKzIyMDcsNyBAQCBURVJNSU5BTCBkb2VzIG5vdCByZWZlciB0byBhIHRl eHQgdGVybWluYWwuICAqLykKICAgcmV0dXJuIG1ha2VfZml4bnVtICh0ID8gdC0+ZGlzcGxheV9p bmZvLnR0eS0+VE5fbWF4X2NvbG9ycyA6IDApOwogfQogCi0jaWYgIWRlZmluZWQgRE9TX05UICYm ICFkZWZpbmVkIEhBVkVfQU5EUk9JRAorI2lmICFkZWZpbmVkIE1TRE9TICYmICFkZWZpbmVkIEhB VkVfQU5EUk9JRAogCiAvKiBEZWNsYXJlIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIGZ1bmN0aW9u LCBhcyBpbiB0aGUgcmVzdCBvZiBFbWFjcywKICAgIHRvIHdvcmsgYXJvdW5kIGFuIEhQVVggY29t cGlsZXIgYnVnICg/KS4gU2VlCkBAIC0yMjQ2LDcgKzIyNDYsNyBAQCB0dHlfZGVmYXVsdF9jb2xv cl9jYXBhYmlsaXRpZXMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGJvb2wgc2F2ZSkK ICAgIE1PREUncyB2YWx1ZSBpcyBnZW5lcmFsbHkgdGhlIG51bWJlciBvZiBjb2xvcnMgd2hpY2gg d2Ugd2FudCB0bwogICAgc3VwcG9ydDsgemVybyBtZWFucyBzZXQgdXAgZm9yIHRoZSBkZWZhdWx0 IGNhcGFiaWxpdGllcywgdGhlIG9uZXMKICAgIHdlIHNhdyBhdCBpbml0X3R0eSB0aW1lOyAtMSBt ZWFucyB0dXJuIG9mZiBjb2xvciBzdXBwb3J0LiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiB0dHlf c2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKIHsK ICAgLyogQ2Fub25pY2FsaXplIGFsbCBuZWdhdGl2ZSB2YWx1ZXMgb2YgTU9ERS4gICovCkBAIC0y MjY5LDYgKzIyNjksMTAgQEAgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2lu Zm8gKnR0eSwgaW50IG1vZGUpCiAjaWZkZWYgVEVSTUlORk8KIAl0dHktPlRTX3NldF9mb3JlZ3Jv dW5kID0gIlwwMzNbMyVwMSVkbSI7CiAJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJcMDMzWzQl cDElZG0iOworI2VsaWYgV0lORE9XU05UCisJdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgxYlszOW1c eDFiWzQ5bSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWyVsdW0iOworCXR0eS0+ VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYlslbHVtIjsKICNlbHNlCiAJdHR5LT5UU19zZXRfZm9y ZWdyb3VuZCA9ICJcMDMzWzMlZG0iOwogCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0 JWRtIjsKQEAgLTIyNzYsNiArMjI4MCwyNiBAQCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5 X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKIAl0dHktPlROX21heF9jb2xvcnMgPSA4Owog CXR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOwogCWJyZWFrOworI2lmZGVmIFdJTkRPV1NOVAor ICAgICAgY2FzZSAxNjoKKwl0dHktPlROX21heF9jb2xvcnMgPSAxNjsKKwl0dHktPlRTX3NldF9m b3JlZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFi WyVsdW0iOworCXR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2Fz ZSAyNTY6CisJdHR5LT5UTl9tYXhfY29sb3JzID0gMjU2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91 bmQgPSAiXHgxYlszODs1OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0 ODs1OyVsdW0iOworCXR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAg Y2FzZSAxNjc3NzIxNjoKKwl0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKwl0dHktPlRT X3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMzg7MjslbHU7JWx1OyVsdW0iOworCXR0eS0+VFNfc2V0 X2JhY2tncm91bmQgPSAiXHgxYls0ODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UTl9ub19jb2xv cl92aWRlbyA9IDA7CisJYnJlYWs7CisjZW5kaWYKICAgICB9CiB9CiAKQEAgLTIzMTIsNyArMjMz Niw3IEBAIHNldF90dHlfY29sb3JfbW9kZSAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwg c3RydWN0IGZyYW1lICpmKQogICAgIH0KIH0KIAotI2VuZGlmIC8qICFET1NfTlQgJiYgIUhBVkVf QU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFWRV9BTkRST0lEICovCiAKIGNoYXIg KgogdHR5X3R5cGVfbmFtZSAoTGlzcF9PYmplY3QgdGVybWluYWwpCkBAIC00NjQxLDYgKzQ2NjUs MjIgQEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBURVJN JyAoQy1zaGVsbDpcblwKIAogICAgIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHRlcm1pbmFsLCAm d2lkdGgsICZoZWlnaHQpOwogCisgICAgdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisgICAg dHR5LT5UTl9tYXhfY29sb3JzID0gMTY3NzcyMTY7CisgICAgdHR5LT5UU19vcmlnX3BhaXIgPSAi XHgxYlszOW1ceDFiWzQ5bSI7CisgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4 OzI7JWx1OyVsdTslbHVtIjsKKyAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbNDg7 MjslbHU7JWx1OyVsdW0iOworCisgICAgLyogU2F2ZSBkZWZhdWx0IGNvbG9yIGNhcGFiaWxpdGll cyAqLworICAgIHR0eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxpdGllcyAodHR5LCAxKTsKKworICAg IHR0eS0+VFNfZW50ZXJfYm9sZF9tb2RlID0gIlx4MWJbMW0iOworICAgIHR0eS0+VFNfZW50ZXJf aXRhbGljX21vZGUgPSAiXHgxYlszbSI7CisgICAgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3Vn aF9tb2RlID0gIlx4MWJbOW0iOworICAgIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUgPSAi XHgxYls0bSI7CisgICAgdHR5LT5UU19lbnRlcl9yZXZlcnNlX21vZGUgPSAiXHgxYls3bSI7Cisg ICAgdHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2RlID0gIlx4MWJbMG0iOworCiAgICAgRnJhbWVS b3dzICh0dHkpID0gaGVpZ2h0OwogICAgIEZyYW1lQ29scyAodHR5KSA9IHdpZHRoOwogICAgIHR0 eS0+c3BlY2lmaWVkX3dpbmRvdyA9IGhlaWdodDsKQEAgLTQ2ODYsNyArNDcyNiw2IEBAIHVzZSB0 aGUgQm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6 XG5cCiAgICAgIGRvbid0IHRoaW5rIHdlJ3JlIGxvc2luZyBhbnl0aGluZyBieSB0dXJuaW5nIGl0 IG9mZi4gICovCiAgIHR0eS0+bGluZV9pbnNfZGVsX29rID0gMDsKIAotICB0dHktPlROX21heF9j b2xvcnMgPSAxNjsgIC8qIE11c3QgYmUgbm9uLXplcm8gZm9yIHR0eS1kaXNwbGF5LWNvbG9yLXAu ICAqLwogI2VuZGlmCS8qIERPU19OVCAqLwogCiAjaWZkZWYgSEFWRV9HUE0KQEAgLTUyMDIsMTEg KzUyNDEsMTEgQEAgbm9uLW5pbCB0byBlbmFibGUgdGhpcyBvcHRpbWl6YXRpb24uICAqLyk7CiAg IGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfd2lkdGgpOwogICBkZWZzdWJyICgmU3R0eV9k aXNwbGF5X3BpeGVsX2hlaWdodCk7CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYgIWRlZmluZWQg SEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lE CiAgIGRlZmF1bHRfb3JpZ19wYWlyID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfZm9yZWdyb3VuZCA9 IE5VTEw7CiAgIGRlZmF1bHRfc2V0X2JhY2tncm91bmQgPSBOVUxMOwotI2VuZGlmIC8qICFET1Nf TlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFWRV9BTkRST0lE ICovCiAKICNpZm5kZWYgSEFWRV9BTkRST0lECiAgIGVuY29kZV90ZXJtaW5hbF9zcmMgPSBOVUxM OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm1jaGFyLmggYi9zcmMvdGVybWNoYXIuaAppbmRleCBlY2Uz YTY3NmM2ZS4uMTNhZDJmMGE3MmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtY2hhci5oCisrKyBiL3Ny Yy90ZXJtY2hhci5oCkBAIC0yNDksNCArMjQ5LDYgQEAgc3RydWN0IGlucHV0X2V2ZW50OwogZXh0 ZXJuIExpc3BfT2JqZWN0IHR0eV9oYW5kbGVfdGFiX2Jhcl9jbGljayAoc3RydWN0IGZyYW1lICos IGludCwgaW50LCBib29sLAogCQkJCQkgICAgIHN0cnVjdCBpbnB1dF9ldmVudCAqKTsKIAorZXh0 ZXJuIHZvaWQgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwg aW50IG1vZGUpOworCiAjZW5kaWYgLyogRU1BQ1NfVEVSTUNIQVJfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5kZXggMWJjYTBjYWRmZjkuLjdk MmM2NjI5NzlhIDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5jCisrKyBiL3NyYy93MzJjb25z b2xlLmMKQEAgLTE5LDYgKzE5LDkgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNl ZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIC8qCiAgICBUaW0gRmxlZWhh cnQgKGFwb2xsb0BvbmxpbmUuY29tKQkJMS0xNy05MgogICAgR2VvZmYgVm9lbGtlciAodm9lbGtl ckBjcy53YXNoaW5ndG9uLmVkdSkJOS0xMi05MworICAgRXdhbiBUb3duc2hlbmQgKGV3YW5AZXRv d24uZGV2KSAgICAgICAgICAgICAgMjAyNS0wOAorICAgKiBjLiB+IDIwMjU6IDI0Yml0IFJHQiBz dXBwb3J0IGluIFdpbmRvd3MgKDEwKykgVGVybWluYWwKKyAgICogaHR0cHM6Ly9sZWFybi5taWNy b3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwt c2VxdWVuY2VzCiAqLwogCiAKQEAgLTUzLDExICs1NiwxNiBAQCBzdGF0aWMgdm9pZCB3MzJjb25f c2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpOwogc3RhdGljIHZvaWQgdzMy Y29uX3VwZGF0ZV9iZWdpbiAoc3RydWN0IGZyYW1lICogZik7CiBzdGF0aWMgdm9pZCB3MzJjb25f dXBkYXRlX2VuZCAoc3RydWN0IGZyYW1lICogZik7CiBzdGF0aWMgV09SRCB3MzJfZmFjZV9hdHRy aWJ1dGVzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKTsKK3N0YXRpYyBpbnQgIHczMmNv bl93cml0ZV92dF9zZXEgKGNvbnN0IGNoYXIgKik7CitzdGF0aWMgdm9pZCB0dXJuX29uX2ZhY2Ug KHN0cnVjdCBmcmFtZSAqLCBpbnQgZmFjZV9pZCk7CitzdGF0aWMgdm9pZCB0dXJuX29mZl9mYWNl IChzdHJ1Y3QgZnJhbWUgKiwgaW50IGZhY2VfaWQpOwogCiBzdGF0aWMgQ09PUkQJY3Vyc29yX2Nv b3JkczsKIHN0YXRpYyBIQU5ETEUJcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47CiBzdGF0aWMgV09S RAljaGFyX2F0dHJfbm9ybWFsOwogc3RhdGljIERXT1JECXByZXZfY29uc29sZV9tb2RlOworc3Rh dGljIGludCAgICAgIGJnX25vcm1hbDsKK3N0YXRpYyBpbnQgICAgICBmZ19ub3JtYWw7CiAKIHN0 YXRpYyBDT05TT0xFX0NVUlNPUl9JTkZPIGNvbnNvbGVfY3Vyc29yX2luZm87CiAjaWZuZGVmIFVT RV9TRVBBUkFURV9TQ1JFRU4KQEAgLTY3LDcgKzc1LDEwIEBAIHN0YXRpYyBDT05TT0xFX0NVUlNP Ul9JTkZPIHByZXZfY29uc29sZV9jdXJzb3I7CiBleHRlcm4gSEFORExFICBrZXlib2FyZF9oYW5k bGU7CiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIGludCB3MzJfY29uc29sZV91bmljb2RlX2lu cHV0OwotCitleHRlcm4gaW50IHczMl91c2VfdmlydHVhbF90ZXJtaW5hbDsKK2ludCB3MzJfdXNl X3ZpcnR1YWxfdGVybWluYWwgPSAxOworZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpj dXJyZW50X3R0eTsKK3N0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5VTEw7 CiAKIC8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZy b20gYmVpbmcga2lsbGVkIHdoZW4KICAgIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQn IHNlc3Npb24gKGNoaWxkIHNoZWxsKS4KQEAgLTgzLDYgKzk0LDMwIEBAIGN0cmxfY19oYW5kbGVy ICh1bnNpZ25lZCBsb25nIHR5cGUpCiAJICAmJiAodHlwZSA9PSBDVFJMX0NfRVZFTlQgfHwgdHlw ZSA9PSBDVFJMX0JSRUFLX0VWRU5UKSk7CiB9CiAKKyNkZWZpbmUgREVGQVVMVFAocCkJCQkJCQkJ XAorICAocCA9PSBGQUNFX1RUWV9ERUZBVUxUX0NPTE9SCQkJCQkJXAorICAgfHwgcCA9PSBGQUNF X1RUWV9ERUZBVUxUX0ZHX0NPTE9SCQkJCQlcCisgICB8fCBwID09IEZBQ0VfVFRZX0RFRkFVTFRf QkdfQ09MT1IpCisKKyNkZWZpbmUgU0VRTUFYIDI1NiAvKiBBcmJpdHJhcnkgdXBwZXIgbGltaXQg b24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisjZGVmaW5lIFNTUFJJTlRGKGJ1ZiwgaSwgc3osIGZt dCwgLi4uKQkJCQkJXAorICBkbyB7CQkJCQkJCQkJXAorICAgIGVhc3NlcnQgKCppIDwgc3ogJiYg c3ogPD0gU0VRTUFYKTsJCQkJCVwKKyAgICBpZiAoZm10ICYmICppIDwgc3ogJiYgc3ogPD0gU0VR TUFYKQkJCQlcCisgICAgICAqaSArPSBzbnByaW50ZiAoYnVmICsgKmksIHN6IC0gKmksIGZtdCwg X19WQV9BUkdTX18pOwkJXAorICB9IHdoaWxlICgwKQorCisvKiBXcml0ZXMgdmlydHVhbCB0ZXJt aW5hbCBzZXF1ZW5jZSB0byBzY3JlZW4gKi8KK3N0YXRpYyBpbnQKK3czMmNvbl93cml0ZV92dF9z ZXEgKGNvbnN0IGNoYXIgKnNlcSkKK3sKKyAgY2hhciBidWZbU0VRTUFYXTsKKyAgRFdPUkQgbiA9 IDAsIGsgPSAwOworICBTU1BSSU5URiAoYnVmLCAmbiwgU0VRTUFYLCBzZXEsIE5VTEwpOworICBp ZiAobikgV3JpdGVDb25zb2xlIChjdXJfc2NyZWVuLCAoTFBDU1RSKSBidWYsIG4sICZrLCBOVUxM KTsKKyAgcmV0dXJuIGs7Cit9CiAKIC8qIE1vdmUgdGhlIGN1cnNvciB0byAoUk9XLCBDT0wpIG9u IEZSQU1FLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0zMDksMTAgKzM0NCwxMSBAQCB3MzJjb25fd3Jp dGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBnbHlwaCAqc3RyaW5n LAogICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgaW50IGxlbikKIHsKICAgRFdPUkQgcjsK LSAgV09SRCBjaGFyX2F0dHI7CiAgIExQQ1NUUiBjb252ZXJzaW9uX2J1ZmZlcjsKICAgc3RydWN0 IGNvZGluZ19zeXN0ZW0gKmNvZGluZzsKIAorICB3MzJjb25faGlkZV9jdXJzb3IoKTsKKwogICBp ZiAobGVuIDw9IDApCiAgICAgcmV0dXJuOwogCkBAIC0zNDIsOCArMzc4LDYgQEAgdzMyY29uX3dy aXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmlu ZywKIAogICAgICAgLyogdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIHNldHMgZnJhbWUgb2YgZ2x5 cGhzIHRvIE5VTEwuICAqLwogICAgICAgc3RydWN0IGZyYW1lICphdHRyX2ZyYW1lID0gZmFjZV9p ZF9mcmFtZSA/IGZhY2VfaWRfZnJhbWUgOiBmOwotICAgICAgLyogVHVybiBhcHBlYXJhbmNlIG1v ZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLwotICAgICAgY2hhcl9hdHRyID0gdzMy X2ZhY2VfYXR0cmlidXRlcyAoYXR0cl9mcmFtZSwgZmFjZV9pZCk7CiAKICAgICAgIGlmIChuID09 IGxlbikKIAkvKiBUaGlzIGlzIHRoZSBsYXN0IHJ1bi4gICovCkBAIC0zNTEsMjggKzM4NSw0MiBA QCB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBn bHlwaCAqc3RyaW5nLAogICAgICAgY29udmVyc2lvbl9idWZmZXIgPSAoTFBDU1RSKSBlbmNvZGVf dGVybWluYWxfY29kZSAoc3RyaW5nLCBuLCBjb2RpbmcpOwogICAgICAgaWYgKGNvZGluZy0+cHJv ZHVjZWQgPiAwKQogCXsKLQkgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0 ZXJzLiAgKi8KLQkgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4s IGNoYXJfYXR0ciwKLQkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJ CQkJICAgJnIpKQorCSAgaWYgKHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCkKIAkgICAgewotCSAg ICAgIHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRlczogJWx1XG4iLAot CQkgICAgICBHZXRMYXN0RXJyb3IgKCkpOwotCSAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKKwkgICAg ICB0dXJuX29uX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgICAgIFdyaXRlQ29uc29sZSAoY3VyX3Nj cmVlbiwgY29udmVyc2lvbl9idWZmZXIsCisJCQkgICAgY29kaW5nLT5wcm9kdWNlZCwgJnIsIE5V TEwpOworCSAgICAgIHR1cm5fb2ZmX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgICAgIGN1cnNvcl9j b29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOwogCSAgICB9Ci0KLQkgIC8qIFdyaXRlIHRoZSBj aGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJf c2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKLQkJCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsIGN1 cnNvcl9jb29yZHMsCi0JCQkJCSAgICAmcikpCisJICBlbHNlCiAJICAgIHsKLQkgICAgICBwcmlu dGYgKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3RlcnM6ICVsdVxuIiwKLQkJICAgICAg R2V0TGFzdEVycm9yICgpKTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7Ci0JICAgIH0KKwkgICAg ICAvKiBUdXJuIGFwcGVhcmFuY2UgbW9kZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICov CisJICAgICAgV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1l LCBmYWNlX2lkKTsKKworCSAgICAgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFy YWN0ZXJzLiAgKi8KKwkgICAgICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJf c2NyZWVuLCBjaGFyX2F0dHIsCisJCQkJCSAgICAgICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3Jf Y29vcmRzLAorCQkJCQkgICAgICAgJnIpKQorCQl7CisJCSAgcHJpbnRmICgiRmFpbGVkIHdyaXRp bmcgY29uc29sZSBhdHRyaWJ1dGVzOiAlbHVcbiIsCisJCQkgIEdldExhc3RFcnJvciAoKSk7CisJ CSAgZmZsdXNoIChzdGRvdXQpOworCQl9CisKKwkgICAgICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVy cy4gICovCisJICAgICAgaWYgKCFXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3Jl ZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCQkJY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nv b3JkcywKKwkJCQkJCSZyKSkKKwkJeworCQkgIHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNv bGUgY2hhcmFjdGVyczogJWx1XG4iLAorCQkJICBHZXRMYXN0RXJyb3IgKCkpOworCQkgIGZmbHVz aCAoc3Rkb3V0KTsKKwkJfQogCi0JICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5wcm9kdWNl ZDsKLQkgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29v cmRzLlgpOworCSAgICAgIGN1cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOworCSAg ICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29vcmRz LlgpOworCSAgICB9CiAJfQogICAgICAgbGVuIC09IG47CiAgICAgICBzdHJpbmcgKz0gbjsKQEAg LTM4OCw2ICs0MzYsOCBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZy YW1lICpmLCByZWdpc3RlciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiAgIExQQ1NUUiBjb252ZXJz aW9uX2J1ZmZlcjsKICAgc3RydWN0IGNvZGluZ19zeXN0ZW0gKmNvZGluZzsKIAorICB3MzJjb25f aGlkZV9jdXJzb3IoKTsKKwogICBpZiAobGVuIDw9IDApCiAgICAgcmV0dXJuOwogCkBAIC00MDQs MjQgKzQ1NCwzOCBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1l ICpmLCByZWdpc3RlciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiAgIGlmIChjb2RpbmctPnByb2R1 Y2VkID4gMCkKICAgICB7CiAgICAgICBEV09SRCBmaWxsZWQsIHdyaXR0ZW47Ci0gICAgICAvKiBD b21wdXRlIHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNl LiAgKi8KLSAgICAgIERXT1JEIGNoYXJfYXR0ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGYsIGZh Y2VfaWQpOwotICAgICAgQ09PUkQgc3RhcnRfY29vcmRzOwotCi0gICAgICBzdGFydF9jb29yZHMu WCA9IHg7Ci0gICAgICBzdGFydF9jb29yZHMuWSA9IHk7Ci0gICAgICAvKiBTZXQgdGhlIGF0dHJp YnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4gICovCi0gICAgICBpZiAoIUZpbGxDb25zb2xlT3V0 cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFyX2F0dHIsCi0JCQkJICAgICAgIGNvZGluZy0+ cHJvZHVjZWQsIHN0YXJ0X2Nvb3JkcywKLQkJCQkgICAgICAgJmZpbGxlZCkpCi0JRGViUHJpbnQg KCgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBhdHRyaWJ1dGVzOiAlZFxuIiwgR2V0TGFzdEVycm9y ICgpKSk7CisgICAgICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsKQorCXsKKwkgIENPT1JE IHNhdmVkX2Nvb3JkcyA9IGN1cnNvcl9jb29yZHM7CisJICB3MzJjb25fbW92ZV9jdXJzb3IoZiwg eSwgeCk7CisJICB0dXJuX29uX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgV3JpdGVDb25zb2xlIChj dXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCWNvZGluZy0+cHJvZHVjZWQsICZ3cml0 dGVuLCBOVUxMKTsKKwkgIHR1cm5fb2ZmX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgdzMyY29uX21v dmVfY3Vyc29yKGYsIHNhdmVkX2Nvb3Jkcy5ZLCBzYXZlZF9jb29yZHMuWCk7CisJfQogICAgICAg ZWxzZQogCXsKLQkgIC8qIFdyaXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghV3JpdGVD b25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKLQkJ CQkJICAgIGZpbGxlZCwgc3RhcnRfY29vcmRzLCAmd3JpdHRlbikpCi0JICAgIERlYlByaW50ICgo IkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hhcmFjdGVyczogJWRcbiIsCi0JCSAgICAgICBHZXRM YXN0RXJyb3IgKCkpKTsKKwkgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBhdHRyaWJ1dGVzIGNv cnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICAqLworCSAgRFdPUkQgY2hhcl9hdHRyID0gdzMyX2Zh Y2VfYXR0cmlidXRlcyAoZiwgZmFjZV9pZCk7CisJICBDT09SRCBzdGFydF9jb29yZHM7CisKKwkg IHN0YXJ0X2Nvb3Jkcy5YID0geDsKKwkgIHN0YXJ0X2Nvb3Jkcy5ZID0geTsKKworCSAgLyogU2V0 IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgaWYgKCFGaWxsQ29u c29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAorCQkJCQkgICBjb2Rp bmctPnByb2R1Y2VkLCBzdGFydF9jb29yZHMsCisJCQkJCSAgICZmaWxsZWQpKQorCSAgICBEZWJQ cmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVkXG4iLCBHZXRMYXN0 RXJyb3IgKCkpKTsKKwkgIGVsc2UKKwkgICAgeworCSAgICAgIC8qIFdyaXRlIHRoZSBjaGFyYWN0 ZXJzLiAgKi8KKwkgICAgICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3Nj cmVlbiwgY29udmVyc2lvbl9idWZmZXIsCisJCQkJCQlmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndy aXR0ZW4pKQorCQlEZWJQcmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3RlcnM6 ICVkXG4iLAorCQkJICAgR2V0TGFzdEVycm9yICgpKSk7CisJICAgIH0KIAl9CiAgICAgfQogfQpA QCAtNTIyLDYgKzU4NiwyNyBAQCB3MzJjb25fZGVsZXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpm LCBpbnQgbikKICAgc2Nyb2xsX2xpbmUgKGYsIG4sIExFRlQpOwogfQogCitzdGF0aWMgdm9pZAor dzMyY29uX3NldHVwX3ZpcnR1YWxfdGVybWluYWwgKHZvaWQpCit7CisgIERXT1JEIG91dF9tb2Rl OworICBHZXRDb25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgJm91dF9tb2RlKTsKKyAgb3V0X21vZGUg fD0gRU5BQkxFX1BST0NFU1NFRF9PVVRQVVQ7CisgIG91dF9tb2RlIHw9IERJU0FCTEVfTkVXTElO RV9BVVRPX1JFVFVSTjsKKworICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsKQorICAgIG91 dF9tb2RlIHw9IEVOQUJMRV9WSVJUVUFMX1RFUk1JTkFMX1BST0NFU1NJTkc7CisgIGVsc2UKKyAg ICBvdXRfbW9kZSAmPSB+RU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORzsKKworICBp bnQgb3V0X21vZGVfc2V0ID0gU2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sIG91dF9tb2RlKTsK KyAgdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsID0gdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsICYm IG91dF9tb2RlX3NldDsKKworICBpbnQgbWF4X2NvbG9ycyA9IHczMl91c2VfdmlydHVhbF90ZXJt aW5hbCA/IDE2Nzc3MjE2IDogMTY7CisgIHR0eV9zZXR1cF9jb2xvcnMgKGN1cnJlbnRfdHR5LCBt YXhfY29sb3JzKTsKKworICBzYWZlX2NhbGxuIChRdHR5X3NldF91cF9pbml0aWFsX2ZyYW1lX2Zh Y2VzKTsKK30KIAogc3RhdGljIHZvaWQKIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAoc3Ry dWN0IHRlcm1pbmFsICp0KQpAQCAtNTc4LDYgKzY2Myw3IEBAIHczMmNvbl9zZXRfdGVybWluYWxf bW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2RlOiBp bnRlcnJ1cHRfaW5wdXQgb2ZmLCBubyBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0IGNo YXJhY3RlciBpbnB1dCwgc3RhbmRhcmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9tb2Rl IChRbmlsLCBRbmlsLCBtYWtlX2ZpeG51bSAoMiksIFFuaWwpOworICB3MzJjb25fc2V0dXBfdmly dHVhbF90ZXJtaW5hbCAoKTsKIH0KIAogLyogaG1tbS4uLiBwZXJoYXBzIHRoZXNlIGxldCB1cyBi cmFja2V0IHNjcmVlbiBjaGFuZ2VzIHNvIHRoYXQgd2UgY2FuIGZsdXNoCkBAIC02MjQsOCArNzEw LDYgQEAgc3lzX3RnZXRzdHIgKGNoYXIgKmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBmcm9t IGNtLmMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KIAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZv ICpjdXJyZW50X3R0eTsKLXN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5V TEw7CiBleHRlcm4gaW50IGNvc3Q7CiBpbnQgY29zdCA9IDA7CiAKQEAgLTcyOSw2ICs4MTMsODcg QEAgdzMyX2ZhY2VfYXR0cmlidXRlcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAg cmV0dXJuIGNoYXJfYXR0cjsKIH0KIAorc3RhdGljIHZvaWQKK3R1cm5fb25fZmFjZSAoc3RydWN0 IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZS T01fSUQgKGYsIGZhY2VfaWQpOworICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJB TUVfVFRZIChmKTsKKyAgdW5zaWduZWQgbG9uZyBmZyA9IGZhY2UtPmZvcmVncm91bmQ7CisgIHVu c2lnbmVkIGxvbmcgYmcgPSBmYWNlLT5iYWNrZ3JvdW5kOworCisgIC8qIGNvbnN0cnVjdCBjb21i aW5lZCBWVCBzZXF1ZW5jZSBmb3IgZmFjZSBhdHRyaWJ1dGVzICovCisgIERXT1JEIG4gPSAwOwor ICBzaXplX3Qgc3ogPSBTRVFNQVg7CisgIGNoYXIgc2VxW3N6XTsKKyAgc3otLTsKKworICBpZiAo ZmFjZS0+dHR5X2JvbGRfcCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50 ZXJfYm9sZF9tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9pdGFsaWNfcCkKKyAgICBTU1BS SU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfaXRhbGljX21vZGUsIE5VTEwpOworICBp ZiAoZmFjZS0+dHR5X3N0cmlrZV90aHJvdWdoX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6 LCB0dHktPlRTX2VudGVyX3N0cmlrZV90aHJvdWdoX21vZGUsIE5VTEwpOworICBpZiAoZmFjZS0+ dW5kZXJsaW5lICE9IDApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVy X3VuZGVybGluZV9tb2RlLCBOVUxMKTsKKyAgLyogTm90ZTogd2hlbiBmYWNlLT50dHlfcmV2ZXJz ZV9wICE9IDAgYW5kIGZnIGFuZCBiZyBhcmUgc3BlY2lmaWVkLAorICAgICB0aGVpciB2YWx1ZXMg YXJlIGFscmVhZHkgc3dhcHBlZCBhbmQgcmV2ZXJzaW5nIHRoZW0gaGVyZSB3b3VsZCBzd2FwCisg ICAgIHRoZW0gYmFjaywgYnV0IHdlIG5lZWQgdG8gaGFuZGxlIHRoZSByZXZlcnNhbCB3aGVuIHVu c3BlY2lmaWVkLiAgKi8KKyAgaWYgKGZhY2UtPnR0eV9yZXZlcnNlX3AgJiYgREVGQVVMVFAgKGZn KSAmJiBERUZBVUxUUCAoYmcpKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19l bnRlcl9yZXZlcnNlX21vZGUsIE5VTEwpOworCisgIGlmIChERUZBVUxUUCAoZmcpKSBmZyA9IGZn X25vcm1hbDsKKyAgaWYgKERFRkFVTFRQIChiZykpIGJnID0gYmdfbm9ybWFsOworCisgIGNvbnN0 IGNoYXIgKnNldF9mZyA9IHR0eS0+VFNfc2V0X2ZvcmVncm91bmQ7CisgIGNvbnN0IGNoYXIgKnNl dF9iZyA9IHR0eS0+VFNfc2V0X2JhY2tncm91bmQ7CisgIGlmICh0dHktPlROX21heF9jb2xvcnMg PT0gOCAgfHwgdHR5LT5UTl9tYXhfY29sb3JzID09IDE2KQorICAgIHsKKyAgICAgIC8qIGZnIGFu ZCBiZyBhcmUgaW5kaWNlcyBpbnRvIDE2IGJhc2UgY29sb3JzIChzZWUgbGluayBhdCB0b3ApLiAg Ki8KKyAgICAgIHVuc2lnbmVkIGxvbmcgZmdpID0gMCwgYmdpID0gMDsKKworICAgICAgZmdpID0g KGZnID49IDAgICYmIGZnIDwgOCkKKwkgICAgPyBmZyArIDMwCisJICAgIDogKGZnID49IDggICYm IGZnIDwgMTYpCisJICAgICAgPyBmZyAtIDggKyA5MAorCSAgICAgIDogMDsKKyAgICAgIGlmIChm Z2kpCisJU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfZmcsIGZnaSk7CisKKyAgICAgIGJnaSA9 IChiZyA+PSAwICAmJiBiZyA8IDgpCisJICAgID8gYmcgKyA0MAorCSAgICA6IChiZyA+PSA4ICAm JiBiZyA8IDE2KQorCSAgICAgID8gYmcgLSA4ICsgMTAwCisJICAgICAgOiAwOworICAgICAgaWYg KGJnaSkKKwlTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9iZywgYmdpKTsKKyAgICB9CisgIGVs c2UgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAyNTYpCisgICAgeworICAgICAgLyogZmcgYW5k IGJnIGFyZSB4dGVybSBpbmRpY2VzLiAgKi8KKyAgICAgIGlmIChmZyA+PSAwICYmIGZnIDwgMjU2 KQorCVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2ZnLCBmZyk7CisKKyAgICAgIGlmIChiZyA+ PSAwICYmIGJnIDwgMjU2KQorCVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCBiZyk7Cisg ICAgfQorICBlbHNlIGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gMTY3NzcyMTYpCisgICAgewor ICAgICAgLyogZmcgYW5kIGJnIGFyZSBwaXhlbCB2YWx1ZXMgLS0gZGVjb21wb3NlIHRvIHJnYiB0 cmlwbGVzLiAgKi8KKyAgICAgIHVuc2lnbmVkIGxvbmcgcmYgPSBmZy82NTUzNiwgZ2YgPSAoZmcv MjU2KSYyNTUsIGJmID0gZmcmMjU1OworICAgICAgdW5zaWduZWQgbG9uZyByYiA9IGJnLzY1NTM2 LCBnYiA9IChiZy8yNTYpJjI1NSwgYmIgPSBiZyYyNTU7CisgICAgICBTU1BSSU5URiAoc2VxLCAm biwgc3osIHNldF9mZywgcmYsIGdmLCBiZik7CisgICAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3os IHNldF9iZywgcmIsIGdiLCBiYik7CisgICAgfQorICB3MzJjb25fd3JpdGVfdnRfc2VxICgoY29u c3QgY2hhciAqKSBzZXEpOworfQorCitzdGF0aWMgdm9pZAordHVybl9vZmZfZmFjZSAoc3RydWN0 IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0 eSA9IEZSQU1FX1RUWSAoZik7CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHR0eS0+VFNfZXhpdF9h dHRyaWJ1dGVfbW9kZSk7Cit9CisKIC8qIFRoZSBJTUUgd2luZG93IGlzIG5lZWRlZCB0byByZWNl aXZlIHRoZSBzZXNzaW9uIG5vdGlmaWNhdGlvbnMKICAgIHJlcXVpcmVkIHRvIHJlc2V0IHRoZSBs b3cgbGV2ZWwga2V5Ym9hcmQgaG9vayBzdGF0ZS4gICovCiAKQEAgLTg2MSw2ICsxMDI2LDggQEAg aW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRo LCBpbnQgKmhlaWdodCkKICAgICB9CiAKICAgY2hhcl9hdHRyX25vcm1hbCA9IGluZm8ud0F0dHJp YnV0ZXM7CisgIGZnX25vcm1hbCA9IGNoYXJfYXR0cl9ub3JtYWwgJiAweDAwMGY7CisgIGJnX25v cm1hbCA9IChjaGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmOwogCiAgIC8qIERldGVybWlu ZSBpZiB0aGUgaW5mbyByZXR1cm5lZCBieSBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbwogICAg ICBpcyByZWFsaXN0aWMuICBPbGQgTVMgVGVsbmV0IHNlcnZlcnMgdXNlZCB0byBvbmx5IGZpbGwg b3V0CkBAIC05MTQsMzEgKzEwODEsODAgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0 IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIAogICAvKiBTZXQgdXAg dGhlIGtleWJvYXJkIGhvb2suICAqLwogICBzZXR1cF93MzJfa2JkaG9vayAoaHduZCk7CisKKyAg LyogU2V0IGN1cnJlbnRfdHR5IHRvIHRoZSB0dHkgb2YgdGhpcyB0ZXJtaW5hbCAqLworICBjdXJy ZW50X3R0eSA9IHRlcm0tPmRpc3BsYXlfaW5mby50dHk7CiB9CiAKIAotREVGVU4gKCJzZXQtc2Ny ZWVuLWNvbG9yIiwgRnNldF9zY3JlZW5fY29sb3IsIFNzZXRfc2NyZWVuX2NvbG9yLCAyLCAyLCAw LAorREVGVU4gKCJzZXQtc2NyZWVuLWNvbG9yIiwgRnNldF9zY3JlZW5fY29sb3IsIFNzZXRfc2Ny ZWVuX2NvbG9yLCAyLCAzLCAwLAogICAgICAgIGRvYzogLyogU2V0IHNjcmVlbiBmb3JlZ3JvdW5k IGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KIAotQXJndW1lbnRzIHNob3VsZCBiZSBpbmRpY2VzIGJl dHdlZW4gMCBhbmQgMTUsIHNlZSB3MzJjb25zb2xlLmVsLiAgKi8pCi0gIChMaXNwX09iamVjdCBm b3JlZ3JvdW5kLCBMaXNwX09iamVjdCBiYWNrZ3JvdW5kKQorQXJndW1lbnRzIHNob3VsZCBiZSBp bmRpY2VzIGZvciBjb2xvcnMgaW4gdGhlIGxpc3QgcmV0dXJuZWQgYnkgYHR0eS1jb2xvci1hbGlz dCcuCitJZiBWVFAgaXMgbm9uLW5pbCwgc2V0dGluZ3MgYWZmZWN0IHZpcnR1YWwgdGVybWluYWwg cHJvY2Vzc2luZyBvbmx5LgorT3RoZXJ3aXNlLCBhcmd1bWVudHMgc2hvdWxkIGJlIGJldHdlZW4g MCBhbmQgMTUsIGFuZCBzZXR0aW5ncyB3aWxsCitiZSBlZmZlY3RpdmUgb25seSB3aGVuIHZpcnR1 YWwgdGVybWluYWwgcHJvY2Vzc2luZyBpcyBkaXNhYmxlZC4KKworU2VlIHczMmNvbnNvbGUuZWwg YW5kIHRoZSBkb2N1bWVudGF0aW9uIGZvciBgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsJy4gICov KQorICAoTGlzcF9PYmplY3QgZm9yZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCwgTGlz cF9PYmplY3QgdnRwKQogewotICBjaGFyX2F0dHJfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdyb3Vu ZCkgKyAoWEZJWE5BVCAoYmFja2dyb3VuZCkgPDwgNCk7CisgIGludCBmZyA9IFhGSVhOQVQgKGZv cmVncm91bmQpOworICBpbnQgYmcgPSBYRklYTkFUIChiYWNrZ3JvdW5kKTsKKworICBpZiAoTklM UCAodnRwKSkKKyAgICB7CisgICAgICBjaGFyX2F0dHJfbm9ybWFsID0gZmcgKyAoYmcgPDwgNCk7 CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgZmdfbm9ybWFsID0gZmc7CisgICAgICBiZ19u b3JtYWwgPSBiZzsKKyAgICB9CiAKICAgRnJlY2VudGVyIChRbmlsLCBRdCk7CiAgIHJldHVybiBR dDsKIH0KIAotREVGVU4gKCJnZXQtc2NyZWVuLWNvbG9yIiwgRmdldF9zY3JlZW5fY29sb3IsIFNn ZXRfc2NyZWVuX2NvbG9yLCAwLCAwLCAwLAorREVGVU4gKCJnZXQtc2NyZWVuLWNvbG9yIiwgRmdl dF9zY3JlZW5fY29sb3IsIFNnZXRfc2NyZWVuX2NvbG9yLCAwLCAxLCAwLAogICAgICAgIGRvYzog LyogR2V0IGNvbG9yIGluZGljZXMgb2YgdGhlIGN1cnJlbnQgc2NyZWVuIGZvcmVncm91bmQgYW5k IGJhY2tncm91bmQuCiAKLVRoZSBjb2xvcnMgYXJlIHJldHVybmVkIGFzIGEgbGlzdCBvZiAyIGlu ZGljZXMgKEZPUkVHUk9VTkQgQkFDS0dST1VORCkuCi1TZWUgdzMyY29uc29sZS5lbCBhbmQgYHR0 eS1kZWZpbmVkLWNvbG9yLWFsaXN0JyBmb3IgbWFwcGluZyBvZiBpbmRpY2VzCi10byBjb2xvcnMu ICAqLykKK1RoZSBjb2xvcnMgYXJlIHJldHVybmVkIGFzIGEgbGlzdCBvZiAyIGluZGljZXMgKEZP UkVHUk9VTkQgQkFDS0dST1VORCkgZm9yCitjb2xvcnMgaW4gdGhlIGxpc3QgcmV0dXJuZWQgYnkg YHR0eS1jb2xvci1hbGlzdGAuCisKK0lmIFZUUCBpcyBub24tbmlsLCByZXR1cm5zIHNldHRpbmdz IGVmZmVjdGl2ZSB3aGVuIHZpcnR1YWwgdGVybWluYWwKK3Byb2Nlc3NpbmcgaXMgZW5hYmxlZC4g IE90aGVyd2lzZSwgcmV0dXJucyBzZXR0aW5ncyBlZmZlY3RpdmUgd2hlbgordmlydHVhbCB0ZXJt aW5hbCBwcm9jZXNzaW5nIGlzIGRpc2FibGVkLgorCitTZWUgdzMyY29uc29sZS5lbCBhbmQgdGhl IGRvY3VtZW50YXRpb24gZm9yIGB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwnLiAgKi8pCisgIChM aXNwX09iamVjdCB2dHApCit7CisgIGludCBmZyA9IE5JTFAgKHZ0cCkgPyBjaGFyX2F0dHJfbm9y bWFsICYgMHgwMDBmIDogZmdfbm9ybWFsOworICBpbnQgYmcgPSBOSUxQICh2dHApID8gKGNoYXJf YXR0cl9ub3JtYWwgPj4gNCkgJiAweDAwMGYgOiBiZ19ub3JtYWw7CisKKyAgcmV0dXJuIEZjb25z IChtYWtlX2ZpeG51bSAoZmcpLCBGY29ucyAobWFrZV9maXhudW0gKGJnKSwgUW5pbCkpOworfQor CitERUZVTiAoInczMi11c2UtdmlydHVhbC10ZXJtaW5hbCIsIEZ3MzJfdXNlX3ZpcnR1YWxfdGVy bWluYWwsIFN3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwsIDEsIDEsIDAsCisgICAgICAgZG9jOiAv KiBFbmFibGVzIChkaXNhYmxlcykgdmlydHVhbCB0ZXJtaW5hbCBzZXF1ZW5jZSBwcm9jZXNzaW5n IGlmIGFyZ3VtZW50IGlzIHQgKG5pbCkuICAqLykKKyAgKExpc3BfT2JqZWN0IGFyZykKK3sKKyAg aWYgKEVRIChhcmcsIFF0KSkKKyAgICB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwgPSAxOworICBl bHNlIGlmIChFUSAoYXJnLCBRbmlsKSkKKyAgICB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwgPSAw OworICBlbHNlIHsKKyAgICBlcnJvciAoIkludmFsaWQgYXJndW1lbnQ6IGV4cGVjdHMgdCBvciBu aWwuIik7CisgICAgcmV0dXJuIFFuaWw7CisgIH0KKworICByZXR1cm4gUXQ7Cit9CisKK0RFRlVO ICgidzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXAiLCBGdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFs X3AsIFN3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfcCwgMCwgMCwgMCwKKyAgICAgICBkb2M6IC8q IFJldHVybnMgdCAobmlsKSBpZiB2aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlIHByb2Nlc3Npbmcg aXMgZW5hYmxlZCAoZGlzYWJsZWQpLiAgKi8pCiAgICh2b2lkKQogewotICByZXR1cm4gRmNvbnMg KG1ha2VfZml4bnVtIChjaGFyX2F0dHJfbm9ybWFsICYgMHgwMDBmKSwKLQkJRmNvbnMgKG1ha2Vf Zml4bnVtICgoY2hhcl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4MDAwZiksIFFuaWwpKTsKKyAgcmV0 dXJuIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCA/IFF0IDogUW5pbDsKIH0KIAogREVGVU4gKCJz ZXQtY3Vyc29yLXNpemUiLCBGc2V0X2N1cnNvcl9zaXplLCBTc2V0X2N1cnNvcl9zaXplLCAxLCAx LCAwLApAQCAtOTY3LDUgKzExODMsNyBAQCBzY3JvbGwtYmFjayBidWZmZXIuICAqLyk7CiAKICAg ZGVmc3ViciAoJlNzZXRfc2NyZWVuX2NvbG9yKTsKICAgZGVmc3ViciAoJlNnZXRfc2NyZWVuX2Nv bG9yKTsKKyAgZGVmc3ViciAoJlN3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwpOworICBkZWZzdWJy ICgmU3czMl91c2VfdmlydHVhbF90ZXJtaW5hbF9wKTsKICAgZGVmc3ViciAoJlNzZXRfY3Vyc29y X3NpemUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCBh ZWY0MGMzOGU1NC4uZGM3ZjQyYjk4YmEgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3Ny Yy94ZGlzcC5jCkBAIC0xNzIzOSw3ICsxNzIzOSw3IEBAIHJlZGlzcGxheV9pbnRlcm5hbCAodm9p ZCkKIAkgICAgIGFyZWEsIGRpc3BsYXlpbmcgYSBkaWZmZXJlbnQgZnJhbWUgbWVhbnMgcmVkaXNw bGF5IHRoZQogCSAgICAgd2hvbGUgdGhpbmcuICAqLwogCSAgU0VUX0ZSQU1FX0dBUkJBR0VEIChz Zik7Ci0jaWYgIWRlZmluZWQgRE9TX05UICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAorI2lmICFk ZWZpbmVkIE1TRE9TICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAogCSAgc2V0X3R0eV9jb2xvcl9t b2RlIChGUkFNRV9UVFkgKHNmKSwgc2YpOwogI2VuZGlmCiAJfQoKMi40OS4wCgo= --b1=_mSPV0sEBAfMuCrYGWcflim3sLJsBX2sO8fb5TpNiiY--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 1 Oct 2025 14:18:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 01 10:18:58 2025
Received: from localhost ([127.0.0.1]:35791 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v3xfV-0001Wn-O4
for submit <at> debbugs.gnu.org; Wed, 01 Oct 2025 10:18:58 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:39264)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v3xfP-0001WQ-5Q
for 79298 <at> debbugs.gnu.org; Wed, 01 Oct 2025 10:18:52 -0400
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 1v3xfH-0003gv-GD; Wed, 01 Oct 2025 10:18:44 -0400
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=UiyznFNZX1ltHBrsFDvzIARMCpvKUrUJWCXkc56CtlE=; b=b64bHdXAQWcL
CEMK3w75NDLp4TbAV7TsIz/OvzltcUJTu4ZvDT6/G8tygG66hkoGMrcQ+CchyCs4uHia5TeNr5atC
ZKAc42VcxabmagCcR47NG0U4kJ1j6hVOfd+tEgUv7vIPaM33JBtRAh0WmzAODCPoKWC+o1KIBwFOE
7u7jIL48kIjF5Cpm7zJF2bm8+KYsif56nIV+XosDcqtxo6J7Wci0yq/OybwB0Q4MLlqo3r9LNkRa5
RChhkc00AGnwgyDMp1bkQolZEgVtKlKs4rRCGoFfVgxU37W2RpyOWci1plIFCcL5R3OgF5UHsG9wt
BzoTttGNJC05/EiVSM66cg==;
Date: Wed, 01 Oct 2025 17:18:29 +0300
Message-Id: <86zfaahfii.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ewan <ewan@HIDDEN>
In-Reply-To: <9UJtrNaIFnI47rBiAEb05O2V2tV5bY_t7wuYrnvIuMAAgpEb8X_QxsfrwYPaMxV_8mhLnbYOjH5aHgdh-3khO-BGrEUpc1g3brQUpITzKgU=@etown.dev>
(message from Ewan on Mon, 29 Sep 2025 04:52:47 +0000)
Subject: Re: bug#79298: patch: full color in windows terminal
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
<86wm61nsuv.fsf@HIDDEN>
<aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
<861po0grbt.fsf@HIDDEN>
<cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev>
<86qzvs6lwm.fsf@HIDDEN>
<9UJtrNaIFnI47rBiAEb05O2V2tV5bY_t7wuYrnvIuMAAgpEb8X_QxsfrwYPaMxV_8mhLnbYOjH5aHgdh-3khO-BGrEUpc1g3brQUpITzKgU=@etown.dev>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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: Mon, 29 Sep 2025 04:52:47 +0000
> From: Ewan <ewan@HIDDEN>
> Cc: 79298 <at> debbugs.gnu.org
>
>
> > > +@vindex use-virtual-terminal
> >
> >
> > This should be @findex, since it's a function. Also, I'd prefer for
> > it to be described in the Windows-specific appendix, not here. And
> > finally, I think the name should be w32-use-virtual-terminal.
>
> Corrected tag and function name. But I believe this is in the
> MS-Windows appendix, non-ideally named doc/emacs/msdos.texi.
Oh, you are right, sorry. The place in the manual is correct.
> > > (defun tty-set-up-initial-frame-faces ()
> > > - (let ((frame (selected-frame)))
> > > - (frame-set-background-mode frame t)
> > > - (face-set-after-frame-default frame)))
> > > + (progn
> > > + (when (eq system-type 'windows-nt)
> > > + (require 'term/w32console)
> > > + (w32-tty-setup-colors))
> > > + (let ((frame (selected-frame)))
> > > + (frame-set-background-mode frame t)
> > > + (face-set-after-frame-default frame))))
> >
> >
> > This is unusual: why do we need to load w32console.el explicitly?
> > It's supposed to be loaded automatically when Emacs is started in -nw
> > mode, so if something doesn't work without the above, we need to
> > figure out why.
>
> I get a compiler error when I don't have the 'require here.
> Perhaps it's just my build script (but it's a pretty standard one).
> Let me know if you have any suggestions to correct that.
This works for me:
(declare-function w32-tty-setup-colors "term/w32console" ())
(defun tty-set-up-initial-frame-faces ()
(progn
(when (and (eq system-type 'windows-nt)
(featurep 'term/w32console))
(w32-tty-setup-colors))
(let ((frame (selected-frame)))
(frame-set-background-mode frame t)
(face-set-after-frame-default frame))))
You may need to delete src/bootstrap-emacs.exe, and maybe also
lisp/faces.elc and lisp/term/w32console.elc, but eventually this
should compile cleanly, and should work as expected. If it works okay
for you (including when creating additional TTY frames), let's go with
the above.
> > > --- a/lisp/term/tty-colors.el
> > > +++ b/lisp/term/tty-colors.el
> > > @@ -764,7 +764,8 @@
> > > (auto . 0)
> > > (ansi8 . 8)
> > > (always . 8)
> > > - (yes . 8))
> > > + (yes . 8)
> > > + (24bit . 16777216))
> > > "An alist of supported standard tty color modes and their aliases.")
> >
> >
> > Shouldn't 256 be here as well? Otherwise, --color=256 will not work.
> > (I tried that, and it indeed tells Emacs to use only 16 colors.)
>
> I've added '(8bit . 256), for consistency, and since these are both
> only effective on MS-Windows, and set-frame-parameter accepts either
> the alist keys, or the numbers.
OK, but after "emacs -Q -nw --color=256", I get a session where
display-color-cells reports 256, but "M-x list-colors-display" still
shows only 16 colors. Shouldn't it show 256?
> > > +DEFUN ("use-virtual-terminal", Fuse_virtual_terminal, Suse_virtual_terminal, 0, 1, 0,
> > > + doc: /* Inspect or enable/disable virtual terminal sequence processing.
> > > +
> > > +If argument is zero, disable virtual terminal sequence processing.
> > > +If argument is a non-zero number, enable virtual terminal sequence processing.
> > > +If argument is omitted or nil, just inspect the current state.
> > > +Returns t (nil) if virtual terminal sequence processing is enabled (disabled). */)
> >
> >
> > I'd prefer the function's name to be w32-specific, like
> > w32-use-virtual-terminal.
> >
> > > + (Lisp_Object arg)
> > > +{
> > > + if (!NILP (arg))
> > > + {
> > > + w32_use_virtual_terminal = XFIXNAT (arg);
> > > + w32con_setup_virtual_terminal ();
> > > + }
> > > + return w32_use_virtual_terminal ? Qt : Qnil;
> > > }
> >
> >
> > AFAICT, the variable w32_use_virtual_terminal is a simple boolean,
> > either true or false. Then why do we need to accept as argument to
> > this function anything but nil (meaning disable) and t (enable)?
>
> The idea was for this function to be callable with no argument, to
> inspect the value without setting it. But then Qt and Qnil didn't
> work as arguments, since the argument is nil when omitted. But that
> API is non-intuitive, so I've just added another function,
> w32-use-virtual-terminal-p, to inspect the value, and have reserved
> w32-use-virtual-terminal for setting it (with nil or t).
That's fine, thanks.
> > Last comment: I tried "emacs -Q -nw", and didn't see any flickering on
> > display. Can you tell what to do to try cause flickering? Or maybe
> > my machine is too fast for this to be seen?
>
> Just load any colored-background theme, e.g. deeper-blue, then watch
> the lower left corner (in the echo area), when moving the cursor
> or typing input into a buffer (the more rapidly, the more pronounced).
> It is specifically an issue when the background is colored
> -- or at least I don't have it otherwise.
That's okay: I see similar flickering of the cursor on GNU/Linux in
"emacs -nw", so I think we are okay there. But do you understand why
we show the cursor there although we hide the cursor when displaying?
> Revised patch attached, which I believe addresses all other comments.
Thanks. Let me know if the change in faces.el works okay for you, and
then we can install.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 29 Sep 2025 04:53:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 29 00:53:15 2025
Received: from localhost ([127.0.0.1]:50449 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v35ss-0000Qf-G6
for submit <at> debbugs.gnu.org; Mon, 29 Sep 2025 00:53:15 -0400
Received: from mail-24422.protonmail.ch ([109.224.244.22]:33031)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v35sj-0000On-1S
for 79298 <at> debbugs.gnu.org; Mon, 29 Sep 2025 00:53:06 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev;
s=protonmail; t=1759121571; x=1759380771;
bh=sMquvMtJZy8EvSumiem8uJfdKFEN4VoGTE6mL4i6VbA=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=xdch/5leu/d+3N0K2E17UJSI32PfYr32qf26O8DSe4BSPf6lYqZbS4h+9j3/a7qkT
PA8hfcEy1MwTby7h0ZMgevYqQFDwB7lFeUzSO0SdeIMtqQCmtyVArH7eGnrGsfxkqM
vmRhxfIov3mvD4d8m3SpVtxMXNuvvUOj0IC/N8OUmUjh6kz2X4A4tyQcJpBUk+bJwH
zbdD0MQxSmqkrBhhkUTFMTpmKSgHTgpsVHhDW8GFyevQx4eL4Gpff+JNalFH4rHao2
YZkXY6T955QgXhzyOV7uiiXu3XnANBtli1z+K0qP8hRLGYp/mHUkpG6/aXC0wMs6b8
ChL5vQ4Urk3oA==
Date: Mon, 29 Sep 2025 04:52:47 +0000
To: Eli Zaretskii <eliz@HIDDEN>
From: Ewan <ewan@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Message-ID: <9UJtrNaIFnI47rBiAEb05O2V2tV5bY_t7wuYrnvIuMAAgpEb8X_QxsfrwYPaMxV_8mhLnbYOjH5aHgdh-3khO-BGrEUpc1g3brQUpITzKgU=@etown.dev>
In-Reply-To: <86qzvs6lwm.fsf@HIDDEN>
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
<86wm61nsuv.fsf@HIDDEN>
<aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
<861po0grbt.fsf@HIDDEN>
<cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev>
<86qzvs6lwm.fsf@HIDDEN>
Feedback-ID: 150490971:user:proton
X-Pm-Message-ID: e689dbb449d48d2758662e6eae6834bd65587426
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="b1=_ahBK1ypgWE7QebnyYZDGQcV1FbNDLhdlnvuqLi4dpg"
X-Spam-Score: -1.0 (-)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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: -2.0 (--)
--b1=_ahBK1ypgWE7QebnyYZDGQcV1FbNDLhdlnvuqLi4dpg
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
> > +@vindex use-virtual-terminal
>=20
>=20
> This should be @findex, since it's a function. Also, I'd prefer for
> it to be described in the Windows-specific appendix, not here. And
> finally, I think the name should be w32-use-virtual-terminal.
Corrected tag and function name. But I believe this is in the
MS-Windows appendix, non-ideally named doc/emacs/msdos.texi. Please
point me to the right place, if there is a more appropriate one.
> > --- a/lisp/faces.el
> > +++ b/lisp/faces.el
> > @@ -2407,9 +2407,13 @@ If you set `term-file-prefix' to nil, this funct=
ion does nothing."
> > ;; dumped terminal frame on startup.
> >=20
> > (defun tty-set-up-initial-frame-faces ()
> > - (let ((frame (selected-frame)))
> > - (frame-set-background-mode frame t)
> > - (face-set-after-frame-default frame)))
> > + (progn
> > + (when (eq system-type 'windows-nt)
> > + (require 'term/w32console)
> > + (w32-tty-setup-colors))
> > + (let ((frame (selected-frame)))
> > + (frame-set-background-mode frame t)
> > + (face-set-after-frame-default frame))))
>=20
>=20
> This is unusual: why do we need to load w32console.el explicitly?
> It's supposed to be loaded automatically when Emacs is started in -nw
> mode, so if something doesn't work without the above, we need to
> figure out why.
I get a compiler error when I don't have the 'require here.
Perhaps it's just my build script (but it's a pretty standard one).
Let me know if you have any suggestions to correct that.
> > --- a/lisp/term/tty-colors.el
> > +++ b/lisp/term/tty-colors.el
> > @@ -764,7 +764,8 @@
> > (auto . 0)
> > (ansi8 . 8)
> > (always . 8)
> > - (yes . 8))
> > + (yes . 8)
> > + (24bit . 16777216))
> > "An alist of supported standard tty color modes and their aliases.")
>=20
>=20
> Shouldn't 256 be here as well? Otherwise, --color=3D256 will not work.
> (I tried that, and it indeed tells Emacs to use only 16 colors.)
I've added '(8bit . 256), for consistency, and since these are both
only effective on MS-Windows, and set-frame-parameter accepts either
the alist keys, or the numbers.
> > +DEFUN ("use-virtual-terminal", Fuse_virtual_terminal, Suse_virtual_ter=
minal, 0, 1, 0,
> > + doc: /* Inspect or enable/disable virtual terminal sequence processin=
g.
> > +
> > +If argument is zero, disable virtual terminal sequence processing.
> > +If argument is a non-zero number, enable virtual terminal sequence pro=
cessing.
> > +If argument is omitted or nil, just inspect the current state.
> > +Returns t (nil) if virtual terminal sequence processing is enabled (di=
sabled). */)
>=20
>=20
> I'd prefer the function's name to be w32-specific, like
> w32-use-virtual-terminal.
>=20
> > + (Lisp_Object arg)
> > +{
> > + if (!NILP (arg))
> > + {
> > + w32_use_virtual_terminal =3D XFIXNAT (arg);
> > + w32con_setup_virtual_terminal ();
> > + }
> > + return w32_use_virtual_terminal ? Qt : Qnil;
> > }
>=20
>=20
> AFAICT, the variable w32_use_virtual_terminal is a simple boolean,
> either true or false. Then why do we need to accept as argument to
> this function anything but nil (meaning disable) and t (enable)?
The idea was for this function to be callable with no argument, to
inspect the value without setting it. But then Qt and Qnil didn't
work as arguments, since the argument is nil when omitted. But that=20
API is non-intuitive, so I've just added another function,
w32-use-virtual-terminal-p, to inspect the value, and have reserved
w32-use-virtual-terminal for setting it (with nil or t).
> Last comment: I tried "emacs -Q -nw", and didn't see any flickering on
> display. Can you tell what to do to try cause flickering? Or maybe
> my machine is too fast for this to be seen?
Just load any colored-background theme, e.g. deeper-blue, then watch
the lower left corner (in the echo area), when moving the cursor
or typing input into a buffer (the more rapidly, the more pronounced).
It is specifically an issue when the background is colored=20
-- or at least I don't have it otherwise.
Revised patch attached, which I believe addresses all other comments.
--b1=_ahBK1ypgWE7QebnyYZDGQcV1FbNDLhdlnvuqLi4dpg
Content-Type: application/octet-stream; name=w32-virtual-terminal-color.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=w32-virtual-terminal-color.patch
RnJvbSBhNDJkMTNiMGU5NTM3N2UxNjg0OTlkNjM1NWQzMzc0MzQ0ZGFhYzQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFN1biwg
MjggU2VwIDIwMjUgMjA6NDc6MzQgLTA3MDAKU3ViamVjdDogW1BBVENIXSB3MzIgdmlydHVhbCB0
ZXJtaW5hbCBjb2xvcgoKLS0tCiBkb2MvZW1hY3MvY21kYXJncy50ZXhpICB8ICAxNyArKy0KIGRv
Yy9lbWFjcy9tc2Rvcy50ZXhpICAgIHwgIDI3ICsrKysKIGV0Yy9ORVdTICAgICAgICAgICAgICAg
IHwgIDEyICsrCiBsaXNwL2ZhY2VzLmVsICAgICAgICAgICB8ICAxMCArLQogbGlzcC90ZXJtL3R0
eS1jb2xvcnMuZWwgfCAgIDQgKy0KIGxpc3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTQ4ICsrKysr
KysrKysrKysrLS0tLS0KIHNyYy90ZXJtLmMgICAgICAgICAgICAgIHwgIDUxICsrKysrKy0KIHNy
Yy90ZXJtY2hhci5oICAgICAgICAgIHwgICAyICsKIHNyYy93MzJjb25zb2xlLmMgICAgICAgIHwg
MzE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy94ZGlzcC5j
ICAgICAgICAgICAgIHwgICAyICstCiAxMCBmaWxlcyBjaGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygr
KSwgMTAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkg
Yi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCmluZGV4IDc5YWUyZDA2NGQxLi4zNzgyZjVkYWQxYSAx
MDA2NDQKLS0tIGEvZG9jL2VtYWNzL2NtZGFyZ3MudGV4aQorKysgYi9kb2MvZW1hY3MvY21kYXJn
cy50ZXhpCkBAIC0xMDI0LDE5ICsxMDI0LDI2IEBAIGNvbG9yZWQgZGlzcGxheS4KIEBpdGVteCBh
bnNpOAogVHVybiBvbiB0aGUgY29sb3Igc3VwcG9ydCB1bmNvbmRpdGlvbmFsbHksIGFuZCB1c2Ug
Y29sb3IgY29tbWFuZHMKIHNwZWNpZmllZCBieSB0aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZv
ciB0aGUgOCBzdGFuZGFyZCBjb2xvcnMuCitAaXRlbSA4Yml0CitUdXJuIG9uIHN1cHBvcnQgZm9y
IDgtYml0ICgyNTYgY29sb3IpIGRpc3BsYXkgaWYgYXZhaWxhYmxlLgorQ3VycmVudGx5IHRoaXMg
b3B0aW9uIGlzIGVmZmVjdGl2ZSBvbiBNUy1XaW5kb3dzICgxMCspIG9ubHkuCitPbiBvdGhlciBz
eXN0ZW1zLCBtYXhpbWFsIGNvbG9yIHN1cHBvcnQgaXMgZW5hYmxlZCBhdXRvbWF0aWNhbGx5Lgor
QGl0ZW0gMjRiaXQKK1R1cm4gb24gc3VwcG9ydCBmb3IgMjQtYml0ICh0cnVlIGNvbG9yKSBkaXNw
bGF5IGlmIGF2YWlsYWJsZS4KK0N1cnJlbnRseSB0aGlzIG9wdGlvbiBpcyBlZmZlY3RpdmUgb24g
TVMtV2luZG93cyAoMTArKSBvbmx5LgorT24gb3RoZXIgc3lzdGVtcywgMjQtYml0IGNvbG9yIGlz
IGVuYWJsZWQgYXV0b21hdGljYWxseSBpZiBzdXBwb3J0ZWQuCiBAaXRlbSBAdmFye251bX0KIFVz
ZSBjb2xvciBtb2RlIGZvciBAdmFye251bX0gY29sb3JzLiAgSWYgQHZhcntudW19IGlzIEBtaW51
c3t9MSwgdHVybiBvZmYKIGNvbG9yIHN1cHBvcnQgKGVxdWl2YWxlbnQgdG8gQHNhbXB7bmV2ZXJ9
KTsgaWYgaXQgaXMgMCwgdXNlIHRoZQogZGVmYXVsdCBjb2xvciBzdXBwb3J0IGZvciB0aGlzIHRl
cm1pbmFsIChlcXVpdmFsZW50IHRvIEBzYW1we2F1dG99KTsKIG90aGVyd2lzZSB1c2UgYW4gYXBw
cm9wcmlhdGUgc3RhbmRhcmQgbW9kZSBmb3IgQHZhcntudW19IGNvbG9ycy4KIERlcGVuZGluZyBv
biB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVzLCBFbWFjcyBtaWdodCBiZSBhYmxlIHRvIHR1
cm4KLW9uIGEgY29sb3IgbW9kZSBmb3IgOCwgMTYsIDg4LCBvciAyNTYgYXMgdGhlIHZhbHVlIG9m
IEB2YXJ7bnVtfS4gIElmCi10aGVyZSBpcyBubyBtb2RlIHRoYXQgc3VwcG9ydHMgQHZhcntudW19
IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgotQHZhcntudW19IHdlcmUgMCwgaS5lLiwgaXQgdXNl
cyB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNvbG9yIHN1cHBvcnQKLW1vZGUuCitvbiBhIGNvbG9y
IG1vZGUgZm9yIDgsIDE2LCA4OCwgMjU2LCBvciAxNjc3NzIxNiBhcyB0aGUgdmFsdWUgb2YgQHZh
cntudW19LgorSWYgdGhlcmUgaXMgbm8gbW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xv
cnMsIEVtYWNzIGFjdHMgYXMgaWYKK0B2YXJ7bnVtfSB3ZXJlIDAsIGkuZS4sIGl0IHVzZXMgdGhl
IHRlcm1pbmFsJ3MgZGVmYXVsdCBjb2xvciBzdXBwb3J0IG1vZGUuCiBAZW5kIHRhYmxlCiAKLVRo
aXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMtV2luZG93cyBhbmQgTVMtRE9TLgorVGhpcyBv
cHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1ET1MsIG5vciBNUy1XaW5kb3dzIHByaW9yIHRvIFdp
bmRvd3MgMTAuCiAKIEBjaW5kZXggY29sb3JzIG9uIGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdp
bmcgZHVyaW5nIHNlc3Npb24KIEBjaW5kZXggY2hhcmFjdGVyIHRlcm1pbmFsLCBjaGFuZ2UgY29s
b3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL21zZG9zLnRleGkgYi9kb2MvZW1hY3MvbXNk
b3MudGV4aQppbmRleCBmOTcxNTFjNjMwZi4uN2NlNmU5YjczNmQgMTAwNjQ0Ci0tLSBhL2RvYy9l
bWFjcy9tc2Rvcy50ZXhpCisrKyBiL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCkBAIC0xMjAwLDYgKzEy
MDAsMzMgQEAgeW91IHNob3VsZCBzZXQgaXRzIHZhbHVlIGluIHlvdXIgaW5pdCBmaWxlIChAcHhy
ZWZ7SW5pdCBGaWxlfSksIGVpdGhlcgogZGlyZWN0bHkgb3IgdmlhIEBrYmR7TS14IGN1c3RvbWl6
ZS12YXJpYWJsZX0sIHdoaWNoIGxldHMgeW91IHNhdmUgdGhlCiBjdXN0b21pemVkIHZhbHVlLCBz
ZWUgQHJlZntTYXZpbmcgQ3VzdG9taXphdGlvbnN9LgogCitAZmluZGV4IHczMi11c2UtdmlydHVh
bC10ZXJtaW5hbAorQGNpbmRleCBXaW5kb3dzIFRlcm1pbmFsLCBXaW5kb3dzIENvbnNvbGUsIE1T
LVdpbmRvd3MKKyAgVGhlIGltcGxlbWVudGF0aW9uIG9mIGRpc3BsYXkgZnVuY3Rpb25hbGl0eSBm
b3IgV2luZG93cyBDb25zb2xlCitkaWZmZXJzIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGZvciBv
dGhlciB0ZXJtaW5hbCBlbXVsYXRvcnMsCitiZWNhdXNlIGhpc3RvcmljYWxseSwgV2luZG93cyBy
ZXF1aXJlZCB1c2Ugb2YgYW4gaWRpb3N5bmNyYWN0aWMgQVBJLgorVGhhdCBBUEkgbGltaXRlZCBX
aW5kb3dzIENvbnNvbGUgZGlzcGxheSBvZiBFbWFjcyB0byAxNiBiYXNpYyBjb2xvcnMuCitXaXRo
IHRoZSBpbnRyb2R1Y3Rpb24gb2YgV2luZG93cyBUZXJtaW5hbCwgTWljcm9zb2Z0IGltcGxlbWVu
dGVkCitzdXBwb3J0IGZvciBBTlNJIGNvbnRyb2wgc2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUg
VlQxMDAgYW5kIFh0ZXJtLAorYXMgd2VsbCBhcyAyNC1iaXQgUkJHIGNvbG9yIGRpc3BsYXkuCisK
KyAgVGhlIGZ1bmN0aW9ucyBAY29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWx9IGFuZAorQGNv
ZGV7dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXB9IGNhbiBiZSB1c2VkIHRvIHNldCBhbmQgaW5z
cGVjdAorKHJlc3BlY3RpdmVseSkgYW4gaW50ZXJuYWwgdmFyaWFibGUgd2hpY2ggZGV0ZXJtaW5l
cyB3aGV0aGVyIHRoaXMgbmV3ZXIKK21lY2hhbmlzbSBpcyB1c2VkIGZvciBkaXNwbGF5LCBvciB0
aGUgb2xkZXIgb25lLiAgVGhlIGludGVybmFsIHZhcmlhYmxlIGlzCithdXRvbWF0aWNhbGx5IHNl
dCBiYXNlZCBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVzIG9uIHN0YXJ0dXAuCitCeSBk
ZWZhdWx0LCAyNC1iaXQgUkdCIGNvbG9yIHdpbGwgYmUgdXNlZCwgYnV0IG90aGVyICg4LCAxNiwg
MjU2KSBjb2xvcgorc3BhY2VzIG1heSBiZSB1c2VkLCBieSBwYXNzaW5nIHRoZSBAY29kZXstLWNv
bG9yfSBjb21tYW5kIGxpbmUgYXJndW1lbnQsCitvciBzZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUg
QGNvZGV7dHR5LWNvbG9yLW1vZGV9IGZyYW1lIHBhcmFtZXRlci4KKworICAgQGNvZGV7Jyh3MzIt
dXNlLXZpcnR1YWwtdGVybWluYWwtcCl9IGV2YWx1YXRlcyB0byBAY29kZXt0fSBpZiBhbmQgb25s
eSBpZgordGhlIGludGVybmFsIHZhcmlhYmxlIGhhcyBhIG5vbi16ZXJvIG51bWVyaWNhbCB2YWx1
ZSwgYW5kIG90aGVyd2lzZSB0bworQGNvZGV7bmlsfS4gIElmIGl0IGV2YWx1YXRlcyB0byBAY29k
ZXt0fSwgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGFyZSB1c2VkCitmb3IgY29sb3IsIG90aGVyd2lz
ZSwgdGhlIG9sZGVyIG1lY2hhbmlzbSBpcyB1c2VkLiAgVGhlIGludGVybmFsIHZhcmlhYmxlCitj
YW4gYmUgc2V0IGJ5IGV2YWx1YXRpbmcgQGNvZGV7KHczMi11c2UtdmlydHVhbC10ZXJtaW5hbCB4
KX0sIHdoZXJlIEBjb2Rle3h9IGlzCitAY29kZXt0fSBvciBAY29kZXtuaWx9OiBpZiBAY29kZXt4
fSBpcyBAY29kZXt0fSBhbmQgdGhlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5Cit5b3VyIHRlcm1p
bmFsLCBpdCB3aWxsIGJlIGVuYWJsZWQuICBPdGhlcndpc2UsIHRoZSBmZWF0dXJlIHdpbGwgYmUg
ZGlzYWJsZWQuCisKIEBpZm5vdHRleAogQGluY2x1ZGUgbXNkb3MteHRyYS50ZXhpCiBAZW5kIGlm
bm90dGV4CmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IDMyMGY3ZTQwZmI3
Li43MDFmOTdmNzA1YiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMz
NzEsNiArMzM3MSwxOCBAQCBBY2NvcmRpbmdseSwgd2UgaGF2ZSByZXZpc2VkIG91ciByZWNvbW1l
bmRhdGlvbnMgZm9yIGEgc3VpdGFibGUgREpHUFAKIHRvb2xjaGFpbiB0byBHQ0MgMTQuMi4wIGFu
ZCBCaW51dGlscyAyLjM1LjEgaW4gbGlldSBvZiBHQ0MgMy40LnggYW5kCiBCaW51dGlscyAyLjI2
LgogCisrKysKKyoqIFdpbmRvd3MgVGVybWluYWwgY2FuIG5vdyBkaXNwbGF5IDI1NiBhbmQgMjQt
Yml0IFJHQiBjb2xvci4KK1ByZXZpb3VzbHksIHRlcm1pbmFsIHNlc3Npb25zIG9uIFdpbmRvd3Mg
c3VwcG9ydGVkIGRpc3BsYXkgb2YgMTYgY29sb3JzLgorVGhlcmUgaXMgbm93IHN1cHBvcnQgZm9y
IDgtYml0ICgyNTYgY29sb3IpIGFuZCAyNC1iaXQgUkdCICh0cnVlIGNvbG9yKS4KK1RoZSBuZXcg
bWVjaGFuaXNtIHdpbGwgYmUgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gc3VwcG9ydGVkLgor
SXQgZGVmYXVsdHMgdG8gMjQtYml0IFJHQiBjb2xvciwgYnV0IGNhbiBiZSBzZXQgdG8gOCwgMTYs
ICc4Yml0LCBvciAnMjRiaXQKK2J5IHBhc3NpbmcgdGhlICctLWNvbG9yJyBmbGFnIG9yIHNldHRp
bmcgdGhlICd0dHktY29sb3ItbW9kZScgZnJhbWUgcGFyYW1ldGVyLgorVXNlIG9mIHRoZSBuZXcg
bWVjaGFuaXNtIGlzIGNvbnRyb2xsZWQgYnkgYW4gaW50ZXJuYWwgdmFyaWFibGUgdGhhdCBjYW4g
YmUKK3NldCBhbmQgaW5zcGVjdGVkIHZpYSB0aGUgZnVuY3Rpb25zICd3MzItdXNlLXZpcnR1YWwt
dGVybWluYWwnIGFuZAorJ3czMi11c2UtdmlydHVhbC10ZXJtaW5hbC1wJyAocmVzcGVjdGl2ZWx5
KS4gIFNlZSB0aGUgbWFudWFsIGVudHJ5IHNwZWNpZmljCit0byBNUy1XaW5kb3dzIGZvciBtb3Jl
IGRldGFpbHMuCisKIAwKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBF
bWFjcy4KZGlmZiAtLWdpdCBhL2xpc3AvZmFjZXMuZWwgYi9saXNwL2ZhY2VzLmVsCmluZGV4IGNk
NDA4NmExMmYyLi5kMDlmN2RkN2RjOSAxMDA2NDQKLS0tIGEvbGlzcC9mYWNlcy5lbAorKysgYi9s
aXNwL2ZhY2VzLmVsCkBAIC0yNDA3LDkgKzI0MDcsMTMgQEAgSWYgeW91IHNldCBgdGVybS1maWxl
LXByZWZpeCcgdG8gbmlsLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iCiA7OyBkdW1wZWQg
dGVybWluYWwgZnJhbWUgb24gc3RhcnR1cC4KIAogKGRlZnVuIHR0eS1zZXQtdXAtaW5pdGlhbC1m
cmFtZS1mYWNlcyAoKQotICAobGV0ICgoZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpCi0gICAgKGZy
YW1lLXNldC1iYWNrZ3JvdW5kLW1vZGUgZnJhbWUgdCkKLSAgICAoZmFjZS1zZXQtYWZ0ZXItZnJh
bWUtZGVmYXVsdCBmcmFtZSkpKQorICAocHJvZ24KKyAgICAod2hlbiAoZXEgc3lzdGVtLXR5cGUg
J3dpbmRvd3MtbnQpCisgICAgICAocmVxdWlyZSAndGVybS93MzJjb25zb2xlKQorICAgICAgKHcz
Mi10dHktc2V0dXAtY29sb3JzKSkKKyAgICAobGV0ICgoZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkp
CisgICAgICAoZnJhbWUtc2V0LWJhY2tncm91bmQtbW9kZSBmcmFtZSB0KQorICAgICAgKGZhY2Ut
c2V0LWFmdGVyLWZyYW1lLWRlZmF1bHQgZnJhbWUpKSkpCiAKIAwKIDs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owpk
aWZmIC0tZ2l0IGEvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwgYi9saXNwL3Rlcm0vdHR5LWNvbG9y
cy5lbAppbmRleCBkZmQyMDdkNzFjMS4uYThhNWE4YjY2MGEgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVy
bS90dHktY29sb3JzLmVsCisrKyBiL2xpc3AvdGVybS90dHktY29sb3JzLmVsCkBAIC03NjQsNyAr
NzY0LDkgQEAKICAgICAoYXV0byAuIDApCiAgICAgKGFuc2k4IC4gOCkKICAgICAoYWx3YXlzIC4g
OCkKLSAgICAoeWVzIC4gOCkpCisgICAgKHllcyAuIDgpCisgICAgKDhiaXQgLiAyNTYpCisgICAg
KDI0Yml0IC4gMTY3NzcyMTYpKQogICAiQW4gYWxpc3Qgb2Ygc3VwcG9ydGVkIHN0YW5kYXJkIHR0
eSBjb2xvciBtb2RlcyBhbmQgdGhlaXIgYWxpYXNlcy4iKQogCiAoZGVmdW4gdHR5LWNvbG9yLWFs
aXN0ICgmb3B0aW9uYWwgX2ZyYW1lKQpkaWZmIC0tZ2l0IGEvbGlzcC90ZXJtL3czMmNvbnNvbGUu
ZWwgYi9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAppbmRleCAxYjQ0ZGE0OGJmNy4uNTJhNDllN2E3
NWYgMTAwNjQ0Ci0tLSBhL2xpc3AvdGVybS93MzJjb25zb2xlLmVsCisrKyBiL2xpc3AvdGVybS93
MzJjb25zb2xlLmVsCkBAIC00Niw5ICs0Niw3NyBAQAogIkEgbGlzdCBvZiBWR0EgY29uc29sZSBj
b2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFsdWVzLiIpCiAKIChkZWNsYXJl
LWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAidGVybS9jb21tb24td2luIiAoZnJhbWUp
KQotKGRlY2xhcmUtZnVuY3Rpb24gZ2V0LXNjcmVlbi1jb2xvciAidzMyY29uc29sZS5jIiAoKSkK
KyhkZWNsYXJlLWZ1bmN0aW9uIGdldC1zY3JlZW4tY29sb3IgInczMmNvbnNvbGUuYyIgKCZvcHRp
b25hbCB2dHApKQorKGRlY2xhcmUtZnVuY3Rpb24gc2V0LXNjcmVlbi1jb2xvciAidzMyY29uc29s
ZS5jIiAoJm9wdGlvbmFsIHZ0cCkpCiAoZGVjbGFyZS1mdW5jdGlvbiB3MzItZ2V0LWNvbnNvbGUt
Y29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAoZGVjbGFyZS1mdW5jdGlvbiB3MzItZ2V0LWNvbnNv
bGUtb3V0cHV0LWNvZGVwYWdlICJ3MzJwcm9jLmMiICgpKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMy
LXVzZS12aXJ0dWFsLXRlcm1pbmFsICJ3MzJjb25zb2xlLmMiIChlbmFibGUpKQorKGRlY2xhcmUt
ZnVuY3Rpb24gdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXAgInczMmNvbnNvbGUuYyIgKCkpCisK
KyhkZWZ1biB3MzItdHR5LXNldC1iYXNlLWNvbG9ycyAodnRwKQorICAiUmUtb3JkZXIgYHczMi10
dHktc3RhbmRhcmQtY29sb3JzJyBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgVlRQLiIKKyAgKGxldCAo
KHNlcQorICAgICAgICAgKGlmIHZ0cAorICAgICAgICAgICAgICcoImJsYWNrIiAgICAgInJlZCIg
ICAgICAgICAgImdyZWVuIiAgICAgICJicm93biIKKyAgICAgICAgICAgICAgICJibHVlIiAgICAg
ICJtYWdlbnRhIiAgICAgICJjeWFuIiAgICAgICAibGlnaHRncmF5IgorICAgICAgICAgICAgICAg
ImRhcmtncmF5IiAgImxpZ2h0cmVkIiAgICAgImxpZ2h0Z3JlZW4iICJ5ZWxsb3ciCisgICAgICAg
ICAgICAgICAibGlnaHRibHVlIiAibGlnaHRtYWdlbnRhIiAibGlnaHRjeWFuIiAgIndoaXRlIikK
KyAgICAgICAgICAgJygiYmxhY2siICAgICAiYmx1ZSIgICAgICAgICAiZ3JlZW4iICAgICAgImN5
YW4iCisgICAgICAgICAgICAgInJlZCIgICAgICAgIm1hZ2VudGEiICAgICAgImJyb3duIiAgICAg
ICJsaWdodGdyYXkiCisgICAgICAgICAgICAgImRhcmtncmF5IiAgImxpZ2h0Ymx1ZSIgICAgImxp
Z2h0Z3JlZW4iICJsaWdodGN5YW4iCisgICAgICAgICAgICAgImxpZ2h0cmVkIiAgImxpZ2h0bWFn
ZW50YSIgInllbGxvdyIgICAgICJ3aGl0ZSIpKSkpCisgICAgKHNldHEgdzMyLXR0eS1zdGFuZGFy
ZC1jb2xvcnMKKyAgICAgICAgICAobWFwY2FyCisgICAgICAgICAgIChsYW1iZGEgKG4pIChsZXQg
KChjIChhc3NvYyBuIHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkpCisgICAgICAgICAgICAgICAg
ICAgIChjb25zIG4gKGNvbnMgKHNlcS1wb3NpdGlvbiBzZXEgbikgKGNkZHIgYykpKSkpCisgICAg
ICAgICAgIHNlcSkpKSkKKworKGRlZnVuIHczMi10dHktZGVmaW5lLWJhc2UtY29sb3JzICgpCisg
ICJEZWZpbmVzIGJhc2UgMTYtY29sb3Igc3BhY2UgZm9yIHczMiB0dHkgZGlzcGxheS4iCisgIChs
ZXQqICgoY29sb3JzIHczMi10dHktc3RhbmRhcmQtY29sb3JzKQorICAgICAgICAgKG5iYXNlIChs
ZW5ndGggY29sb3JzKSkKKyAgICAgICAgIChjb2xvciAoY2FyIGNvbG9ycykpKQorICAgIChwcm9n
biAod2hpbGUgY29sb3JzCisgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjb2xv
cikgKGNhZHIgY29sb3IpIChjZGRyIGNvbG9yKSkKKyAgICAgICAgICAgICAoc2V0cSBjb2xvcnMg
KGNkciBjb2xvcnMpCisgICAgICAgICAgICAgICAgICAgY29sb3IgIChjYXIgY29sb3JzKSkpCisg
ICAgICAgICAgIG5iYXNlKSkpCisKKyhkZWZ1biB3MzItdHR5LWRlZmluZS0yNTYtY29sb3JzICgp
CisgICJEZWZpbmVzIDI1Ni1jb2xvciBzcGFjZSBmb3IgdzMyIHR0eSBkaXNwbGF5LiIKKyAgKGxl
dCAoKHIgMCkgKGIgMCkgKGcgMCkKKyAgICAgICAgKG4gKC0gMjU2ICh3MzItdHR5LWRlZmluZS1i
YXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVydC10by0xNmJpdCAobGFtYmRhIChwcmltKSAo
bG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQorICAgICh3aGlsZSAoPiBuIDI0KSA7IG5vbi1n
cmV5CisgICAgICAobGV0ICgoaSAoLSAyNTYgbikpCisgICAgICAgICAgICAoYyAobWFwY2FyIGNv
bnZlcnQtdG8tMTZiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAobGFtYmRhICh4
KSAoaWYgKHplcm9wIHgpIDAgKCsgKCogeCA0MCkgNTUpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAobGlzdCByIGcgYikpKSkpCisgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChm
b3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEgYiAoMSsgYikpCisgICAgICAo
d2hlbiAoPiBiIDUpIChzZXRxIGcgKDErIGcpIGIgMCkpCisgICAgICAod2hlbiAoPiBnIDUpIChz
ZXRxIHIgKDErIHIpIGcgMCkpCisgICAgICAoc2V0cSBuICgxLSBuKSkpCisgICAgKHdoaWxlICg+
IG4gMCkgOyBhbGwtZ3JleQorICAgICAgKGxldCogKChpICgtIDI1NiBuKSkKKyAgICAgICAgICAg
ICAodiAoZnVuY2FsbCBjb252ZXJ0LXRvLTE2Yml0ICgrIDggKCogKC0gMjQgbikgMTApKSkpCisg
ICAgICAgICAgICAgKGMgKGxpc3QgdiB2IHYpKSkKKyAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUg
KGZvcm1hdCAiY29sb3ItJWQiIGkpIGkgYykpCisgICAgICAoc2V0cSBuICgxLSBuKSkpKSkKKwor
KGRlZnVuIHczMi10dHktZGVmaW5lLTI0Yml0LWNvbG9ycyAoKQorICAiRGVmaW5lcyAyNC1iaXQg
Y29sb3Igc3BhY2UgZm9yIHczMiB0dHkgZGlzcGxheS4iCisgIChsZXQgKChpICh3MzItdHR5LWRl
ZmluZS1iYXNlLWNvbG9ycykpKQorICAgIChtYXBjIChsYW1iZGEgKGMpICh1bmxlc3MgKGFzc29j
IChjYXIgYykgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCisgICAgICAgICAgICAgICAgICAgKHR0
eS1jb2xvci1kZWZpbmUgKGNhciBjKSBpIChjZHIgYykpCisgICAgICAgICAgICAgICAgICAgKHNl
dHEgaSAoMSsgaSkpKSkKKyAgICAgICAgICBjb2xvci1uYW1lLXJnYi1hbGlzdCkpKQorCis7OyB0
dHktY29sb3ItZGVmaW5lIHN3YXBzIGluZGljZXMgZm9yIHBpeGVsIHZhbHVlcyBvbiAyNGJpdCBk
aXNwbGF5CisoZGVmdW4gdzMyLXR0eS1nZXQtcGl4ZWwgKGluZGV4KQorICAiQ29udmVydCBhIGxl
Z2FjeSBjb2xvciBJTkRFWCAoMC4uMTUpIGludG8gYSBwaXhlbCB2YWx1ZS4iCisgIChsZXQgKChj
b2xvciAobnRoIGluZGV4IHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkpCisgICAgKG9yICh0dHkt
Y29sb3ItMjRiaXQgKGNkZHIgY29sb3IpKSBpbmRleCkpKQogCiAoZGVmdW4gdGVybWluYWwtaW5p
dC13MzJjb25zb2xlICgpCiAgICJUZXJtaW5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3Ig
dzMyIGNvbnNvbGUuIgpAQCAtNTYsNDMgKzEyNCw1MyBAQAogICAoeC1zZXR1cC1mdW5jdGlvbi1r
ZXlzIChzZWxlY3RlZC1mcmFtZSkpCiAgIDs7IFNldCB0ZXJtaW5hbCBhbmQga2V5Ym9hcmQgZW5j
b2RpbmdzIHRvIHRoZSBjdXJyZW50IE9FTSBjb2RlcGFnZS4KICAgKGxldCAoKG9lbS1jb2RlLXBh
Z2UtY29kaW5nCi0JIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1jb2Rl
cGFnZSkpKSkKLQkob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nCi0JIChpbnRlcm4gKGZvcm1h
dCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UpKSkpCi0Jb2VtLWNzLXAg
b2VtLW8tY3MtcCkKLQkoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2RlLXBh
Z2UtY29kaW5nKSkKLQkoc2V0cSBvZW0tby1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUt
cGFnZS1vdXRwdXQtY29kaW5nKSkKLQkod2hlbiBvZW0tY3MtcAotCSAgKHNldC1rZXlib2FyZC1j
b2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQotCSAgKHNldC10ZXJtaW5hbC1jb2Rp
bmctc3lzdGVtCi0JICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5n
IG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKLSAgICAgICAgICA7OyBTaW5jZSB3ZSBjaGFuZ2VkIHRo
ZSB0ZXJtaW5hbCBlbmNvZGluZywgd2UgbmVlZCB0byByZXBlYXQKLSAgICAgICAgICA7OyB0aGUg
dGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFibGUuCi0gICAgICAgICAgKHN0
YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKLSAgKGxldCogKChjb2xvcnMgdzMyLXR0eS1z
dGFuZGFyZC1jb2xvcnMpCi0gICAgICAgICAoY29sb3IgKGNhciBjb2xvcnMpKSkKLSAgICAodHR5
LWNvbG9yLWNsZWFyKQotICAgICh3aGlsZSBjb2xvcnMKLSAgICAgICh0dHktY29sb3ItZGVmaW5l
IChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikpCi0gICAgICAoc2V0cSBjb2xv
cnMgKGNkciBjb2xvcnMpCi0gICAgICAgICAgICBjb2xvciAoY2FyIGNvbG9ycykpKSkKLSAgKGNs
ZWFyLWZhY2UtY2FjaGUpCi0gIDs7IEZpZ3VyZSBvdXQgd2hhdCBhcmUgdGhlIGNvbG9ycyBvZiB0
aGUgY29uc29sZSB3aW5kb3csIGFuZCBzZXQgdXAKLSAgOzsgdGhlIGJhY2tncm91bmQtbW9kZSBj
b3JyZXNwb25kaW5nbHkuCi0gIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2NyZWVuLWNvbG9y
KSkKLQkgKGJnIChjYWRyIHNjcmVlbi1jb2xvcikpCi0JIChkZXNjciAodHR5LWNvbG9yLWJ5LWlu
ZGV4IGJnKSkKLQkgciBnIGIgYmctbW9kZSkKLSAgICAoc2V0cSByIChudGggMiBkZXNjcikKLQkg
IGcgKG50aCAzIGRlc2NyKQotCSAgYiAobnRoIDQgZGVzY3IpKQotICAgIChpZiAoPCAoKyByIGcg
YikgKCogLjYgKCsgNjU1MzUgNjU1MzUgNjU1MzUpKSkKLQkoc2V0cSBiZy1tb2RlICdkYXJrKQot
ICAgICAgKHNldHEgYmctbW9kZSAnbGlnaHQpKQotICAgIChzZXQtdGVybWluYWwtcGFyYW1ldGVy
IG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKQorICAgICAgICAgKGludGVybiAoZm9ybWF0
ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLWNvZGVwYWdlKSkpKQorICAgICAgICAob2VtLWNvZGUt
cGFnZS1vdXRwdXQtY29kaW5nCisgICAgICAgICAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzIt
Z2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlKSkpKQorICAgICAgICBvZW0tY3MtcCBvZW0tby1j
cy1wKQorICAgIChzZXRxIG9lbS1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1j
b2RpbmcpKQorICAgIChzZXRxIG9lbS1vLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1w
YWdlLW91dHB1dC1jb2RpbmcpKQorICAgICh3aGVuIG9lbS1jcy1wCisgICAgICAoc2V0LWtleWJv
YXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1jb2RpbmcpCisgICAgICAoc2V0LXRlcm1p
bmFsLWNvZGluZy1zeXN0ZW0KKyAgICAgICAoaWYgb2VtLW8tY3MtcCBvZW0tY29kZS1wYWdlLW91
dHB1dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAgICAgOzsgU2luY2Ugd2UgY2hh
bmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0CisgICAgICA7OyB0
aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFibGUuCisgICAgICAoc3Rh
cnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkpKQogICAodHR5LXNldC11cC1pbml0aWFsLWZyYW1l
LWZhY2VzKQogICAocnVuLWhvb2tzICd0ZXJtaW5hbC1pbml0LXczMi1ob29rKSkKIAorOzsgQ2Fs
bGVkIGZyb20gdHR5LXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzIGluIGZhY2VzLmVsCisoZGVm
dW4gdzMyLXR0eS1zZXR1cC1jb2xvcnMgKCkKKyAgIlNldCB1cCBjb2xvciBkZWZpbml0aW9ucyBh
bmQgZnJhbWUgcGFyYW1ldGVycyBmb3IgdzMyIHR0eSBkaXNwbGF5LiIKKyAgKHR0eS1jb2xvci1j
bGVhcikKKyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29sb3ItY2VsbHMpKQorICAgICAgICAo
dnRwICh3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtcCkpKQorICAgICh3MzItdHR5LXNldC1iYXNl
LWNvbG9ycyB2dHApCisgICAgKGlmIHZ0cAorICAgICAgICAoY29uZCAoKD0gbmNvbG9ycyAxNjc3
NzIxNikgKHczMi10dHktZGVmaW5lLTI0Yml0LWNvbG9ycykpCisgICAgICAgICAgICAgICgoPSBu
Y29sb3JzIDI2NSkgICAgICAodzMyLXR0eS1kZWZpbmUtMjU2LWNvbG9ycykpCisgICAgICAgICAg
ICAgICh0ICAgICAgICAgICAgICAgICAgICAodzMyLXR0eS1kZWZpbmUtYmFzZS1jb2xvcnMpKSkK
KyAgICAgICh3MzItdHR5LWRlZmluZS1iYXNlLWNvbG9ycykpCisgICAgKGNsZWFyLWZhY2UtY2Fj
aGUpCisgICAgKGxldCogKChzY3JlZW4tY29sb3IgKGdldC1zY3JlZW4tY29sb3IgdnRwKSkKKyAg
ICAgICAgICAgKGZnIChjYXIgIHNjcmVlbi1jb2xvcikpCisgICAgICAgICAgIChiZyAoY2FkciBz
Y3JlZW4tY29sb3IpKQorICAgICAgICAgICAoYm9vdHN0cmFwIChhbmQgdnRwICg9IG5jb2xvcnMg
MTY3NzcyMTYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoPCBmZyAxNikgKDwgYmcgMTYp
IChub3QgKD0gMCBmZyBiZykpKSkKKyAgICAgICAgICAgKGZhbGxiYWNrICAoYW5kIHZ0cCAoPCBu
Y29sb3JzIDE2Nzc3MjE2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yICg8IG5jb2xv
cnMgZmcpICg8IG5jb2xvcnMgYmcpKSkpCisgICAgICAgICAgIChzY3JlZW4tY29sb3IgKGlmIGZh
bGxiYWNrIChnZXQtc2NyZWVuLWNvbG9yIHQpIHNjcmVlbi1jb2xvcikpCisgICAgICAgICAgIChm
ZyAoaWYgYm9vdHN0cmFwICh3MzItdHR5LWdldC1waXhlbCBmZykgKGNhciAgc2NyZWVuLWNvbG9y
KSkpCisgICAgICAgICAgIChiZyAoaWYgYm9vdHN0cmFwICh3MzItdHR5LWdldC1waXhlbCBiZykg
KGNhZHIgc2NyZWVuLWNvbG9yKSkpCisgICAgICAgICAgIChiZy1jb2wgKHR0eS1jb2xvci1ieS1p
bmRleCBiZykpCisgICAgICAgICAgIChiZy1kYXJrICg8ICgrIChudGggMiBiZy1jb2wpIChudGgg
MyBiZy1jb2wpIChudGggNCBiZy1jb2wpKQorICAgICAgICAgICAgICAgICAgICAgICAoKiAuNiAo
KyA2NTUzNSA2NTUzNSA2NTUzNSkpKSkKKyAgICAgICAgICAgKGJnLW1vZGUgKGlmIGJnLWRhcmsg
J2RhcmsgJ2xpZ2h0KSkpCisgICAgICAoc2V0LXRlcm1pbmFsLXBhcmFtZXRlciBuaWwgJ2JhY2tn
cm91bmQtbW9kZSBiZy1tb2RlKQorICAgICAgKHdoZW4gKG9yIGJvb3RzdHJhcCBmYWxsYmFjaykK
KyAgICAgICAgKHNldC1zY3JlZW4tY29sb3IgZmcgYmcgdCkpKSkpCisKIChwcm92aWRlICd0ZXJt
L3czMmNvbnNvbGUpCiAKIDs7OyB3MzJjb25zb2xlLmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEv
c3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggYTFlM2Y2MzEyYzYuLmVmNDYxYjViNGNiIDEw
MDY0NAotLS0gYS9zcmMvdGVybS5jCisrKyBiL3NyYy90ZXJtLmMKQEAgLTIyMDcsNyArMjIwNyw3
IEBAIFRFUk1JTkFMIGRvZXMgbm90IHJlZmVyIHRvIGEgdGV4dCB0ZXJtaW5hbC4gICovKQogICBy
ZXR1cm4gbWFrZV9maXhudW0gKHQgPyB0LT5kaXNwbGF5X2luZm8udHR5LT5UTl9tYXhfY29sb3Jz
IDogMCk7CiB9CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lE
CisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECiAKIC8qIERlY2xh
cmUgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgZnVuY3Rpb24sIGFzIGluIHRoZSByZXN0IG9mIEVt
YWNzLAogICAgdG8gd29yayBhcm91bmQgYW4gSFBVWCBjb21waWxlciBidWcgKD8pLiBTZWUKQEAg
LTIyNDYsNyArMjI0Niw3IEBAIHR0eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxpdGllcyAoc3RydWN0
IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgYm9vbCBzYXZlKQogICAgTU9ERSdzIHZhbHVlIGlzIGdl
bmVyYWxseSB0aGUgbnVtYmVyIG9mIGNvbG9ycyB3aGljaCB3ZSB3YW50IHRvCiAgICBzdXBwb3J0
OyB6ZXJvIG1lYW5zIHNldCB1cCBmb3IgdGhlIGRlZmF1bHQgY2FwYWJpbGl0aWVzLCB0aGUgb25l
cwogICAgd2Ugc2F3IGF0IGluaXRfdHR5IHRpbWU7IC0xIG1lYW5zIHR1cm4gb2ZmIGNvbG9yIHN1
cHBvcnQuICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHR0eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0
dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2RlKQogewogICAvKiBDYW5vbmljYWxpemUgYWxs
IG5lZ2F0aXZlIHZhbHVlcyBvZiBNT0RFLiAgKi8KQEAgLTIyNjksNiArMjI2OSwxMCBAQCB0dHlf
c2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKICNp
ZmRlZiBURVJNSU5GTwogCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXDAzM1szJXAxJWRtIjsK
IAl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNbNCVwMSVkbSI7CisjZWxpZiBXSU5ET1dT
TlQKKwl0dHktPlRTX29yaWdfcGFpciA9ICJceDFiWzM5bVx4MWJbNDltIjsKKwl0dHktPlRTX3Nl
dF9mb3JlZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJc
eDFiWyVsdW0iOwogI2Vsc2UKIAl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlwwMzNbMyVkbSI7
CiAJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJcMDMzWzQlZG0iOwpAQCAtMjI3Niw2ICsyMjgw
LDI2IEBAIHR0eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGlu
dCBtb2RlKQogCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDg7CiAJdHR5LT5UTl9ub19jb2xvcl92aWRl
byA9IDA7CiAJYnJlYWs7CisjaWZkZWYgV0lORE9XU05UCisgICAgICBjYXNlIDE2OgorCXR0eS0+
VE5fbWF4X2NvbG9ycyA9IDE2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlslbHVt
IjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UTl9ub19j
b2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDI1NjoKKwl0dHktPlROX21heF9j
b2xvcnMgPSAyNTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzU7JWx1bSI7
CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzU7JWx1bSI7CisJdHR5LT5UTl9u
b19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDE2Nzc3MjE2OgorCXR0eS0+
VE5fbWF4X2NvbG9ycyA9IDE2Nzc3MjE2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgx
YlszODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4
OzI7JWx1OyVsdTslbHVtIjsKKwl0dHktPlROX25vX2NvbG9yX3ZpZGVvID0gMDsKKwlicmVhazsK
KyNlbmRpZgogICAgIH0KIH0KIApAQCAtMjMxMiw3ICsyMzM2LDcgQEAgc2V0X3R0eV9jb2xvcl9t
b2RlIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBzdHJ1Y3QgZnJhbWUgKmYpCiAgICAg
fQogfQogCi0jZW5kaWYgLyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5kaWYgLyog
IU1TRE9TICYmICFIQVZFX0FORFJPSUQgKi8KIAogY2hhciAqCiB0dHlfdHlwZV9uYW1lIChMaXNw
X09iamVjdCB0ZXJtaW5hbCkKQEAgLTQ2NDEsNiArNDY2NSwyMiBAQCB1c2UgdGhlIEJvdXJuZSBz
aGVsbCBjb21tYW5kICdURVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogCiAgICAg
aW5pdGlhbGl6ZV93MzJfZGlzcGxheSAodGVybWluYWwsICZ3aWR0aCwgJmhlaWdodCk7CiAKKyAg
ICB0dHktPlROX25vX2NvbG9yX3ZpZGVvID0gMDsKKyAgICB0dHktPlROX21heF9jb2xvcnMgPSAx
Njc3NzIxNjsKKyAgICB0dHktPlRTX29yaWdfcGFpciA9ICJceDFiWzM5bVx4MWJbNDltIjsKKyAg
ICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMzg7MjslbHU7JWx1OyVsdW0iOworICAg
IHR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODsyOyVsdTslbHU7JWx1bSI7CisKKyAg
ICAvKiBTYXZlIGRlZmF1bHQgY29sb3IgY2FwYWJpbGl0aWVzICovCisgICAgdHR5X2RlZmF1bHRf
Y29sb3JfY2FwYWJpbGl0aWVzICh0dHksIDEpOworCisgICAgdHR5LT5UU19lbnRlcl9ib2xkX21v
ZGUgPSAiXHgxYlsxbSI7CisgICAgdHR5LT5UU19lbnRlcl9pdGFsaWNfbW9kZSA9ICJceDFiWzNt
IjsKKyAgICB0dHktPlRTX2VudGVyX3N0cmlrZV90aHJvdWdoX21vZGUgPSAiXHgxYls5bSI7Cisg
ICAgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSA9ICJceDFiWzRtIjsKKyAgICB0dHktPlRT
X2VudGVyX3JldmVyc2VfbW9kZSA9ICJceDFiWzdtIjsKKyAgICB0dHktPlRTX2V4aXRfYXR0cmli
dXRlX21vZGUgPSAiXHgxYlswbSI7CisKICAgICBGcmFtZVJvd3MgKHR0eSkgPSBoZWlnaHQ7CiAg
ICAgRnJhbWVDb2xzICh0dHkpID0gd2lkdGg7CiAgICAgdHR5LT5zcGVjaWZpZWRfd2luZG93ID0g
aGVpZ2h0OwpAQCAtNDY4Niw3ICs0NzI2LDYgQEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFu
ZCAnVEVSTT0uLi47IGV4cG9ydCBURVJNJyAoQy1zaGVsbDpcblwKICAgICAgZG9uJ3QgdGhpbmsg
d2UncmUgbG9zaW5nIGFueXRoaW5nIGJ5IHR1cm5pbmcgaXQgb2ZmLiAgKi8KICAgdHR5LT5saW5l
X2luc19kZWxfb2sgPSAwOwogCi0gIHR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2OyAgLyogTXVzdCBi
ZSBub24temVybyBmb3IgdHR5LWRpc3BsYXktY29sb3ItcC4gICovCiAjZW5kaWYJLyogRE9TX05U
ICovCiAKICNpZmRlZiBIQVZFX0dQTQpAQCAtNTIwMiwxMSArNTI0MSwxMSBAQCBub24tbmlsIHRv
IGVuYWJsZSB0aGlzIG9wdGltaXphdGlvbi4gICovKTsKICAgZGVmc3ViciAoJlN0dHlfZGlzcGxh
eV9waXhlbF93aWR0aCk7CiAgIGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfaGVpZ2h0KTsK
IAotI2lmICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVm
aW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKICAgZGVmYXVsdF9vcmlnX3BhaXIg
PSBOVUxMOwogICBkZWZhdWx0X3NldF9mb3JlZ3JvdW5kID0gTlVMTDsKICAgZGVmYXVsdF9zZXRf
YmFja2dyb3VuZCA9IE5VTEw7Ci0jZW5kaWYgLyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICov
CisjZW5kaWYgLyogIU1TRE9TICYmICFIQVZFX0FORFJPSUQgKi8KIAogI2lmbmRlZiBIQVZFX0FO
RFJPSUQKICAgZW5jb2RlX3Rlcm1pbmFsX3NyYyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVy
bWNoYXIuaCBiL3NyYy90ZXJtY2hhci5oCmluZGV4IGVjZTNhNjc2YzZlLi4xM2FkMmYwYTcyYSAx
MDA2NDQKLS0tIGEvc3JjL3Rlcm1jaGFyLmgKKysrIGIvc3JjL3Rlcm1jaGFyLmgKQEAgLTI0OSw0
ICsyNDksNiBAQCBzdHJ1Y3QgaW5wdXRfZXZlbnQ7CiBleHRlcm4gTGlzcF9PYmplY3QgdHR5X2hh
bmRsZV90YWJfYmFyX2NsaWNrIChzdHJ1Y3QgZnJhbWUgKiwgaW50LCBpbnQsIGJvb2wsCiAJCQkJ
CSAgICAgc3RydWN0IGlucHV0X2V2ZW50ICopOwogCitleHRlcm4gdm9pZCB0dHlfc2V0dXBfY29s
b3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSk7CisKICNlbmRpZiAv
KiBFTUFDU19URVJNQ0hBUl9IICovCmRpZmYgLS1naXQgYS9zcmMvdzMyY29uc29sZS5jIGIvc3Jj
L3czMmNvbnNvbGUuYwppbmRleCAxYmNhMGNhZGZmOS4uMjYyNDZkYWZkNWUgMTAwNjQ0Ci0tLSBh
L3NyYy93MzJjb25zb2xlLmMKKysrIGIvc3JjL3czMmNvbnNvbGUuYwpAQCAtMTksNiArMTksOSBA
QCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3Jn
L2xpY2Vuc2VzLz4uICAqLwogLyoKICAgIFRpbSBGbGVlaGFydCAoYXBvbGxvQG9ubGluZS5jb20p
CQkxLTE3LTkyCiAgICBHZW9mZiBWb2Vsa2VyICh2b2Vsa2VyQGNzLndhc2hpbmd0b24uZWR1KQk5
LTEyLTkzCisgICBFd2FuIFRvd25zaGVuZCAoZXdhbkBldG93bi5kZXYpICAgICAgICAgICAgICAy
MDI1LTA4CisgICAqIGMuIH4gMjAyNTogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93cyAoMTAr
KSBUZXJtaW5hbAorICAgKiBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93
cy9jb25zb2xlL2NvbnNvbGUtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMKICovCiAKIApAQCAt
NTMsMTEgKzU2LDE2IEBAIHN0YXRpYyB2b2lkIHczMmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0
cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2JlZ2luIChzdHJ1
Y3QgZnJhbWUgKiBmKTsKIHN0YXRpYyB2b2lkIHczMmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJh
bWUgKiBmKTsKIHN0YXRpYyBXT1JEIHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVjdCBmcmFtZSAq
ZiwgaW50IGZhY2VfaWQpOworc3RhdGljIGludCAgdzMyY29uX3dyaXRlX3Z0X3NlcSAoY29uc3Qg
Y2hhciAqKTsKK3N0YXRpYyB2b2lkIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBm
YWNlX2lkKTsKK3N0YXRpYyB2b2lkIHR1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqLCBpbnQg
ZmFjZV9pZCk7CiAKIHN0YXRpYyBDT09SRAljdXJzb3JfY29vcmRzOwogc3RhdGljIEhBTkRMRQlw
cmV2X3NjcmVlbiwgY3VyX3NjcmVlbjsKIHN0YXRpYyBXT1JECWNoYXJfYXR0cl9ub3JtYWw7CiBz
dGF0aWMgRFdPUkQJcHJldl9jb25zb2xlX21vZGU7CitzdGF0aWMgaW50ICAgICAgYmdfbm9ybWFs
Oworc3RhdGljIGludCAgICAgIGZnX25vcm1hbDsKIAogc3RhdGljIENPTlNPTEVfQ1VSU09SX0lO
Rk8gY29uc29sZV9jdXJzb3JfaW5mbzsKICNpZm5kZWYgVVNFX1NFUEFSQVRFX1NDUkVFTgpAQCAt
NjcsNyArNzUsMTAgQEAgc3RhdGljIENPTlNPTEVfQ1VSU09SX0lORk8gcHJldl9jb25zb2xlX2N1
cnNvcjsKIGV4dGVybiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIEhBTkRMRSAga2V5Ym9hcmRf
aGFuZGxlOwogaW50IHczMl9jb25zb2xlX3VuaWNvZGVfaW5wdXQ7Ci0KK2V4dGVybiBpbnQgdzMy
X3VzZV92aXJ0dWFsX3Rlcm1pbmFsOworaW50IHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCA9IDE7
CitleHRlcm4gc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Oworc3RydWN0IHR0
eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5ID0gTlVMTDsKIAogLyogU2V0dGluZyB0aGlzIGFz
IHRoZSBjdHJsIGhhbmRsZXIgcHJldmVudHMgZW1hY3MgZnJvbSBiZWluZyBraWxsZWQgd2hlbgog
ICAgc29tZW9uZSBoaXRzIF5DIGluIGEgJ3N1c3BlbmRlZCcgc2Vzc2lvbiAoY2hpbGQgc2hlbGwp
LgpAQCAtODMsNiArOTQsMzAgQEAgY3RybF9jX2hhbmRsZXIgKHVuc2lnbmVkIGxvbmcgdHlwZSkK
IAkgICYmICh0eXBlID09IENUUkxfQ19FVkVOVCB8fCB0eXBlID09IENUUkxfQlJFQUtfRVZFTlQp
KTsKIH0KIAorI2RlZmluZSBERUZBVUxUUChwKQkJCQkJCQlcCisgIChwID09IEZBQ0VfVFRZX0RF
RkFVTFRfQ09MT1IJCQkJCQlcCisgICB8fCBwID09IEZBQ0VfVFRZX0RFRkFVTFRfRkdfQ09MT1IJ
CQkJCVwKKyAgIHx8IHAgPT0gRkFDRV9UVFlfREVGQVVMVF9CR19DT0xPUikKKworI2RlZmluZSBT
RVFNQVggMjU2IC8qIEFyYml0cmFyeSB1cHBlciBsaW1pdCBvbiBWVCBzZXF1ZW5jZSBzaXplICov
CisKKyNkZWZpbmUgU1NQUklOVEYoYnVmLCBpLCBzeiwgZm10LCAuLi4pCQkJCQlcCisgIGRvIHsJ
CQkJCQkJCQlcCisgICAgZWFzc2VydCAoKmkgPCBzeiAmJiBzeiA8PSBTRVFNQVgpOwkJCQkJXAor
ICAgIGlmIChmbXQgJiYgKmkgPCBzeiAmJiBzeiA8PSBTRVFNQVgpCQkJCVwKKyAgICAgICppICs9
IHNucHJpbnRmIChidWYgKyAqaSwgc3ogLSAqaSwgZm10LCBfX1ZBX0FSR1NfXyk7CQlcCisgIH0g
d2hpbGUgKDApCisKKy8qIFdyaXRlcyB2aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlIHRvIHNjcmVl
biAqLworc3RhdGljIGludAordzMyY29uX3dyaXRlX3Z0X3NlcSAoY29uc3QgY2hhciAqc2VxKQor
eworICBjaGFyIGJ1ZltTRVFNQVhdOworICBEV09SRCBuID0gMCwgayA9IDA7CisgIFNTUFJJTlRG
IChidWYsICZuLCBTRVFNQVgsIHNlcSwgTlVMTCk7CisgIGlmIChuKSBXcml0ZUNvbnNvbGUgKGN1
cl9zY3JlZW4sIChMUENTVFIpIGJ1ZiwgbiwgJmssIE5VTEwpOworICByZXR1cm4gazsKK30KIAog
LyogTW92ZSB0aGUgY3Vyc29yIHRvIChST1csIENPTCkgb24gRlJBTUUuICAqLwogc3RhdGljIHZv
aWQKQEAgLTMwOSwxMCArMzQ0LDExIEBAIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFt
ZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlciBpbnQgbGVuKQogewogICBEV09SRCByOwotICBXT1JEIGNoYXJfYXR0cjsKICAg
TFBDU1RSIGNvbnZlcnNpb25fYnVmZmVyOwogICBzdHJ1Y3QgY29kaW5nX3N5c3RlbSAqY29kaW5n
OwogCisgIHczMmNvbl9oaWRlX2N1cnNvcigpOworCiAgIGlmIChsZW4gPD0gMCkKICAgICByZXR1
cm47CiAKQEAgLTM0Miw4ICszNzgsNiBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJh
bWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBnbHlwaCAqc3RyaW5nLAogCiAgICAgICAvKiB3MzJjb25f
Y2xlYXJfZW5kX29mX2xpbmUgc2V0cyBmcmFtZSBvZiBnbHlwaHMgdG8gTlVMTC4gICovCiAgICAg
ICBzdHJ1Y3QgZnJhbWUgKmF0dHJfZnJhbWUgPSBmYWNlX2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFt
ZSA6IGY7Ci0gICAgICAvKiBUdXJuIGFwcGVhcmFuY2UgbW9kZXMgb2YgdGhlIGZhY2Ugb2YgdGhl
IHJ1biBvbi4gICovCi0gICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRy
X2ZyYW1lLCBmYWNlX2lkKTsKIAogICAgICAgaWYgKG4gPT0gbGVuKQogCS8qIFRoaXMgaXMgdGhl
IGxhc3QgcnVuLiAgKi8KQEAgLTM1MSwyOCArMzg1LDQyIEBAIHczMmNvbl93cml0ZV9nbHlwaHMg
KHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdHJpbmcsCiAgICAgICBj
b252ZXJzaW9uX2J1ZmZlciA9IChMUENTVFIpIGVuY29kZV90ZXJtaW5hbF9jb2RlIChzdHJpbmcs
IG4sIGNvZGluZyk7CiAgICAgICBpZiAoY29kaW5nLT5wcm9kdWNlZCA+IDApCiAJewotCSAgLyog
U2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFGaWxs
Q29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAotCQkJCQkgICBj
b2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAotCQkJCQkgICAmcikpCisJICBpZiAodzMy
X3VzZV92aXJ0dWFsX3Rlcm1pbmFsKQogCSAgICB7Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdy
aXRpbmcgY29uc29sZSBhdHRyaWJ1dGVzOiAlbHVcbiIsCi0JCSAgICAgIEdldExhc3RFcnJvciAo
KSk7Ci0JICAgICAgZmZsdXNoIChzdGRvdXQpOworCSAgICAgIHR1cm5fb25fZmFjZSAoZiwgZmFj
ZV9pZCk7CisJICAgICAgV3JpdGVDb25zb2xlIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZl
ciwKKwkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCAmciwgTlVMTCk7CisJICAgICAgdHVybl9vZmZf
ZmFjZSAoZiwgZmFjZV9pZCk7CisJICAgICAgY3Vyc29yX2Nvb3Jkcy5YICs9IGNvZGluZy0+cHJv
ZHVjZWQ7CiAJICAgIH0KLQotCSAgLyogV3JpdGUgdGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYg
KCFXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVm
ZmVyLAotCQkJCQkgICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAg
ICZyKSkKKwkgIGVsc2UKIAkgICAgewotCSAgICAgIHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNv
bnNvbGUgY2hhcmFjdGVyczogJWx1XG4iLAotCQkgICAgICBHZXRMYXN0RXJyb3IgKCkpOwotCSAg
ICAgIGZmbHVzaCAoc3Rkb3V0KTsKLQkgICAgfQorCSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBt
b2RlcyBvZiB0aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KKwkgICAgICBXT1JEIGNoYXJfYXR0
ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOworCisJICAgICAg
LyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgICAgIGlm
ICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJ
CQkJICAgICAgIGNvZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCisJCQkJCSAgICAgICAm
cikpCisJCXsKKwkJICBwcmludGYgKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6
ICVsdVxuIiwKKwkJCSAgR2V0TGFzdEVycm9yICgpKTsKKwkJICBmZmx1c2ggKHN0ZG91dCk7CisJ
CX0KKworCSAgICAgIC8qIFdyaXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBpZiAoIVdy
aXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZmZXIs
CisJCQkJCQljb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAorCQkJCQkJJnIpKQorCQl7
CisJCSAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBjaGFyYWN0ZXJzOiAlbHVcbiIs
CisJCQkgIEdldExhc3RFcnJvciAoKSk7CisJCSAgZmZsdXNoIChzdGRvdXQpOworCQl9CiAKLQkg
IGN1cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOwotCSAgdzMyY29uX21vdmVfY3Vy
c29yIChmLCBjdXJzb3JfY29vcmRzLlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgICAgY3Vyc29y
X2Nvb3Jkcy5YICs9IGNvZGluZy0+cHJvZHVjZWQ7CisJICAgICAgdzMyY29uX21vdmVfY3Vyc29y
IChmLCBjdXJzb3JfY29vcmRzLlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgIH0KIAl9CiAgICAg
ICBsZW4gLT0gbjsKICAgICAgIHN0cmluZyArPSBuOwpAQCAtMzg4LDYgKzQzNiw4IEBAIHczMmNv
bl93cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIGludCB4
LCByZWdpc3RlciBpbnQgeSwKICAgTFBDU1RSIGNvbnZlcnNpb25fYnVmZmVyOwogICBzdHJ1Y3Qg
Y29kaW5nX3N5c3RlbSAqY29kaW5nOwogCisgIHczMmNvbl9oaWRlX2N1cnNvcigpOworCiAgIGlm
IChsZW4gPD0gMCkKICAgICByZXR1cm47CiAKQEAgLTQwNCwyNCArNDU0LDM4IEBAIHczMmNvbl93
cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIGludCB4LCBy
ZWdpc3RlciBpbnQgeSwKICAgaWYgKGNvZGluZy0+cHJvZHVjZWQgPiAwKQogICAgIHsKICAgICAg
IERXT1JEIGZpbGxlZCwgd3JpdHRlbjsKLSAgICAgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBh
dHRyaWJ1dGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICAqLwotICAgICAgRFdPUkQgY2hh
cl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoZiwgZmFjZV9pZCk7Ci0gICAgICBDT09SRCBz
dGFydF9jb29yZHM7Ci0KLSAgICAgIHN0YXJ0X2Nvb3Jkcy5YID0geDsKLSAgICAgIHN0YXJ0X2Nv
b3Jkcy5ZID0geTsKLSAgICAgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0
ZXJzLiAgKi8KLSAgICAgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3Jl
ZW4sIGNoYXJfYXR0ciwKLQkJCQkgICAgICAgY29kaW5nLT5wcm9kdWNlZCwgc3RhcnRfY29vcmRz
LAotCQkJCSAgICAgICAmZmlsbGVkKSkKLQlEZWJQcmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25z
b2xlIGF0dHJpYnV0ZXM6ICVkXG4iLCBHZXRMYXN0RXJyb3IgKCkpKTsKKyAgICAgIGlmICh3MzJf
dXNlX3ZpcnR1YWxfdGVybWluYWwpCisJeworCSAgQ09PUkQgc2F2ZWRfY29vcmRzID0gY3Vyc29y
X2Nvb3JkczsKKwkgIHczMmNvbl9tb3ZlX2N1cnNvcihmLCB5LCB4KTsKKwkgIHR1cm5fb25fZmFj
ZSAoZiwgZmFjZV9pZCk7CisJICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25f
YnVmZmVyLAorCQkJY29kaW5nLT5wcm9kdWNlZCwgJndyaXR0ZW4sIE5VTEwpOworCSAgdHVybl9v
ZmZfZmFjZSAoZiwgZmFjZV9pZCk7CisJICB3MzJjb25fbW92ZV9jdXJzb3IoZiwgc2F2ZWRfY29v
cmRzLlksIHNhdmVkX2Nvb3Jkcy5YKTsKKwl9CiAgICAgICBlbHNlCiAJewotCSAgLyogV3JpdGUg
dGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIg
KGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAotCQkJCQkgICAgZmlsbGVkLCBzdGFydF9j
b29yZHMsICZ3cml0dGVuKSkKLQkgICAgRGViUHJpbnQgKCgiRmFpbGVkIHdyaXRpbmcgY29uc29s
ZSBjaGFyYWN0ZXJzOiAlZFxuIiwKLQkJICAgICAgIEdldExhc3RFcnJvciAoKSkpOworCSAgLyog
Q29tcHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmFj
ZS4gICovCisJICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNl
X2lkKTsKKwkgIENPT1JEIHN0YXJ0X2Nvb3JkczsKKworCSAgc3RhcnRfY29vcmRzLlggPSB4Owor
CSAgc3RhcnRfY29vcmRzLlkgPSB5OworCisJICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhl
c2UgY2hhcmFjdGVycy4gICovCisJICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChj
dXJfc2NyZWVuLCBjaGFyX2F0dHIsCisJCQkJCSAgIGNvZGluZy0+cHJvZHVjZWQsIHN0YXJ0X2Nv
b3JkcywKKwkJCQkJICAgJmZpbGxlZCkpCisJICAgIERlYlByaW50ICgoIkZhaWxlZCB3cml0aW5n
IGNvbnNvbGUgYXR0cmlidXRlczogJWRcbiIsIEdldExhc3RFcnJvciAoKSkpOworCSAgZWxzZQor
CSAgICB7CisJICAgICAgLyogV3JpdGUgdGhlIGNoYXJhY3RlcnMuICAqLworCSAgICAgIGlmICgh
V3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZl
ciwKKwkJCQkJCWZpbGxlZCwgc3RhcnRfY29vcmRzLCAmd3JpdHRlbikpCisJCURlYlByaW50ICgo
IkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hhcmFjdGVyczogJWRcbiIsCisJCQkgICBHZXRMYXN0
RXJyb3IgKCkpKTsKKwkgICAgfQogCX0KICAgICB9CiB9CkBAIC01MjIsNiArNTg2LDI3IEBAIHcz
MmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogICBzY3JvbGxfbGlu
ZSAoZiwgbiwgTEVGVCk7CiB9CiAKK3N0YXRpYyB2b2lkCit3MzJjb25fc2V0dXBfdmlydHVhbF90
ZXJtaW5hbCAodm9pZCkKK3sKKyAgRFdPUkQgb3V0X21vZGU7CisgIEdldENvbnNvbGVNb2RlIChj
dXJfc2NyZWVuLCAmb3V0X21vZGUpOworICBvdXRfbW9kZSB8PSBFTkFCTEVfUFJPQ0VTU0VEX09V
VFBVVDsKKyAgb3V0X21vZGUgfD0gRElTQUJMRV9ORVdMSU5FX0FVVE9fUkVUVVJOOworCisgIGlm
ICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwpCisgICAgb3V0X21vZGUgfD0gRU5BQkxFX1ZJUlRV
QUxfVEVSTUlOQUxfUFJPQ0VTU0lORzsKKyAgZWxzZQorICAgIG91dF9tb2RlICY9IH5FTkFCTEVf
VklSVFVBTF9URVJNSU5BTF9QUk9DRVNTSU5HOworCisgIGludCBvdXRfbW9kZV9zZXQgPSBTZXRD
b25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgb3V0X21vZGUpOworICB3MzJfdXNlX3ZpcnR1YWxfdGVy
bWluYWwgPSB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwgJiYgb3V0X21vZGVfc2V0OworCisgIGlu
dCBtYXhfY29sb3JzID0gdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsID8gMTY3NzcyMTYgOiAxNjsK
KyAgdHR5X3NldHVwX2NvbG9ycyAoY3VycmVudF90dHksIG1heF9jb2xvcnMpOworCisgIHNhZmVf
Y2FsbG4gKFF0dHlfc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworfQogCiBzdGF0aWMgdm9p
ZAogdzMyY29uX3Jlc2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpCkBAIC01
NzgsNiArNjYzLDcgQEAgdzMyY29uX3NldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFs
ICp0KQogICAvKiBJbml0aWFsaXplIGlucHV0IG1vZGU6IGludGVycnVwdF9pbnB1dCBvZmYsIG5v
IGZsb3cgY29udHJvbCwgYWxsb3cKICAgICAgOCBiaXQgY2hhcmFjdGVyIGlucHV0LCBzdGFuZGFy
ZCBxdWl0IGNoYXIuICAqLwogICBGc2V0X2lucHV0X21vZGUgKFFuaWwsIFFuaWwsIG1ha2VfZml4
bnVtICgyKSwgUW5pbCk7CisgIHczMmNvbl9zZXR1cF92aXJ0dWFsX3Rlcm1pbmFsICgpOwogfQog
CiAvKiBobW1tLi4uIHBlcmhhcHMgdGhlc2UgbGV0IHVzIGJyYWNrZXQgc2NyZWVuIGNoYW5nZXMg
c28gdGhhdCB3ZSBjYW4gZmx1c2gKQEAgLTYyNCw4ICs3MTAsNiBAQCBzeXNfdGdldHN0ciAoY2hh
ciAqY2FwLCBjaGFyICoqYXJlYSkKIAkJCXN0dWJzIGZyb20gY20uYwogICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LwogCi1leHRlcm4gc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Owotc3RydWN0
IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5ID0gTlVMTDsKIGV4dGVybiBpbnQgY29zdDsK
IGludCBjb3N0ID0gMDsKIApAQCAtNzI5LDYgKzgxMyw4NyBAQCB3MzJfZmFjZV9hdHRyaWJ1dGVz
IChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQogICByZXR1cm4gY2hhcl9hdHRyOwogfQog
CitzdGF0aWMgdm9pZAordHVybl9vbl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lk
KQoreworICBzdHJ1Y3QgZmFjZSAqZmFjZSA9IEZBQ0VfRlJPTV9JRCAoZiwgZmFjZV9pZCk7Cisg
IHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkgKGYpOworICB1bnNpZ25l
ZCBsb25nIGZnID0gZmFjZS0+Zm9yZWdyb3VuZDsKKyAgdW5zaWduZWQgbG9uZyBiZyA9IGZhY2Ut
PmJhY2tncm91bmQ7CisKKyAgLyogY29uc3RydWN0IGNvbWJpbmVkIFZUIHNlcXVlbmNlIGZvciBm
YWNlIGF0dHJpYnV0ZXMgKi8KKyAgRFdPUkQgbiA9IDA7CisgIHNpemVfdCBzeiA9IFNFUU1BWDsK
KyAgY2hhciBzZXFbc3pdOworICBzei0tOworCisgIGlmIChmYWNlLT50dHlfYm9sZF9wKQorICAg
IFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9ib2xkX21vZGUsIE5VTEwpOwor
ICBpZiAoZmFjZS0+dHR5X2l0YWxpY19wKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5
LT5UU19lbnRlcl9pdGFsaWNfbW9kZSwgTlVMTCk7CisgIGlmIChmYWNlLT50dHlfc3RyaWtlX3Ro
cm91Z2hfcCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfc3RyaWtl
X3Rocm91Z2hfbW9kZSwgTlVMTCk7CisgIGlmIChmYWNlLT51bmRlcmxpbmUgIT0gMCkKKyAgICBT
U1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUsIE5VTEwp
OworICAvKiBOb3RlOiB3aGVuIGZhY2UtPnR0eV9yZXZlcnNlX3AgIT0gMCBhbmQgZmcgYW5kIGJn
IGFyZSBzcGVjaWZpZWQsCisgICAgIHRoZWlyIHZhbHVlcyBhcmUgYWxyZWFkeSBzd2FwcGVkIGFu
ZCByZXZlcnNpbmcgdGhlbSBoZXJlIHdvdWxkIHN3YXAKKyAgICAgdGhlbSBiYWNrLCBidXQgd2Ug
bmVlZCB0byBoYW5kbGUgdGhlIHJldmVyc2FsIHdoZW4gdW5zcGVjaWZpZWQuICAqLworICBpZiAo
ZmFjZS0+dHR5X3JldmVyc2VfcCAmJiBERUZBVUxUUCAoZmcpICYmIERFRkFVTFRQIChiZykpCisg
ICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX3JldmVyc2VfbW9kZSwgTlVM
TCk7CisKKyAgaWYgKERFRkFVTFRQIChmZykpIGZnID0gZmdfbm9ybWFsOworICBpZiAoREVGQVVM
VFAgKGJnKSkgYmcgPSBiZ19ub3JtYWw7CisKKyAgY29uc3QgY2hhciAqc2V0X2ZnID0gdHR5LT5U
U19zZXRfZm9yZWdyb3VuZDsKKyAgY29uc3QgY2hhciAqc2V0X2JnID0gdHR5LT5UU19zZXRfYmFj
a2dyb3VuZDsKKyAgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSA4ICB8fCB0dHktPlROX21heF9j
b2xvcnMgPT0gMTYpCisgICAgeworICAgICAgLyogZmcgYW5kIGJnIGFyZSBpbmRpY2VzIGludG8g
MTYgYmFzZSBjb2xvcnMgKHNlZSBsaW5rIGF0IHRvcCkuICAqLworICAgICAgdW5zaWduZWQgbG9u
ZyBmZ2kgPSAwLCBiZ2kgPSAwOworCisgICAgICBmZ2kgPSAoZmcgPj0gMCAgJiYgZmcgPCA4KQor
CSAgICA/IGZnICsgMzAKKwkgICAgOiAoZmcgPj0gOCAgJiYgZmcgPCAxNikKKwkgICAgICA/IGZn
IC0gOCArIDkwCisJICAgICAgOiAwOworICAgICAgaWYgKGZnaSkKKwlTU1BSSU5URiAoc2VxLCAm
biwgc3osIHNldF9mZywgZmdpKTsKKworICAgICAgYmdpID0gKGJnID49IDAgICYmIGJnIDwgOCkK
KwkgICAgPyBiZyArIDQwCisJICAgIDogKGJnID49IDggICYmIGJnIDwgMTYpCisJICAgICAgPyBi
ZyAtIDggKyAxMDAKKwkgICAgICA6IDA7CisgICAgICBpZiAoYmdpKQorCVNTUFJJTlRGIChzZXEs
ICZuLCBzeiwgc2V0X2JnLCBiZ2kpOworICAgIH0KKyAgZWxzZSBpZiAodHR5LT5UTl9tYXhfY29s
b3JzID09IDI1NikKKyAgICB7CisgICAgICAvKiBmZyBhbmQgYmcgYXJlIHh0ZXJtIGluZGljZXMu
ICAqLworICAgICAgaWYgKGZnID49IDAgJiYgZmcgPCAyNTYpCisJU1NQUklOVEYgKHNlcSwgJm4s
IHN6LCBzZXRfZmcsIGZnKTsKKworICAgICAgaWYgKGJnID49IDAgJiYgYmcgPCAyNTYpCisJU1NQ
UklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIGJnKTsKKyAgICB9CisgIGVsc2UgaWYgKHR0eS0+
VE5fbWF4X2NvbG9ycyA9PSAxNjc3NzIxNikKKyAgICB7CisgICAgICAvKiBmZyBhbmQgYmcgYXJl
IHBpeGVsIHZhbHVlcyAtLSBkZWNvbXBvc2UgdG8gcmdiIHRyaXBsZXMuICAqLworICAgICAgdW5z
aWduZWQgbG9uZyByZiA9IGZnLzY1NTM2LCBnZiA9IChmZy8yNTYpJjI1NSwgYmYgPSBmZyYyNTU7
CisgICAgICB1bnNpZ25lZCBsb25nIHJiID0gYmcvNjU1MzYsIGdiID0gKGJnLzI1NikmMjU1LCBi
YiA9IGJnJjI1NTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2ZnLCByZiwgZ2Ys
IGJmKTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCByYiwgZ2IsIGJiKTsK
KyAgICB9CisgIHczMmNvbl93cml0ZV92dF9zZXEgKChjb25zdCBjaGFyICopIHNlcSk7Cit9CisK
K3N0YXRpYyB2b2lkCit0dXJuX29mZl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lk
KQoreworICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKKyAg
dzMyY29uX3dyaXRlX3Z0X3NlcSAodHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2RlKTsKK30KKwog
LyogVGhlIElNRSB3aW5kb3cgaXMgbmVlZGVkIHRvIHJlY2VpdmUgdGhlIHNlc3Npb24gbm90aWZp
Y2F0aW9ucwogICAgcmVxdWlyZWQgdG8gcmVzZXQgdGhlIGxvdyBsZXZlbCBrZXlib2FyZCBob29r
IHN0YXRlLiAgKi8KIApAQCAtODYxLDYgKzEwMjYsOCBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5
IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQogICAgIH0K
IAogICBjaGFyX2F0dHJfbm9ybWFsID0gaW5mby53QXR0cmlidXRlczsKKyAgZmdfbm9ybWFsID0g
Y2hhcl9hdHRyX25vcm1hbCAmIDB4MDAwZjsKKyAgYmdfbm9ybWFsID0gKGNoYXJfYXR0cl9ub3Jt
YWwgPj4gNCkgJiAweDAwMGY7CiAKICAgLyogRGV0ZXJtaW5lIGlmIHRoZSBpbmZvIHJldHVybmVk
IGJ5IEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvCiAgICAgIGlzIHJlYWxpc3RpYy4gIE9sZCBN
UyBUZWxuZXQgc2VydmVycyB1c2VkIHRvIG9ubHkgZmlsbCBvdXQKQEAgLTkxNCwzMSArMTA4MSw4
MSBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAq
d2lkdGgsIGludCAqaGVpZ2h0KQogCiAgIC8qIFNldCB1cCB0aGUga2V5Ym9hcmQgaG9vay4gICov
CiAgIHNldHVwX3czMl9rYmRob29rIChod25kKTsKKworICAvKiBTZXQgY3VycmVudF90dHkgdG8g
dGhlIHR0eSBvZiB0aGlzIHRlcm1pbmFsICovCisgIGN1cnJlbnRfdHR5ID0gdGVybS0+ZGlzcGxh
eV9pbmZvLnR0eTsKIH0KIAogCi1ERUZVTiAoInNldC1zY3JlZW4tY29sb3IiLCBGc2V0X3NjcmVl
bl9jb2xvciwgU3NldF9zY3JlZW5fY29sb3IsIDIsIDIsIDAsCitERUZVTiAoInNldC1zY3JlZW4t
Y29sb3IiLCBGc2V0X3NjcmVlbl9jb2xvciwgU3NldF9zY3JlZW5fY29sb3IsIDIsIDMsIDAsCiAg
ICAgICAgZG9jOiAvKiBTZXQgc2NyZWVuIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3Jz
LgogCi1Bcmd1bWVudHMgc2hvdWxkIGJlIGluZGljZXMgYmV0d2VlbiAwIGFuZCAxNSwgc2VlIHcz
MmNvbnNvbGUuZWwuICAqLykKLSAgKExpc3BfT2JqZWN0IGZvcmVncm91bmQsIExpc3BfT2JqZWN0
IGJhY2tncm91bmQpCitBcmd1bWVudHMgc2hvdWxkIGJlIGluZGljZXMgZm9yIGNvbG9ycyBpbiB0
aGUgbGlzdCByZXR1cm5lZCBieSBgdHR5LWNvbG9yLWFsaXN0Jy4KK0lmIFZUUCBpcyBub24tbmls
LCBzZXR0aW5ncyBhZmZlY3QgdmlydHVhbCB0ZXJtaW5hbCBwcm9jZXNzaW5nIG9ubHkuCitPdGhl
cndpc2UsIGFyZ3VtZW50cyBzaG91bGQgYmUgYmV0d2VlbiAwIGFuZCAxNSwgYW5kIHNldHRpbmdz
IHdpbGwKK2JlIGVmZmVjdGl2ZSBvbmx5IHdoZW4gdmlydHVhbCB0ZXJtaW5hbCBwcm9jZXNzaW5n
IGlzIGRpc2FibGVkLgorCitTZWUgdzMyY29uc29sZS5lbCBhbmQgdGhlIGRvY3VtZW50YXRpb24g
Zm9yIGB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwnLiAgKi8pCisgIChMaXNwX09iamVjdCBmb3Jl
Z3JvdW5kLCBMaXNwX09iamVjdCBiYWNrZ3JvdW5kLCBMaXNwX09iamVjdCB2dHApCiB7Ci0gIGNo
YXJfYXR0cl9ub3JtYWwgPSBYRklYTkFUIChmb3JlZ3JvdW5kKSArIChYRklYTkFUIChiYWNrZ3Jv
dW5kKSA8PCA0KTsKKyAgaW50IGZnID0gWEZJWE5BVCAoZm9yZWdyb3VuZCk7CisgIGludCBiZyA9
IFhGSVhOQVQgKGJhY2tncm91bmQpOworCisgIGlmIChOSUxQICh2dHApKQorICAgIHsKKyAgICAg
IGNoYXJfYXR0cl9ub3JtYWwgPSBmZyArIChiZyA8PCA0KTsKKyAgICB9CisgIGVsc2UKKyAgICB7
CisgICAgICBmZ19ub3JtYWwgPSBmZzsKKyAgICAgIGJnX25vcm1hbCA9IGJnOworICAgIH0KIAog
ICBGcmVjZW50ZXIgKFFuaWwsIFF0KTsKICAgcmV0dXJuIFF0OwogfQogCi1ERUZVTiAoImdldC1z
Y3JlZW4tY29sb3IiLCBGZ2V0X3NjcmVlbl9jb2xvciwgU2dldF9zY3JlZW5fY29sb3IsIDAsIDAs
IDAsCitERUZVTiAoImdldC1zY3JlZW4tY29sb3IiLCBGZ2V0X3NjcmVlbl9jb2xvciwgU2dldF9z
Y3JlZW5fY29sb3IsIDAsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBHZXQgY29sb3IgaW5kaWNlcyBv
ZiB0aGUgY3VycmVudCBzY3JlZW4gZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZC4KIAotVGhlIGNv
bG9ycyBhcmUgcmV0dXJuZWQgYXMgYSBsaXN0IG9mIDIgaW5kaWNlcyAoRk9SRUdST1VORCBCQUNL
R1JPVU5EKS4KLVNlZSB3MzJjb25zb2xlLmVsIGFuZCBgdHR5LWRlZmluZWQtY29sb3ItYWxpc3Qn
IGZvciBtYXBwaW5nIG9mIGluZGljZXMKLXRvIGNvbG9ycy4gICovKQorVGhlIGNvbG9ycyBhcmUg
cmV0dXJuZWQgYXMgYSBsaXN0IG9mIDIgaW5kaWNlcyAoRk9SRUdST1VORCBCQUNLR1JPVU5EKSBm
b3IKK2NvbG9ycyBpbiB0aGUgbGlzdCByZXR1cm5lZCBieSBgdHR5LWNvbG9yLWFsaXN0YC4KKwor
SWYgVlRQIGlzIG5vbi1uaWwsIHJldHVybnMgc2V0dGluZ3MgZWZmZWN0aXZlIHdoZW4gdmlydHVh
bCB0ZXJtaW5hbAorcHJvY2Vzc2luZyBpcyBlbmFibGVkLiAgT3RoZXJ3aXNlLCByZXR1cm5zIHNl
dHRpbmdzIGVmZmVjdGl2ZSB3aGVuCit2aXJ0dWFsIHRlcm1pbmFsIHByb2Nlc3NpbmcgaXMgZGlz
YWJsZWQuCisKK1NlZSB3MzJjb25zb2xlLmVsIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgYHcz
Mi11c2UtdmlydHVhbC10ZXJtaW5hbCcuICAqLykKKyAgKExpc3BfT2JqZWN0IHZ0cCkKK3sKKyAg
aW50IGZnID0gTklMUCAodnRwKSA/IGNoYXJfYXR0cl9ub3JtYWwgJiAweDAwMGYgOiBmZ19ub3Jt
YWw7CisgIGludCBiZyA9IE5JTFAgKHZ0cCkgPyAoY2hhcl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4
MDAwZiA6IGJnX25vcm1hbDsKKworICByZXR1cm4gRmNvbnMgKG1ha2VfZml4bnVtIChmZyksIEZj
b25zIChtYWtlX2ZpeG51bSAoYmcpLCBRbmlsKSk7Cit9CisKK0RFRlVOICgidzMyLXVzZS12aXJ0
dWFsLXRlcm1pbmFsIiwgRnczMl91c2VfdmlydHVhbF90ZXJtaW5hbCwgU3czMl91c2VfdmlydHVh
bF90ZXJtaW5hbCwgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIEVuYWJsZXMgKGRpc2FibGVzKSB2
aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlIHByb2Nlc3NpbmcgaWYgYXJndW1lbnQgaXMgdCAobmls
KS4gICovKQorICAoTGlzcF9PYmplY3QgYXJnKQoreworICBpZiAoRVEgKGFyZywgUXQpKQorICAg
IHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCA9IDE7CisgIGVsc2UgaWYgKEVRIChhcmcsIFFuaWwp
KQorICAgIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCA9IDA7CisgIGVsc2UgeworICAgIGVycm9y
ICgiSW52YWxpZCBhcmd1bWVudDogZXhwZWN0cyB0IG9yIG5pbC4iKTsKKyAgICByZXR1cm4gUW5p
bDsKKyAgfQorCisgIHczMmNvbl9zZXR1cF92aXJ0dWFsX3Rlcm1pbmFsICgpOworICByZXR1cm4g
UXQ7Cit9CisKK0RFRlVOICgidzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXAiLCBGdzMyX3VzZV92
aXJ0dWFsX3Rlcm1pbmFsX3AsIFN3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfcCwgMCwgMCwgMCwK
KyAgICAgICBkb2M6IC8qIFJldHVybnMgdCAobmlsKSBpZiB2aXJ0dWFsIHRlcm1pbmFsIHNlcXVl
bmNlIHByb2Nlc3NpbmcgaXMgZW5hYmxlZCAoZGlzYWJsZWQpLiAgKi8pCiAgICh2b2lkKQogewot
ICByZXR1cm4gRmNvbnMgKG1ha2VfZml4bnVtIChjaGFyX2F0dHJfbm9ybWFsICYgMHgwMDBmKSwK
LQkJRmNvbnMgKG1ha2VfZml4bnVtICgoY2hhcl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4MDAwZiks
IFFuaWwpKTsKKyAgcmV0dXJuIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCA/IFF0IDogUW5pbDsK
IH0KIAogREVGVU4gKCJzZXQtY3Vyc29yLXNpemUiLCBGc2V0X2N1cnNvcl9zaXplLCBTc2V0X2N1
cnNvcl9zaXplLCAxLCAxLCAwLApAQCAtOTY3LDUgKzExODQsNyBAQCBzY3JvbGwtYmFjayBidWZm
ZXIuICAqLyk7CiAKICAgZGVmc3ViciAoJlNzZXRfc2NyZWVuX2NvbG9yKTsKICAgZGVmc3ViciAo
JlNnZXRfc2NyZWVuX2NvbG9yKTsKKyAgZGVmc3ViciAoJlN3MzJfdXNlX3ZpcnR1YWxfdGVybWlu
YWwpOworICBkZWZzdWJyICgmU3czMl91c2VfdmlydHVhbF90ZXJtaW5hbF9wKTsKICAgZGVmc3Vi
ciAoJlNzZXRfY3Vyc29yX3NpemUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMv
eGRpc3AuYwppbmRleCBhZWY0MGMzOGU1NC4uZGM3ZjQyYjk4YmEgMTAwNjQ0Ci0tLSBhL3NyYy94
ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBAIC0xNzIzOSw3ICsxNzIzOSw3IEBAIHJlZGlzcGxh
eV9pbnRlcm5hbCAodm9pZCkKIAkgICAgIGFyZWEsIGRpc3BsYXlpbmcgYSBkaWZmZXJlbnQgZnJh
bWUgbWVhbnMgcmVkaXNwbGF5IHRoZQogCSAgICAgd2hvbGUgdGhpbmcuICAqLwogCSAgU0VUX0ZS
QU1FX0dBUkJBR0VEIChzZik7Ci0jaWYgIWRlZmluZWQgRE9TX05UICYmICFkZWZpbmVkIEhBVkVf
QU5EUk9JRAorI2lmICFkZWZpbmVkIE1TRE9TICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAogCSAg
c2V0X3R0eV9jb2xvcl9tb2RlIChGUkFNRV9UVFkgKHNmKSwgc2YpOwogI2VuZGlmCiAJfQoKMi40
OS4wCgo=
--b1=_ahBK1ypgWE7QebnyYZDGQcV1FbNDLhdlnvuqLi4dpg--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 27 Sep 2025 13:54:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 27 09:54:48 2025
Received: from localhost ([127.0.0.1]:40054 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v2VNw-0008I2-7r
for submit <at> debbugs.gnu.org; Sat, 27 Sep 2025 09:54:48 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:58168)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v2VNr-0008HX-VR
for 79298 <at> debbugs.gnu.org; Sat, 27 Sep 2025 09:54:45 -0400
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 1v2VNk-00025f-Ru; Sat, 27 Sep 2025 09:54:36 -0400
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=0FMtsOy7UUkdgIo/2rCTGINJUnRmJAgxev+ZfOpvK+I=; b=XM0YRIBCkCa9
Vdy8ikhoYcO3qS4+F7/yrJbEcizuH+5J8KevU9pFNNlo4DR3QGQ2KXymIZx49hLmiYzxQgwRBoMWQ
RAJsBbYhwcGm98Po3DQ7b+gPtVFZyvPLPS0QQ48GZK4Pw7PFjdr8qe4dv3u+AkwIkGPaciYSDa5zY
cuyhqqW6L5tIeubfSpmY2tRtK1SC141la0F94Mx58LZWMvUIXtux61FrD1V0Pfai+M96Z2LLVEsnM
E/rJcH5fURdk9i6rgK8CVMz9XSiTgQa6i6pq0SgrcUL1aLAsTv5mBkIXy6qvPgI2cDzjFOLJ55LXA
U4mZArm9g+0i6AAoV8yDwA==;
Date: Sat, 27 Sep 2025 16:54:33 +0300
Message-Id: <86qzvs6lwm.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ewan <ewan@HIDDEN>
In-Reply-To: <cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev>
(message from Ewan on Thu, 25 Sep 2025 06:24:58 +0000)
Subject: Re: bug#79298: patch: full color in windows terminal
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev>
<864itijzmd.fsf@HIDDEN>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
<86wm61nsuv.fsf@HIDDEN>
<aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
<861po0grbt.fsf@HIDDEN>
<cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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: Thu, 25 Sep 2025 06:24:58 +0000
> From: Ewan <ewan@HIDDEN>
> Cc: 79298 <at> debbugs.gnu.org
>
> I've attached a bare-minimum patch.
> I believe it addresses all of your comments.
Sorry, a couple more nits:
> -static void
> +void
> tty_setup_colors (struct tty_display_info *tty, int mode)
> {
This change requires a prototype to be declared. So I suggest to have
this:
> +extern void tty_setup_colors (struct tty_display_info *tty, int mode);
moved from w32console.c to termchar.h, so that both term.c and
w32console.c could see the prototype.
> +static int w32con_write_vt_seq (char *);
This should be
static int w32con_write_vt_seq (const char *);
(and the same in the function's definition), because otherwise the
compiler will emit warnings:
w32console.c: In function 'turn_off_face':
w32console.c:891:27: warning: passing argument 1 of 'w32con_write_vt_seq' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
891 | w32con_write_vt_seq (tty->TS_exit_attribute_mode);
| ~~~^~~~~~~~~~~~~~~~~~~~~~~~
w32console.c:114:28: note: expected 'char *' but argument is of type 'const char *'
114 | w32con_write_vt_seq (char *seq)
| ~~~~~~^~~
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 27 Sep 2025 13:46:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 27 09:46:18 2025
Received: from localhost ([127.0.0.1]:40004 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v2VFh-0007oV-FV
for submit <at> debbugs.gnu.org; Sat, 27 Sep 2025 09:46:17 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:42354)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v2VFa-0007nn-VW
for 79298 <at> debbugs.gnu.org; Sat, 27 Sep 2025 09:46:13 -0400
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 1v2VFR-0000OL-75; Sat, 27 Sep 2025 09:46:01 -0400
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=lgO9PRS62XGjSzKVh2MQ9ja9qNUDaOhmc0K/irZCLhQ=; b=A/ayyyC1nZOi
s2YgD1xWIDV45q0DytJJX8A+S9nlHSWEDkrmimY1QMEZLpoPP9emI0G86hABHLNfQcpSSziwmyt/L
9hkB+jnQBcuLa5gvo4hYS+t5z8uAKOndLukaxTTCWZjbQC59gCyvK7apcjwJrVF8TpVe+I6XmBhCv
uQnIwC4jqs/5whvP/MQKRq6mZUerFL/b/WWwALtnFIWktCxu/hx1BkNSYr3h9zldtqFNugEw7H9Jv
VMZOlSGqAuZ29RoAitZSPgaZLtDbTsZnWNTTP8BCz/5M3YRt05NhENsmEqygJpS8jhxSijMkMeUfV
J+y07iSLWKtid5iwfddT+A==;
Date: Sat, 27 Sep 2025 16:45:56 +0300
Message-Id: <86seg86maz.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ewan <ewan@HIDDEN>
In-Reply-To: <cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev>
(message from Ewan on Thu, 25 Sep 2025 06:24:58 +0000)
Subject: Re: bug#79298: patch: full color in windows terminal
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev>
<864itijzmd.fsf@HIDDEN>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
<86wm61nsuv.fsf@HIDDEN>
<aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
<861po0grbt.fsf@HIDDEN>
<cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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: Thu, 25 Sep 2025 06:24:58 +0000
> From: Ewan <ewan@HIDDEN>
> Cc: 79298 <at> debbugs.gnu.org
>
> I've attached a bare-minimum patch.
> I believe it addresses all of your comments.
Thanks, a few minor comments below, and we can install this.
> --- a/doc/emacs/cmdargs.texi
> +++ b/doc/emacs/cmdargs.texi
> @@ -1024,19 +1024,21 @@ colored display.
> @itemx ansi8
> Turn on the color support unconditionally, and use color commands
> specified by the ANSI escape sequences for the 8 standard colors.
> +@item 24bit
> +Turn on support for all defined 24-bit RGB colors if available.
> +Currently this is effective on MS-Windows (10+) only.
This sounds like saying 24-bit color is supported only on Windows,
which is definitely not true. So I think we should add in parentheses
a note that on other systems 24-bit color is enabled automatically if
the terminal supports it.
> +@vindex use-virtual-terminal
This should be @findex, since it's a function. Also, I'd prefer for
it to be described in the Windows-specific appendix, not here. And
finally, I think the name should be w32-use-virtual-terminal.
> + @code{(use-virtual-terminal)} evaluates to @code{t} if and only if
> +the internal variable has a non-zero numerical value, and otherwise to
> +@code{nil}. If it evaluates to @code{t}, ANSI escape sequences are used
> +for color, otherwise, the older mechanism is used. The internal variable
> +can be set by evaluating @code{(use-virtual-terminal n)}, where @code{n} is a
> +number: if @code{n} is non-zero and the feature is supported by your terminal,
> +it will be enabled, otherwise the feature will be disabled.
This description should be amended according to the comments about the
function's API, see below.
> ++++
> +** Windows Terminal now displays 256 and 24-bit RGB color.
I suggest "Windows Terminal can now display 256 and 24-bit RGB color"
instead.
> --- a/lisp/faces.el
> +++ b/lisp/faces.el
> @@ -2407,9 +2407,13 @@ If you set `term-file-prefix' to nil, this function does nothing."
> ;; dumped terminal frame on startup.
>
> (defun tty-set-up-initial-frame-faces ()
> - (let ((frame (selected-frame)))
> - (frame-set-background-mode frame t)
> - (face-set-after-frame-default frame)))
> + (progn
> + (when (eq system-type 'windows-nt)
> + (require 'term/w32console)
> + (w32-tty-setup-colors))
> + (let ((frame (selected-frame)))
> + (frame-set-background-mode frame t)
> + (face-set-after-frame-default frame))))
This is unusual: why do we need to load w32console.el explicitly?
It's supposed to be loaded automatically when Emacs is started in -nw
mode, so if something doesn't work without the above, we need to
figure out why.
> --- a/lisp/term/tty-colors.el
> +++ b/lisp/term/tty-colors.el
> @@ -764,7 +764,8 @@
> (auto . 0)
> (ansi8 . 8)
> (always . 8)
> - (yes . 8))
> + (yes . 8)
> + (24bit . 16777216))
> "An alist of supported standard tty color modes and their aliases.")
Shouldn't 256 be here as well? Otherwise, --color=256 will not work.
(I tried that, and it indeed tells Emacs to use only 16 colors.)
> --- a/lisp/term/w32console.el
> +++ b/lisp/term/w32console.el
> @@ -49,6 +49,72 @@
> (declare-function get-screen-color "w32console.c" ())
This declaration needs to change, since there's now one optional
argument.
> +(declare-function use-virtual-terminal "w32console.c")
Please include the list of arguments in this declaration.
> + fgi = (fg >= 0 && fg < 8) ? fg + 30
> + : (fg >= 8 && fg < 16) ? fg - 8 + 90
> + : 0;
Please reformat this according to our conventions:
fgi = (fg >= 0 && fg < 8)
? fg + 30
: (fg >= 8 && fg < 16)
? fg - 8 + 90
: 0;
> + bgi = (bg >= 0 && bg < 8) ? bg + 40
> + : (bg >= 8 && bg < 16) ? bg - 8 + 100
> + : 0;
Same here.
> +DEFUN ("use-virtual-terminal", Fuse_virtual_terminal, Suse_virtual_terminal, 0, 1, 0,
> + doc: /* Inspect or enable/disable virtual terminal sequence processing.
> +
> +If argument is zero, disable virtual terminal sequence processing.
> +If argument is a non-zero number, enable virtual terminal sequence processing.
> +If argument is omitted or nil, just inspect the current state.
> +Returns t (nil) if virtual terminal sequence processing is enabled (disabled). */)
I'd prefer the function's name to be w32-specific, like
w32-use-virtual-terminal.
> + (Lisp_Object arg)
> +{
> + if (!NILP (arg))
> + {
> + w32_use_virtual_terminal = XFIXNAT (arg);
> + w32con_setup_virtual_terminal ();
> + }
> + return w32_use_virtual_terminal ? Qt : Qnil;
> }
AFAICT, the variable w32_use_virtual_terminal is a simple boolean,
either true or false. Then why do we need to accept as argument to
this function anything but nil (meaning disable) and t (enable)?
Also, the function should check the argument, and only allow the
values it supports, and signal an error if the argument is not nil or
t.
Last comment: I tried "emacs -Q -nw", and didn't see any flickering on
display. Can you tell what to do to try cause flickering? Or maybe
my machine is too fast for this to be seen?
Thanks again for working on this.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 25 Sep 2025 06:25:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 25 02:25:16 2025
Received: from localhost ([127.0.0.1]:54888 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v1fPn-0001GP-RA
for submit <at> debbugs.gnu.org; Thu, 25 Sep 2025 02:25:16 -0400
Received: from mail-4323.protonmail.ch ([185.70.43.23]:30763)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v1fPi-0001BD-4l
for 79298 <at> debbugs.gnu.org; Thu, 25 Sep 2025 02:25:13 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev;
s=protonmail; t=1758781503; x=1759040703;
bh=9PoBL0Nz68Jz0vis6wvTYkPUCH8JW3aEKGC+U1cOh7o=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=MJsNq8S8ezE9fE7OHW6kHEnyMn7z9DYc882XnCu/fuRmvn/Q0JfYEOxKnaD0klMp8
j9SD3nvsBtPeQrlt443ESQA2VzC42MtY5B10/aKuFHhOcb1N7yPWEg/KnlqGaP5ZAo
WxMQgZTo+dlmX4pDk4OxbxzXPoPwsl/PCVfeE/4DJWapn2uQMIIVYRTu0sMAQktANa
g81S/RXyQmUFp226PjZye5y1cz1/PWhjltHTnjOG/5vyWb0ucmTeLHGviCX2GVZL3T
hMgkSF+2hDZ3jJild/fo1UUksNugdDn3JdFXzcWB6NJ7dcCdX/JZ9fUnfArw2mvOeU
kndNA7b04a96Q==
Date: Thu, 25 Sep 2025 06:24:58 +0000
To: Eli Zaretskii <eliz@HIDDEN>
From: Ewan <ewan@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Message-ID: <cUcAmCbYwgtMD4noZLvt83THEgnqbSLHa-AZfmk-BN5_uZPyHwItbIQb8rhco3FNXv7TdBlaseqjHK5wBp9vRgpyjAD4Kf8uGHMBIKKTtjo=@etown.dev>
In-Reply-To: <861po0grbt.fsf@HIDDEN>
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev>
<864itijzmd.fsf@HIDDEN>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
<86wm61nsuv.fsf@HIDDEN>
<aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
<861po0grbt.fsf@HIDDEN>
Feedback-ID: 150490971:user:proton
X-Pm-Message-ID: 936f31c68169dc016157ffc72e6b0095e16efa49
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="b1=_aql0J6clWKaP8W8UdnGvDXQ4Cxga31BtijufV9R38A4"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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 (-)
--b1=_aql0J6clWKaP8W8UdnGvDXQ4Cxga31BtijufV9R38A4
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
I've attached a bare-minimum patch.=20
I believe it addresses all of your comments.
Just a few notes.
> In any case, the implementation of tty-color-24bit is so simple that I
> don't see a need to call Lisp even if we keep the cache. Calling Lisp
> from redisplay should be kept to the bare minimum. Calling Lisp is
> slow, and can trigger GC. So please rewrite what w32con-get-pixel
> does in C.
I found a work-around to the use of get-pixel, in part by updating the exis=
ting
get- and set-screen-color functions to handle higher indices and pixel valu=
es.
Those updates are backward compatible, and the conversion is now all handle=
d in
the Lisp initialization code.
> No. I meant the w32con-set-up-initial-frame-faces call.
>=20
> > Otherwise, this condition should only hold in one of two cases, and the=
n the
> > body call into Lisp executed one time:
> > (1) w32_use_virtual_terminal_sequences is manually set to false
> > (2) initializing on a Windows system that does not support VT sequences
>=20
>=20
> Both cases should be handled in initialization code, not in
> update_begin hook. When w32_use_virtual_terminal_sequences is
> modified, we should call the initialization right there and then.
> Perhaps the variable shouldn't be modifiable from Lisp, but we should
> provide a function to do that.=20
I went with the function option: 'use-virtual-terminal' is used to both ins=
pect
and set the value of the internal variable, w32_use_virtual_terminal.
> Hmm... is this the best way of debugging this stuff? Why does Emacs
> have to exit? why not use DebPrint instead of printf, which then will
> show the result in the debugger without terminating the session?
I've just removed this debugging function.
> I asked to have an eassert, either in SSPRINTF itself or in its
> callers, to detect the situations where the buffer is not large
> enough. So at least here, we should have something like
>=20
> eassert (n < SEQMAX);
>=20
> after the call to SSPRINTF.
The previous patch had eassert added in SSPRINTF. I've kept it there in the
attached patch, but added one more condition to cover an edge-case.
> > + DWORD out_mode;
> > + GetConsoleMode (cur_screen, &out_mode);
> > + out_mode |=3D ENABLE_PROCESSED_OUTPUT;
> > + out_mode |=3D ENABLE_VIRTUAL_TERMINAL_PROCESSING;
> > + out_mode |=3D DISABLE_NEWLINE_AUTO_RETURN;
> > + w32_use_virtual_terminal_sequences =3D SetConsoleMode (cur_screen, ou=
t_mode);
> > + if (w32_use_virtual_terminal_sequences)
> > + {
> > + int cursor_off_p =3D XWINDOW (selected_window)->cursor_off_p;
> > + t->display_info.tty->cursor_hidden =3D cursor_off_p;
> > + }
>=20
>=20
> If we allow changing w32-use-virtual-terminal-sequences from Lisp, we
> must call the above code when the value is set, and reset those bits
> when the value is reset, right?
Resetting is not really necessary, as these bits only affect the behaviour =
of
WriteConsole, and we only use WriteConsole when virtual terminal sequences =
are
enabled. However, I've opted to negate ENABLE_VIRTUAL_TERMINAL_PROCESSING w=
hen
the feature is disabled, just for good measure. ENABLE_PROCESSED_OUTPUT is=
=20
standard (terminal interprets \n, \r, etc.), and DISABLE_NEWLINE_AUTO_RETUR=
N
makes the behaviour like other (non-Windows) terminals (i.e. disables an od=
dity).
--b1=_aql0J6clWKaP8W8UdnGvDXQ4Cxga31BtijufV9R38A4
Content-Type: application/octet-stream; name=w32-tty-virtual-terminal-color.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=w32-tty-virtual-terminal-color.patch
RnJvbSA4NGQ0NjcxMjg1NTM3NTU5ZWRjZGY3Y2JmNTkwODMyMDdkN2Y0MGZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFdlZCwg
MjQgU2VwIDIwMjUgMjI6Mzc6NDAgLTA3MDAKU3ViamVjdDogW1BBVENIXSB3MzIgdHR5IHZpcnR1
YWwgdGVybWluYWwgY29sb3IKCi0tLQogZG9jL2VtYWNzL2NtZGFyZ3MudGV4aSAgfCAgMTIgKy0K
IGRvYy9lbWFjcy9tc2Rvcy50ZXhpICAgIHwgIDI2ICsrKysKIGV0Yy9ORVdTICAgICAgICAgICAg
ICAgIHwgIDExICsrCiBsaXNwL2ZhY2VzLmVsICAgICAgICAgICB8ICAxMCArLQogbGlzcC90ZXJt
L3R0eS1jb2xvcnMuZWwgfCAgIDMgKy0KIGxpc3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTQ0ICsr
KysrKysrKysrKysrLS0tLS0KIHNyYy90ZXJtLmMgICAgICAgICAgICAgIHwgIDUxICsrKysrKy0K
IHNyYy93MzJjb25zb2xlLmMgICAgICAgIHwgMzEwICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKy0tLS0tLS0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgICAyICstCiA5IGZpbGVz
IGNoYW5nZWQsIDQ2OCBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvZG9jL2VtYWNzL2NtZGFyZ3MudGV4aSBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKaW5kZXgg
NzlhZTJkMDY0ZDEuLmI2NzM4ZDU5YzllIDEwMDY0NAotLS0gYS9kb2MvZW1hY3MvY21kYXJncy50
ZXhpCisrKyBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKQEAgLTEwMjQsMTkgKzEwMjQsMjEgQEAg
Y29sb3JlZCBkaXNwbGF5LgogQGl0ZW14IGFuc2k4CiBUdXJuIG9uIHRoZSBjb2xvciBzdXBwb3J0
IHVuY29uZGl0aW9uYWxseSwgYW5kIHVzZSBjb2xvciBjb21tYW5kcwogc3BlY2lmaWVkIGJ5IHRo
ZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMgZm9yIHRoZSA4IHN0YW5kYXJkIGNvbG9ycy4KK0BpdGVt
IDI0Yml0CitUdXJuIG9uIHN1cHBvcnQgZm9yIGFsbCBkZWZpbmVkIDI0LWJpdCBSR0IgY29sb3Jz
IGlmIGF2YWlsYWJsZS4KK0N1cnJlbnRseSB0aGlzIGlzIGVmZmVjdGl2ZSBvbiBNUy1XaW5kb3dz
ICgxMCspIG9ubHkuCiBAaXRlbSBAdmFye251bX0KIFVzZSBjb2xvciBtb2RlIGZvciBAdmFye251
bX0gY29sb3JzLiAgSWYgQHZhcntudW19IGlzIEBtaW51c3t9MSwgdHVybiBvZmYKIGNvbG9yIHN1
cHBvcnQgKGVxdWl2YWxlbnQgdG8gQHNhbXB7bmV2ZXJ9KTsgaWYgaXQgaXMgMCwgdXNlIHRoZQog
ZGVmYXVsdCBjb2xvciBzdXBwb3J0IGZvciB0aGlzIHRlcm1pbmFsIChlcXVpdmFsZW50IHRvIEBz
YW1we2F1dG99KTsKIG90aGVyd2lzZSB1c2UgYW4gYXBwcm9wcmlhdGUgc3RhbmRhcmQgbW9kZSBm
b3IgQHZhcntudW19IGNvbG9ycy4KIERlcGVuZGluZyBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJp
bGl0aWVzLCBFbWFjcyBtaWdodCBiZSBhYmxlIHRvIHR1cm4KLW9uIGEgY29sb3IgbW9kZSBmb3Ig
OCwgMTYsIDg4LCBvciAyNTYgYXMgdGhlIHZhbHVlIG9mIEB2YXJ7bnVtfS4gIElmCi10aGVyZSBp
cyBubyBtb2RlIHRoYXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBp
ZgotQHZhcntudW19IHdlcmUgMCwgaS5lLiwgaXQgdXNlcyB0aGUgdGVybWluYWwncyBkZWZhdWx0
IGNvbG9yIHN1cHBvcnQKLW1vZGUuCitvbiBhIGNvbG9yIG1vZGUgZm9yIDgsIDE2LCA4OCwgMjU2
LCBvciAxNjc3NzIxNiBhcyB0aGUgdmFsdWUgb2YgQHZhcntudW19LgorSWYgdGhlcmUgaXMgbm8g
bW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMsIEVtYWNzIGFjdHMgYXMgaWYKK0B2
YXJ7bnVtfSB3ZXJlIDAsIGkuZS4sIGl0IHVzZXMgdGhlIHRlcm1pbmFsJ3MgZGVmYXVsdCBjb2xv
ciBzdXBwb3J0IG1vZGUuCiBAZW5kIHRhYmxlCiAKLVRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qg
b24gTVMtV2luZG93cyBhbmQgTVMtRE9TLgorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBN
Uy1ET1MsIG5vciBNUy1XaW5kb3dzIHByaW9yIHRvIFdpbmRvd3MgMTAuCiAKIEBjaW5kZXggY29s
b3JzIG9uIGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdpbmcgZHVyaW5nIHNlc3Npb24KIEBjaW5k
ZXggY2hhcmFjdGVyIHRlcm1pbmFsLCBjaGFuZ2UgY29sb3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9j
L2VtYWNzL21zZG9zLnRleGkgYi9kb2MvZW1hY3MvbXNkb3MudGV4aQppbmRleCBmOTcxNTFjNjMw
Zi4uMGExOGE1OGVmMDAgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCisrKyBiL2Rv
Yy9lbWFjcy9tc2Rvcy50ZXhpCkBAIC0xMjAwLDYgKzEyMDAsMzIgQEAgeW91IHNob3VsZCBzZXQg
aXRzIHZhbHVlIGluIHlvdXIgaW5pdCBmaWxlIChAcHhyZWZ7SW5pdCBGaWxlfSksIGVpdGhlcgog
ZGlyZWN0bHkgb3IgdmlhIEBrYmR7TS14IGN1c3RvbWl6ZS12YXJpYWJsZX0sIHdoaWNoIGxldHMg
eW91IHNhdmUgdGhlCiBjdXN0b21pemVkIHZhbHVlLCBzZWUgQHJlZntTYXZpbmcgQ3VzdG9taXph
dGlvbnN9LgogCitAdmluZGV4IHVzZS12aXJ0dWFsLXRlcm1pbmFsCitAY2luZGV4IFdpbmRvd3Mg
VGVybWluYWwsIFdpbmRvd3MgQ29uc29sZSwgTVMtV2luZG93cworICBUaGUgaW1wbGVtZW50YXRp
b24gb2YgZGlzcGxheSBmdW5jdGlvbmFsaXR5IGZvciBXaW5kb3dzIENvbnNvbGUKK2RpZmZlcnMg
ZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIG90aGVyIHRlcm1pbmFsIGVtdWxhdG9ycywKK2Jl
Y2F1c2UgaGlzdG9yaWNhbGx5LCBXaW5kb3dzIHJlcXVpcmVkIHVzZSBvZiBhbiBpZGlvc3luY3Jh
Y3RpYyBBUEkuCitUaGF0IEFQSSBsaW1pdGVkIFdpbmRvd3MgQ29uc29sZSBkaXNwbGF5IG9mIEVt
YWNzIHRvIDE2IGJhc2ljIGNvbG9ycy4KK1dpdGggdGhlIGludHJvZHVjdGlvbiBvZiBXaW5kb3dz
IFRlcm1pbmFsLCBNaWNyb3NvZnQgaW1wbGVtZW50ZWQKK3N1cHBvcnQgZm9yIEFOU0kgY29udHJv
bCBzZXF1ZW5jZXMsIG1vZGVsbGVkIG9uIHRoZSBWVDEwMCBhbmQgWHRlcm0sCithcyB3ZWxsIGFz
IDI0LWJpdCBSQkcgY29sb3IgZGlzcGxheS4KKworICBUaGUgZnVuY3Rpb24gQGNvZGV7dXNlLXZp
cnR1YWwtdGVybWluYWx9IGNhbiBiZSB1c2VkIHRvIHNldCBvciBpbnNwZWN0CithbiBpbnRlcm5h
bCB2YXJpYWJsZSB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhpcyBuZXdlciBtZWNoYW5pc20g
aXMKK3VzZWQgZm9yIGRpc3BsYXksIG9yIHRoZSBvbGRlciBvbmUuICBUaGUgaW50ZXJuYWwgdmFy
aWFibGUgaXMKK2F1dG9tYXRpY2FsbHkgc2V0IGJhc2VkIG9uIHlvdXIgdGVybWluYWwncyBjYXBh
YmlsaXRpZXMgb24gc3RhcnR1cC4KK0J5IGRlZmF1bHQsIDI0LWJpdCBSR0IgY29sb3Igd2lsbCBi
ZSB1c2VkLCBidXQgb3RoZXIgKDgsIDE2LCAyNTYpIGNvbG9yCitzcGFjZXMgbWF5IGJlIHVzZWQs
IGJ5IHBhc3NpbmcgdGhlIEBjb2Rley0tY29sb3J9IGNvbW1hbmQgbGluZSBhcmd1bWVudCwKK29y
IHNldHRpbmcgdGhlIHZhbHVlIG9mIHRoZSBAY29kZXt0dHktY29sb3ItbW9kZX0gZnJhbWUgcGFy
YW1ldGVyLgorCisgICBAY29kZXsodXNlLXZpcnR1YWwtdGVybWluYWwpfSBldmFsdWF0ZXMgdG8g
QGNvZGV7dH0gaWYgYW5kIG9ubHkgaWYKK3RoZSBpbnRlcm5hbCB2YXJpYWJsZSBoYXMgYSBub24t
emVybyBudW1lcmljYWwgdmFsdWUsIGFuZCBvdGhlcndpc2UgdG8KK0Bjb2Rle25pbH0uICBJZiBp
dCBldmFsdWF0ZXMgdG8gQGNvZGV7dH0sIEFOU0kgZXNjYXBlIHNlcXVlbmNlcyBhcmUgdXNlZAor
Zm9yIGNvbG9yLCBvdGhlcndpc2UsIHRoZSBvbGRlciBtZWNoYW5pc20gaXMgdXNlZC4gIFRoZSBp
bnRlcm5hbCB2YXJpYWJsZQorY2FuIGJlIHNldCBieSBldmFsdWF0aW5nIEBjb2Rleyh1c2Utdmly
dHVhbC10ZXJtaW5hbCBuKX0sIHdoZXJlIEBjb2Rle259IGlzIGEKK251bWJlcjogaWYgQGNvZGV7
bn0gaXMgbm9uLXplcm8gYW5kIHRoZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB5b3VyIHRlcm1p
bmFsLAoraXQgd2lsbCBiZSBlbmFibGVkLCBvdGhlcndpc2UgdGhlIGZlYXR1cmUgd2lsbCBiZSBk
aXNhYmxlZC4KKwogQGlmbm90dGV4CiBAaW5jbHVkZSBtc2Rvcy14dHJhLnRleGkKIEBlbmQgaWZu
b3R0ZXgKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggNjAyYzM3NWRjMmYu
LjJiNTM1YzA5ZGE3IDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMzMz
NCw2ICszMzM0LDE3IEBAIEFjY29yZGluZ2x5LCB3ZSBoYXZlIHJldmlzZWQgb3VyIHJlY29tbWVu
ZGF0aW9ucyBmb3IgYSBzdWl0YWJsZSBESkdQUAogdG9vbGNoYWluIHRvIEdDQyAxNC4yLjAgYW5k
IEJpbnV0aWxzIDIuMzUuMSBpbiBsaWV1IG9mIEdDQyAzLjQueCBhbmQKIEJpbnV0aWxzIDIuMjYu
CiAKKysrKworKiogV2luZG93cyBUZXJtaW5hbCBub3cgZGlzcGxheXMgMjU2IGFuZCAyNC1iaXQg
UkdCIGNvbG9yLgorUHJldmlvdXNseSwgdGVybWluYWwgc2Vzc2lvbnMgb24gV2luZG93cyBzdXBw
b3J0ZWQgZGlzcGxheSBvZiAxNgorY29sb3JzLiAgVGhlcmUgaXMgbm93IHN1cHBvcnQgZm9yIDI1
NiBhbmQgMjQtYml0IFJHQiBjb2xvci4KK1RoZSBuZXcgbWVjaGFuaXNtIHdpbGwgYmUgZW5hYmxl
ZCBhdXRvbWF0aWNhbGx5IHdoZW4gc3VwcG9ydGVkLgorSXQgZGVmYXVsdHMgdG8gMjQtYml0IFJH
QiBjb2xvciwgYnV0IGNhbiBiZSBzZXQgdG8gOCwgMTYsIDI1Niwgb3IgJzI0Yml0CitieSBwYXNz
aW5nIHRoZSAnLS1jb2xvcicgZmxhZyBvciBzZXR0aW5nIHRoZSAndHR5LWNvbG9yLW1vZGUnCitm
cmFtZSBwYXJhbWV0ZXIuICBVc2Ugb2YgdGhlIG5ldyBtZWNoYW5pc20gaXMgY29udHJvbGxlZCBi
eSBhbiBpbnRlcm5hbAordmFyaWFibGUgdGhhdCBjYW4gaW5zcGVjdGVkIGFuZCBzZXQgdmlhIHRo
ZSBmdW5jdGlvbiAndXNlLXZpcnR1YWwtdGVybWluYWwnLgorU2VlIHRoZSBtYW51YWwgZW50cnkg
c3BlY2lmaWMgdG8gTVMtV2luZG93cyBmb3IgbW9yZSBkZXRhaWxzLgorCiAMCiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCmRpZmYgLS1naXQgYS9saXNwL2Zh
Y2VzLmVsIGIvbGlzcC9mYWNlcy5lbAppbmRleCBjZDQwODZhMTJmMi4uZDA5ZjdkZDdkYzkgMTAw
NjQ0Ci0tLSBhL2xpc3AvZmFjZXMuZWwKKysrIGIvbGlzcC9mYWNlcy5lbApAQCAtMjQwNyw5ICsy
NDA3LDEzIEBAIElmIHlvdSBzZXQgYHRlcm0tZmlsZS1wcmVmaXgnIHRvIG5pbCwgdGhpcyBmdW5j
dGlvbiBkb2VzIG5vdGhpbmcuIgogOzsgZHVtcGVkIHRlcm1pbmFsIGZyYW1lIG9uIHN0YXJ0dXAu
CiAKIChkZWZ1biB0dHktc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMgKCkKLSAgKGxldCAoKGZy
YW1lIChzZWxlY3RlZC1mcmFtZSkpKQotICAgIChmcmFtZS1zZXQtYmFja2dyb3VuZC1tb2RlIGZy
YW1lIHQpCi0gICAgKGZhY2Utc2V0LWFmdGVyLWZyYW1lLWRlZmF1bHQgZnJhbWUpKSkKKyAgKHBy
b2duCisgICAgKHdoZW4gKGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQorICAgICAgKHJlcXVp
cmUgJ3Rlcm0vdzMyY29uc29sZSkKKyAgICAgICh3MzItdHR5LXNldHVwLWNvbG9ycykpCisgICAg
KGxldCAoKGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKQorICAgICAgKGZyYW1lLXNldC1iYWNrZ3Jv
dW5kLW1vZGUgZnJhbWUgdCkKKyAgICAgIChmYWNlLXNldC1hZnRlci1mcmFtZS1kZWZhdWx0IGZy
YW1lKSkpKQogCiAMCiA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKZGlmZiAtLWdpdCBhL2xpc3AvdGVybS90dHkt
Y29sb3JzLmVsIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKaW5kZXggZGZkMjA3ZDcxYzEuLjFi
YTA0NWM4YjcxIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdHR5LWNvbG9ycy5lbAorKysgYi9saXNw
L3Rlcm0vdHR5LWNvbG9ycy5lbApAQCAtNzY0LDcgKzc2NCw4IEBACiAgICAgKGF1dG8gLiAwKQog
ICAgIChhbnNpOCAuIDgpCiAgICAgKGFsd2F5cyAuIDgpCi0gICAgKHllcyAuIDgpKQorICAgICh5
ZXMgLiA4KQorICAgICgyNGJpdCAuIDE2Nzc3MjE2KSkKICAgIkFuIGFsaXN0IG9mIHN1cHBvcnRl
ZCBzdGFuZGFyZCB0dHkgY29sb3IgbW9kZXMgYW5kIHRoZWlyIGFsaWFzZXMuIikKIAogKGRlZnVu
IHR0eS1jb2xvci1hbGlzdCAoJm9wdGlvbmFsIF9mcmFtZSkKZGlmZiAtLWdpdCBhL2xpc3AvdGVy
bS93MzJjb25zb2xlLmVsIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKaW5kZXggMWI0NGRhNDhi
ZjcuLjRjNmI1YTNhNzZlIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAorKysg
Yi9saXNwL3Rlcm0vdzMyY29uc29sZS5lbApAQCAtNDksNiArNDksNzIgQEAKIChkZWNsYXJlLWZ1
bmN0aW9uIGdldC1zY3JlZW4tY29sb3IgInczMmNvbnNvbGUuYyIgKCkpCiAoZGVjbGFyZS1mdW5j
dGlvbiB3MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAoZGVjbGFyZS1m
dW5jdGlvbiB3MzItZ2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlICJ3MzJwcm9jLmMiICgpKQor
KGRlY2xhcmUtZnVuY3Rpb24gdXNlLXZpcnR1YWwtdGVybWluYWwgInczMmNvbnNvbGUuYyIpCisK
KyhkZWZ1biB3MzItdHR5LXNldC1iYXNlLWNvbG9ycyAodnRwKQorICAiUmUtb3JkZXIgYHczMi10
dHktc3RhbmRhcmQtY29sb3JzJyBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgVlRQLiIKKyAgKGxldCAo
KHNlcQorICAgICAgICAgKGlmIHZ0cAorICAgICAgICAgICAgICcoImJsYWNrIiAgICAgInJlZCIg
ICAgICAgICAgImdyZWVuIiAgICAgICJicm93biIKKyAgICAgICAgICAgICAgICJibHVlIiAgICAg
ICJtYWdlbnRhIiAgICAgICJjeWFuIiAgICAgICAibGlnaHRncmF5IgorICAgICAgICAgICAgICAg
ImRhcmtncmF5IiAgImxpZ2h0cmVkIiAgICAgImxpZ2h0Z3JlZW4iICJ5ZWxsb3ciCisgICAgICAg
ICAgICAgICAibGlnaHRibHVlIiAibGlnaHRtYWdlbnRhIiAibGlnaHRjeWFuIiAgIndoaXRlIikK
KyAgICAgICAgICAgICAnKCJibGFjayIgICAgICJibHVlIiAgICAgICAgICJncmVlbiIgICAgICAi
Y3lhbiIKKyAgICAgICAgICAgICAgICJyZWQiICAgICAgICJtYWdlbnRhIiAgICAgICJicm93biIg
ICAgICAibGlnaHRncmF5IgorICAgICAgICAgICAgICAgImRhcmtncmF5IiAgImxpZ2h0Ymx1ZSIg
ICAgImxpZ2h0Z3JlZW4iICJsaWdodGN5YW4iCisgICAgICAgICAgICAgICAibGlnaHRyZWQiICAi
bGlnaHRtYWdlbnRhIiAieWVsbG93IiAgICAgIndoaXRlIikpKSkKKyAgICAoc2V0cSB3MzItdHR5
LXN0YW5kYXJkLWNvbG9ycworICAgICAgICAgIChtYXBjYXIKKyAgICAgICAgICAgKGxhbWJkYSAo
bikgKGxldCAoKGMgKGFzc29jIG4gdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpKSkKKyAgICAgICAg
ICAgICAgICAgICAgKGNvbnMgbiAoY29ucyAoc2VxLXBvc2l0aW9uIHNlcSBuKSAoY2RkciBjKSkp
KSkKKyAgICAgICAgICAgc2VxKSkpKQorCisoZGVmdW4gdzMyLXR0eS1kZWZpbmUtYmFzZS1jb2xv
cnMgKCkKKyAgIkRlZmluZXMgYmFzZSAxNi1jb2xvciBzcGFjZSBmb3IgdzMyIHR0eSBkaXNwbGF5
LiIKKyAgKGxldCogKChjb2xvcnMgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCisgICAgICAgICAo
bmJhc2UgKGxlbmd0aCBjb2xvcnMpKQorICAgICAgICAgKGNvbG9yIChjYXIgY29sb3JzKSkpCisg
ICAgKHByb2duICh3aGlsZSBjb2xvcnMKKyAgICAgICAgICAgICAodHR5LWNvbG9yLWRlZmluZSAo
Y2FyIGNvbG9yKSAoY2FkciBjb2xvcikgKGNkZHIgY29sb3IpKQorICAgICAgICAgICAgIChzZXRx
IGNvbG9ycyAoY2RyIGNvbG9ycykKKyAgICAgICAgICAgICAgICAgICBjb2xvciAgKGNhciBjb2xv
cnMpKSkKKyAgICAgICAgICAgbmJhc2UpKSkKKworKGRlZnVuIHczMi10dHktZGVmaW5lLTI1Ni1j
b2xvcnMgKCkKKyAgIkRlZmluZXMgMjU2LWNvbG9yIHNwYWNlIGZvciB3MzIgdHR5IGRpc3BsYXku
IgorICAobGV0ICgociAwKSAoYiAwKSAoZyAwKQorICAgICAgICAobiAoLSAyNTYgKHczMi10dHkt
ZGVmaW5lLWJhc2UtY29sb3JzKSkpCisgICAgICAgIChjb252ZXJ0LXRvLTE2Yml0IChsYW1iZGEg
KHByaW0pIChsb2dpb3IgcHJpbSAoYXNoIHByaW0gOCkpKSkpCisgICAgKHdoaWxlICg+IG4gMjQp
IDsgbm9uLWdyZXkKKyAgICAgIChsZXQgKChpICgtIDI1NiBuKSkKKyAgICAgICAgICAgIChjICht
YXBjYXIgY29udmVydC10by0xNmJpdAorICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyIChs
YW1iZGEgKHgpIChpZiAoemVyb3AgeCkgMCAoKyAoKiB4IDQwKSA1NSkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsaXN0IHIgZyBiKSkpKSkKKyAgICAgICAgKHR0eS1jb2xvci1k
ZWZpbmUgKGZvcm1hdCAiY29sb3ItJWQiIGkpIGkgYykpCisgICAgICAoc2V0cSBiICgxKyBiKSkK
KyAgICAgICh3aGVuICg+IGIgNSkgKHNldHEgZyAoMSsgZykgYiAwKSkKKyAgICAgICh3aGVuICg+
IGcgNSkgKHNldHEgciAoMSsgcikgZyAwKSkKKyAgICAgIChzZXRxIG4gKDEtIG4pKSkKKyAgICAo
d2hpbGUgKD4gbiAwKSA7IGFsbC1ncmV5CisgICAgICAobGV0KiAoKGkgKC0gMjU2IG4pKQorICAg
ICAgICAgICAgICh2IChmdW5jYWxsIGNvbnZlcnQtdG8tMTZiaXQgKCsgOCAoKiAoLSAyNCBuKSAx
MCkpKSkKKyAgICAgICAgICAgICAoYyAobGlzdCB2IHYgdikpKQorICAgICAgICAodHR5LWNvbG9y
LWRlZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIG4gKDEtIG4p
KSkpKQorCisoZGVmdW4gdzMyLXR0eS1kZWZpbmUtMjRiaXQtY29sb3JzICgpCisgICJEZWZpbmVz
IDI0LWJpdCBjb2xvciBzcGFjZSBmb3IgdzMyIHR0eSBkaXNwbGF5LiIKKyAgKGxldCAoKGkgKHcz
Mi10dHktZGVmaW5lLWJhc2UtY29sb3JzKSkpCisgICAgKG1hcGMgKGxhbWJkYSAoYykgKHVubGVz
cyAoYXNzb2MgKGNhciBjKSB3MzItdHR5LXN0YW5kYXJkLWNvbG9ycykKKyAgICAgICAgICAgICAg
ICAgICAodHR5LWNvbG9yLWRlZmluZSAoY2FyIGMpIGkgKGNkciBjKSkKKyAgICAgICAgICAgICAg
ICAgICAoc2V0cSBpICgxKyBpKSkpKQorICAgICAgICAgIGNvbG9yLW5hbWUtcmdiLWFsaXN0KSkp
CisKKzs7IHR0eS1jb2xvci1kZWZpbmUgc3dhcHMgaW5kaWNlcyBmb3IgcGl4ZWwgdmFsdWVzIG9u
IDI0Yml0IGRpc3BsYXkKKyhkZWZ1biB3MzItdHR5LWdldC1waXhlbCAoaW5kZXgpCisgICJDb252
ZXJ0IGEgbGVnYWN5IGNvbG9yIElOREVYICgwLi4xNSkgaW50byBhIHBpeGVsIHZhbHVlLiIKKyAg
KGxldCAoKGNvbG9yIChudGggaW5kZXggdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpKSkKKyAgICAo
b3IgKHR0eS1jb2xvci0yNGJpdCAoY2RkciBjb2xvcikpIGluZGV4KSkpCiAKIChkZWZ1biB0ZXJt
aW5hbC1pbml0LXczMmNvbnNvbGUgKCkKICAgIlRlcm1pbmFsIGluaXRpYWxpemF0aW9uIGZ1bmN0
aW9uIGZvciB3MzIgY29uc29sZS4iCkBAIC01Niw0MyArMTIyLDUzIEBACiAgICh4LXNldHVwLWZ1
bmN0aW9uLWtleXMgKHNlbGVjdGVkLWZyYW1lKSkKICAgOzsgU2V0IHRlcm1pbmFsIGFuZCBrZXli
b2FyZCBlbmNvZGluZ3MgdG8gdGhlIGN1cnJlbnQgT0VNIGNvZGVwYWdlLgogICAobGV0ICgob2Vt
LWNvZGUtcGFnZS1jb2RpbmcKLQkgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25z
b2xlLWNvZGVwYWdlKSkpKQotCShvZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcKLQkgKGludGVy
biAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLW91dHB1dC1jb2RlcGFnZSkpKSkKLQlv
ZW0tY3MtcCBvZW0tby1jcy1wKQotCShzZXRxIG9lbS1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2Vt
LWNvZGUtcGFnZS1jb2RpbmcpKQotCShzZXRxIG9lbS1vLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBv
ZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcpKQotCSh3aGVuIG9lbS1jcy1wCi0JICAoc2V0LWtl
eWJvYXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1jb2RpbmcpCi0JICAoc2V0LXRlcm1p
bmFsLWNvZGluZy1zeXN0ZW0KLQkgICAoaWYgb2VtLW8tY3MtcCBvZW0tY29kZS1wYWdlLW91dHB1
dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQotICAgICAgICAgIDs7IFNpbmNlIHdlIGNo
YW5nZWQgdGhlIHRlcm1pbmFsIGVuY29kaW5nLCB3ZSBuZWVkIHRvIHJlcGVhdAotICAgICAgICAg
IDs7IHRoZSB0ZXN0IGZvciBVbmljb2RlIHF1b3RlcyBiZWluZyBkaXNwbGF5YWJsZS4KLSAgICAg
ICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkpKQotICAobGV0KiAoKGNvbG9ycyB3
MzItdHR5LXN0YW5kYXJkLWNvbG9ycykKLSAgICAgICAgIChjb2xvciAoY2FyIGNvbG9ycykpKQot
ICAgICh0dHktY29sb3ItY2xlYXIpCi0gICAgKHdoaWxlIGNvbG9ycwotICAgICAgKHR0eS1jb2xv
ci1kZWZpbmUgKGNhciBjb2xvcikgKGNhZHIgY29sb3IpIChjZGRyIGNvbG9yKSkKLSAgICAgIChz
ZXRxIGNvbG9ycyAoY2RyIGNvbG9ycykKLSAgICAgICAgICAgIGNvbG9yIChjYXIgY29sb3JzKSkp
KQotICAoY2xlYXItZmFjZS1jYWNoZSkKLSAgOzsgRmlndXJlIG91dCB3aGF0IGFyZSB0aGUgY29s
b3JzIG9mIHRoZSBjb25zb2xlIHdpbmRvdywgYW5kIHNldCB1cAotICA7OyB0aGUgYmFja2dyb3Vu
ZC1tb2RlIGNvcnJlc3BvbmRpbmdseS4KLSAgKGxldCogKChzY3JlZW4tY29sb3IgKGdldC1zY3Jl
ZW4tY29sb3IpKQotCSAoYmcgKGNhZHIgc2NyZWVuLWNvbG9yKSkKLQkgKGRlc2NyICh0dHktY29s
b3ItYnktaW5kZXggYmcpKQotCSByIGcgYiBiZy1tb2RlKQotICAgIChzZXRxIHIgKG50aCAyIGRl
c2NyKQotCSAgZyAobnRoIDMgZGVzY3IpCi0JICBiIChudGggNCBkZXNjcikpCi0gICAgKGlmICg8
ICgrIHIgZyBiKSAoKiAuNiAoKyA2NTUzNSA2NTUzNSA2NTUzNSkpKQotCShzZXRxIGJnLW1vZGUg
J2RhcmspCi0gICAgICAoc2V0cSBiZy1tb2RlICdsaWdodCkpCi0gICAgKHNldC10ZXJtaW5hbC1w
YXJhbWV0ZXIgbmlsICdiYWNrZ3JvdW5kLW1vZGUgYmctbW9kZSkpCisgICAgICAgICAoaW50ZXJu
IChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UpKSkpCisgICAgICAgIChv
ZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcKKyAgICAgICAgIChpbnRlcm4gKGZvcm1hdCAiY3Al
ZCIgKHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UpKSkpCisgICAgICAgIG9lbS1jcy1w
IG9lbS1vLWNzLXApCisgICAgKHNldHEgb2VtLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29k
ZS1wYWdlLWNvZGluZykpCisgICAgKHNldHEgb2VtLW8tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9l
bS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZykpCisgICAgKHdoZW4gb2VtLWNzLXAKKyAgICAgIChz
ZXQta2V5Ym9hcmQtY29kaW5nLXN5c3RlbSBvZW0tY29kZS1wYWdlLWNvZGluZykKKyAgICAgIChz
ZXQtdGVybWluYWwtY29kaW5nLXN5c3RlbQorICAgICAgIChpZiBvZW0tby1jcy1wIG9lbS1jb2Rl
LXBhZ2Utb3V0cHV0LWNvZGluZyBvZW0tY29kZS1wYWdlLWNvZGluZykpCisgICAgICA7OyBTaW5j
ZSB3ZSBjaGFuZ2VkIHRoZSB0ZXJtaW5hbCBlbmNvZGluZywgd2UgbmVlZCB0byByZXBlYXQKKyAg
ICAgIDs7IHRoZSB0ZXN0IGZvciBVbmljb2RlIHF1b3RlcyBiZWluZyBkaXNwbGF5YWJsZS4KKyAg
ICAgIChzdGFydHVwLS1zZXR1cC1xdW90ZS1kaXNwbGF5KSkpCiAgICh0dHktc2V0LXVwLWluaXRp
YWwtZnJhbWUtZmFjZXMpCiAgIChydW4taG9va3MgJ3Rlcm1pbmFsLWluaXQtdzMyLWhvb2spKQog
Cis7OyBDYWxsZWQgZnJvbSB0dHktc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMgaW4gZmFjZXMu
ZWwKKyhkZWZ1biB3MzItdHR5LXNldHVwLWNvbG9ycyAoKQorICAiU2V0IHVwIGNvbG9yIGRlZmlu
aXRpb25zIGFuZCBmcmFtZSBwYXJhbWV0ZXJzIGZvciB3MzIgdHR5IGRpc3BsYXkuIgorICAodHR5
LWNvbG9yLWNsZWFyKQorICAobGV0ICgobmNvbG9ycyAoZGlzcGxheS1jb2xvci1jZWxscykpCisg
ICAgICAgICh2dHAgKHVzZS12aXJ0dWFsLXRlcm1pbmFsKSkpCisgICAgKHczMi10dHktc2V0LWJh
c2UtY29sb3JzIHZ0cCkKKyAgICAoaWYgdnRwCisgICAgICAgIChjb25kICgoPSBuY29sb3JzIDE2
Nzc3MjE2KSAodzMyLXR0eS1kZWZpbmUtMjRiaXQtY29sb3JzKSkKKyAgICAgICAgICAgICAgKCg9
IG5jb2xvcnMgMjY1KSAgICAgICh3MzItdHR5LWRlZmluZS0yNTYtY29sb3JzKSkKKyAgICAgICAg
ICAgICAgKHQgICAgICAgICAgICAgICAgICAgICh3MzItdHR5LWRlZmluZS1iYXNlLWNvbG9ycykp
KQorICAgICAgKHczMi10dHktZGVmaW5lLWJhc2UtY29sb3JzKSkKKyAgICAoY2xlYXItZmFjZS1j
YWNoZSkKKyAgICAobGV0KiAoKHNjcmVlbi1jb2xvciAoZ2V0LXNjcmVlbi1jb2xvciB2dHApKQor
ICAgICAgICAgICAoZmcgKGNhciAgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJnIChjYWRy
IHNjcmVlbi1jb2xvcikpCisgICAgICAgICAgIChib290c3RyYXAgKGFuZCB2dHAgKD0gbmNvbG9y
cyAxNjc3NzIxNikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICg8IGZnIDE2KSAoPCBiZyAx
NikgKG5vdCAoPSAwIGZnIGJnKSkpKQorICAgICAgICAgICAoZmFsbGJhY2sgIChhbmQgdnRwICg8
IG5jb2xvcnMgMTY3NzcyMTYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKDwgbmNv
bG9ycyBmZykgKDwgbmNvbG9ycyBiZykpKSkKKyAgICAgICAgICAgKHNjcmVlbi1jb2xvciAoaWYg
ZmFsbGJhY2sgKGdldC1zY3JlZW4tY29sb3IgdCkgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAg
KGZnIChpZiBib290c3RyYXAgKHczMi10dHktZ2V0LXBpeGVsIGZnKSAoY2FyICBzY3JlZW4tY29s
b3IpKSkKKyAgICAgICAgICAgKGJnIChpZiBib290c3RyYXAgKHczMi10dHktZ2V0LXBpeGVsIGJn
KSAoY2FkciBzY3JlZW4tY29sb3IpKSkKKyAgICAgICAgICAgKGJnLWNvbCAodHR5LWNvbG9yLWJ5
LWluZGV4IGJnKSkKKyAgICAgICAgICAgKGJnLWRhcmsgKDwgKCsgKG50aCAyIGJnLWNvbCkgKG50
aCAzIGJnLWNvbCkgKG50aCA0IGJnLWNvbCkpCisgICAgICAgICAgICAgICAgICAgICAgICgqIC42
ICgrIDY1NTM1IDY1NTM1IDY1NTM1KSkpKQorICAgICAgICAgICAoYmctbW9kZSAoaWYgYmctZGFy
ayAnZGFyayAnbGlnaHQpKSkKKyAgICAgIChzZXQtdGVybWluYWwtcGFyYW1ldGVyIG5pbCAnYmFj
a2dyb3VuZC1tb2RlIGJnLW1vZGUpCisgICAgICAod2hlbiAob3IgYm9vdHN0cmFwIGZhbGxiYWNr
KQorICAgICAgICAoc2V0LXNjcmVlbi1jb2xvciBmZyBiZyB0KSkpKSkKKwogKHByb3ZpZGUgJ3Rl
cm0vdzMyY29uc29sZSkKIAogOzs7IHczMmNvbnNvbGUuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQg
YS9zcmMvdGVybS5jIGIvc3JjL3Rlcm0uYwppbmRleCBhMWUzZjYzMTJjNi4uZWY0NjFiNWI0Y2Ig
MTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rlcm0uYwpAQCAtMjIwNyw3ICsyMjA3
LDcgQEAgVEVSTUlOQUwgZG9lcyBub3QgcmVmZXIgdG8gYSB0ZXh0IHRlcm1pbmFsLiAgKi8pCiAg
IHJldHVybiBtYWtlX2ZpeG51bSAodCA/IHQtPmRpc3BsYXlfaW5mby50dHktPlROX21heF9jb2xv
cnMgOiAwKTsKIH0KIAotI2lmICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJP
SUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAogLyogRGVj
bGFyZSBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBmdW5jdGlvbiwgYXMgaW4gdGhlIHJlc3Qgb2Yg
RW1hY3MsCiAgICB0byB3b3JrIGFyb3VuZCBhbiBIUFVYIGNvbXBpbGVyIGJ1ZyAoPykuIFNlZQpA
QCAtMjI0Niw3ICsyMjQ2LDcgQEAgdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzIChzdHJ1
Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBib29sIHNhdmUpCiAgICBNT0RFJ3MgdmFsdWUgaXMg
Z2VuZXJhbGx5IHRoZSBudW1iZXIgb2YgY29sb3JzIHdoaWNoIHdlIHdhbnQgdG8KICAgIHN1cHBv
cnQ7IHplcm8gbWVhbnMgc2V0IHVwIGZvciB0aGUgZGVmYXVsdCBjYXBhYmlsaXRpZXMsIHRoZSBv
bmVzCiAgICB3ZSBzYXcgYXQgaW5pdF90dHkgdGltZTsgLTEgbWVhbnMgdHVybiBvZmYgY29sb3Ig
c3VwcG9ydC4gICovCi1zdGF0aWMgdm9pZAordm9pZAogdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0
IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpCiB7CiAgIC8qIENhbm9uaWNhbGl6ZSBh
bGwgbmVnYXRpdmUgdmFsdWVzIG9mIE1PREUuICAqLwpAQCAtMjI2OSw2ICsyMjY5LDEwIEBAIHR0
eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2RlKQog
I2lmZGVmIFRFUk1JTkZPCiAJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlcDElZG0i
OwogCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0JXAxJWRtIjsKKyNlbGlmIFdJTkRP
V1NOVAorCXR0eS0+VFNfb3JpZ19wYWlyID0gIlx4MWJbMzltXHgxYls0OW0iOworCXR0eS0+VFNf
c2V0X2ZvcmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0g
Ilx4MWJbJWx1bSI7CiAjZWxzZQogCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXDAzM1szJWRt
IjsKIAl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNbNCVkbSI7CkBAIC0yMjc2LDYgKzIy
ODAsMjYgQEAgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwg
aW50IG1vZGUpCiAJdHR5LT5UTl9tYXhfY29sb3JzID0gODsKIAl0dHktPlROX25vX2NvbG9yX3Zp
ZGVvID0gMDsKIAlicmVhazsKKyNpZmRlZiBXSU5ET1dTTlQKKyAgICAgIGNhc2UgMTY6CisJdHR5
LT5UTl9tYXhfY29sb3JzID0gMTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWyVs
dW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHktPlROX25v
X2NvbG9yX3ZpZGVvID0gMDsKKwlicmVhazsKKyAgICAgIGNhc2UgMjU2OgorCXR0eS0+VE5fbWF4
X2NvbG9ycyA9IDI1NjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMzg7NTslbHVt
IjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbNDg7NTslbHVtIjsKKwl0dHktPlRO
X25vX2NvbG9yX3ZpZGVvID0gMDsKKwlicmVhazsKKyAgICAgIGNhc2UgMTY3NzcyMTY6CisJdHR5
LT5UTl9tYXhfY29sb3JzID0gMTY3NzcyMTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJc
eDFiWzM4OzI7JWx1OyVsdTslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJb
NDg7MjslbHU7JWx1OyVsdW0iOworCXR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFr
OworI2VuZGlmCiAgICAgfQogfQogCkBAIC0yMzEyLDcgKzIzMzYsNyBAQCBzZXRfdHR5X2NvbG9y
X21vZGUgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIHN0cnVjdCBmcmFtZSAqZikKICAg
ICB9CiB9CiAKLSNlbmRpZiAvKiAhRE9TX05UICYmICFIQVZFX0FORFJPSUQgKi8KKyNlbmRpZiAv
KiAhTVNET1MgJiYgIUhBVkVfQU5EUk9JRCAqLwogCiBjaGFyICoKIHR0eV90eXBlX25hbWUgKExp
c3BfT2JqZWN0IHRlcm1pbmFsKQpAQCAtNDY0MSw2ICs0NjY1LDIyIEBAIHVzZSB0aGUgQm91cm5l
IHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6XG5cCiAKICAg
ICBpbml0aWFsaXplX3czMl9kaXNwbGF5ICh0ZXJtaW5hbCwgJndpZHRoLCAmaGVpZ2h0KTsKIAor
ICAgIHR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9
IDE2Nzc3MjE2OworICAgIHR0eS0+VFNfb3JpZ19wYWlyID0gIlx4MWJbMzltXHgxYls0OW0iOwor
ICAgIHR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlszODsyOyVsdTslbHU7JWx1bSI7Cisg
ICAgdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzI7JWx1OyVsdTslbHVtIjsKKwor
ICAgIC8qIFNhdmUgZGVmYXVsdCBjb2xvciBjYXBhYmlsaXRpZXMgKi8KKyAgICB0dHlfZGVmYXVs
dF9jb2xvcl9jYXBhYmlsaXRpZXMgKHR0eSwgMSk7CisKKyAgICB0dHktPlRTX2VudGVyX2JvbGRf
bW9kZSA9ICJceDFiWzFtIjsKKyAgICB0dHktPlRTX2VudGVyX2l0YWxpY19tb2RlID0gIlx4MWJb
M20iOworICAgIHR0eS0+VFNfZW50ZXJfc3RyaWtlX3Rocm91Z2hfbW9kZSA9ICJceDFiWzltIjsK
KyAgICB0dHktPlRTX2VudGVyX3VuZGVybGluZV9tb2RlID0gIlx4MWJbNG0iOworICAgIHR0eS0+
VFNfZW50ZXJfcmV2ZXJzZV9tb2RlID0gIlx4MWJbN20iOworICAgIHR0eS0+VFNfZXhpdF9hdHRy
aWJ1dGVfbW9kZSA9ICJceDFiWzBtIjsKKwogICAgIEZyYW1lUm93cyAodHR5KSA9IGhlaWdodDsK
ICAgICBGcmFtZUNvbHMgKHR0eSkgPSB3aWR0aDsKICAgICB0dHktPnNwZWNpZmllZF93aW5kb3cg
PSBoZWlnaHQ7CkBAIC00Njg2LDcgKzQ3MjYsNiBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21t
YW5kICdURVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogICAgICBkb24ndCB0aGlu
ayB3ZSdyZSBsb3NpbmcgYW55dGhpbmcgYnkgdHVybmluZyBpdCBvZmYuICAqLwogICB0dHktPmxp
bmVfaW5zX2RlbF9vayA9IDA7CiAKLSAgdHR5LT5UTl9tYXhfY29sb3JzID0gMTY7ICAvKiBNdXN0
IGJlIG5vbi16ZXJvIGZvciB0dHktZGlzcGxheS1jb2xvci1wLiAgKi8KICNlbmRpZgkvKiBET1Nf
TlQgKi8KIAogI2lmZGVmIEhBVkVfR1BNCkBAIC01MjAyLDExICs1MjQxLDExIEBAIG5vbi1uaWwg
dG8gZW5hYmxlIHRoaXMgb3B0aW1pemF0aW9uLiAgKi8pOwogICBkZWZzdWJyICgmU3R0eV9kaXNw
bGF5X3BpeGVsX3dpZHRoKTsKICAgZGVmc3ViciAoJlN0dHlfZGlzcGxheV9waXhlbF9oZWlnaHQp
OwogCi0jaWYgIWRlZmluZWQgRE9TX05UICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAorI2lmICFk
ZWZpbmVkIE1TRE9TICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAogICBkZWZhdWx0X29yaWdfcGFp
ciA9IE5VTEw7CiAgIGRlZmF1bHRfc2V0X2ZvcmVncm91bmQgPSBOVUxMOwogICBkZWZhdWx0X3Nl
dF9iYWNrZ3JvdW5kID0gTlVMTDsKLSNlbmRpZiAvKiAhRE9TX05UICYmICFIQVZFX0FORFJPSUQg
Ki8KKyNlbmRpZiAvKiAhTVNET1MgJiYgIUhBVkVfQU5EUk9JRCAqLwogCiAjaWZuZGVmIEhBVkVf
QU5EUk9JRAogICBlbmNvZGVfdGVybWluYWxfc3JjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy93
MzJjb25zb2xlLmMgYi9zcmMvdzMyY29uc29sZS5jCmluZGV4IDFiY2EwY2FkZmY5Li5lNDliNmMz
ZTczMyAxMDA2NDQKLS0tIGEvc3JjL3czMmNvbnNvbGUuYworKysgYi9zcmMvdzMyY29uc29sZS5j
CkBAIC0xOSw2ICsxOSw5IEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0
dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAvKgogICAgVGltIEZsZWVoYXJ0IChh
cG9sbG9Ab25saW5lLmNvbSkJCTEtMTctOTIKICAgIEdlb2ZmIFZvZWxrZXIgKHZvZWxrZXJAY3Mu
d2FzaGluZ3Rvbi5lZHUpCTktMTItOTMKKyAgIEV3YW4gVG93bnNoZW5kIChld2FuQGV0b3duLmRl
dikgICAgICAgICAgICAgIDIwMjUtMDgKKyAgICogYy4gfiAyMDI1OiAyNGJpdCBSR0Igc3VwcG9y
dCBpbiBXaW5kb3dzICgxMCspIFRlcm1pbmFsCisgICAqIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0
LmNvbS9lbi11cy93aW5kb3dzL2NvbnNvbGUvY29uc29sZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVl
bmNlcwogKi8KIAogCkBAIC01MywxMSArNTYsMTcgQEAgc3RhdGljIHZvaWQgdzMyY29uX3NldF90
ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFsICp0KTsKIHN0YXRpYyB2b2lkIHczMmNvbl91
cGRhdGVfYmVnaW4gKHN0cnVjdCBmcmFtZSAqIGYpOwogc3RhdGljIHZvaWQgdzMyY29uX3VwZGF0
ZV9lbmQgKHN0cnVjdCBmcmFtZSAqIGYpOwogc3RhdGljIFdPUkQgdzMyX2ZhY2VfYXR0cmlidXRl
cyAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCk7CitzdGF0aWMgaW50ICB3MzJjb25fd3Jp
dGVfdnRfc2VxIChjaGFyICopOworc3RhdGljIHZvaWQgdHVybl9vbl9mYWNlIChzdHJ1Y3QgZnJh
bWUgKiwgaW50IGZhY2VfaWQpOworc3RhdGljIHZvaWQgdHVybl9vZmZfZmFjZSAoc3RydWN0IGZy
YW1lICosIGludCBmYWNlX2lkKTsKK2V4dGVybiB2b2lkIHR0eV9zZXR1cF9jb2xvcnMgKHN0cnVj
dCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2RlKTsKIAogc3RhdGljIENPT1JECWN1cnNv
cl9jb29yZHM7CiBzdGF0aWMgSEFORExFCXByZXZfc2NyZWVuLCBjdXJfc2NyZWVuOwogc3RhdGlj
IFdPUkQJY2hhcl9hdHRyX25vcm1hbDsKIHN0YXRpYyBEV09SRAlwcmV2X2NvbnNvbGVfbW9kZTsK
K3N0YXRpYyBpbnQgICAgICBiZ19ub3JtYWw7CitzdGF0aWMgaW50ICAgICAgZmdfbm9ybWFsOwog
CiBzdGF0aWMgQ09OU09MRV9DVVJTT1JfSU5GTyBjb25zb2xlX2N1cnNvcl9pbmZvOwogI2lmbmRl
ZiBVU0VfU0VQQVJBVEVfU0NSRUVOCkBAIC02Nyw3ICs3NiwxMCBAQCBzdGF0aWMgQ09OU09MRV9D
VVJTT1JfSU5GTyBwcmV2X2NvbnNvbGVfY3Vyc29yOwogZXh0ZXJuIEhBTkRMRSAga2V5Ym9hcmRf
aGFuZGxlOwogSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBpbnQgdzMyX2NvbnNvbGVfdW5pY29k
ZV9pbnB1dDsKLQorZXh0ZXJuIGludCB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWw7CitpbnQgdzMy
X3VzZV92aXJ0dWFsX3Rlcm1pbmFsID0gMTsKK2V4dGVybiBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5m
byAqY3VycmVudF90dHk7CitzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqY3VycmVudF90dHkgPSBO
VUxMOwogCiAvKiBTZXR0aW5nIHRoaXMgYXMgdGhlIGN0cmwgaGFuZGxlciBwcmV2ZW50cyBlbWFj
cyBmcm9tIGJlaW5nIGtpbGxlZCB3aGVuCiAgICBzb21lb25lIGhpdHMgXkMgaW4gYSAnc3VzcGVu
ZGVkJyBzZXNzaW9uIChjaGlsZCBzaGVsbCkuCkBAIC04Myw2ICs5NSwzMCBAQCBjdHJsX2NfaGFu
ZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogCSAgJiYgKHR5cGUgPT0gQ1RSTF9DX0VWRU5UIHx8
IHR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkpOwogfQogCisjZGVmaW5lIERFRkFVTFRQKHApCQkJ
CQkJCVwKKyAgKHAgPT0gRkFDRV9UVFlfREVGQVVMVF9DT0xPUgkJCQkJCVwKKyAgIHx8IHAgPT0g
RkFDRV9UVFlfREVGQVVMVF9GR19DT0xPUgkJCQkJXAorICAgfHwgcCA9PSBGQUNFX1RUWV9ERUZB
VUxUX0JHX0NPTE9SKQorCisjZGVmaW5lIFNFUU1BWCAyNTYgLyogQXJiaXRyYXJ5IHVwcGVyIGxp
bWl0IG9uIFZUIHNlcXVlbmNlIHNpemUgKi8KKworI2RlZmluZSBTU1BSSU5URihidWYsIGksIHN6
LCBmbXQsIC4uLikJCQkJCVwKKyAgZG8gewkJCQkJCQkJCVwKKyAgICBlYXNzZXJ0ICgqaSA8IHN6
ICYmIHN6IDw9IFNFUU1BWCk7CQkJCQlcCisgICAgaWYgKGZtdCAmJiAqaSA8IHN6ICYmIHN6IDw9
IFNFUU1BWCkJCQkJXAorICAgICAgKmkgKz0gc25wcmludGYgKGJ1ZiArICppLCBzeiAtICppLCBm
bXQsIF9fVkFfQVJHU19fKTsJCVwKKyAgfSB3aGlsZSAoMCkKKworLyogV3JpdGVzIHZpcnR1YWwg
dGVybWluYWwgc2VxdWVuY2UgdG8gc2NyZWVuICovCitzdGF0aWMgaW50Cit3MzJjb25fd3JpdGVf
dnRfc2VxIChjaGFyICpzZXEpCit7CisgIGNoYXIgYnVmW1NFUU1BWF07CisgIERXT1JEIG4gPSAw
LCBrID0gMDsKKyAgU1NQUklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwgc2VxLCBOVUxMKTsKKyAgaWYg
KG4pIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgKExQQ1NUUikgYnVmLCBuLCAmaywgTlVMTCk7
CisgIHJldHVybiBrOworfQogCiAvKiBNb3ZlIHRoZSBjdXJzb3IgdG8gKFJPVywgQ09MKSBvbiBG
UkFNRS4gICovCiBzdGF0aWMgdm9pZApAQCAtMzA5LDEwICszNDUsMTEgQEAgdzMyY29uX3dyaXRl
X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmluZywK
ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBsZW4pCiB7CiAgIERXT1JEIHI7Ci0g
IFdPUkQgY2hhcl9hdHRyOwogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBj
b2Rpbmdfc3lzdGVtICpjb2Rpbmc7CiAKKyAgdzMyY29uX2hpZGVfY3Vyc29yKCk7CisKICAgaWYg
KGxlbiA8PSAwKQogICAgIHJldHVybjsKIApAQCAtMzQyLDggKzM3OSw2IEBAIHczMmNvbl93cml0
ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdHJpbmcs
CiAKICAgICAgIC8qIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSBzZXRzIGZyYW1lIG9mIGdseXBo
cyB0byBOVUxMLiAgKi8KICAgICAgIHN0cnVjdCBmcmFtZSAqYXR0cl9mcmFtZSA9IGZhY2VfaWRf
ZnJhbWUgPyBmYWNlX2lkX2ZyYW1lIDogZjsKLSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBtb2Rl
cyBvZiB0aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KLSAgICAgIGNoYXJfYXR0ciA9IHczMl9m
YWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOwogCiAgICAgICBpZiAobiA9PSBs
ZW4pCiAJLyogVGhpcyBpcyB0aGUgbGFzdCBydW4uICAqLwpAQCAtMzUxLDI4ICszODYsNDIgQEAg
dzMyY29uX3dyaXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5
cGggKnN0cmluZywKICAgICAgIGNvbnZlcnNpb25fYnVmZmVyID0gKExQQ1NUUikgZW5jb2RlX3Rl
cm1pbmFsX2NvZGUgKHN0cmluZywgbiwgY29kaW5nKTsKICAgICAgIGlmIChjb2RpbmctPnByb2R1
Y2VkID4gMCkKIAl7Ci0JICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVy
cy4gICovCi0JICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBj
aGFyX2F0dHIsCi0JCQkJCSAgIGNvZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCi0JCQkJ
CSAgICZyKSkKKwkgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwpCiAJICAgIHsKLQkgICAg
ICBwcmludGYgKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVsdVxuIiwKLQkJ
ICAgICAgR2V0TGFzdEVycm9yICgpKTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7CisJICAgICAg
dHVybl9vbl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgICAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3Jl
ZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxM
KTsKKwkgICAgICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgICAgICBjdXJzb3JfY29v
cmRzLlggKz0gY29kaW5nLT5wcm9kdWNlZDsKIAkgICAgfQotCi0JICAvKiBXcml0ZSB0aGUgY2hh
cmFjdGVycy4gICovCi0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3Nj
cmVlbiwgY29udmVyc2lvbl9idWZmZXIsCi0JCQkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCBjdXJz
b3JfY29vcmRzLAotCQkJCQkgICAgJnIpKQorCSAgZWxzZQogCSAgICB7Ci0JICAgICAgcHJpbnRm
ICgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBjaGFyYWN0ZXJzOiAlbHVcbiIsCi0JCSAgICAgIEdl
dExhc3RFcnJvciAoKSk7Ci0JICAgICAgZmZsdXNoIChzdGRvdXQpOwotCSAgICB9CisJICAgICAg
LyogVHVybiBhcHBlYXJhbmNlIG1vZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLwor
CSAgICAgIFdPUkQgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoYXR0cl9mcmFtZSwg
ZmFjZV9pZCk7CiAKLQkgIGN1cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOwotCSAg
dzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRzLlksIGN1cnNvcl9jb29yZHMuWCk7
CisJICAgICAgLyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwor
CSAgICAgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJf
YXR0ciwKKwkJCQkJICAgICAgIGNvZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCisJCQkJ
CSAgICAgICAmcikpCisJCXsKKwkJICBwcmludGYgKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGF0
dHJpYnV0ZXM6ICVsdVxuIiwKKwkJCSAgR2V0TGFzdEVycm9yICgpKTsKKwkJICBmZmx1c2ggKHN0
ZG91dCk7CisJCX0KKworCSAgICAgIC8qIFdyaXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAg
ICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lv
bl9idWZmZXIsCisJCQkJCQljb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAorCQkJCQkJ
JnIpKQorCQl7CisJCSAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBjaGFyYWN0ZXJz
OiAlbHVcbiIsCisJCQkgIEdldExhc3RFcnJvciAoKSk7CisJCSAgZmZsdXNoIChzdGRvdXQpOwor
CQl9CisKKwkgICAgICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5wcm9kdWNlZDsKKwkgICAg
ICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGN1cnNvcl9jb29yZHMuWSwgY3Vyc29yX2Nvb3Jkcy5Y
KTsKKwkgICAgfQogCX0KICAgICAgIGxlbiAtPSBuOwogICAgICAgc3RyaW5nICs9IG47CkBAIC0z
ODgsNiArNDM3LDggQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2UgKHN0cnVjdCBmcmFt
ZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogICBMUENTVFIgY29udmVyc2lv
bl9idWZmZXI7CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7CiAKKyAgdzMyY29uX2hp
ZGVfY3Vyc29yKCk7CisKICAgaWYgKGxlbiA8PSAwKQogICAgIHJldHVybjsKIApAQCAtNDA0LDI0
ICs0NTUsMzggQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2UgKHN0cnVjdCBmcmFtZSAq
ZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogICBpZiAoY29kaW5nLT5wcm9kdWNl
ZCA+IDApCiAgICAgewogICAgICAgRFdPUkQgZmlsbGVkLCB3cml0dGVuOwotICAgICAgLyogQ29t
cHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjZS4g
ICovCi0gICAgICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNl
X2lkKTsKLSAgICAgIENPT1JEIHN0YXJ0X2Nvb3JkczsKLQotICAgICAgc3RhcnRfY29vcmRzLlgg
PSB4OwotICAgICAgc3RhcnRfY29vcmRzLlkgPSB5OwotICAgICAgLyogU2V0IHRoZSBhdHRyaWJ1
dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwotICAgICAgaWYgKCFGaWxsQ29uc29sZU91dHB1
dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAotCQkJCSAgICAgICBjb2RpbmctPnBy
b2R1Y2VkLCBzdGFydF9jb29yZHMsCi0JCQkJICAgICAgICZmaWxsZWQpKQotCURlYlByaW50ICgo
IkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRlczogJWRcbiIsIEdldExhc3RFcnJvciAo
KSkpOworICAgICAgaWYgKHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCkKKwl7CisJICBDT09SRCBz
YXZlZF9jb29yZHMgPSBjdXJzb3JfY29vcmRzOworCSAgdzMyY29uX21vdmVfY3Vyc29yKGYsIHks
IHgpOworCSAgdHVybl9vbl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIFdyaXRlQ29uc29sZSAoY3Vy
X3NjcmVlbiwgY29udmVyc2lvbl9idWZmZXIsCisJCQljb2RpbmctPnByb2R1Y2VkLCAmd3JpdHRl
biwgTlVMTCk7CisJICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIHczMmNvbl9tb3Zl
X2N1cnNvcihmLCBzYXZlZF9jb29yZHMuWSwgc2F2ZWRfY29vcmRzLlgpOworCX0KICAgICAgIGVs
c2UKIAl7Ci0JICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCi0JICBpZiAoIVdyaXRlQ29u
c29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZmZXIsCi0JCQkJ
CSAgICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0ZW4pKQotCSAgICBEZWJQcmludCAoKCJG
YWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3RlcnM6ICVkXG4iLAotCQkgICAgICAgR2V0TGFz
dEVycm9yICgpKSk7CisJICAvKiBDb21wdXRlIHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlcyBjb3Jy
ZXNwb25kaW5nIHRvIHRoZSBmYWNlLiAgKi8KKwkgIERXT1JEIGNoYXJfYXR0ciA9IHczMl9mYWNl
X2F0dHJpYnV0ZXMgKGYsIGZhY2VfaWQpOworCSAgQ09PUkQgc3RhcnRfY29vcmRzOworCisJICBz
dGFydF9jb29yZHMuWCA9IHg7CisJICBzdGFydF9jb29yZHMuWSA9IHk7CisKKwkgIC8qIFNldCB0
aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KKwkgIGlmICghRmlsbENvbnNv
bGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkJICAgY29kaW5n
LT5wcm9kdWNlZCwgc3RhcnRfY29vcmRzLAorCQkJCQkgICAmZmlsbGVkKSkKKwkgICAgRGViUHJp
bnQgKCgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBhdHRyaWJ1dGVzOiAlZFxuIiwgR2V0TGFzdEVy
cm9yICgpKSk7CisJICBlbHNlCisJICAgIHsKKwkgICAgICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVy
cy4gICovCisJICAgICAgaWYgKCFXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3Jl
ZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCQkJZmlsbGVkLCBzdGFydF9jb29yZHMsICZ3cml0
dGVuKSkKKwkJRGViUHJpbnQgKCgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBjaGFyYWN0ZXJzOiAl
ZFxuIiwKKwkJCSAgIEdldExhc3RFcnJvciAoKSkpOworCSAgICB9CiAJfQogICAgIH0KIH0KQEAg
LTUyMiw2ICs1ODcsMjcgQEAgdzMyY29uX2RlbGV0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwg
aW50IG4pCiAgIHNjcm9sbF9saW5lIChmLCBuLCBMRUZUKTsKIH0KIAorc3RhdGljIHZvaWQKK3cz
MmNvbl9zZXR1cF92aXJ0dWFsX3Rlcm1pbmFsICh2b2lkKQoreworICBEV09SRCBvdXRfbW9kZTsK
KyAgR2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sICZvdXRfbW9kZSk7CisgIG91dF9tb2RlIHw9
IEVOQUJMRV9QUk9DRVNTRURfT1VUUFVUOworICBvdXRfbW9kZSB8PSBESVNBQkxFX05FV0xJTkVf
QVVUT19SRVRVUk47CisKKyAgaWYgKHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCkKKyAgICBvdXRf
bW9kZSB8PSBFTkFCTEVfVklSVFVBTF9URVJNSU5BTF9QUk9DRVNTSU5HOworICBlbHNlCisgICAg
b3V0X21vZGUgJj0gfkVOQUJMRV9WSVJUVUFMX1RFUk1JTkFMX1BST0NFU1NJTkc7CisKKyAgaW50
IG91dF9tb2RlX3NldCA9IFNldENvbnNvbGVNb2RlIChjdXJfc2NyZWVuLCBvdXRfbW9kZSk7Cisg
IHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCA9IHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCAmJiBv
dXRfbW9kZV9zZXQ7CisKKyAgaW50IG1heF9jb2xvcnMgPSB3MzJfdXNlX3ZpcnR1YWxfdGVybWlu
YWwgPyAxNjc3NzIxNiA6IDE2OworICB0dHlfc2V0dXBfY29sb3JzIChjdXJyZW50X3R0eSwgbWF4
X2NvbG9ycyk7CisKKyAgc2FmZV9jYWxsbiAoUXR0eV9zZXRfdXBfaW5pdGlhbF9mcmFtZV9mYWNl
cyk7Cit9CiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fcmVzZXRfdGVybWluYWxfbW9kZXMgKHN0cnVj
dCB0ZXJtaW5hbCAqdCkKQEAgLTU3OCw2ICs2NjQsNyBAQCB3MzJjb25fc2V0X3Rlcm1pbmFsX21v
ZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpCiAgIC8qIEluaXRpYWxpemUgaW5wdXQgbW9kZTogaW50
ZXJydXB0X2lucHV0IG9mZiwgbm8gZmxvdyBjb250cm9sLCBhbGxvdwogICAgICA4IGJpdCBjaGFy
YWN0ZXIgaW5wdXQsIHN0YW5kYXJkIHF1aXQgY2hhci4gICovCiAgIEZzZXRfaW5wdXRfbW9kZSAo
UW5pbCwgUW5pbCwgbWFrZV9maXhudW0gKDIpLCBRbmlsKTsKKyAgdzMyY29uX3NldHVwX3ZpcnR1
YWxfdGVybWluYWwgKCk7CiB9CiAKIC8qIGhtbW0uLi4gcGVyaGFwcyB0aGVzZSBsZXQgdXMgYnJh
Y2tldCBzY3JlZW4gY2hhbmdlcyBzbyB0aGF0IHdlIGNhbiBmbHVzaApAQCAtNjI0LDggKzcxMSw2
IEBAIHN5c190Z2V0c3RyIChjaGFyICpjYXAsIGNoYXIgKiphcmVhKQogCQkJc3R1YnMgZnJvbSBj
bS5jCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCiAKLWV4dGVybiBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAq
Y3VycmVudF90dHk7Ci1zdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqY3VycmVudF90dHkgPSBOVUxM
OwogZXh0ZXJuIGludCBjb3N0OwogaW50IGNvc3QgPSAwOwogCkBAIC03MjksNiArODE0LDgzIEBA
IHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCiAgIHJl
dHVybiBjaGFyX2F0dHI7CiB9CiAKK3N0YXRpYyB2b2lkCit0dXJuX29uX2ZhY2UgKHN0cnVjdCBm
cmFtZSAqZiwgaW50IGZhY2VfaWQpCit7CisgIHN0cnVjdCBmYWNlICpmYWNlID0gRkFDRV9GUk9N
X0lEIChmLCBmYWNlX2lkKTsKKyAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1F
X1RUWSAoZik7CisgIHVuc2lnbmVkIGxvbmcgZmcgPSBmYWNlLT5mb3JlZ3JvdW5kOworICB1bnNp
Z25lZCBsb25nIGJnID0gZmFjZS0+YmFja2dyb3VuZDsKKworICAvKiBjb25zdHJ1Y3QgY29tYmlu
ZWQgVlQgc2VxdWVuY2UgZm9yIGZhY2UgYXR0cmlidXRlcyAqLworICBEV09SRCBuID0gMDsKKyAg
c2l6ZV90IHN6ID0gU0VRTUFYOworICBjaGFyIHNlcVtzel07CisgIHN6LS07CisKKyAgaWYgKGZh
Y2UtPnR0eV9ib2xkX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVy
X2JvbGRfbW9kZSwgTlVMTCk7CisgIGlmIChmYWNlLT50dHlfaXRhbGljX3ApCisgICAgU1NQUklO
VEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX2l0YWxpY19tb2RlLCBOVUxMKTsKKyAgaWYg
KGZhY2UtPnR0eV9zdHJpa2VfdGhyb3VnaF9wKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwg
dHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnVu
ZGVybGluZSAhPSAwKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl91
bmRlcmxpbmVfbW9kZSwgTlVMTCk7CisgIC8qIE5vdGU6IHdoZW4gZmFjZS0+dHR5X3JldmVyc2Vf
cCAhPSAwIGFuZCBmZyBhbmQgYmcgYXJlIHNwZWNpZmllZCwKKyAgICAgdGhlaXIgdmFsdWVzIGFy
ZSBhbHJlYWR5IHN3YXBwZWQgYW5kIHJldmVyc2luZyB0aGVtIGhlcmUgd291bGQgc3dhcAorICAg
ICB0aGVtIGJhY2ssIGJ1dCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUgcmV2ZXJzYWwgd2hlbiB1bnNw
ZWNpZmllZC4gICovCisgIGlmIChmYWNlLT50dHlfcmV2ZXJzZV9wICYmIERFRkFVTFRQIChmZykg
JiYgREVGQVVMVFAgKGJnKSkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50
ZXJfcmV2ZXJzZV9tb2RlLCBOVUxMKTsKKworICBpZiAoREVGQVVMVFAgKGZnKSkgZmcgPSBmZ19u
b3JtYWw7CisgIGlmIChERUZBVUxUUCAoYmcpKSBiZyA9IGJnX25vcm1hbDsKKworICBjb25zdCBj
aGFyICpzZXRfZmcgPSB0dHktPlRTX3NldF9mb3JlZ3JvdW5kOworICBjb25zdCBjaGFyICpzZXRf
YmcgPSB0dHktPlRTX3NldF9iYWNrZ3JvdW5kOworICBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09
IDggIHx8IHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNikKKyAgICB7CisgICAgICAvKiBmZyBhbmQg
YmcgYXJlIGluZGljZXMgaW50byAxNiBiYXNlIGNvbG9ycyAoc2VlIGxpbmsgYXQgdG9wKS4gICov
CisgICAgICB1bnNpZ25lZCBsb25nIGZnaSA9IDAsIGJnaSA9IDA7CisKKyAgICAgIGZnaSA9IChm
ZyA+PSAwICAmJiBmZyA8IDgpICA/IGZnICsgMzAKKwk6ICAgKGZnID49IDggICYmIGZnIDwgMTYp
ID8gZmcgLSA4ICsgOTAKKwk6IDA7CisgICAgICBpZiAoZmdpKQorCVNTUFJJTlRGIChzZXEsICZu
LCBzeiwgc2V0X2ZnLCBmZ2kpOworCisgICAgICBiZ2kgPSAoYmcgPj0gMCAgJiYgYmcgPCA4KSAg
PyBiZyArIDQwCisJOiAgIChiZyA+PSA4ICAmJiBiZyA8IDE2KSA/IGJnIC0gOCArIDEwMAorCTog
MDsKKyAgICAgIGlmIChiZ2kpCisJU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIGJnaSk7
CisgICAgfQorICBlbHNlIGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gMjU2KQorICAgIHsKKyAg
ICAgIC8qIGZnIGFuZCBiZyBhcmUgeHRlcm0gaW5kaWNlcy4gICovCisgICAgICBpZiAoZmcgPj0g
MCAmJiBmZyA8IDI1NikKKwlTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9mZywgZmcpOworCisg
ICAgICBpZiAoYmcgPj0gMCAmJiBiZyA8IDI1NikKKwlTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNl
dF9iZywgYmcpOworICAgIH0KKyAgZWxzZSBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09IDE2Nzc3
MjE2KQorICAgIHsKKyAgICAgIC8qIGZnIGFuZCBiZyBhcmUgcGl4ZWwgdmFsdWVzIC0tIGRlY29t
cG9zZSB0byByZ2IgdHJpcGxlcy4gICovCisgICAgICB1bnNpZ25lZCBsb25nIHJmID0gZmcvNjU1
MzYsIGdmID0gKGZnLzI1NikmMjU1LCBiZiA9IGZnJjI1NTsKKyAgICAgIHVuc2lnbmVkIGxvbmcg
cmIgPSBiZy82NTUzNiwgZ2IgPSAoYmcvMjU2KSYyNTUsIGJiID0gYmcmMjU1OworICAgICAgU1NQ
UklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfZmcsIHJmLCBnZiwgYmYpOworICAgICAgU1NQUklOVEYg
KHNlcSwgJm4sIHN6LCBzZXRfYmcsIHJiLCBnYiwgYmIpOworICAgIH0KKyAgdzMyY29uX3dyaXRl
X3Z0X3NlcSAoc2VxKTsKK30KKworc3RhdGljIHZvaWQKK3R1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBm
cmFtZSAqZiwgaW50IGZhY2VfaWQpCit7CisgIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkg
PSBGUkFNRV9UVFkgKGYpOworICB3MzJjb25fd3JpdGVfdnRfc2VxICh0dHktPlRTX2V4aXRfYXR0
cmlidXRlX21vZGUpOworfQorCiAvKiBUaGUgSU1FIHdpbmRvdyBpcyBuZWVkZWQgdG8gcmVjZWl2
ZSB0aGUgc2Vzc2lvbiBub3RpZmljYXRpb25zCiAgICByZXF1aXJlZCB0byByZXNldCB0aGUgbG93
IGxldmVsIGtleWJvYXJkIGhvb2sgc3RhdGUuICAqLwogCkBAIC04NjEsNiArMTAyMyw4IEBAIGlu
aXRpYWxpemVfdzMyX2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwg
aW50ICpoZWlnaHQpCiAgICAgfQogCiAgIGNoYXJfYXR0cl9ub3JtYWwgPSBpbmZvLndBdHRyaWJ1
dGVzOworICBmZ19ub3JtYWwgPSBjaGFyX2F0dHJfbm9ybWFsICYgMHgwMDBmOworICBiZ19ub3Jt
YWwgPSAoY2hhcl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4MDAwZjsKIAogICAvKiBEZXRlcm1pbmUg
aWYgdGhlIGluZm8gcmV0dXJuZWQgYnkgR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8KICAgICAg
aXMgcmVhbGlzdGljLiAgT2xkIE1TIFRlbG5ldCBzZXJ2ZXJzIHVzZWQgdG8gb25seSBmaWxsIG91
dApAQCAtOTE0LDMxICsxMDc4LDc0IEBAIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHN0cnVjdCB0
ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCiAKICAgLyogU2V0IHVwIHRo
ZSBrZXlib2FyZCBob29rLiAgKi8KICAgc2V0dXBfdzMyX2tiZGhvb2sgKGh3bmQpOworCisgIC8q
IFNldCBjdXJyZW50X3R0eSB0byB0aGUgdHR5IG9mIHRoaXMgdGVybWluYWwgKi8KKyAgY3VycmVu
dF90dHkgPSB0ZXJtLT5kaXNwbGF5X2luZm8udHR5OwogfQogCiAKLURFRlVOICgic2V0LXNjcmVl
bi1jb2xvciIsIEZzZXRfc2NyZWVuX2NvbG9yLCBTc2V0X3NjcmVlbl9jb2xvciwgMiwgMiwgMCwK
K0RFRlVOICgic2V0LXNjcmVlbi1jb2xvciIsIEZzZXRfc2NyZWVuX2NvbG9yLCBTc2V0X3NjcmVl
bl9jb2xvciwgMiwgMywgMCwKICAgICAgICBkb2M6IC8qIFNldCBzY3JlZW4gZm9yZWdyb3VuZCBh
bmQgYmFja2dyb3VuZCBjb2xvcnMuCiAKLUFyZ3VtZW50cyBzaG91bGQgYmUgaW5kaWNlcyBiZXR3
ZWVuIDAgYW5kIDE1LCBzZWUgdzMyY29uc29sZS5lbC4gICovKQotICAoTGlzcF9PYmplY3QgZm9y
ZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCkKK0FyZ3VtZW50cyBzaG91bGQgYmUgaW5k
aWNlcyBmb3IgY29sb3JzIGluIHRoZSBsaXN0IHJldHVybmVkIGJ5IGB0dHktY29sb3ItYWxpc3Qn
LgorSWYgVlRQIGlzIG5vbi1uaWwsIHNldHRpbmdzIGFmZmVjdCB2aXJ0dWFsIHRlcm1pbmFsIHBy
b2Nlc3Npbmcgb25seS4KK090aGVyd2lzZSwgYXJndW1lbnRzIHNob3VsZCBiZSBiZXR3ZWVuIDAg
YW5kIDE1LCBhbmQgc2V0dGluZ3Mgd2lsbAorYmUgZWZmZWN0aXZlIG9ubHkgd2hlbiB2aXJ0dWFs
IHRlcm1pbmFsIHByb2Nlc3NpbmcgaXMgZGlzYWJsZWQuCisKK1NlZSB3MzJjb25zb2xlLmVsIGFu
ZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgYHVzZS12aXJ0dWFsLXRlcm1pbmFsJy4gICovKQorICAo
TGlzcF9PYmplY3QgZm9yZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCwgTGlzcF9PYmpl
Y3QgdnRwKQogewotICBjaGFyX2F0dHJfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdyb3VuZCkgKyAo
WEZJWE5BVCAoYmFja2dyb3VuZCkgPDwgNCk7CisgIGludCBmZyA9IFhGSVhOQVQgKGZvcmVncm91
bmQpOworICBpbnQgYmcgPSBYRklYTkFUIChiYWNrZ3JvdW5kKTsKKworICBpZiAoTklMUCAodnRw
KSkKKyAgICB7CisgICAgICBjaGFyX2F0dHJfbm9ybWFsID0gZmcgKyAoYmcgPDwgNCk7CisgICAg
fQorICBlbHNlCisgICAgeworICAgICAgZmdfbm9ybWFsID0gZmc7CisgICAgICBiZ19ub3JtYWwg
PSBiZzsKKyAgICB9CiAKICAgRnJlY2VudGVyIChRbmlsLCBRdCk7CiAgIHJldHVybiBRdDsKIH0K
IAotREVGVU4gKCJnZXQtc2NyZWVuLWNvbG9yIiwgRmdldF9zY3JlZW5fY29sb3IsIFNnZXRfc2Ny
ZWVuX2NvbG9yLCAwLCAwLCAwLAorREVGVU4gKCJnZXQtc2NyZWVuLWNvbG9yIiwgRmdldF9zY3Jl
ZW5fY29sb3IsIFNnZXRfc2NyZWVuX2NvbG9yLCAwLCAxLCAwLAogICAgICAgIGRvYzogLyogR2V0
IGNvbG9yIGluZGljZXMgb2YgdGhlIGN1cnJlbnQgc2NyZWVuIGZvcmVncm91bmQgYW5kIGJhY2tn
cm91bmQuCiAKLVRoZSBjb2xvcnMgYXJlIHJldHVybmVkIGFzIGEgbGlzdCBvZiAyIGluZGljZXMg
KEZPUkVHUk9VTkQgQkFDS0dST1VORCkuCi1TZWUgdzMyY29uc29sZS5lbCBhbmQgYHR0eS1kZWZp
bmVkLWNvbG9yLWFsaXN0JyBmb3IgbWFwcGluZyBvZiBpbmRpY2VzCi10byBjb2xvcnMuICAqLykK
LSAgKHZvaWQpCitUaGUgY29sb3JzIGFyZSByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgMiBpbmRpY2Vz
IChGT1JFR1JPVU5EIEJBQ0tHUk9VTkQpIGZvcgorY29sb3JzIGluIHRoZSBsaXN0IHJldHVybmVk
IGJ5IGB0dHktY29sb3ItYWxpc3RgLgorCitJZiBWVFAgaXMgbm9uLW5pbCwgcmV0dXJucyBzZXR0
aW5ncyBlZmZlY3RpdmUgd2hlbiB2aXJ0dWFsIHRlcm1pbmFsCitwcm9jZXNzaW5nIGlzIGVuYWJs
ZWQuICBPdGhlcndpc2UsIHJldHVybnMgc2V0dGluZ3MgZWZmZWN0aXZlIHdoZW4KK3ZpcnR1YWwg
dGVybWluYWwgcHJvY2Vzc2luZyBpcyBkaXNhYmxlZC4KKworU2VlIHczMmNvbnNvbGUuZWwgYW5k
IHRoZSBkb2N1bWVudGF0aW9uIGZvciBgdXNlLXZpcnR1YWwtdGVybWluYWwnLiAgKi8pCisgIChM
aXNwX09iamVjdCB2dHApCiB7Ci0gIHJldHVybiBGY29ucyAobWFrZV9maXhudW0gKGNoYXJfYXR0
cl9ub3JtYWwgJiAweDAwMGYpLAotCQlGY29ucyAobWFrZV9maXhudW0gKChjaGFyX2F0dHJfbm9y
bWFsID4+IDQpICYgMHgwMDBmKSwgUW5pbCkpOworICBpbnQgZmcgPSBOSUxQICh2dHApID8gY2hh
cl9hdHRyX25vcm1hbCAmIDB4MDAwZiA6IGZnX25vcm1hbDsKKyAgaW50IGJnID0gTklMUCAodnRw
KSA/IChjaGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmIDogYmdfbm9ybWFsOworCisgIHJl
dHVybiBGY29ucyAobWFrZV9maXhudW0gKGZnKSwgRmNvbnMgKG1ha2VfZml4bnVtIChiZyksIFFu
aWwpKTsKK30KKworREVGVU4gKCJ1c2UtdmlydHVhbC10ZXJtaW5hbCIsIEZ1c2VfdmlydHVhbF90
ZXJtaW5hbCwgU3VzZV92aXJ0dWFsX3Rlcm1pbmFsLCAwLCAxLCAwLAorICAgICAgIGRvYzogLyog
SW5zcGVjdCBvciBlbmFibGUvZGlzYWJsZSB2aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlIHByb2Nl
c3NpbmcuCisKK0lmIGFyZ3VtZW50IGlzIHplcm8sIGRpc2FibGUgdmlydHVhbCB0ZXJtaW5hbCBz
ZXF1ZW5jZSBwcm9jZXNzaW5nLgorSWYgYXJndW1lbnQgaXMgYSBub24temVybyBudW1iZXIsIGVu
YWJsZSB2aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlIHByb2Nlc3NpbmcuCitJZiBhcmd1bWVudCBp
cyBvbWl0dGVkIG9yIG5pbCwganVzdCBpbnNwZWN0IHRoZSBjdXJyZW50IHN0YXRlLgorUmV0dXJu
cyB0IChuaWwpIGlmIHZpcnR1YWwgdGVybWluYWwgc2VxdWVuY2UgcHJvY2Vzc2luZyBpcyBlbmFi
bGVkIChkaXNhYmxlZCkuICAqLykKKyAgKExpc3BfT2JqZWN0IGFyZykKK3sKKyAgaWYgKCFOSUxQ
IChhcmcpKQorICAgIHsKKyAgICAgIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbCA9IFhGSVhOQVQg
KGFyZyk7CisgICAgICB3MzJjb25fc2V0dXBfdmlydHVhbF90ZXJtaW5hbCAoKTsKKyAgICB9Cisg
IHJldHVybiB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWwgPyBRdCA6IFFuaWw7CiB9CiAKIERFRlVO
ICgic2V0LWN1cnNvci1zaXplIiwgRnNldF9jdXJzb3Jfc2l6ZSwgU3NldF9jdXJzb3Jfc2l6ZSwg
MSwgMSwgMCwKQEAgLTk2Nyw1ICsxMTc0LDYgQEAgc2Nyb2xsLWJhY2sgYnVmZmVyLiAgKi8pOwog
CiAgIGRlZnN1YnIgKCZTc2V0X3NjcmVlbl9jb2xvcik7CiAgIGRlZnN1YnIgKCZTZ2V0X3NjcmVl
bl9jb2xvcik7CisgIGRlZnN1YnIgKCZTdXNlX3ZpcnR1YWxfdGVybWluYWwpOwogICBkZWZzdWJy
ICgmU3NldF9jdXJzb3Jfc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94
ZGlzcC5jCmluZGV4IGFlZjQwYzM4ZTU0Li5kYzdmNDJiOThiYSAxMDA2NDQKLS0tIGEvc3JjL3hk
aXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTE3MjM5LDcgKzE3MjM5LDcgQEAgcmVkaXNwbGF5
X2ludGVybmFsICh2b2lkKQogCSAgICAgYXJlYSwgZGlzcGxheWluZyBhIGRpZmZlcmVudCBmcmFt
ZSBtZWFucyByZWRpc3BsYXkgdGhlCiAJICAgICB3aG9sZSB0aGluZy4gICovCiAJICBTRVRfRlJB
TUVfR0FSQkFHRUQgKHNmKTsKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYgIWRlZmluZWQgSEFWRV9B
TkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECiAJICBz
ZXRfdHR5X2NvbG9yX21vZGUgKEZSQU1FX1RUWSAoc2YpLCBzZik7CiAjZW5kaWYKIAl9CjIuNDku
MAoK
--b1=_aql0J6clWKaP8W8UdnGvDXQ4Cxga31BtijufV9R38A4--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 21 Sep 2025 08:09:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 21 04:09:24 2025
Received: from localhost ([127.0.0.1]:52526 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v0F8N-0003Y3-S2
for submit <at> debbugs.gnu.org; Sun, 21 Sep 2025 04:09:24 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:47704)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1v0F8J-0003Xh-Fk
for 79298 <at> debbugs.gnu.org; Sun, 21 Sep 2025 04:09:21 -0400
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 1v0F8C-0007Fz-3k; Sun, 21 Sep 2025 04:09:12 -0400
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=m/4CpovU1rO/eM8wpZjeQ7lppWcgLkdY80iPZ2AkdKI=; b=QdeGSRb3VaR4
l9AHo7FH2mCDtIdgbqQ3L7rX1yaClNiFnGRhX3h+ItjJGYffyD9NSbbo7INdA2XBFdTPuN4/yq9mW
WM2GIKo+MbPsdaJVSyKb1JA+z4jvgc3j8pVEHQIwWuKAOX9CeqKD1r5M7nllpKvSa/qrPHhewbl1A
mkrf4I6B/v086C0DioKM2gd4G8BH/Xm6l86OlyUpsU/XkCt7eGtdqaIYBVTHfjRk4PVF/GcHy970O
g8a340SMTpbUxuT+FFFjZMshnWNOLd7p/TJPciYr6Y7ThtKjnvz5mYlAghoLdxmD/pcVQzHBNRSJL
yN2CWCpuFDfj5Z4elQcY0g==;
Date: Sun, 21 Sep 2025 11:09:10 +0300
Message-Id: <861po0grbt.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ewan <ewan@HIDDEN>
In-Reply-To: <aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
(message from Ewan on Sun, 21 Sep 2025 04:39:34 +0000)
Subject: Re: bug#79298: patch: full color in windows terminal
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev>
<868qiuk9jr.fsf@HIDDEN>
<UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev>
<864itijzmd.fsf@HIDDEN>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
<86wm61nsuv.fsf@HIDDEN>
<aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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: Sun, 21 Sep 2025 04:39:34 +0000
> From: Ewan <ewan@HIDDEN>
> Cc: 79298 <at> debbugs.gnu.org
>
> > > +(defvar w32-tty-virtual-terminal-base-colors
> > > + '(("black" 0 0 0 0)
> > > + ("red" 1 45568 8704 8704) ; FireBrick
> >
> >
> > What is the rationale for using different RGB components in the VT
> > mode? The RGB components of the 16 colors were determined by
> > comparing X and PC colors on the same screen. I presume that the VT
> > mode uses the same colors, so I don't understand why we need different
> > definitions. Can you explain?
>
> The RGB values are the same, it's just the order that changes, and that is to
> align with the indices used by Microsoft for the basic 16 colors. That order
> can be found in the spec. shared earlier.
Ah, okay. But then perhaps it's better to have a single variable, and
add a function which will modify the indices when we switch from the
VGA to VT colors and back? Having two data structures with the same
RGB values in different order adds to the maintenance burden, if the
RGB values should ever be modified.
> > > @@ -346,10 +345,10 @@ tty_hide_cursor (struct tty_display_info *tty)
> > > {
> > > if (tty->cursor_hidden == 0)
> > > {
> > > - tty->cursor_hidden = 1;
> > > #ifdef WINDOWSNT
> > > w32con_hide_cursor ();
> > > #else
> > > + tty->cursor_hidden = 1;
> > > OUTPUT_IF (tty, tty->TS_cursor_invisible);
> >
> >
> > Is this change of order important? If so, why? If it isn't
> > important, please leave the original order intact, again to make the
> > patch smaller and easier to grasp.
>
> Semantically important, I think. w32con_hide_cursor sets the cursor_hidden value
> itself, on an internal representation of the tty (current_tty). I've moved the
> assignment into the #else branch, to avoid giving the impression that the above
> assignment is the effective one on Windows.
Setting tty->cursor_hidden might not be needed for the w32 code, but
the rest of Emacs expects it to be set and reset, so I'd prefer to
keep the original assignment as well. Even if it isn't used anywhere
else, it does no harm.
> > I see you've consistently replaced \033 with \x1b. Any reason for
> > that? If it's possible to use \033 as in original code, it will again
> > make the patch smaller and easier to read.
>
> The mentioned uses of \033 appear to be outliers. \x1b is used elsewhere, so I
> opted for that and made these changes for consistency within the file.
> I can change them back / switch to \033 if you'd like -- just let me know.
I'm talking about the existing code, where you change \033 to \1xb.
Please don't make these changes in the existing code. New code you
add for WINDOWSNT can use \1xb, but existing code, including when you
move it around (such as in and out of #ifdef's) should be left in its
original shape.
> > > + turn_on_face (f, face_id);
> > > + WriteConsole (cur_screen, conversion_buffer,
> > > + coding->produced, &r, NULL);
> >
> >
> > Why do you use WriteConsole here, but WriteConsoleA elsewhere? Is
> > there a difference? If not, let's be consistent.
>
> WriteConsoleA is ANSI specific (and expects a char buffer).
> WriteConsole will also write Unicode (and expects a char or wchar_t buffer).
But we always compile Emacs with UNICODE undefined, so the TCHAR
thingy never happens, and WriteConsole is converted to WriteConsoleA.
And we never write wchar_t buffers to the console. Right? Then let's
be consistent and call either WriteConsoleA or WriteConsole everywhere.
> > > +/* returns the pixel value for the given index into VT base color map */
> > > +static unsigned long pixel_cache[16];
> > > +static unsigned long
> > > +get_pixel (unsigned long index)
> > > +{
> > > + unsigned int i = (unsigned int) index;
> > > + if (i > 15) return 0;
> > > + if (i == 0 || pixel_cache[i] > 0)
> > > + return pixel_cache[i];
> > > +
> > > + Lisp_Object pix = safe_calln (Qw32con_get_pixel, make_ufixnum (i));
> > > + pixel_cache[i] = (unsigned long) XUFIXNUM (pix);
> > > + return pixel_cache[i];
> > > +}
> >
> >
> > This should be implemented in C to avoid a costly call into Lisp (each
> > time we need to use a different color!). Reusing existing code is
> > important, but speed of redisplay trumps that by a large margin.
>
> Lisp will be called /at most/ 15 times, and in most cases, once, at startup.
> This function is only used to convert the color indices for default foreground
> and background, initially retrieved from the Win Console API, into pixel values.
> There are 16 possible argument values, and results of the calls into Lisp are
> cached in pixel_cache, then retrieved on subsequent calls. Because black is both
> color index 0 and pixel value 0, and 0 is the default value of pixel_cache[0],
> we never call into Lisp for that one (which is the default background, usually).
> Lisp will only be called more than twice if there is a call to legacy function,
> set-screen-color (with indices in 1..15), but again, never more than 15 times.
The cache is a problem in itself: what if we allow the user to switch
between the VT and VGA colors during the session (see below)?
In any case, the implementation of tty-color-24bit is so simple that I
don't see a need to call Lisp even if we keep the cache. Calling Lisp
from redisplay should be kept to the bare minimum. Calling Lisp is
slow, and can trigger GC. So please rewrite what w32con-get-pixel
does in C.
> > > static void
> > > w32con_update_begin (struct frame * f)
> > > {
> > > + current_tty = FRAME_TTY (f);
> > > +
> > > + if (!w32_use_virtual_terminal_sequences
> > > + && current_tty->TN_max_colors > 16)
> > > + {
> > > + tty_setup_colors (current_tty, 16);
> > > + safe_calln (Qw32con_set_up_initial_frame_faces);
> > > + }
> >
> >
> > Why is this needed? This will call to Lisp each redisplay cycle,
> > which is expensive and will slow down redisplay. Why do we need to
> > setup colors and faces each redisplay cycle? We never needed this
> > before.
>
> Does checking the value of a variable defined with DEFVAR_BOOL call into Lisp?
No. I meant the w32con-set-up-initial-frame-faces call.
> Otherwise, this condition should only hold in one of two cases, and then the
> body call into Lisp executed one time:
> (1) w32_use_virtual_terminal_sequences is manually set to false
> (2) initializing on a Windows system that does not support VT sequences
Both cases should be handled in initialization code, not in
update_begin hook. When w32_use_virtual_terminal_sequences is
modified, we should call the initialization right there and then.
Perhaps the variable shouldn't be modifiable from Lisp, but we should
provide a function to do that. Alternatively, we could use the
variable-watcher technique, like we already do for several
display-related variables, see the end of frame.el. Doing this in
update_begin hook is wrong in principle anyway, because it means the
xdisp.c part of redisplay runs with the incorrect idea of the colors
that the terminal supports.
> > > + DEFVAR_BOOL ("w32-use-virtual-terminal-sequences",
> > > + w32_use_virtual_terminal_sequences,
> > > + doc: /* If non-nil w32 console uses terminal sequences for some output processing.
> > > +This variable is set automatically based on the capabilities of the terminal.
> > > +It determines the number and indices of colors used for faces in the terminal.
> > > +If the terminal cannot handle VT sequences, the update hook triggers recomputation of faces.
> > > +See `w32con-set-up-initial-frame-faces', which should be called after setting this variable
> > > +manually in a running session. */);
> > > + w32_use_virtual_terminal_sequences = 0;
> >
> >
> > Do we want to support setting this from Lisp or by the user (in
> > addition to setting it automatically at startup)? If yes, does
> > setting it require some initialization?
>
> This is a good question... I'm not sure. We do need to check its value in the
> Lisp configuration code, but I'm not sure if/why users would want to set it.
> I can't see any reason to prefer the "old" mechanism, but it seemed a safe bet
> to make this option available, in case anyone has issues on systems that aren't
> available to me for testing. Changes to its value should generally be followed
> by a call to 'set-frame-parameter for 'tty-color-mode, or at least a call to
> 'w32con-set-up-initial-frame-faces. So maybe it would be best to expose the
> latter sequence as a function.
Given what you say about the basic slowdown caused by ConPTY, it is
quite possible some users will prefer the old method. So I think we
should allow the switch at run time.
> I've attached a revised patch with your other comments addressed, produced with
> the --ignore-all-space flag.
I still see quite a few changes which add or remove empty lines. Are
they necessary?
> Re: the cursor flashing problem (which I still see in the minimal build),
> this thread may be of interest:
> https://github.com/microsoft/terminal/issues/10362
>
> tl;dr: the ConPTY layer introduces a processing bottleneck which is known to
> slow rendering significantly when using VT sequences. So the underlying issue
> is likely just slow rendering, not cursor movement (as I previously thought).
So we might leave it to the user to decide whether to use this
functionality at the price of slower (and maybe flickering) display.
Which means setting w32-use-virtual-terminal-sequences from a running
session should be supported, IMO.
> +@vindex w32-use-virtual-terminal-sequences
> +@cindex Windows Terminal, Windows Console, MS-Windows
> + The implementation of display functionality for Windows Console
> +differs from the implementation for other terminal emulators,
> +because historically, Windows required use of an idiosyncractic API.
> +That API limited Windows Console display of Emacs to 16 basic colors.
> +With the introduction of Windows Terminal, Microsoft implemented
> +support for ANSI control sequences, modelled on the VT100 and Xterm,
> +and 24-bit RBG color display.
> +
> + The variable @code{w32-use-virtual-terminal-sequences} determines
> +whether this newer mechanism is used for display, or the older one.
> +It is automatically set based on your terminal's capabilities on
> +startup. If it is non-nil, Emacs will use ANSI escape sequences for
> +cursor and color display. By default, 24-bit RGB color will be used,
> +but other (8, 16, 256) color spaces may be used, by passing the
> +@code{--color} command line argument, or setting the value of the
> +@code{tty-color-mode} frame parameter.
Our convention is to leave 2 spaces between sentences, so please
follow it in the manual and in NEWS.
> + Any time @code{w32-use-virtual-terminal-sequences} is set manually,
> +the change in value should be immediately followed by a call to
> +@code{set-frame-parameter} (re)setting @code{'tty-color-mode}, or
> +at very least, a call to @code{w32con-set-up-initial-frame-faces}.
We should arrange for this to happen automatically, see above.
> @@ -2308,11 +2330,15 @@ set_tty_color_mode (struct tty_display_info *tty, struct frame *f)
> tty->previous_color_mode = mode;
> tty_setup_colors (tty , mode);
> /* This recomputes all the faces given the new color definitions. */
> +#ifdef WINDOWSNT
> + safe_calln (Qw32con_set_up_initial_frame_faces);
> +#else
> safe_calln (Qtty_set_up_initial_frame_faces);
> +#endif
I'd prefer to have the w32-specific condition and code in
tty-set-up-initial-frame-faces, not here on the C level. One #ifdef
less is always an advantage.
> +/* For debugging:
> + Insert a call in unexpected condition branches, e.g. in w32con_write_vt_seq.
> + Emacs will exit and a representation of the sequence will print to console,
> + with escape chars replaced by '#' and '%' replaced by '_'.
> +*/
Hmm... is this the best way of debugging this stuff? Why does Emacs
have to exit? why not use DebPrint instead of printf, which then will
show the result in the debugger without terminating the session?
In any case, please reformat the comment according to our conventions.
> +static int
> +w32con_write_vt_seq (char *seq)
> +{
> + char buf[SEQMAX];
> + DWORD n = 0, k = 0;
> + SSPRINTF (buf, &n, SEQMAX, seq, NULL);
> + if (n) WriteConsoleA (cur_screen, (LPCSTR) buf, n, &k, NULL);
> + return k;
I asked to have an eassert, either in SSPRINTF itself or in its
callers, to detect the situations where the buffer is not large
enough. So at least here, we should have something like
eassert (n < SEQMAX);
after the call to SSPRINTF.
> - /* Set the attribute for these characters. */
> - if (!FillConsoleOutputAttribute (cur_screen, char_attr,
> - coding->produced, start_coords,
> - &filled))
> - DebPrint (("Failed writing console attributes: %d\n", GetLastError ()));
Not sure we should remove these debugging aids (here, and elsewhere).
> + DWORD out_mode;
> + GetConsoleMode (cur_screen, &out_mode);
> + out_mode |= ENABLE_PROCESSED_OUTPUT;
> + out_mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
> + out_mode |= DISABLE_NEWLINE_AUTO_RETURN;
> + w32_use_virtual_terminal_sequences = SetConsoleMode (cur_screen, out_mode);
> + if (w32_use_virtual_terminal_sequences)
> + {
> + int cursor_off_p = XWINDOW (selected_window)->cursor_off_p;
> + t->display_info.tty->cursor_hidden = cursor_off_p;
> + }
If we allow changing w32-use-virtual-terminal-sequences from Lisp, we
must call the above code when the value is set, and reset those bits
when the value is reset, right?
Thanks.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 21 Sep 2025 04:39:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 21 00:39:55 2025
Received: from localhost ([127.0.0.1]:51550 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1v0Bre-0003Rw-JI
for submit <at> debbugs.gnu.org; Sun, 21 Sep 2025 00:39:55 -0400
Received: from mail-24422.protonmail.ch ([109.224.244.22]:46627)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1v0BrX-0003QK-1d
for 79298 <at> debbugs.gnu.org; Sun, 21 Sep 2025 00:39:50 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev;
s=protonmail; t=1758429579; x=1758688779;
bh=mTqNg2faNnSG9wolTs/19YpN02YkOE72DlDRA7wRKZw=;
h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=VtuyYRyr27yMPig4hO2glKCoL9cF47xWgyd5YM0DydqWDn6wmW2Py38k+oPOGKfhX
mVxyqCSTu4/xd1iNTjgPLGkeG7gutQLftpzU354tgyR53BVQCfWebuUY6Uc4kvflDN
LYPG7x0AsDtFaAbi0Ua1lnxKfW8Q9YO/Et4y72blNwpCAnlYssyOVbEPEfI5Ay3Eq+
BE5Y87q/T36WvW8jSUI9qrkQehO8LD4BUNKR1IVUepu3F2ylVXxk6Ia6sp8IhqsLO6
mAptEk8Yd8ZznA3sULhoA6Vi9rr3IPOe2w5atW8zHrkZRJc1Fk89nn3uR5UMipWcI3
Umu+7MMGebpzg==
Date: Sun, 21 Sep 2025 04:39:34 +0000
To: Eli Zaretskii <eliz@HIDDEN>
From: Ewan <ewan@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Message-ID: <aBL098AhF_wQcU3QA3101KxQCqjsbiD9BZ60XtMGmPXHA_vV5OVht3oPhOyVDsip7Dfw3_W6LoLhGWi_54_9d7CjZ6fJxRusUV9eQv1NrT0=@etown.dev>
In-Reply-To: <86wm61nsuv.fsf@HIDDEN>
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev>
<868qiuk9jr.fsf@HIDDEN>
<UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev>
<864itijzmd.fsf@HIDDEN>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
<86wm61nsuv.fsf@HIDDEN>
Feedback-ID: 150490971:user:proton
X-Pm-Message-ID: 535d0f98cef5c3d3f58ee9ed7ae432a50d86cf93
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="b1=_7UGsCf4ZiRH9fNIspiSGAWE5toQ8COgsgQq4cdOII"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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 (-)
--b1=_7UGsCf4ZiRH9fNIspiSGAWE5toQ8COgsgQq4cdOII
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
> > +(defvar w32-tty-virtual-terminal-base-colors
> > + '(("black" 0 0 0 0)
> > + ("red" 1 45568 8704 8704) ; FireBrick
>=20
>=20
> What is the rationale for using different RGB components in the VT
> mode? The RGB components of the 16 colors were determined by
> comparing X and PC colors on the same screen. I presume that the VT
> mode uses the same colors, so I don't understand why we need different
> definitions. Can you explain?
The RGB values are the same, it's just the order that changes, and that is =
to
align with the indices used by Microsoft for the basic 16 colors. That orde=
r
can be found in the spec. shared earlier.
> > (defun terminal-init-w32console ()
> > "Terminal initialization function for w32 console."
> > ;; Share function key initialization with w32 gui frames
> > (x-setup-function-keys (selected-frame))
> > ;; Set terminal and keyboard encodings to the current OEM codepage.
> > (let ((oem-code-page-coding
> > - (intern (format "cp%d" (w32-get-console-codepage))))
> > - (oem-code-page-output-coding
> > - (intern (format "cp%d" (w32-get-console-output-codepage))))
> > - oem-cs-p oem-o-cs-p)
> > - (setq oem-cs-p (coding-system-p oem-code-page-coding))
> > - (setq oem-o-cs-p (coding-system-p oem-code-page-output-coding))
> > - (when oem-cs-p
> > - (set-keyboard-coding-system oem-code-page-coding)
> > - (set-terminal-coding-system
> > - (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding))
> > - ;; Since we changed the terminal encoding, we need to repeat
> > - ;; the test for Unicode quotes being displayable.
> > - (startup--setup-quote-display)))
The above is all whitespace changes (moved in the file).
But the below was modified and refactored into a new function,
w32con-set-up-initial-frame-faces (called from C):
> > - (let* ((colors w32-tty-standard-colors)
> > - (color (car colors)))
> > - (tty-color-clear)
> > - (while colors
> > - (tty-color-define (car color) (cadr color) (cddr color))
> > - (setq colors (cdr colors)
> > - color (car colors))))
> > - (clear-face-cache)
> > - ;; Figure out what are the colors of the console window, and set up
> > - ;; the background-mode correspondingly.
> > - (let* ((screen-color (get-screen-color))
> > - (bg (cadr screen-color))
> > - (descr (tty-color-by-index bg))
> > - r g b bg-mode)
> > - (setq r (nth 2 descr)
> > - g (nth 3 descr)
> > - b (nth 4 descr))
> > - (if (< (+ r g b) (* .6 (+ 65535 65535 65535)))
> > - (setq bg-mode 'dark)
> > - (setq bg-mode 'light))
> > - (set-terminal-parameter nil 'background-mode bg-mode))
> > - (tty-set-up-initial-frame-faces)
> > @@ -346,10 +345,10 @@ tty_hide_cursor (struct tty_display_info *tty)
> > {
> > if (tty->cursor_hidden =3D=3D 0)
> > {
> > - tty->cursor_hidden =3D 1;
> > #ifdef WINDOWSNT
> > w32con_hide_cursor ();
> > #else
> > + tty->cursor_hidden =3D 1;
> > OUTPUT_IF (tty, tty->TS_cursor_invisible);
>=20
>=20
> Is this change of order important? If so, why? If it isn't
> important, please leave the original order intact, again to make the
> patch smaller and easier to grasp.
Semantically important, I think. w32con_hide_cursor sets the cursor_hidden =
value
itself, on an internal representation of the tty (current_tty). I've moved =
the
assignment into the #else branch, to avoid giving the impression that the a=
bove
assignment is the effective one on Windows.
> I see you've consistently replaced \033 with \x1b. Any reason for
> that? If it's possible to use \033 as in original code, it will again
> make the patch smaller and easier to read.
The mentioned uses of \033 appear to be outliers. \x1b is used elsewhere, s=
o I
opted for that and made these changes for consistency within the file.
I can change them back / switch to \033 if you'd like -- just let me know.
> > + turn_on_face (f, face_id);
> > + WriteConsole (cur_screen, conversion_buffer,
> > + coding->produced, &r, NULL);
>=20
>=20
> Why do you use WriteConsole here, but WriteConsoleA elsewhere? Is
> there a difference? If not, let's be consistent.
WriteConsoleA is ANSI specific (and expects a char buffer).
WriteConsole will also write Unicode (and expects a char or wchar_t buffer)=
.
WriteConsoleA is only used in w32con_write_vt_seq. WriteConsole everywhere =
else.
I've added a comment about this.
> > +/* returns the pixel value for the given index into VT base color map =
*/
> > +static unsigned long pixel_cache[16];
> > +static unsigned long
> > +get_pixel (unsigned long index)
> > +{
> > + unsigned int i =3D (unsigned int) index;
> > + if (i > 15) return 0;
> > + if (i =3D=3D 0 || pixel_cache[i] > 0)
> > + return pixel_cache[i];
> > +
> > + Lisp_Object pix =3D safe_calln (Qw32con_get_pixel, make_ufixnum (i));
> > + pixel_cache[i] =3D (unsigned long) XUFIXNUM (pix);
> > + return pixel_cache[i];
> > +}
>=20
>=20
> This should be implemented in C to avoid a costly call into Lisp (each
> time we need to use a different color!). Reusing existing code is
> important, but speed of redisplay trumps that by a large margin.
Lisp will be called /at most/ 15 times, and in most cases, once, at startup=
.
This function is only used to convert the color indices for default foregro=
und
and background, initially retrieved from the Win Console API, into pixel va=
lues.
There are 16 possible argument values, and results of the calls into Lisp a=
re
cached in pixel_cache, then retrieved on subsequent calls. Because black is=
both
color index 0 and pixel value 0, and 0 is the default value of pixel_cache[=
0],
we never call into Lisp for that one (which is the default background, usua=
lly).
Lisp will only be called more than twice if there is a call to legacy funct=
ion,
set-screen-color (with indices in 1..15), but again, never more than 15 tim=
es.
> > static void
> > w32con_update_begin (struct frame * f)
> > {
> > + current_tty =3D FRAME_TTY (f);
> > +
> > + if (!w32_use_virtual_terminal_sequences
> > + && current_tty->TN_max_colors > 16)
> > + {
> > + tty_setup_colors (current_tty, 16);
> > + safe_calln (Qw32con_set_up_initial_frame_faces);
> > + }
>=20
>=20
> Why is this needed? This will call to Lisp each redisplay cycle,
> which is expensive and will slow down redisplay. Why do we need to
> setup colors and faces each redisplay cycle? We never needed this
> before.
Does checking the value of a variable defined with DEFVAR_BOOL call into Li=
sp?
Otherwise, this condition should only hold in one of two cases, and then th=
e
body call into Lisp executed one time:
(1) w32_use_virtual_terminal_sequences is manually set to false
(2) initializing on a Windows system that does not support VT sequences
Basically, this is a "self-correction" mechanism. Things go awry if VT sequ=
ence
processing is disabled but everything is still configured for >16 colors. T=
he
idea is to force reconfiguration in that case, to ensure this invariant hol=
ds:
"current_tty->TN_max_colors > 16 only if w32_use_virtual_terminal_sequences=
"
This is required for case (2), since the new default is 24bit color on Wind=
ows.
> > + DEFVAR_BOOL ("w32-use-virtual-terminal-sequences",
> > + w32_use_virtual_terminal_sequences,
> > + doc: /* If non-nil w32 console uses terminal sequences for some outpu=
t processing.
> > +This variable is set automatically based on the capabilities of the te=
rminal.
> > +It determines the number and indices of colors used for faces in the t=
erminal.
> > +If the terminal cannot handle VT sequences, the update hook triggers r=
ecomputation of faces.
> > +See `w32con-set-up-initial-frame-faces', which should be called after =
setting this variable
> > +manually in a running session. */);
> > + w32_use_virtual_terminal_sequences =3D 0;
>=20
>=20
> Do we want to support setting this from Lisp or by the user (in
> addition to setting it automatically at startup)? If yes, does
> setting it require some initialization?
This is a good question... I'm not sure. We do need to check its value in t=
he
Lisp configuration code, but I'm not sure if/why users would want to set it=
.
I can't see any reason to prefer the "old" mechanism, but it seemed a safe =
bet
to make this option available, in case anyone has issues on systems that ar=
en't
available to me for testing. Changes to its value should generally be follo=
wed
by a call to 'set-frame-parameter for 'tty-color-mode, or at least a call t=
o=20
'w32con-set-up-initial-frame-faces. So maybe it would be best to expose the
latter sequence as a function.
I've attached a revised patch with your other comments addressed, produced =
with
the --ignore-all-space flag.
Re: the cursor flashing problem (which I still see in the minimal build),
this thread may be of interest:
https://github.com/microsoft/terminal/issues/10362
tl;dr: the ConPTY layer introduces a processing bottleneck which is known t=
o
slow rendering significantly when using VT sequences. So the underlying iss=
ue
is likely just slow rendering, not cursor movement (as I previously thought=
).
--b1=_7UGsCf4ZiRH9fNIspiSGAWE5toQ8COgsgQq4cdOII
Content-Type: application/octet-stream; name=0001-w32-console-virtual-terminal-sequences-minimal.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=0001-w32-console-virtual-terminal-sequences-minimal.patch
RnJvbSBhMTNkYmEzMjE4Njk5ZjZjNTNjYWMyNDk4OTY3MmE5ODNlOWMwODRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFNhdCwg
MjAgU2VwIDIwMjUgMTk6NDg6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSB3MzIgY29uc29sZSB2
aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlcyAobWluaW1hbCkKCi0tLQogZG9jL2VtYWNzL2NtZGFy
Z3MudGV4aSAgfCAgIDkgKy0KIGRvYy9lbWFjcy9tc2Rvcy50ZXhpICAgIHwgIDI0ICsrKwogZXRj
L05FV1MgICAgICAgICAgICAgICAgfCAgMTIgKysKIGxpc3AvdGVybS90dHktY29sb3JzLmVsIHwg
ICAzICstCiBsaXNwL3Rlcm0vdzMyY29uc29sZS5lbCB8ICA5OCArKysrKysrLS0KIHNyYy90ZXJt
LmMgICAgICAgICAgICAgIHwgIDgwICsrKysrKy0tCiBzcmMvdGVybWNoYXIuaCAgICAgICAgICB8
ICAgMiArCiBzcmMvdzMyY29uc29sZS5jICAgICAgICB8IDQyNSArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKystLS0tLS0tCiBzcmMveGRpc3AuYyAgICAgICAgICAgICB8ICAgMiArLQog
OSBmaWxlcyBjaGFuZ2VkLCA1NTYgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvZG9jL2VtYWNzL2NtZGFyZ3MudGV4aSBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkK
aW5kZXggNzlhZTJkMDY0ZDEuLmVlZDI2M2MzOTA1IDEwMDY0NAotLS0gYS9kb2MvZW1hY3MvY21k
YXJncy50ZXhpCisrKyBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKQEAgLTEwMjQsMTkgKzEwMjQs
MjIgQEAgY29sb3JlZCBkaXNwbGF5LgogQGl0ZW14IGFuc2k4CiBUdXJuIG9uIHRoZSBjb2xvciBz
dXBwb3J0IHVuY29uZGl0aW9uYWxseSwgYW5kIHVzZSBjb2xvciBjb21tYW5kcwogc3BlY2lmaWVk
IGJ5IHRoZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMgZm9yIHRoZSA4IHN0YW5kYXJkIGNvbG9ycy4K
K0BpdGVtIDI0Yml0CitUdXJuIG9uIHN1cHBvcnQgZm9yIGFsbCBkZWZpbmVkIDI0LWJpdCBSR0Ig
Y29sb3JzIGlmIGF2YWlsYWJsZS4KK0N1cnJlbnRseSB0aGlzIGlzIGVmZmVjdGl2ZSBvbiBNUy1X
aW5kb3dzICgxMCspIG9ubHkuCiBAaXRlbSBAdmFye251bX0KIFVzZSBjb2xvciBtb2RlIGZvciBA
dmFye251bX0gY29sb3JzLiAgSWYgQHZhcntudW19IGlzIEBtaW51c3t9MSwgdHVybiBvZmYKIGNv
bG9yIHN1cHBvcnQgKGVxdWl2YWxlbnQgdG8gQHNhbXB7bmV2ZXJ9KTsgaWYgaXQgaXMgMCwgdXNl
IHRoZQogZGVmYXVsdCBjb2xvciBzdXBwb3J0IGZvciB0aGlzIHRlcm1pbmFsIChlcXVpdmFsZW50
IHRvIEBzYW1we2F1dG99KTsKIG90aGVyd2lzZSB1c2UgYW4gYXBwcm9wcmlhdGUgc3RhbmRhcmQg
bW9kZSBmb3IgQHZhcntudW19IGNvbG9ycy4KIERlcGVuZGluZyBvbiB5b3VyIHRlcm1pbmFsJ3Mg
Y2FwYWJpbGl0aWVzLCBFbWFjcyBtaWdodCBiZSBhYmxlIHRvIHR1cm4KLW9uIGEgY29sb3IgbW9k
ZSBmb3IgOCwgMTYsIDg4LCBvciAyNTYgYXMgdGhlIHZhbHVlIG9mIEB2YXJ7bnVtfS4gIElmCi10
aGVyZSBpcyBubyBtb2RlIHRoYXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0
cyBhcyBpZgorb24gYSBjb2xvciBtb2RlIGZvciA4LCAxNiwgODgsIDI1Niwgb3IgMTY3NzcyMTYg
YXMgdGhlIHZhbHVlIG9mIEB2YXJ7bnVtfS4KK0lmIHRoZXJlIGlzIG5vIG1vZGUgdGhhdCBzdXBw
b3J0cyBAdmFye251bX0gY29sb3JzLCBFbWFjcyBhY3RzIGFzIGlmCiBAdmFye251bX0gd2VyZSAw
LCBpLmUuLCBpdCB1c2VzIHRoZSB0ZXJtaW5hbCdzIGRlZmF1bHQgY29sb3Igc3VwcG9ydAogbW9k
ZS4KIEBlbmQgdGFibGUKIAotVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1XaW5kb3dz
IGFuZCBNUy1ET1MuCitUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIE1TLURPUywgbm9yIE1T
LVdpbmRvd3MgcHJpb3IgdG8gV2luZG93cyAxMC4KIAogQGNpbmRleCBjb2xvcnMgb24gY2hhcmFj
dGVyIHRlcm1pbmFsLCBjaGFuZ2luZyBkdXJpbmcgc2Vzc2lvbgogQGNpbmRleCBjaGFyYWN0ZXIg
dGVybWluYWwsIGNoYW5nZSBjb2xvciBtb2RlCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvbXNkb3Mu
dGV4aSBiL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCmluZGV4IGY5NzE1MWM2MzBmLi5mMzViMmE4ZTg4
ZSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL21zZG9zLnRleGkKKysrIGIvZG9jL2VtYWNzL21zZG9z
LnRleGkKQEAgLTEyMDAsNiArMTIwMCwzMCBAQCB5b3Ugc2hvdWxkIHNldCBpdHMgdmFsdWUgaW4g
eW91ciBpbml0IGZpbGUgKEBweHJlZntJbml0IEZpbGV9KSwgZWl0aGVyCiBkaXJlY3RseSBvciB2
aWEgQGtiZHtNLXggY3VzdG9taXplLXZhcmlhYmxlfSwgd2hpY2ggbGV0cyB5b3Ugc2F2ZSB0aGUK
IGN1c3RvbWl6ZWQgdmFsdWUsIHNlZSBAcmVme1NhdmluZyBDdXN0b21pemF0aW9uc30uCiAKK0B2
aW5kZXggdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworQGNpbmRleCBXaW5kb3dz
IFRlcm1pbmFsLCBXaW5kb3dzIENvbnNvbGUsIE1TLVdpbmRvd3MKKyAgVGhlIGltcGxlbWVudGF0
aW9uIG9mIGRpc3BsYXkgZnVuY3Rpb25hbGl0eSBmb3IgV2luZG93cyBDb25zb2xlCitkaWZmZXJz
IGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGZvciBvdGhlciB0ZXJtaW5hbCBlbXVsYXRvcnMsCiti
ZWNhdXNlIGhpc3RvcmljYWxseSwgV2luZG93cyByZXF1aXJlZCB1c2Ugb2YgYW4gaWRpb3N5bmNy
YWN0aWMgQVBJLgorVGhhdCBBUEkgbGltaXRlZCBXaW5kb3dzIENvbnNvbGUgZGlzcGxheSBvZiBF
bWFjcyB0byAxNiBiYXNpYyBjb2xvcnMuCitXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgV2luZG93
cyBUZXJtaW5hbCwgTWljcm9zb2Z0IGltcGxlbWVudGVkCitzdXBwb3J0IGZvciBBTlNJIGNvbnRy
b2wgc2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUgVlQxMDAgYW5kIFh0ZXJtLAorYW5kIDI0LWJp
dCBSQkcgY29sb3IgZGlzcGxheS4KKworICBUaGUgdmFyaWFibGUgQGNvZGV7dzMyLXVzZS12aXJ0
dWFsLXRlcm1pbmFsLXNlcXVlbmNlc30gZGV0ZXJtaW5lcword2hldGhlciB0aGlzIG5ld2VyIG1l
Y2hhbmlzbSBpcyB1c2VkIGZvciBkaXNwbGF5LCBvciB0aGUgb2xkZXIgb25lLgorSXQgaXMgYXV0
b21hdGljYWxseSBzZXQgYmFzZWQgb24geW91ciB0ZXJtaW5hbCdzIGNhcGFiaWxpdGllcyBvbgor
c3RhcnR1cC4gSWYgaXQgaXMgbm9uLW5pbCwgRW1hY3Mgd2lsbCB1c2UgQU5TSSBlc2NhcGUgc2Vx
dWVuY2VzIGZvcgorY3Vyc29yIGFuZCBjb2xvciBkaXNwbGF5LiBCeSBkZWZhdWx0LCAyNC1iaXQg
UkdCIGNvbG9yIHdpbGwgYmUgdXNlZCwKK2J1dCBvdGhlciAoOCwgMTYsIDI1NikgY29sb3Igc3Bh
Y2VzIG1heSBiZSB1c2VkLCBieSBwYXNzaW5nIHRoZQorQGNvZGV7LS1jb2xvcn0gY29tbWFuZCBs
aW5lIGFyZ3VtZW50LCBvciBzZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUKK0Bjb2Rle3R0eS1jb2xv
ci1tb2RlfSBmcmFtZSBwYXJhbWV0ZXIuCisKKyAgQW55IHRpbWUgQGNvZGV7dzMyLXVzZS12aXJ0
dWFsLXRlcm1pbmFsLXNlcXVlbmNlc30gaXMgc2V0IG1hbnVhbGx5LAordGhlIGNoYW5nZSBpbiB2
YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBjYWxsIHRvCitAY29kZXtz
ZXQtZnJhbWUtcGFyYW1ldGVyfSAocmUpc2V0dGluZyBAY29kZXsndHR5LWNvbG9yLW1vZGV9LCBv
cgorYXQgdmVyeSBsZWFzdCwgYSBjYWxsIHRvIEBjb2Rle3czMmNvbi1zZXQtdXAtaW5pdGlhbC1m
cmFtZS1mYWNlc30uCisKIEBpZm5vdHRleAogQGluY2x1ZGUgbXNkb3MteHRyYS50ZXhpCiBAZW5k
IGlmbm90dGV4CmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IDA1OTI3MGJm
ZjQ2Li5mMzdhY2ZhZjA4MCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAg
LTMyOTksNiArMzI5OSwxOCBAQCBBY2NvcmRpbmdseSwgd2UgaGF2ZSByZXZpc2VkIG91ciByZWNv
bW1lbmRhdGlvbnMgZm9yIGEgc3VpdGFibGUgREpHUFAKIHRvb2xjaGFpbiB0byBHQ0MgMTQuMi4w
IGFuZCBCaW51dGlscyAyLjM1LjEgaW4gbGlldSBvZiBHQ0MgMy40LnggYW5kCiBCaW51dGlscyAy
LjI2LgogCisrKysKKyoqIFdpbmRvd3MgVGVybWluYWwgbm93IGRpc3BsYXlzIDI0LWJpdCBSR0Iu
CitQcmV2aW91c2x5LCB0ZXJtaW5hbCBzZXNzaW9ucyBvbiBXaW5kb3dzIHN1cHBvcnRlZCBkaXNw
bGF5IG9mIDE2Citjb2xvcnMuIFRoZXJlIGlzIG5vdyBzdXBwb3J0IGZvciAyNTYgYW5kIDI0LWJp
dCBSR0IgY29sb3IuIFRoZSBuZXcKK21lY2hhbmlzbSB3aWxsIGJlIGVuYWJsZWQgYXV0b21hdGlj
YWxseSB3aGVuIHN1cHBvcnRlZC4gSXQgZGVmYXVsdHMKK3RvIDI0LWJpdCBSR0IgY29sb3IsIGJ1
dCBjYW4gYmUgc2V0IHRvIDgsIDE2LCAyNTYsIG9yICcyNGJpdCcgYnkKK3Bhc3NpbmcgdGhlICct
LWNvbG9yJyBmbGFnIG9yIHNldHRpbmcgdGhlICd0dHktY29sb3ItbW9kZScgZnJhbWUKK3BhcmFt
ZXRlci4gSXQgY2FuIGJlIGRpc2FibGVkL2VuYWJsZWQgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUK
Kyd3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzJy4KKworU2VlIHRoZSBtYW51YWwg
ZW50cnkgc3BlY2lmaWMgdG8gTVMtV2luZG93cyBmb3IgbW9yZSBkZXRhaWxzLgorCiAMCiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCmRpZmYgLS1naXQgYS9s
aXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCBiL2xpc3AvdGVybS90dHktY29sb3JzLmVsCmluZGV4IGRm
ZDIwN2Q3MWMxLi4xYmEwNDVjOGI3MSAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3R0eS1jb2xvcnMu
ZWwKKysrIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKQEAgLTc2NCw3ICs3NjQsOCBAQAogICAg
IChhdXRvIC4gMCkKICAgICAoYW5zaTggLiA4KQogICAgIChhbHdheXMgLiA4KQotICAgICh5ZXMg
LiA4KSkKKyAgICAoeWVzIC4gOCkKKyAgICAoMjRiaXQgLiAxNjc3NzIxNikpCiAgICJBbiBhbGlz
dCBvZiBzdXBwb3J0ZWQgc3RhbmRhcmQgdHR5IGNvbG9yIG1vZGVzIGFuZCB0aGVpciBhbGlhc2Vz
LiIpCiAKIChkZWZ1biB0dHktY29sb3ItYWxpc3QgKCZvcHRpb25hbCBfZnJhbWUpCmRpZmYgLS1n
aXQgYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbCBiL2xpc3AvdGVybS93MzJjb25zb2xlLmVsCmlu
ZGV4IDFiNDRkYTQ4YmY3Li41ZmIyZDZmMDgzNSAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3czMmNv
bnNvbGUuZWwKKysrIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKQEAgLTI1LDcgKzI1LDYgQEAK
IDs7OyBDb2RlOgogCiA7OyBXMzIgdXNlcyBkaWZmZXJlbnQgY29sb3IgaW5kZXhlcyB0aGFuIHN0
YW5kYXJkOgotCiAoZGVmdmFyIHczMi10dHktc3RhbmRhcmQtY29sb3JzCiAgICcoKCJibGFjayIg
ICAgICAgICAgMCAgICAgMCAgICAgMCAgICAgMCkKICAgICAoImJsdWUiICAgICAgICAgICAxICAg
ICAwICAgICAwIDUyNDgwKSA7IE1lZGl1bUJsdWUKQEAgLTQ1LDExICs0NCw4MSBAQAogICAgICgi
d2hpdGUiICAgICAgICAgMTUgNjU1MzUgNjU1MzUgNjU1MzUpKQogICAiQSBsaXN0IG9mIFZHQSBj
b25zb2xlIGNvbG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKIAor
OzsgV2hlbiB1c2luZyBWVCBzZXF1ZW5jZXMgZm9yIGNvbG9yLCB1c2UgeHRlcm0tbGlrZSBpbmRp
Y2VzCisoZGVmdmFyIHczMi10dHktdmlydHVhbC10ZXJtaW5hbC1iYXNlLWNvbG9ycworICAnKCgi
YmxhY2siICAgICAgICAgIDAgICAgIDAgICAgIDAgICAgIDApCisgICAgKCJyZWQiICAgICAgICAg
ICAgMSA0NTU2OCAgODcwNCAgODcwNCkgOyBGaXJlQnJpY2sKKyAgICAoImdyZWVuIiAgICAgICAg
ICAyICA4NzA0IDM1NTg0ICA4NzA0KSA7IEZvcmVzdEdyZWVuCisgICAgKCJicm93biIgICAgICAg
ICAgMyA0MDk2MCAyMDk5MiAxMTUyMCkgOyBTaWVubmEKKyAgICAoImJsdWUiICAgICAgICAgICA0
ICAgICAwICAgICAwIDUyNDgwKSA7IE1lZGl1bUJsdWUKKyAgICAoIm1hZ2VudGEiICAgICAgICA1
IDM1NTg0ICAgICAwIDM1NTg0KSA7IERhcmtNYWdlbnRhCisgICAgKCJjeWFuIiAgICAgICAgICAg
NiAgICAgMCA1MjczNiA1MzUwNCkgOyBEYXJrVHVycXVvaXNlCisgICAgKCJsaWdodGdyYXkiICAg
ICAgNyA0ODY0MCA0ODY0MCA0ODY0MCkgOyBHcmF5CisgICAgKCJkYXJrZ3JheSIgICAgICAgOCAy
NjExMiAyNjExMiAyNjExMikgOyBHcmF5NDAKKyAgICAoImxpZ2h0cmVkIiAgICAgICA5IDY1NTM1
ICAgICAwICAgICAwKSA7IFJlZAorICAgICgibGlnaHRncmVlbiIgICAgMTAgICAgIDAgNjU1MzUg
ICAgIDApIDsgR3JlZW4KKyAgICAoInllbGxvdyIgICAgICAgIDExIDY1NTM1IDY1NTM1ICAgICAw
KSA7IFllbGxvdworICAgICgibGlnaHRibHVlIiAgICAgMTIgICAgIDAgICAgIDAgNjU1MzUpIDsg
Qmx1ZQorICAgICgibGlnaHRtYWdlbnRhIiAgMTMgNjU1MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50
YQorICAgICgibGlnaHRjeWFuIiAgICAgMTQgICAgIDAgNjU1MzUgNjU1MzUpIDsgQ3lhbgorICAg
ICgid2hpdGUiICAgICAgICAgMTUgNjU1MzUgNjU1MzUgNjU1MzUpKQorICAiQSBsaXN0IG9mIFZH
QSBjb25zb2xlIGNvbG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikK
KwogKGRlY2xhcmUtZnVuY3Rpb24geC1zZXR1cC1mdW5jdGlvbi1rZXlzICJ0ZXJtL2NvbW1vbi13
aW4iIChmcmFtZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBnZXQtc2NyZWVuLWNvbG9yICJ3MzJjb25z
b2xlLmMiICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gdzMyLWdldC1jb25zb2xlLWNvZGVwYWdlICJ3
MzJwcm9jLmMiICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gdzMyLWdldC1jb25zb2xlLW91dHB1dC1j
b2RlcGFnZSAidzMycHJvYy5jIiAoKSkKIAorKGRlZnVuIHczMmNvbi1kZWZpbmUtYmFzZS1jb2xv
cnMgKCkKKyAgIkRlZmluZXMgYmFzZSAxNi1jb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgor
ICAobGV0KiAoKGNvbG9ycyAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcwor
ICAgICAgICAgICAgICAgICAgICAgdzMyLXR0eS12aXJ0dWFsLXRlcm1pbmFsLWJhc2UtY29sb3Jz
CisgICAgICAgICAgICAgICAgICAgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpKQorICAgICAgICAg
KG5iYXNlIChsZW5ndGggY29sb3JzKSkKKyAgICAgICAgIChjb2xvciAoY2FyIGNvbG9ycykpKQor
ICAgIChwcm9nbiAod2hpbGUgY29sb3JzCisgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUg
KGNhciBjb2xvcikgKGNhZHIgY29sb3IpIChjZGRyIGNvbG9yKSkKKyAgICAgICAgICAgICAoc2V0
cSBjb2xvcnMgKGNkciBjb2xvcnMpCisgICAgICAgICAgICAgICAgICAgY29sb3IgIChjYXIgY29s
b3JzKSkpCisgICAgICAgICAgIG5iYXNlKSkpCisKKzs7IE5vdGU6IHR0eS1jb2xvci1kZWZpbmUg
c3dhcHMgcGFzc2VkIGluZGV4IGZvciBwaXhlbCBvbiAyNGJpdCB0ZXJtaW5hbAorOzsgU28sIHdl
IG5lZWQgdGhpcyBmdW5jdGlvbiB0byAicmVjb3ZlciIgdGhlIHRlcm1pbmFsJ3MgbmF0aXZlIG1h
cHBpbmcKKyhkZWZ1biB3MzJjb24tZ2V0LXBpeGVsIChpbmRleCkKKyAgIkNvbnZlcnQgYSBiYXNl
LWNvbG9yIGluZGV4IGludG8gYSBwaXhlbCAoaW5kZXggaW50byAyNGJpdCBtYXApIgorICAobGV0
ICgoY29sb3IgKG50aCBpbmRleCB3MzItdHR5LXZpcnR1YWwtdGVybWluYWwtYmFzZS1jb2xvcnMp
KSkKKyAgICAob3IgKHR0eS1jb2xvci0yNGJpdCAoY2RkciBjb2xvcikpIGluZGV4KSkpCisKKyhk
ZWZ1biB3MzJjb24tZGVmaW5lLTI1Ni1jb2xvcnMgKCkKKyAgIkRlZmluZXMgMjU2LWNvbG9yIHNw
YWNlIGZvciB3MzIgY29uc29sZS4iCisgIChsZXQgKChyIDApIChiIDApIChnIDApCisgICAgICAg
IChuICgtIDI1NiAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVy
dC10by0xNmJpdCAobGFtYmRhIChwcmltKSAobG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQor
ICAgICh3aGlsZSAoPiBuIDI0KSA7IG5vbi1ncmV5CisgICAgICAobGV0ICgoaSAoLSAyNTYgbikp
CisgICAgICAgICAgICAoYyAobWFwY2FyIGNvbnZlcnQtdG8tMTZiaXQKKyAgICAgICAgICAgICAg
ICAgICAgICAgKG1hcGNhciAobGFtYmRhICh4KSAoaWYgKHplcm9wIHgpIDAgKCsgKCogeCA0MCkg
NTUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCByIGcgYikpKSkpCisg
ICAgICAgICh0dHktY29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAg
ICAgKHNldHEgYiAoMSsgYikpCisgICAgICAod2hlbiAoPiBiIDUpIChzZXRxIGcgKDErIGcpIGIg
MCkpCisgICAgICAod2hlbiAoPiBnIDUpIChzZXRxIHIgKDErIHIpIGcgMCkpCisgICAgICAoc2V0
cSBuICgxLSBuKSkpCisgICAgKHdoaWxlICg+IG4gMCkgOyBhbGwtZ3JleQorICAgICAgKGxldCog
KChpICgtIDI1NiBuKSkKKyAgICAgICAgICAgICAodiAoZnVuY2FsbCBjb252ZXJ0LXRvLTE2Yml0
ICgrIDggKCogKC0gMjQgbikgMTApKSkpCisgICAgICAgICAgICAgKGMgKGxpc3QgdiB2IHYpKSkK
KyAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGZvcm1hdCAiY29sb3ItJWQiIGkpIGkgYykpCisg
ICAgICAoc2V0cSBuICgxLSBuKSkpKSkKKworKGRlZnVuIHczMmNvbi1kZWZpbmUtMjRiaXQtY29s
b3JzICgpCisgICJEZWZpbmVzIDI0LWJpdCBjb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgor
ICAobGV0ICgoaSAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgIChtYXBjIChsYW1i
ZGEgKGMpICh1bmxlc3MgKGFzc29jIChjYXIgYykgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCisg
ICAgICAgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjKSBpIChjZHIgYykpCisg
ICAgICAgICAgICAgICAgICAgKHNldHEgaSAoMSsgaSkpKSkKKyAgICAgICAgICBjb2xvci1uYW1l
LXJnYi1hbGlzdCkpKQorCiAoZGVmdW4gdGVybWluYWwtaW5pdC13MzJjb25zb2xlICgpCiAgICJU
ZXJtaW5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdzMyIGNvbnNvbGUuIgogICA7OyBT
aGFyZSBmdW5jdGlvbiBrZXkgaW5pdGlhbGl6YXRpb24gd2l0aCB3MzIgZ3VpIGZyYW1lcwpAQCAt
NjksMTggKzEzOCwyNiBAQAogICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwg
ZW5jb2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0CiAgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5pY29k
ZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFibGUuCiAgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUt
ZGlzcGxheSkpKQotICAobGV0KiAoKGNvbG9ycyB3MzItdHR5LXN0YW5kYXJkLWNvbG9ycykKLSAg
ICAgICAgIChjb2xvciAoY2FyIGNvbG9ycykpKQorICAodzMyY29uLXNldC11cC1pbml0aWFsLWZy
YW1lLWZhY2VzKQorICAocnVuLWhvb2tzICd0ZXJtaW5hbC1pbml0LXczMi1ob29rKSkKKworKGRl
ZnVuIHczMmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcyAoKQorICAiU2V0IHVwIGluaXRp
YWwgZmFjZSBjb2xvciBzY2hlbWUgZHluYW1pY2FsbHkgYmFzZWQgb24gdGhlIG51bWJlciBvZgor
ZGlzcGxheSBjb2xvcnMgYW5kIHRoZSB2YWx1ZSBvZiBgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFs
LXNlcXVlbmNlcycuIgogICAodHR5LWNvbG9yLWNsZWFyKQotICAgICh3aGlsZSBjb2xvcnMKLSAg
ICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xv
cikpCi0gICAgICAoc2V0cSBjb2xvcnMgKGNkciBjb2xvcnMpCi0gICAgICAgICAgICBjb2xvciAo
Y2FyIGNvbG9ycykpKSkKKyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29sb3ItY2VsbHMpKSkK
KyAgICAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworICAgICAgICAoY29u
ZCAoKD0gbmNvbG9ycyAxNjc3NzIxNikgKHczMmNvbi1kZWZpbmUtMjRiaXQtY29sb3JzKSkKKyAg
ICAgICAgICAgICAgKCg9IG5jb2xvcnMgMjY1ICAgICAgICh3MzJjb24tZGVmaW5lLTI1Ni1jb2xv
cnMpKSkKKyAgICAgICAgICAgICAgKHQgICAgICAgICAgICAgICAgICAgICh3MzJjb24tZGVmaW5l
LWJhc2UtY29sb3JzKSkpCisgICAgICAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpCiAgICAg
KGNsZWFyLWZhY2UtY2FjaGUpCiAgICAgOzsgRmlndXJlIG91dCB3aGF0IGFyZSB0aGUgY29sb3Jz
IG9mIHRoZSBjb25zb2xlIHdpbmRvdywgYW5kIHNldCB1cAogICAgIDs7IHRoZSBiYWNrZ3JvdW5k
LW1vZGUgY29ycmVzcG9uZGluZ2x5LgogICAgIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2Ny
ZWVuLWNvbG9yKSkKLQkgKGJnIChjYWRyIHNjcmVlbi1jb2xvcikpCisgICAgICAgICAgIChiYXNl
LWluZGV4IChjYWRyIHNjcmVlbi1jb2xvcikpCisgICAgICAgICAgIChiZy1waXhlbCAodzMyY29u
LWdldC1waXhlbCBiYXNlLWluZGV4KSkKKyAgICAgICAgICAgKGJnIChpZiAoPSBuY29sb3JzIDE2
Nzc3MjE2KSBiZy1waXhlbCBiYXNlLWluZGV4KSkKICAgICAgICAgICAgKGRlc2NyICh0dHktY29s
b3ItYnktaW5kZXggYmcpKQogICAgICAgICAgICByIGcgYiBiZy1tb2RlKQogICAgICAgKHNldHEg
ciAobnRoIDIgZGVzY3IpCkBAIC04OSw5ICsxNjYsOCBAQAogICAgICAgKGlmICg8ICgrIHIgZyBi
KSAoKiAuNiAoKyA2NTUzNSA2NTUzNSA2NTUzNSkpKQogICAgICAgICAgIChzZXRxIGJnLW1vZGUg
J2RhcmspCiAgICAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkKLSAgICAoc2V0LXRlcm1pbmFs
LXBhcmFtZXRlciBuaWwgJ2JhY2tncm91bmQtbW9kZSBiZy1tb2RlKSkKLSAgKHR0eS1zZXQtdXAt
aW5pdGlhbC1mcmFtZS1mYWNlcykKLSAgKHJ1bi1ob29rcyAndGVybWluYWwtaW5pdC13MzItaG9v
aykpCisgICAgICAoc2V0LXRlcm1pbmFsLXBhcmFtZXRlciBuaWwgJ2JhY2tncm91bmQtbW9kZSBi
Zy1tb2RlKSkpCisgICh0dHktc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMpKQogCiAocHJvdmlk
ZSAndGVybS93MzJjb25zb2xlKQogCmRpZmYgLS1naXQgYS9zcmMvdGVybS5jIGIvc3JjL3Rlcm0u
YwppbmRleCBhMWUzZjYzMTJjNi4uZWMwYjc5YTdmNmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMK
KysrIGIvc3JjL3Rlcm0uYwpAQCAtNzMsNyArNzMsNiBAQCBzdGF0aWMgdm9pZCBjbGVhcl90dHlf
aG9va3MgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwpOwogc3RhdGljIHZvaWQgc2V0X3R0eV9o
b29rcyAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCk7CiBzdGF0aWMgdm9pZCBkaXNzb2NpYXRl
X2lmX2NvbnRyb2xsaW5nX3R0eSAoaW50IGZkKTsKIHN0YXRpYyB2b2lkIGRlbGV0ZV90dHkgKHN0
cnVjdCB0ZXJtaW5hbCAqKTsKLQogI2VuZGlmIC8qICFIQVZFX0FORFJPSUQgKi8KIAogc3RhdGlj
IEFWT0lEIG1heWJlX2ZhdGFsIChib29sLCBzdHJ1Y3QgdGVybWluYWwgKiwgY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosCkBAIC0zNDYsMTAgKzM0NSwxMCBAQCB0dHlfaGlkZV9jdXJzb3IgKHN0
cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkpCiB7CiAgIGlmICh0dHktPmN1cnNvcl9oaWRkZW4g
PT0gMCkKICAgICB7Ci0gICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAxOwogI2lmZGVmIFdJTkRP
V1NOVAogICAgICAgdzMyY29uX2hpZGVfY3Vyc29yICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vy
c29yX2hpZGRlbiA9IDE7CiAgICAgICBPVVRQVVRfSUYgKHR0eSwgdHR5LT5UU19jdXJzb3JfaW52
aXNpYmxlKTsKICNlbmRpZgogICAgIH0KQEAgLTM2MywxMCArMzYyLDEwIEBAIHR0eV9zaG93X2N1
cnNvciAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSkKIHsKICAgaWYgKHR0eS0+Y3Vyc29y
X2hpZGRlbikKICAgICB7Ci0gICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAwOwogI2lmZGVmIFdJ
TkRPV1NOVAogICAgICAgdzMyY29uX3Nob3dfY3Vyc29yICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+
Y3Vyc29yX2hpZGRlbiA9IDA7CiAgICAgICBPVVRQVVRfSUYgKHR0eSwgdHR5LT5UU19jdXJzb3Jf
bm9ybWFsKTsKICAgICAgIGlmICh2aXNpYmxlX2N1cnNvcikKICAgICAgICAgT1VUUFVUX0lGICh0
dHksIHR0eS0+VFNfY3Vyc29yX3Zpc2libGUpOwpAQCAtMjIwNyw3ICsyMjA2LDcgQEAgVEVSTUlO
QUwgZG9lcyBub3QgcmVmZXIgdG8gYSB0ZXh0IHRlcm1pbmFsLiAgKi8pCiAgIHJldHVybiBtYWtl
X2ZpeG51bSAodCA/IHQtPmRpc3BsYXlfaW5mby50dHktPlROX21heF9jb2xvcnMgOiAwKTsKIH0K
IAotI2lmICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVm
aW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAogLyogRGVjbGFyZSBoZXJlIHJh
dGhlciB0aGFuIGluIHRoZSBmdW5jdGlvbiwgYXMgaW4gdGhlIHJlc3Qgb2YgRW1hY3MsCiAgICB0
byB3b3JrIGFyb3VuZCBhbiBIUFVYIGNvbXBpbGVyIGJ1ZyAoPykuIFNlZQpAQCAtMjI0Niw3ICsy
MjQ1LDcgQEAgdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzIChzdHJ1Y3QgdHR5X2Rpc3Bs
YXlfaW5mbyAqdHR5LCBib29sIHNhdmUpCiAgICBNT0RFJ3MgdmFsdWUgaXMgZ2VuZXJhbGx5IHRo
ZSBudW1iZXIgb2YgY29sb3JzIHdoaWNoIHdlIHdhbnQgdG8KICAgIHN1cHBvcnQ7IHplcm8gbWVh
bnMgc2V0IHVwIGZvciB0aGUgZGVmYXVsdCBjYXBhYmlsaXRpZXMsIHRoZSBvbmVzCiAgICB3ZSBz
YXcgYXQgaW5pdF90dHkgdGltZTsgLTEgbWVhbnMgdHVybiBvZmYgY29sb3Igc3VwcG9ydC4gICov
Ci1zdGF0aWMgdm9pZAordm9pZAogdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5
X2luZm8gKnR0eSwgaW50IG1vZGUpCiB7CiAgIC8qIENhbm9uaWNhbGl6ZSBhbGwgbmVnYXRpdmUg
dmFsdWVzIG9mIE1PREUuICAqLwpAQCAtMjI2NSwxNyArMjI2NCw0MCBAQCB0dHlfc2V0dXBfY29s
b3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKIAl0dHlfZGVmYXVs
dF9jb2xvcl9jYXBhYmlsaXRpZXMgKHR0eSwgMCk7CiAJYnJlYWs7CiAgICAgICBjYXNlIDg6IC8q
IDggc3RhbmRhcmQgQU5TSSBjb2xvcnMgKi8KLQl0dHktPlRTX29yaWdfcGFpciA9ICJcMDMzWzBt
IjsKKwl0dHktPlRTX29yaWdfcGFpciA9ICJceDFiWzBtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3Jv
dW5kID0gIlx4MWJbMyVkbSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlZG0i
OwogI2lmZGVmIFRFUk1JTkZPCi0JdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlcDEl
ZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0JXAxJWRtIjsKLSNlbHNlCi0J
dHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tn
cm91bmQgPSAiXDAzM1s0JWRtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMyVw
MSVkbSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlcDElZG0iOworI2VsaWYg
V0lORE9XU05UCisJdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgxYlszOW1ceDFiWzQ5bSI7CisJdHR5
LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91
bmQgPSAiXHgxYlslbHVtIjsKICNlbmRpZgogCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDg7CiAJdHR5
LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CiAJYnJlYWs7CisjaWZkZWYgV0lORE9XU05UCisgICAg
ICBjYXNlIDE2OgorCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHkt
PlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UTl9tYXhfY29sb3JzID0g
MTY7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDI1
NjoKKwl0dHktPlROX21heF9jb2xvcnMgPSAyNTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9
ICJceDFiWzM4OzU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzU7
JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNl
IDE2Nzc3MjE2OgorCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2Nzc3MjE2OworCXR0eS0+VFNfc2V0
X2ZvcmVncm91bmQgPSAiXHgxYlszODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFj
a2dyb3VuZCA9ICJceDFiWzQ4OzI7JWx1OyVsdTslbHVtIjsKKwl0dHktPlROX25vX2NvbG9yX3Zp
ZGVvID0gMDsKKwlicmVhazsKKyNlbmRpZgogICAgIH0KIH0KIApAQCAtMjMwOCwxMSArMjMzMCwx
NSBAQCBzZXRfdHR5X2NvbG9yX21vZGUgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIHN0
cnVjdCBmcmFtZSAqZikKICAgICAgIHR0eS0+cHJldmlvdXNfY29sb3JfbW9kZSA9IG1vZGU7CiAg
ICAgICB0dHlfc2V0dXBfY29sb3JzICh0dHkgLCBtb2RlKTsKICAgICAgIC8qICBUaGlzIHJlY29t
cHV0ZXMgYWxsIHRoZSBmYWNlcyBnaXZlbiB0aGUgbmV3IGNvbG9yIGRlZmluaXRpb25zLiAqLwor
I2lmZGVmIFdJTkRPV1NOVAorICAgICAgc2FmZV9jYWxsbiAoUXczMmNvbl9zZXRfdXBfaW5pdGlh
bF9mcmFtZV9mYWNlcyk7CisjZWxzZQogICAgICAgc2FmZV9jYWxsbiAoUXR0eV9zZXRfdXBfaW5p
dGlhbF9mcmFtZV9mYWNlcyk7CisjZW5kaWYKICAgICB9CiB9CiAKLSNlbmRpZiAvKiAhRE9TX05U
ICYmICFIQVZFX0FORFJPSUQgKi8KKyNlbmRpZiAvKiAhTVNET1MgJiYgIUhBVkVfQU5EUk9JRCAq
LwogCiBjaGFyICoKIHR0eV90eXBlX25hbWUgKExpc3BfT2JqZWN0IHRlcm1pbmFsKQpAQCAtNDU4
Niw4ICs0NjEyLDggQEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4
cG9ydCBURVJNJyAoQy1zaGVsbDpcblwKIAkJIHx8ICgoYmcgPSBnZXRlbnYgKCJDT0xPUlRFUk0i
KSkgIT0gTlVMTAogCQkgICAgICYmIHN0cmNhc2VjbXAgKGJnLCAidHJ1ZWNvbG9yIikgPT0gMCkp
CiAJICB7Ci0JICAgIHR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXDAzM1slPyVwMSV7OH0lPCV0
MyVwMSVkJWUzODsyOyVwMSV7NjU1MzZ9JS8lZDslcDElezI1Nn0lLyV7MjU1fSUmJWQ7JXAxJXsy
NTV9JSYlZCU7bSI7Ci0JICAgIHR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1slPyVwMSV7
OH0lPCV0NCVwMSVkJWU0ODsyOyVwMSV7NjU1MzZ9JS8lZDslcDElezI1Nn0lLyV7MjU1fSUmJWQ7
JXAxJXsyNTV9JSYlZCU7bSI7CisJICAgIHR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlsl
PyVwMSV7OH0lPCV0MyVwMSVkJWUzODsyOyVwMSV7NjU1MzZ9JS8lZDslcDElezI1Nn0lLyV7MjU1
fSUmJWQ7JXAxJXsyNTV9JSYlZCU7bSI7CisJICAgIHR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAi
XHgxYlslPyVwMSV7OH0lPCV0NCVwMSVkJWU0ODsyOyVwMSV7NjU1MzZ9JS8lZDslcDElezI1Nn0l
LyV7MjU1fSUmJWQ7JXAxJXsyNTV9JSYlZCU7bSI7CiAJICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9
IDE2Nzc3MjE2OwogCSAgfQogICAgICAgfQpAQCAtNDY0MSw2ICs0NjY3LDI3IEBAIHVzZSB0aGUg
Qm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6XG5c
CiAKICAgICBpbml0aWFsaXplX3czMl9kaXNwbGF5ICh0ZXJtaW5hbCwgJndpZHRoLCAmaGVpZ2h0
KTsKIAorICAgIC8qIDI0Yml0IFJHQiBzdXBwb3J0IGluIFdpbmRvd3MgKDEwKykgVGVybWluYWwg
YW5kIENvbnNvbGUgSG9zdAorICAgICAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11
cy93aW5kb3dzL2NvbnNvbGUvY29uc29sZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcyAqLwor
ICAgIHR0eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9
IDE2Nzc3MjE2OworICAgIHR0eS0+VFNfb3JpZ19wYWlyID0gIlx4MWJbMzltXHgxYls0OW0iOwor
ICAgIHR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlszODsyOyVsdTslbHU7JWx1bSI7Cisg
ICAgdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzI7JWx1OyVsdTslbHVtIjsKKwor
ICAgIC8qIFNhdmUgZGVmYXVsdCBjb2xvciBjYXBhYmlsaXRpZXMgKi8KKyAgICB0dHlfZGVmYXVs
dF9jb2xvcl9jYXBhYmlsaXRpZXMgKHR0eSwgMSk7CisKKyAgICB0dHktPlRTX2VudGVyX2JvbGRf
bW9kZSA9ICJceDFiWzFtIjsKKyAgICB0dHktPlRTX2VudGVyX2l0YWxpY19tb2RlID0gIlx4MWJb
M20iOworICAgIHR0eS0+VFNfZW50ZXJfc3RyaWtlX3Rocm91Z2hfbW9kZSA9ICJceDFiWzltIjsK
KyAgICB0dHktPlRTX2VudGVyX3VuZGVybGluZV9tb2RlID0gIlx4MWJbNG0iOworICAgIHR0eS0+
VFNfZXhpdF91bmRlcmxpbmVfbW9kZSA9ICJceDFiWzI0bSI7CisgICAgdHR5LT5UU19lbnRlcl9y
ZXZlcnNlX21vZGUgPSAiXHgxYls3bSI7CisgICAgdHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2Rl
ID0gIlx4MWJbMG0iOworICAgIHR0eS0+VFNfY3Vyc29yX2ludmlzaWJsZSA9ICJceDFiWz8yNWwi
OworICAgIHR0eS0+VFNfY3Vyc29yX3Zpc2libGUgPSAiXHgxYls/MjVoIjsKKwogICAgIEZyYW1l
Um93cyAodHR5KSA9IGhlaWdodDsKICAgICBGcmFtZUNvbHMgKHR0eSkgPSB3aWR0aDsKICAgICB0
dHktPnNwZWNpZmllZF93aW5kb3cgPSBoZWlnaHQ7CkBAIC00Njg2LDcgKzQ3MzMsNiBAQCB1c2Ug
dGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdURVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxs
OlxuXAogICAgICBkb24ndCB0aGluayB3ZSdyZSBsb3NpbmcgYW55dGhpbmcgYnkgdHVybmluZyBp
dCBvZmYuICAqLwogICB0dHktPmxpbmVfaW5zX2RlbF9vayA9IDA7CiAKLSAgdHR5LT5UTl9tYXhf
Y29sb3JzID0gMTY7ICAvKiBNdXN0IGJlIG5vbi16ZXJvIGZvciB0dHktZGlzcGxheS1jb2xvci1w
LiAgKi8KICNlbmRpZgkvKiBET1NfTlQgKi8KIAogI2lmZGVmIEhBVkVfR1BNCkBAIC01MjAyLDEx
ICs1MjQ4LDExIEBAIG5vbi1uaWwgdG8gZW5hYmxlIHRoaXMgb3B0aW1pemF0aW9uLiAgKi8pOwog
ICBkZWZzdWJyICgmU3R0eV9kaXNwbGF5X3BpeGVsX3dpZHRoKTsKICAgZGVmc3ViciAoJlN0dHlf
ZGlzcGxheV9waXhlbF9oZWlnaHQpOwogCi0jaWYgIWRlZmluZWQgRE9TX05UICYmICFkZWZpbmVk
IEhBVkVfQU5EUk9JRAorI2lmICFkZWZpbmVkIE1TRE9TICYmICFkZWZpbmVkIEhBVkVfQU5EUk9J
RAogICBkZWZhdWx0X29yaWdfcGFpciA9IE5VTEw7CiAgIGRlZmF1bHRfc2V0X2ZvcmVncm91bmQg
PSBOVUxMOwogICBkZWZhdWx0X3NldF9iYWNrZ3JvdW5kID0gTlVMTDsKLSNlbmRpZiAvKiAhRE9T
X05UICYmICFIQVZFX0FORFJPSUQgKi8KKyNlbmRpZiAvKiAhTVNET1MgJiYgIUhBVkVfQU5EUk9J
RCAqLwogCiAjaWZuZGVmIEhBVkVfQU5EUk9JRAogICBlbmNvZGVfdGVybWluYWxfc3JjID0gTlVM
TDsKZGlmZiAtLWdpdCBhL3NyYy90ZXJtY2hhci5oIGIvc3JjL3Rlcm1jaGFyLmgKaW5kZXggZWNl
M2E2NzZjNmUuLjEzYWQyZjBhNzJhIDEwMDY0NAotLS0gYS9zcmMvdGVybWNoYXIuaAorKysgYi9z
cmMvdGVybWNoYXIuaApAQCAtMjQ5LDQgKzI0OSw2IEBAIHN0cnVjdCBpbnB1dF9ldmVudDsKIGV4
dGVybiBMaXNwX09iamVjdCB0dHlfaGFuZGxlX3RhYl9iYXJfY2xpY2sgKHN0cnVjdCBmcmFtZSAq
LCBpbnQsIGludCwgYm9vbCwKIAkJCQkJICAgICBzdHJ1Y3QgaW5wdXRfZXZlbnQgKik7CiAKK2V4
dGVybiB2b2lkIHR0eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHks
IGludCBtb2RlKTsKKwogI2VuZGlmIC8qIEVNQUNTX1RFUk1DSEFSX0ggKi8KZGlmZiAtLWdpdCBh
L3NyYy93MzJjb25zb2xlLmMgYi9zcmMvdzMyY29uc29sZS5jCmluZGV4IDFiY2EwY2FkZmY5Li5k
YWQxMTRhMDZiNiAxMDA2NDQKLS0tIGEvc3JjL3czMmNvbnNvbGUuYworKysgYi9zcmMvdzMyY29u
c29sZS5jCkBAIC0xOSwxMiArMTksNjIgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3Qs
IHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIC8qCiAgICBUaW0gRmxl
ZWhhcnQgKGFwb2xsb0BvbmxpbmUuY29tKQkJMS0xNy05MgogICAgR2VvZmYgVm9lbGtlciAodm9l
bGtlckBjcy53YXNoaW5ndG9uLmVkdSkJOS0xMi05MworICAgRXdhbiBUb3duc2hlbmQgKGV3YW5A
ZXRvd24uZGV2KSAgICAgICAgICAgICAgMjAyNS0wOAorCisgICBjLiB+IDIwMjU6CisgICAqIDI0
Yml0IFJHQiBzdXBwb3J0IGluIFdpbmRvd3MgKDEwKykgVGVybWluYWwKKyAgICogTWljcm9zb2Z0
IG1vdmluZyBhd2F5IGZyb20gaWRpb3N5bmNyYXRpYyBBUEksIHRvd2FyZCBBTlNJIGNvbnRyb2wg
c2VxdWVuY2VzCisKKyAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dz
L2NvbnNvbGUvY29uc29sZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworCisgICBGb3IgcmVm
ZXJlbmNlIChtb3JlIGRlZmluZWQgYXQgbGluayBhYm92ZSk6CisKKyAgICogImNsZWFyIiA6PSBv
dmVyd3JpdGUgd2l0aCBzcGFjZSBjaGFyYWN0ZXIKKworICAgXHgxYlswSiA9PiBjbGVhciBjdXJz
b3IgKGluY2x1c2l2ZSkgdG8gZW5kIG9mIHNjcmVlbgorICAgXHgxYlsxSiA9PiBjbGVhciBiZWdp
bm5pbmcgb2Ygc2NyZWVuIHRvIGN1cnNvciAoaW5jbHVzaXZlKQorICAgXHgxYlsySiA9PiBjbGVh
ciBlbnRpcmUgc2NyZWVuIChleGNsdWRpbmcgc2Nyb2xsYmFjayBhcmVhKQorICAgXHgxYlszSiA9
PiBjbGVhciBzY3JvbGxiYWNrIGFyZWEKKworICAgXHgxYlswSyA9PiBjbGVhciBjdXJzb3IgKGlu
Y2x1c2l2ZSkgdG8gZW5kIG9mIGxpbmUKKyAgIFx4MWJbMUsgPT4gY2xlYXIgYmVnaW5uaW5nIG9m
IGxpbmUgdG8gY3Vyc29yIChpbmNsdXNpdmUpCisgICBceDFiWzJLID0+IGNsZWFyIGVudGlyZSBs
aW5lCisKKyAgIFx4MWJbPG4+QCA9PiBpbnNlcnQgPG4+IHNwYWNlcyBhdCBjdXJzb3IsIHNoaWZ0
IGN1cnJlbnQgdGV4dCByaWdodAorICAgXHgxYls8bj5QID0+IGRlbGV0ZSA8bj4gY2hhcnMgIGF0
IGN1cnNvciwgYWRkaW5nIHNwYWNlcyBmcm9tIHJpZ2h0CisKKyAgIFx4MWJbNyAgICAgICAgPT4g
c2F2ZSBjdXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbOCAgICAgICAgPT4gcmVzdG9yZSBzYXZlZCBj
dXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbPHk+Ozx4PkggPT4gbW92ZSBjdXJzb3IgdG8gcm93IDx5
PiwgY29sIDx4PiAoMS1pbmRleGVkKQorICAgXHgxYls/MjVsICAgICA9PiBoaWRlIGN1cnNvcgor
ICAgXHgxYls/MjVoICAgICA9PiBzaG93IGN1cnNvcgorCisgICBceDFiWzBtID0+IGFsbCBhdHRy
aWJ1dGVzIG9mZgorICAgXHgxYlsxbSA9PiBib2xkCisgICBceDFiWzNtID0+IGl0YWxpYworICAg
XHgxYls0bSA9PiB1bmRlcmxpbmUKKyAgIFx4MWJbN20gPT4gaW52ZXJzZSB2aWRlbworICAgXHgx
Yls5bSA9PiBzdHJpa2UtdGhyb3VnaAorCisgICAqIDE2IGJhc2UgY29sb3JzIGRlZmluZWQgaW4g
dzMyY29uc29sZS5lbAorICAgXHgxYlszPGk+ICAoPGk+IGluIDAuLjcpID0+IGZvcmVncm91bmQg
PSAxNmNvbG9yc1tpXQorICAgXHgxYls0PGk+ICAoPGk+IGluIDAuLjcpID0+IGJhY2tncm91bmQg
PSAxNmNvbG9yc1tpXQorICAgXHgxYls5PGk+ICAoPGk+IGluIDAuLjcpID0+IGZvcmVncm91bmQg
PSAxNmNvbG9yc1tpICsgOF0KKyAgIFx4MWJbMTA8aT4gKDxpPiBpbiAwLi43KSA9PiBiYWNrZ3Jv
dW5kID0gMTZjb2xvcnNbaSArIDhdCisKKyAgICogMjU2IGNvbG9ycyBmb2xsb3cgeHRlcm0KKyAg
IFx4MWJbMzg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGZvcmVncm91bmQgPSAyNTZjb2xvcnNbaV0K
KyAgIFx4MWJbNDg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGJhY2tncm91bmQgPSAyNTZjb2xvcnNb
aV0KKworICAgKiAyNC1iaXQgY292ZXJzIGFsbCBuYW1lZCBjb2xvcnMgKHNlZSBjb2xvci1uYW1l
LXJnYi1hbGlzdCkKKyAgIFx4MWJbMzg7Mjs8cj47PGc+OzxiPiA9PiBmb3JlZ3JvdW5kID0gKDxy
PiwgPGc+LCA8Yj4pCisgICBceDFiWzQ4OzI7PHI+OzxnPjs8Yj4gPT4gYmFja2dyb3VuZCA9ICg8
cj4sIDxnPiwgPGI+KQogKi8KIAogCiAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0KICNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogI2lu
Y2x1ZGUgImxpc3AuaCIKQEAgLTQwLDcgKzkwLDYgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ
ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRl
ICJ3MzIuaCIJLyogZm9yIHN5bXNfb2ZfbnR0ZXJtICovCiAjZW5kaWYKIAotc3RhdGljIHZvaWQg
dzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByb3csIGludCBjb2wpOwog
c3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX3RvX2VuZCAoc3RydWN0IGZyYW1lICpmKTsKIHN0YXRp
YyB2b2lkIHczMmNvbl9jbGVhcl9mcmFtZSAoc3RydWN0IGZyYW1lICpmKTsKIHN0YXRpYyB2b2lk
IHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoc3RydWN0IGZyYW1lICpmLCBpbnQpOwpAQCAtNTIs
MTEgKzEwMSwyNyBAQCBzdGF0aWMgdm9pZCB3MzJjb25fcmVzZXRfdGVybWluYWxfbW9kZXMgKHN0
cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fc2V0X3Rlcm1pbmFsX21vZGVz
IChzdHJ1Y3QgdGVybWluYWwgKnQpOwogc3RhdGljIHZvaWQgdzMyY29uX3VwZGF0ZV9iZWdpbiAo
c3RydWN0IGZyYW1lICogZik7CiBzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2VuZCAoc3RydWN0
IGZyYW1lICpmKTsKK3N0YXRpYyBpbnQgIHczMmNvbl93cml0ZV92dF9zZXEgKGNoYXIgKik7CiBz
dGF0aWMgV09SRCB3MzJfZmFjZV9hdHRyaWJ1dGVzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNl
X2lkKTsKK3N0YXRpYyB2b2lkIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBmYWNl
X2lkKTsKK3N0YXRpYyB2b2lkIHR1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqLCBpbnQgZmFj
ZV9pZCk7CitzdGF0aWMgdm9pZCB3MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwg
aW50IHJvdywgaW50IGNvbCk7Cit2b2lkIHczMmNvbl9zYXZlX2N1cnNvciAodm9pZCk7Cit2b2lk
IHczMmNvbl9yZXN0b3JlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9zaG93X2N1cnNvciAo
dm9pZCk7Cit2b2lkIHczMmNvbl9oaWRlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9kcmF3
X2N1cnNvciAoc3RydWN0IGZyYW1lICpmKTsKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0X3Bp
eGVsICh1bnNpZ25lZCBsb25nIGluZGV4KTsKKworZXh0ZXJuIHZvaWQgdHR5X3NldHVwX2NvbG9y
cyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpOwogCiBzdGF0aWMgQ09P
UkQgICAgY3Vyc29yX2Nvb3JkczsKK3N0YXRpYyBDT09SRCAgICBzYXZlZF9jb29yZHM7CiBzdGF0
aWMgSEFORExFICAgcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47CiBzdGF0aWMgV09SRCAgICAgY2hh
cl9hdHRyX25vcm1hbDsKK3N0YXRpYyBXT1JEICAgICBiZ19ub3JtYWw7CitzdGF0aWMgV09SRCAg
ICAgZmdfbm9ybWFsOwogc3RhdGljIERXT1JEICAgIHByZXZfY29uc29sZV9tb2RlOwogCiBzdGF0
aWMgQ09OU09MRV9DVVJTT1JfSU5GTyBjb25zb2xlX2N1cnNvcl9pbmZvOwpAQCAtNjgsMTMgKzEz
MywxNCBAQCBleHRlcm4gSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBIQU5ETEUgIGtleWJvYXJk
X2hhbmRsZTsKIGludCB3MzJfY29uc29sZV91bmljb2RlX2lucHV0OwogCi0KLS8qIFNldHRpbmcg
dGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20gYmVpbmcga2lsbGVk
IHdoZW4KLSAgIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNlc3Npb24gKGNoaWxk
IHNoZWxsKS4KLSAgIEFsc28gaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4gICovCitleHRlcm4g
c3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Oworc3RydWN0IHR0eV9kaXNwbGF5
X2luZm8gKmN1cnJlbnRfdHR5ID0gTlVMTDsKIAogQk9PTCBjdHJsX2NfaGFuZGxlciAodW5zaWdu
ZWQgbG9uZyk7CiAKKy8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRz
IGVtYWNzIGZyb20gYmVpbmcga2lsbGVkCisgICB3aGVuIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdz
dXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4gQWxzbworICAgaWdub3JlIEN0cmwtQnJl
YWsgc2lnbmFscy4gICovCiBCT09MCiBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0eXBl
KQogewpAQCAtODMsNiArMTQ5LDYxIEBAIGN0cmxfY19oYW5kbGVyICh1bnNpZ25lZCBsb25nIHR5
cGUpCiAJICAmJiAodHlwZSA9PSBDVFJMX0NfRVZFTlQgfHwgdHlwZSA9PSBDVFJMX0JSRUFLX0VW
RU5UKSk7CiB9CiAKKyNkZWZpbmUgU0VRTUFYIDI1NiAvKiBBcmJpdHJhcnkgdXBwZXIgbGltaXQg
b24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisjZGVmaW5lIFNTUFJJTlRGKGJ1ZiwgaSwgc3osIGZt
dCwgLi4uKQkJCQkJXAorICBkbyB7CQkJCQkJCQkJXAorICAgIGVhc3NlcnQgKHN6IDw9IFNFUU1B
WCk7CQkJCQkJXAorICAgIGlmIChmbXQgJiYgc3ogPD0gU0VRTUFYKQkJCQkJCVwKKyAgICAgICpp
ICs9IHNucHJpbnRmIChidWYgKyAqaSwgc3ogLSAqaSwgZm10LCBfX1ZBX0FSR1NfXyk7CQlcCisg
IH0gd2hpbGUgKDApCisKKyNkZWZpbmUgREVGQVVMVFAocCkJCQkJCQkJXAorICAocCA9PSBGQUNF
X1RUWV9ERUZBVUxUX0NPTE9SCQkJCQkJXAorICAgfHwgcCA9PSBGQUNFX1RUWV9ERUZBVUxUX0ZH
X0NPTE9SCQkJCQlcCisgICB8fCBwID09IEZBQ0VfVFRZX0RFRkFVTFRfQkdfQ09MT1IpCisKKy8q
IEZvciBkZWJ1Z2dpbmc6CisgSW5zZXJ0IGEgY2FsbCBpbiB1bmV4cGVjdGVkIGNvbmRpdGlvbiBi
cmFuY2hlcywgZS5nLiBpbiB3MzJjb25fd3JpdGVfdnRfc2VxLgorIEVtYWNzIHdpbGwgZXhpdCBh
bmQgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2VxdWVuY2Ugd2lsbCBwcmludCB0byBjb25zb2xl
LAorIHdpdGggZXNjYXBlIGNoYXJzIHJlcGxhY2VkIGJ5ICcjJyBhbmQgJyUnIHJlcGxhY2VkIGJ5
ICdfJy4KKyovCitzdGF0aWMgdm9pZAordnRfc2VxX2Vycm9yIChjaGFyICpzZXEpCit7CisgIGlu
dCBpID0gMDsgaW50IGogPSAwOworICBpZiAoc2VxKQorICAgIGlmIChzZXFbMF0gPT0gJ1wwJykg
c2VxID0gIjxlbXB0eT4iOworICAgIGVsc2UKKyAgICAgIHdoaWxlIChpIDwgU0VRTUFYKQorCXsK
KwkgIGlmIChzZXFbaV0gPT0gJ1x4MWInKSBzZXFbaV0gPSAnIyc7CisJICBpZiAoc2VxW2ldID09
ICAgICclJykgc2VxW2ldID0gJ18nOworCSAgaWYgKHNlcVtpXSA9PSAgICdcMCcpIHsgaisrOyBi
cmVhazsgfQorCSAgaSsrOworCX0KKyAgZWxzZSBzZXEgPSAiPG51bGw+IjsKKyAgcHJpbnRmICgi
RmFpbGVkIHRvIHdyaXRlIFZUIHNlcXVlbmNlOiAlc1xuIiwgaiA/IHNlcSA6ICI8b3ZlcmZsb3c+
Iik7CisgIHByaW50ZiAoIkxhc3RFcnJvcjogMHglZHhcbiIsIEdldExhc3RFcnJvciAoKSk7Cisg
IGZmbHVzaCAoc3Rkb3V0KTsKKyAgZXhpdCAoMSk7Cit9CisKKy8qIFdyaXRlcyAoZHluYW1pYykg
dmlydHVhbCB0ZXJtaW5hbCBBTlNJIHNlcXVlbmNlcyB0byBzY3JlZW4KKyAgIE5vdGU6IHVzZSBv
ZiBXcml0ZUNvbnNvbGVBIGlzIHNwZWNpZmljIHRvIEFOU0kgZW5jb2RpbmcgKGV4cGVjdHMgY2hh
ciAqKS4gKi8KK3N0YXRpYyBpbnQKK3czMmNvbl93cml0ZV92dF9zZXEgKGNoYXIgKnNlcSkKK3sK
KyAgY2hhciBidWZbU0VRTUFYXTsKKyAgRFdPUkQgbiA9IDAsIGsgPSAwOworICBTU1BSSU5URiAo
YnVmLCAmbiwgU0VRTUFYLCBzZXEsIE5VTEwpOworICBpZiAobikgV3JpdGVDb25zb2xlQSAoY3Vy
X3NjcmVlbiwgKExQQ1NUUikgYnVmLCBuLCAmaywgTlVMTCk7CisgIHJldHVybiBrOworfQorCisv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJzb3IgQ29udHJv
bAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCiAKIC8qIE1vdmUgdGhlIGN1cnNvciB0byAoUk9XLCBDT0wpIG9u
IEZSQU1FLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC05MCw3ICsyMTEsNiBAQCB3MzJjb25fbW92ZV9j
dXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHJvdywgaW50IGNvbCkKIHsKICAgY3Vyc29yX2Nv
b3Jkcy5YID0gY29sOwogICBjdXJzb3JfY29vcmRzLlkgPSByb3c7Ci0KICAgLyogVE9ETzogZm9y
IG11bHRpLXR0eSBzdXBwb3J0LCBjdXJfc2NyZWVuIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEK
ICAgICAgcmVmZXJlbmNlIHRvIHRoZSB0ZXJtaW5hbCBmb3IgdGhpcyBmcmFtZS4gICovCiAgIFNl
dENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoY3VyX3NjcmVlbiwgY3Vyc29yX2Nvb3Jkcyk7CkBAIC0x
MDIsNiArMjIyLDcgQEAgdzMyY29uX2hpZGVfY3Vyc29yICh2b2lkKQogICBHZXRDb25zb2xlQ3Vy
c29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOwogICBjb25zb2xlX2N1
cnNvcl9pbmZvLmJWaXNpYmxlID0gRkFMU0U7CiAgIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJf
c2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgIGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlk
ZGVuID0gMTsKIH0KIAogdm9pZApAQCAtMTEwLDE0ICsyMzEsMzMgQEAgdzMyY29uX3Nob3dfY3Vy
c29yICh2b2lkKQogICBHZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVf
Y3Vyc29yX2luZm8pOwogICBjb25zb2xlX2N1cnNvcl9pbmZvLmJWaXNpYmxlID0gVFJVRTsKICAg
U2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsK
KyAgY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4gPSAwOworfQorCit2b2lkCit3MzJjb25fc2F2
ZV9jdXJzb3IgKHZvaWQpCit7CisgIHNhdmVkX2Nvb3JkcyA9IGN1cnNvcl9jb29yZHM7Cit9CisK
K3ZvaWQKK3czMmNvbl9yZXN0b3JlX2N1cnNvciAodm9pZCkKK3sKKyAgY3Vyc29yX2Nvb3JkcyA9
IHNhdmVkX2Nvb3JkczsKKyAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChjdXJfc2NyZWVuLCBj
dXJzb3JfY29vcmRzKTsKIH0KIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dCBNb2RpZmljYXRpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogLyogQ2xlYXIgZnJv
bSBjdXJzb3IgdG8gZW5kIG9mIHNjcmVlbi4gICovCiBzdGF0aWMgdm9pZAogdzMyY29uX2NsZWFy
X3RvX2VuZCAoc3RydWN0IGZyYW1lICpmKQogewogICB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUg
KGYsIEZSQU1FX0NPTFMgKGYpIC0gMSk7Ci0gIHczMmNvbl9pbnNfZGVsX2xpbmVzIChmLCBjdXJz
b3JfY29vcmRzLlksIEZSQU1FX1RPVEFMX0xJTkVTIChmKSAtIGN1cnNvcl9jb29yZHMuWSAtIDEp
OworICBpbnQgbiA9IEZSQU1FX1RPVEFMX0xJTkVTIChmKSAtIGN1cnNvcl9jb29yZHMuWSAtIDE7
CisgIHczMmNvbl9pbnNfZGVsX2xpbmVzIChmLCBjdXJzb3JfY29vcmRzLlksIG4pOwogfQogCiAv
KiBDbGVhciB0aGUgZnJhbWUuICAqLwpAQCAtMTM3LDcgKzI3Nyw2IEBAIHczMmNvbl9jbGVhcl9m
cmFtZSAoc3RydWN0IGZyYW1lICpmKQogCiAgIEZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChj
dXJfc2NyZWVuLCBjaGFyX2F0dHJfbm9ybWFsLCBuLCBkZXN0LCAmcik7CiAgIEZpbGxDb25zb2xl
T3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCAnICcsIG4sIGRlc3QsICZyKTsKLQogICB3MzJj
b25fbW92ZV9jdXJzb3IgKGYsIDAsIDApOwogfQogCkBAIC0yMzksNyArMzc4LDYgQEAgdzMyY29u
X2luc19kZWxfbGluZXMgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHZwb3MsIGludCBuKQogCSAgICB9
CiAJfQogICAgIH0KLQogICBjdXJzb3JfY29vcmRzLlggPSAwOwogICBjdXJzb3JfY29vcmRzLlkg
PSB2cG9zOwogfQpAQCAtMjQ4LDEyICszODYsMTEgQEAgdzMyY29uX2luc19kZWxfbGluZXMgKHN0
cnVjdCBmcmFtZSAqZiwgaW50IHZwb3MsIGludCBuKQogI3VuZGVmCVJJR0hUCiAjZGVmaW5lCUxF
RlQJMQogI2RlZmluZQlSSUdIVAkwCi0KKy8qIFRoZSBpZGVhIGhlcmUgaXMgdG8gaW1wbGVtZW50
IGEgaG9yaXpvbnRhbCBzY3JvbGwgaW4gb25lIGxpbmUgdG8KKyAgIGltcGxlbWVudCBkZWxldGUg
YW5kIGhhbGYgb2YgaW5zZXJ0LiAgKi8KIHN0YXRpYyB2b2lkCiBzY3JvbGxfbGluZSAoc3RydWN0
IGZyYW1lICpmLCBpbnQgZGlzdCwgaW50IGRpcmVjdGlvbikKIHsKLSAgLyogVGhlIGlkZWEgaGVy
ZSBpcyB0byBpbXBsZW1lbnQgYSBob3Jpem9udGFsIHNjcm9sbCBpbiBvbmUgbGluZSB0bwotICAg
ICBpbXBsZW1lbnQgZGVsZXRlIGFuZCBoYWxmIG9mIGluc2VydC4gICovCiAgIFNNQUxMX1JFQ1Qg
c2Nyb2xsLCBjbGlwOwogICBDT09SRAkgICAgIGRlc3Q7CiAgIENIQVJfSU5GTyAgZmlsbDsKQEAg
LTI4OCwxNCArNDI1LDEzIEBAIHN0YXRpYyB2b2lkCiB3MzJjb25faW5zZXJ0X2dseXBocyAoc3Ry
dWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0YXJ0LAogCQkgICAgICByZWdp
c3RlciBpbnQgbGVuKQogeworICAvKiBNb3ZlIGxlbiBjaGFycyB0byB0aGUgcmlnaHQgZnJvbSBj
dXJzb3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCiAgIHNjcm9sbF9saW5lIChmLCBsZW4s
IFJJR0hUKTsKICAgCi0gIC8qIE1vdmUgbGVuIGNoYXJzIHRvIHRoZSByaWdodCBzdGFydGluZyBh
dCBjdXJzb3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCiAgIGlmIChzdGFydCkKICAgICB7
Ci0gICAgICAvKiBQcmludCB0aGUgZmlyc3QgbGVuIGNoYXJhY3RlcnMgb2Ygc3RhcnQsIGN1cnNv
cl9jb29yZHMuWCBhZGp1c3RlZAotCSBieSB3cml0ZV9nbHlwaHMuICAqLwotCisgICAgICAvKiBQ
cmludCB0aGUgZmlyc3QgbGVuIGNoYXJhY3RlcnMgb2Ygc3RhcnQuCisJIGN1cnNvcl9jb29yZHMu
WCBhZGp1c3RlZCBieSB3cml0ZV9nbHlwaHMuICAqLwogICAgICAgdzMyY29uX3dyaXRlX2dseXBo
cyAoZiwgc3RhcnQsIGxlbik7CiAgICAgfQogICBlbHNlCkBAIC0zMTMsNiArNDQ5LDggQEAgdzMy
Y29uX3dyaXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGgg
KnN0cmluZywKICAgTFBDU1RSIGNvbnZlcnNpb25fYnVmZmVyOwogICBzdHJ1Y3QgY29kaW5nX3N5
c3RlbSAqY29kaW5nOwogCisgIHczMmNvbl9oaWRlX2N1cnNvcigpOworCiAgIGlmIChsZW4gPD0g
MCkKICAgICByZXR1cm47CiAKQEAgLTM0Miw0MyArNDgwLDQ1IEBAIHczMmNvbl93cml0ZV9nbHlw
aHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdHJpbmcsCiAKICAg
ICAgIC8qIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSBzZXRzIGZyYW1lIG9mIGdseXBocyB0byBO
VUxMLiAgKi8KICAgICAgIHN0cnVjdCBmcmFtZSAqYXR0cl9mcmFtZSA9IGZhY2VfaWRfZnJhbWUg
PyBmYWNlX2lkX2ZyYW1lIDogZjsKLSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBtb2RlcyBvZiB0
aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KLSAgICAgIGNoYXJfYXR0ciA9IHczMl9mYWNlX2F0
dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOwogCiAgICAgICBpZiAobiA9PSBsZW4pCiAJ
LyogVGhpcyBpcyB0aGUgbGFzdCBydW4uICAqLwogCWNvZGluZy0+bW9kZSB8PSBDT0RJTkdfTU9E
RV9MQVNUX0JMT0NLOworCiAgICAgICBjb252ZXJzaW9uX2J1ZmZlciA9IChMUENTVFIpIGVuY29k
ZV90ZXJtaW5hbF9jb2RlIChzdHJpbmcsIG4sIGNvZGluZyk7CiAgICAgICBpZiAoY29kaW5nLT5w
cm9kdWNlZCA+IDApCiAJewotCSAgLyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJh
Y3RlcnMuICAqLwotCSAgaWYgKCFGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVl
biwgY2hhcl9hdHRyLAotCQkJCQkgICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAot
CQkJCQkgICAmcikpCisJICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykK
IAkgICAgewotCSAgICAgIHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRl
czogJWx1XG4iLAotCQkgICAgICBHZXRMYXN0RXJyb3IgKCkpOwotCSAgICAgIGZmbHVzaCAoc3Rk
b3V0KTsKKwkgICAgICB0dXJuX29uX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgICAgIFdyaXRlQ29u
c29sZSAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZmZXIsCisJCQkgICAgY29kaW5nLT5wcm9k
dWNlZCwgJnIsIE5VTEwpOworCSAgICAgIHR1cm5fb2ZmX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAg
ICAgIGN1cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOwogCSAgICB9Ci0KKwkgIGVs
c2UKKwkgICAgeworCSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBtb2RlcyBvZiB0aGUgZmFjZSBv
ZiB0aGUgcnVuIG9uLiAgKi8KKwkgICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVz
IChhdHRyX2ZyYW1lLCBmYWNlX2lkKTsKKwkgICAgICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3Ig
dGhlc2UgY2hhcmFjdGVycy4gICovCisJICAgICAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUg
KGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkJICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3Jf
Y29vcmRzLAorCQkJCQkgICZyKTsKIAkgICAgICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICov
Ci0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVy
c2lvbl9idWZmZXIsCisJICAgICAgV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2Ny
ZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKIAkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29y
X2Nvb3JkcywKLQkJCQkJICAgICZyKSkKLQkgICAgewotCSAgICAgIHByaW50ZiAoIkZhaWxlZCB3
cml0aW5nIGNvbnNvbGUgY2hhcmFjdGVyczogJWx1XG4iLAotCQkgICAgICBHZXRMYXN0RXJyb3Ig
KCkpOwotCSAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKLQkgICAgfQorCQkJCQkgICAmcik7CiAKIAkg
ICAgICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5wcm9kdWNlZDsKIAkgICAgICB3MzJjb25f
bW92ZV9jdXJzb3IgKGYsIGN1cnNvcl9jb29yZHMuWSwgY3Vyc29yX2Nvb3Jkcy5YKTsKIAkgICAg
fQorCX0KICAgICAgIGxlbiAtPSBuOwogICAgICAgc3RyaW5nICs9IG47CiAgICAgfQogfQogCisK
IC8qIFVzZWQgZm9yIG1vdXNlIGhpZ2hsaWdodC4gICovCiBzdGF0aWMgdm9pZAogdzMyY29uX3dy
aXRlX2dseXBoc193aXRoX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJl
Z2lzdGVyIGludCB5LApAQCAtMzg3LDYgKzUyNyw5IEBAIHczMmNvbl93cml0ZV9nbHlwaHNfd2l0
aF9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIGludCB4LCByZWdpc3RlciBpbnQgeSwK
IHsKICAgTFBDU1RSIGNvbnZlcnNpb25fYnVmZmVyOwogICBzdHJ1Y3QgY29kaW5nX3N5c3RlbSAq
Y29kaW5nOworICBEV09SRCBmaWxsZWQsIHdyaXR0ZW47CisKKyAgdzMyY29uX2hpZGVfY3Vyc29y
ICgpOwogCiAgIGlmIChsZW4gPD0gMCkKICAgICByZXR1cm47CkBAIC0zOTksMjkgKzU0MiwzOCBA
QCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3Rl
ciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiAgIC8qIFdlIGFyZSBnb2luZyB0byB3cml0ZSB0aGUg
ZW50aXJlIGJsb2NrIG9mIGdseXBocyBpbiBvbmUgZ28sIGFzCiAgICAgIHRoZXkgYWxsIGhhdmUg
dGhlIHNhbWUgZmFjZS4gIFNvIHRoaXMgX2lzXyB0aGUgbGFzdCBibG9jay4gICovCiAgIGNvZGlu
Zy0+bW9kZSB8PSBDT0RJTkdfTU9ERV9MQVNUX0JMT0NLOwotCiAgIGNvbnZlcnNpb25fYnVmZmVy
ID0gKExQQ1NUUikgZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbGVuLCBjb2RpbmcpOwog
ICBpZiAoY29kaW5nLT5wcm9kdWNlZCA+IDApCiAgICAgewotICAgICAgRFdPUkQgZmlsbGVkLCB3
cml0dGVuOwotICAgICAgLyogQ29tcHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVz
cG9uZGluZyB0byB0aGUgZmFjZS4gICovCi0gICAgICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFj
ZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKICAgICAgIENPT1JEIHN0YXJ0X2Nvb3JkczsKLQog
ICAgICAgc3RhcnRfY29vcmRzLlggPSB4OwogICAgICAgc3RhcnRfY29vcmRzLlkgPSB5OwotICAg
ICAgLyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwotICAgICAg
aWYgKCFGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAot
CQkJCSAgICAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFydF9jb29yZHMsCi0JCQkJICAgICAgICZm
aWxsZWQpKQotCURlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRlczog
JWRcbiIsIEdldExhc3RFcnJvciAoKSkpOworCisgICAgICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rl
cm1pbmFsX3NlcXVlbmNlcykKKwl7CisJICBpbnQgcHJldl9jdXJzb3JfaGlkZGVuID0gY3VycmVu
dF90dHktPmN1cnNvcl9oaWRkZW47CisJICB3MzJjb25faGlkZV9jdXJzb3IgKCk7CisJICB3MzJj
b25fc2F2ZV9jdXJzb3IgKCk7CisJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIHksIHgpOworCSAg
dHVybl9vbl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwg
Y29udmVyc2lvbl9idWZmZXIsCisJCQljb2RpbmctPnByb2R1Y2VkLCAmd3JpdHRlbiwgTlVMTCk7
CisJICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIHczMmNvbl9yZXN0b3JlX2N1cnNv
ciAoKTsKKwkgIGlmICghcHJldl9jdXJzb3JfaGlkZGVuKSB3MzJjb25fc2hvd19jdXJzb3IgKCk7
CisJfQogICAgICAgZWxzZQogCXsKKwkgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBhdHRyaWJ1
dGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICovCisJICBEV09SRCBjaGFyX2F0dHIgPSB3
MzJfZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKKworCSAgLyogU2V0IHRoZSBhdHRyaWJ1
dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1
dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkgICAgICBjb2RpbmctPnByb2R1Y2VkLCBz
dGFydF9jb29yZHMsCisJCQkJICAgICAgJmZpbGxlZCk7CiAJICAvKiBXcml0ZSB0aGUgY2hhcmFj
dGVycy4gICovCi0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVl
biwgY29udmVyc2lvbl9idWZmZXIsCi0JCQkJCSAgICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndy
aXR0ZW4pKQotCSAgICBEZWJQcmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3Rl
cnM6ICVkXG4iLAotCQkgICAgICAgR2V0TGFzdEVycm9yICgpKSk7CisJICBXcml0ZUNvbnNvbGVP
dXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCSAgICAg
ICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0ZW4pOwogCX0KICAgICB9CiB9CkBAIC00NTIs
OSArNjA0LDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3RydWN0IHdpbmRvdyAq
dywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKICAgcm9vdF94eSAoZiwgZnJhbWVfZW5k
X3gsIGZyYW1lX3ksICZyb290X2VuZF94LCAmcm9vdF95KTsKICAgc3RydWN0IGdseXBoX3JvdyAq
cm9vdF9yb3cgPSBNQVRSSVhfUk9XIChyb290LT5jdXJyZW50X21hdHJpeCwgcm9vdF95KTsKIAot
ICAvKiBSZW1lbWJlciBjdXJyZW50IGN1cnNvciBjb29yZGluYXRlcyBzbyB0aGF0IHdlIGNhbiBy
ZXN0b3JlCi0gICAgIHRoZW0gYXQgdGhlIGVuZC4gICovCi0gIENPT1JEIHNhdmVfY29vcmRzID0g
Y3Vyc29yX2Nvb3JkczsKKyAgdzMyY29uX3NhdmVfY3Vyc29yKCk7CiAKICAgLyogSWYgdGhlIHJv
b3QgZnJhbWUgZGlzcGxheXMgY2hpbGQgZnJhbWVzLCB3ZSBjYW5ub3QgbmFpdmVseQogICAgICB3
cml0ZSB0byB0aGUgdGVybWluYWwgd2hhdCB0aGUgd2luZG93IHRoaW5rcyBzaG91bGQgYmUgZHJh
d24uCkBAIC01MDcsOSArNjU3LDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3Ry
dWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKIAkgICAgfQogCX0K
ICAgICB9Ci0KLSAgLyogUmVzdG9yZSBjdXJzb3Igd2hlcmUgaXQgd2FzIGJlZm9yZS4gICovCi0g
IHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgc2F2ZV9jb29yZHMuWSwgc2F2ZV9jb29yZHMuWCk7Cisg
IHczMmNvbl9yZXN0b3JlX2N1cnNvcigpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTIxLDcgKzY2
OSw5IEBAIHczMmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogCiAg
IHNjcm9sbF9saW5lIChmLCBuLCBMRUZUKTsKIH0KLQorLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAg
ICAgICAgICAgICAgICAgICAgU2V0IHVwIC8gVGVhciBkb3duCisqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAog
c3RhdGljIHZvaWQKIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFs
ICp0KQpAQCAtNTY5LDMwICs3MTksNTQgQEAgdzMyY29uX3NldF90ZXJtaW5hbF9tb2RlcyAoc3Ry
dWN0IHRlcm1pbmFsICp0KQogICAvKiBJZiBRdWljayBFZGl0IGlzIGVuYWJsZWQgZm9yIHRoZSBj
b25zb2xlLCBpdCB3aWxsIGdldCBpbiB0aGUgd2F5CiAgICAgIG9mIHJlY2VpdmluZyBtb3VzZSBl
dmVudHMsIHNvIHdlIGRpc2FibGUgaXQuICBCdXQgbGVhdmUgdGhlCiAgICAgIEluc2VydCBNb2Rl
IGFzIGl0IHdhcyBzZXQgYnkgdGhlIHVzZXIuICAqLwotICBEV09SRCBuZXdfY29uc29sZV9tb2Rl
CisgIERXT1JEIGluX21vZGUKICAgICA9IEVOQUJMRV9NT1VTRV9JTlBVVCB8IEVOQUJMRV9XSU5E
T1dfSU5QVVQgfCBFTkFCTEVfRVhURU5ERURfRkxBR1M7CiAgIGlmICgocHJldl9jb25zb2xlX21v
ZGUgJiBFTkFCTEVfSU5TRVJUX01PREUpICE9IDApCi0gICAgbmV3X2NvbnNvbGVfbW9kZSB8PSBF
TkFCTEVfSU5TRVJUX01PREU7Ci0gIFNldENvbnNvbGVNb2RlIChrZXlib2FyZF9oYW5kbGUsIG5l
d19jb25zb2xlX21vZGUpOworICAgIGluX21vZGUgfD0gRU5BQkxFX0lOU0VSVF9NT0RFOworICBT
ZXRDb25zb2xlTW9kZSAoa2V5Ym9hcmRfaGFuZGxlLCBpbl9tb2RlKTsKIAogICAvKiBJbml0aWFs
aXplIGlucHV0IG1vZGU6IGludGVycnVwdF9pbnB1dCBvZmYsIG5vIGZsb3cgY29udHJvbCwgYWxs
b3cKICAgICAgOCBiaXQgY2hhcmFjdGVyIGlucHV0LCBzdGFuZGFyZCBxdWl0IGNoYXIuICAqLwog
ICBGc2V0X2lucHV0X21vZGUgKFFuaWwsIFFuaWwsIG1ha2VfZml4bnVtICgyKSwgUW5pbCk7CisK
KyAgRFdPUkQgb3V0X21vZGU7CisgIEdldENvbnNvbGVNb2RlIChjdXJfc2NyZWVuLCAmb3V0X21v
ZGUpOworICBvdXRfbW9kZSB8PSBFTkFCTEVfUFJPQ0VTU0VEX09VVFBVVDsKKyAgb3V0X21vZGUg
fD0gRU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORzsKKyAgb3V0X21vZGUgfD0gRElT
QUJMRV9ORVdMSU5FX0FVVE9fUkVUVVJOOworICB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2Vx
dWVuY2VzID0gU2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sIG91dF9tb2RlKTsKKyAgaWYgKHcz
Ml91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisgICAgeworICAgICAgaW50IGN1cnNv
cl9vZmZfcCA9IFhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdyktPmN1cnNvcl9vZmZfcDsKKyAgICAg
IHQtPmRpc3BsYXlfaW5mby50dHktPmN1cnNvcl9oaWRkZW4gPSBjdXJzb3Jfb2ZmX3A7CisgICAg
fQogfQogCiAvKiBobW1tLi4uIHBlcmhhcHMgdGhlc2UgbGV0IHVzIGJyYWNrZXQgc2NyZWVuIGNo
YW5nZXMgc28gdGhhdCB3ZSBjYW4gZmx1c2gKICAgIGNsdW1wcyByYXRoZXIgdGhhbiBvbmUtY2hh
cmFjdGVyLWF0LWEtdGltZS4uLgogCi0gICB3ZSdsbCBzdGFydCB3aXRoIG5vdCBtb3ZpbmcgdGhl
IGN1cnNvciB3aGlsZSBhbiB1cGRhdGUgaXMgaW4gcHJvZ3Jlc3MuICAqLworICAgd2UnbGwgc3Rh
cnQgd2l0aCBub3QgbW92aW5nIHRoZSBjdXJzb3Igd2hpbGUgYW4gdXBkYXRlIGlzIGluIHByb2dy
ZXNzLgorCisgICAuLi4gYy4gMjAyNSwgVlQgc2VxdWVuY2VzIGNhbiBvbmx5IGJlIHdyaXR0ZW4g
d2l0aCBXcml0ZUNvbnNvbGUsCisgICBwcmludGYsIGV0Yy4sIHdoaWNoIGFkdmFuY2UgdGhlIGN1
cnNvci4KKyovCiBzdGF0aWMgdm9pZAogdzMyY29uX3VwZGF0ZV9iZWdpbiAoc3RydWN0IGZyYW1l
ICogZikKIHsKKyAgY3VycmVudF90dHkgPSBGUkFNRV9UVFkgKGYpOworCisgIGlmICghdzMyX3Vz
ZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcworICAgICAgJiYgY3VycmVudF90dHktPlROX21h
eF9jb2xvcnMgPiAxNikKKyAgICB7CisgICAgICB0dHlfc2V0dXBfY29sb3JzIChjdXJyZW50X3R0
eSwgMTYpOworICAgICAgc2FmZV9jYWxsbiAoUXczMmNvbl9zZXRfdXBfaW5pdGlhbF9mcmFtZV9m
YWNlcyk7CisgICAgfQogfQogCiBzdGF0aWMgdm9pZAogdzMyY29uX3VwZGF0ZV9lbmQgKHN0cnVj
dCBmcmFtZSAqIGYpCiB7Ci0gIFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoY3VyX3NjcmVlbiwg
Y3Vyc29yX2Nvb3Jkcyk7CisgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5Z
LCBjdXJzb3JfY29vcmRzLlgpOwogICBpZiAoIVhXSU5ET1cgKHNlbGVjdGVkX3dpbmRvdyktPmN1
cnNvcl9vZmZfcAogICAgICAgJiYgY3Vyc29yX2Nvb3Jkcy5YIDwgRlJBTUVfQ09MUyAoZikpCiAg
ICAgdzMyY29uX3Nob3dfY3Vyc29yICgpOwpAQCAtNjI0LDggKzc5OCw2IEBAIHN5c190Z2V0c3Ry
IChjaGFyICpjYXAsIGNoYXIgKiphcmVhKQogCQkJc3R1YnMgZnJvbSBjbS5jCiAgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCiAKLWV4dGVybiBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqY3VycmVudF90dHk7Ci1z
dHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqY3VycmVudF90dHkgPSBOVUxMOwogZXh0ZXJuIGludCBj
b3N0OwogaW50IGNvc3QgPSAwOwogCkBAIC02OTMsNyArODY1LDYgQEAgY3Vyc29yWSAoc3RydWN0
IHR0eV9kaXNwbGF5X2luZm8gKnR0eSkKIAkJCQlGYWNlcwogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0K
IC8qIFR1cm4gYXBwZWFyYW5jZXMgb2YgZmFjZSBGQUNFX0lEIG9uIHR0eSBmcmFtZSBGIG9uLiAg
Ki8KIAogc3RhdGljIFdPUkQKQEAgLTcyOSw2ICs5MDAsMTAwIEBAIHczMl9mYWNlX2F0dHJpYnV0
ZXMgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCiAgIHJldHVybiBjaGFyX2F0dHI7CiB9
CiAKK3N0YXRpYyB2b2lkCit0dXJuX29uX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2Vf
aWQpCit7CisgIHN0cnVjdCBmYWNlICpmYWNlID0gRkFDRV9GUk9NX0lEIChmLCBmYWNlX2lkKTsK
KyAgc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1FX1RUWSAoZik7CisgIHVuc2ln
bmVkIGxvbmcgZmcgPSBmYWNlLT5mb3JlZ3JvdW5kOworICB1bnNpZ25lZCBsb25nIGJnID0gZmFj
ZS0+YmFja2dyb3VuZDsKKworICAvKiBpZiBlaXRoZXIgb3V0IG9mIHJhbmdlLCBzZXQgYm90aCB0
byB2YWx1ZXMgcmV0cmlldmVkIGZyb20gdGVybWluYWwgKi8KKyAgaWYgKERFRkFVTFRQIChmZykp
IGZnID0gZmdfbm9ybWFsOworICBpZiAoREVGQVVMVFAgKGJnKSkgYmcgPSBiZ19ub3JtYWw7CisK
KyAgLyogY29uc3RydWN0IGNvbWJpbmVkIFZUIHNlcXVlbmNlIGZvciBmYWNlIGF0dHJpYnV0ZXMg
Ki8KKyAgRFdPUkQgbiA9IDA7CisgIHNpemVfdCBzeiA9IFNFUU1BWDsKKyAgY2hhciBzZXFbc3pd
OworICBzei0tOworCisgIGlmIChmYWNlLT50dHlfYm9sZF9wKQorICAgIFNTUFJJTlRGIChzZXEs
ICZuLCBzeiwgdHR5LT5UU19lbnRlcl9ib2xkX21vZGUsIE5VTEwpOworICBpZiAoZmFjZS0+dHR5
X2l0YWxpY19wKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9pdGFs
aWNfbW9kZSwgTlVMTCk7CisgIGlmIChmYWNlLT50dHlfc3RyaWtlX3Rocm91Z2hfcCkKKyAgICBT
U1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfc3RyaWtlX3Rocm91Z2hfbW9kZSwg
TlVMTCk7CisgIGlmIChmYWNlLT51bmRlcmxpbmUgIT0gMCkKKyAgICBTU1BSSU5URiAoc2VxLCAm
biwgc3osIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUsIE5VTEwpOworICAvKiBOb3RlOiB0
aGUgdmFsdWVzIG9mIGZnIGFuZCBiZyBhcmUgYWxyZWFkeSBzd2FwcGVkIHdoZW4gZmcgYW5kIGJn
IGFyZQorICAgICBzZXQgYW5kIGZhY2UtPnR0eV9yZXZlcnNlX3AuIEFkZGluZyB0aGUgdGVybWlu
YWwgc2VxdWVuY2UgY29udGFpbmVkCisgICAgIGluIHR0eS0+VFNfZW50ZXJfcmV2ZXJzZV9tb2Rl
IHN3YXBzIHRoZW0gYmFjaywgd2hpY2ggaXMgbm8gZ29vZC4gKi8KKworICBjb25zdCBjaGFyICpz
ZXRfZmcgPSB0dHktPlRTX3NldF9mb3JlZ3JvdW5kOworICBjb25zdCBjaGFyICpzZXRfYmcgPSB0
dHktPlRTX3NldF9iYWNrZ3JvdW5kOworICBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09IDggIHx8
CisgICAgICB0dHktPlROX21heF9jb2xvcnMgPT0gMTYgfHwKKyAgICAgIHR0eS0+VE5fbWF4X2Nv
bG9ycyA9PSAyNTYpCisgICAgeworICAgICAgLyogaW5kaWNlcyBpbnRvIE1pY3Jvc29mdC1kZWZp
bmVkIGNvbG9ycyAoc2VlIGxpbmsgYXQgdG9wKSAqLworICAgICAgdW5zaWduZWQgbG9uZyBmZ2kg
PSAwLCBiZ2kgPSAwOworCisgICAgICBmZ2kgPSAoZmcgPj0gMCAgJiYgZmcgPCA4KSAgID8gZmcg
KyAzMAorCTogICAoZmcgPj0gOCAgJiYgZmcgPCAxNikgID8gZmcgLSA4ICsgOTAKKwk6ICAgKGZn
ID49IDE2ICYmIGZnIDwgMjU2KSA/IGZnCisJOiAwOworICAgICAgaWYgKGZnaSkKKwlTU1BSSU5U
RiAoc2VxLCAmbiwgc3osIHNldF9mZywgZmdpKTsKKworICAgICAgYmdpID0gKGJnID49IDAgICYm
IGJnIDwgOCkgICA/IGJnICsgNDAKKwk6ICAgKGJnID49IDggICYmIGJnIDwgMTYpICA/IGJnIC0g
OCArIDEwMAorCTogICAoYmcgPj0gMTYgJiYgYmcgPCAyNTYpID8gYmcKKwk6IDA7CisgICAgICBp
ZiAoYmdpKQorCVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCBiZ2kpOworICAgIH0KKyAg
ZWxzZSBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09IDE2Nzc3MjE2KQorICAgIHsKKyAgICAgIC8q
IG5lZWQgdG8gY29udmVydCBkZWZhdWx0ZWQgdmFsdWVzIHRvIHBpeGVsIGluZGljZXMgKi8KKyAg
ICAgIGlmIChmZyA9PSBmZ19ub3JtYWwpIGZnID0gZ2V0X3BpeGVsKGZnKTsKKyAgICAgIGlmIChi
ZyA9PSBiZ19ub3JtYWwpIGJnID0gZ2V0X3BpeGVsKGJnKTsKKworICAgICAgLyogZmcgYW5kIGJn
IGFyZSBwaXhlbCB2YWx1ZXMgLSBkZWNvbXBvc2UgdG8gcmdiIHRyaXBsZXMgKi8KKyAgICAgIHVu
c2lnbmVkIGxvbmcgcmYgPSBmZy82NTUzNiwgZ2YgPSAoZmcvMjU2KSYyNTUsIGJmID0gZmcmMjU1
OworICAgICAgdW5zaWduZWQgbG9uZyByYiA9IGJnLzY1NTM2LCBnYiA9IChiZy8yNTYpJjI1NSwg
YmIgPSBiZyYyNTU7CisgICAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9mZywgcmYsIGdm
LCBiZik7CisgICAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9iZywgcmIsIGdiLCBiYik7
CisgICAgfQorICB3MzJjb25fd3JpdGVfdnRfc2VxIChzZXEpOworfQorCitzdGF0aWMgdm9pZAor
dHVybl9vZmZfZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0
IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1FX1RUWSAoZik7CisgIHczMmNvbl93cml0ZV92
dF9zZXEgKHR0eS0+VFNfZXhpdF9hdHRyaWJ1dGVfbW9kZSk7Cit9CisKKy8qIHJldHVybnMgdGhl
IHBpeGVsIHZhbHVlIGZvciB0aGUgZ2l2ZW4gaW5kZXggaW50byBWVCBiYXNlIGNvbG9yIG1hcCAq
Lworc3RhdGljIHVuc2lnbmVkIGxvbmcgcGl4ZWxfY2FjaGVbMTZdOworc3RhdGljIHVuc2lnbmVk
IGxvbmcKK2dldF9waXhlbCAodW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKyAgdW5zaWduZWQgaW50
IGkgPSAodW5zaWduZWQgaW50KSBpbmRleDsKKyAgaWYgKGkgPiAxNSkgcmV0dXJuIDA7CisgIGlm
IChpID09IDAgfHwgcGl4ZWxfY2FjaGVbaV0gPiAwKQorICAgIHJldHVybiBwaXhlbF9jYWNoZVtp
XTsKKworICBMaXNwX09iamVjdCBwaXggPSBzYWZlX2NhbGxuIChRdzMyY29uX2dldF9waXhlbCwg
bWFrZV91Zml4bnVtIChpKSk7CisgIHBpeGVsX2NhY2hlW2ldID0gKHVuc2lnbmVkIGxvbmcpIFhV
RklYTlVNIChwaXgpOworICByZXR1cm4gcGl4ZWxfY2FjaGVbaV07Cit9CisKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXphdGlvbgorKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCisKIC8qIFRoZSBJTUUgd2luZG93IGlzIG5lZWRlZCB0byByZWNlaXZlIHRoZSBz
ZXNzaW9uIG5vdGlmaWNhdGlvbnMKICAgIHJlcXVpcmVkIHRvIHJlc2V0IHRoZSBsb3cgbGV2ZWwg
a2V5Ym9hcmQgaG9vayBzdGF0ZS4gICovCiAKQEAgLTg0OSw2ICsxMTE0LDcgQEAgaW5pdGlhbGl6
ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhl
aWdodCkKIAluZXdfd2luX2RpbXMuQm90dG9tID0gbmV3X3NpemUuWSAtIDE7CiAJbmV3X3dpbl9k
aW1zLlJpZ2h0ID0gbmV3X3NpemUuWCAtIDE7CiAJU2V0Q29uc29sZVdpbmRvd0luZm8gKGN1cl9z
Y3JlZW4sIFRSVUUsICZuZXdfd2luX2RpbXMpOworCiAgICAgICB9CiAgIH0KIApAQCAtODYxLDYg
KzExMjcsOCBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0s
IGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQogICAgIH0KIAogICBjaGFyX2F0dHJfbm9ybWFsID0g
aW5mby53QXR0cmlidXRlczsKKyAgZmdfbm9ybWFsID0gY2hhcl9hdHRyX25vcm1hbCAmIDB4MDAw
ZjsKKyAgYmdfbm9ybWFsID0gKGNoYXJfYXR0cl9ub3JtYWwgPj4gNCkgJiAweDAwMGY7CiAKICAg
LyogRGV0ZXJtaW5lIGlmIHRoZSBpbmZvIHJldHVybmVkIGJ5IEdldENvbnNvbGVTY3JlZW5CdWZm
ZXJJbmZvCiAgICAgIGlzIHJlYWxpc3RpYy4gIE9sZCBNUyBUZWxuZXQgc2VydmVycyB1c2VkIHRv
IG9ubHkgZmlsbCBvdXQKQEAgLTkxNywxMyArMTE4NSwyMSBAQCBpbml0aWFsaXplX3czMl9kaXNw
bGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQogfQog
CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3AgSW50
ZXJmYWNlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVE9ETyAtIG1pZ3JhdGUgdG8gVlQgc2VxdWVu
Y2VzICgyNTYgYW5kIDI0Yml0IGNvbG9yKSAqLwogREVGVU4gKCJzZXQtc2NyZWVuLWNvbG9yIiwg
RnNldF9zY3JlZW5fY29sb3IsIFNzZXRfc2NyZWVuX2NvbG9yLCAyLCAyLCAwLAogICAgICAgIGRv
YzogLyogU2V0IHNjcmVlbiBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KIAogQXJn
dW1lbnRzIHNob3VsZCBiZSBpbmRpY2VzIGJldHdlZW4gMCBhbmQgMTUsIHNlZSB3MzJjb25zb2xl
LmVsLiAgKi8pCiAgIChMaXNwX09iamVjdCBmb3JlZ3JvdW5kLCBMaXNwX09iamVjdCBiYWNrZ3Jv
dW5kKQogewotICBjaGFyX2F0dHJfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdyb3VuZCkgKyAoWEZJ
WE5BVCAoYmFja2dyb3VuZCkgPDwgNCk7CisKKyAgZmdfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdy
b3VuZCk7CisgIGJnX25vcm1hbCA9IFhGSVhOQVQgKGJhY2tncm91bmQpOworICBjaGFyX2F0dHJf
bm9ybWFsID0gZmdfbm9ybWFsICsgKGJnX25vcm1hbCA8PCA0KTsKIAogICBGcmVjZW50ZXIgKFFu
aWwsIFF0KTsKICAgcmV0dXJuIFF0OwpAQCAtOTM3LDggKzEyMTMsOCBAQCBTZWUgdzMyY29uc29s
ZS5lbCBhbmQgYHR0eS1kZWZpbmVkLWNvbG9yLWFsaXN0JyBmb3IgbWFwcGluZyBvZiBpbmRpY2Vz
CiB0byBjb2xvcnMuICAqLykKICAgKHZvaWQpCiB7Ci0gIHJldHVybiBGY29ucyAobWFrZV9maXhu
dW0gKGNoYXJfYXR0cl9ub3JtYWwgJiAweDAwMGYpLAotCQlGY29ucyAobWFrZV9maXhudW0gKChj
aGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmKSwgUW5pbCkpOworICByZXR1cm4gRmNvbnMg
KG1ha2VfZml4bnVtIChmZ19ub3JtYWwpLAorCQlGY29ucyAobWFrZV9maXhudW0gKGJnX25vcm1h
bCksIFFuaWwpKTsKIH0KIAogREVGVU4gKCJzZXQtY3Vyc29yLXNpemUiLCBGc2V0X2N1cnNvcl9z
aXplLCBTc2V0X2N1cnNvcl9zaXplLCAxLCAxLCAwLApAQCAtOTY1LDcgKzEyNDEsMjQgQEAgbWF5
IGJlIHByZWZlcmFibGUgd2hlbiB3b3JraW5nIGRpcmVjdGx5IGF0IHRoZSBjb25zb2xlIHdpdGgg
YSBsYXJnZQogc2Nyb2xsLWJhY2sgYnVmZmVyLiAgKi8pOwogICB3MzJfdXNlX2Z1bGxfc2NyZWVu
X2J1ZmZlciA9IDA7CiAKKyAgREVGVkFSX0JPT0wgKCJ3MzItdXNlLXZpcnR1YWwtdGVybWluYWwt
c2VxdWVuY2VzIiwKKwkJdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcywKKwkJZG9j
OiAvKiBJZiBub24tbmlsIHczMiBjb25zb2xlIHVzZXMgdGVybWluYWwgc2VxdWVuY2VzIGZvciBz
b21lIG91dHB1dCBwcm9jZXNzaW5nLgorVGhpcyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxs
eSBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSB0ZXJtaW5hbC4KK0l0IGRldGVybWlu
ZXMgdGhlIG51bWJlciBhbmQgaW5kaWNlcyBvZiBjb2xvcnMgdXNlZCBmb3IgZmFjZXMgaW4gdGhl
IHRlcm1pbmFsLgorSWYgdGhlIHRlcm1pbmFsIGNhbm5vdCBoYW5kbGUgVlQgc2VxdWVuY2VzLCB0
aGUgdXBkYXRlIGhvb2sgdHJpZ2dlcnMgcmVjb21wdXRhdGlvbiBvZiBmYWNlcy4KK1NlZSBgdzMy
Y29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzJywgd2hpY2ggc2hvdWxkIGJlIGNhbGxlZCBh
ZnRlciBzZXR0aW5nIHRoaXMgdmFyaWFibGUgCittYW51YWxseSBpbiBhIHJ1bm5pbmcgc2Vzc2lv
bi4gKi8pOworICB3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzID0gMDsKKworICBE
RUZTWU0gKFF3MzJjb25fc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMsCisJICAidzMyY29uLXNl
dC11cC1pbml0aWFsLWZyYW1lLWZhY2VzIik7CisKKyAgREVGU1lNIChRdzMyY29uX2dldF9waXhl
bCwKKwkgICJ3MzJjb24tZ2V0LXBpeGVsIik7CisKICAgZGVmc3ViciAoJlNzZXRfc2NyZWVuX2Nv
bG9yKTsKICAgZGVmc3ViciAoJlNnZXRfc2NyZWVuX2NvbG9yKTsKICAgZGVmc3ViciAoJlNzZXRf
Y3Vyc29yX3NpemUpOworCiB9CmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5j
CmluZGV4IGFlZjQwYzM4ZTU0Li5kYzdmNDJiOThiYSAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMK
KysrIGIvc3JjL3hkaXNwLmMKQEAgLTE3MjM5LDggKzE3MjM5LDcgQEAgcmVkaXNwbGF5X2ludGVy
bmFsICh2b2lkKQogCSAgICAgYXJlYSwgZGlzcGxheWluZyBhIGRpZmZlcmVudCBmcmFtZSBtZWFu
cyByZWRpc3BsYXkgdGhlCiAJICAgICB3aG9sZSB0aGluZy4gICovCiAJICBTRVRfRlJBTUVfR0FS
QkFHRUQgKHNmKTsKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lE
CisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECiAJICBzZXRfdHR5
X2NvbG9yX21vZGUgKEZSQU1FX1RUWSAoc2YpLCBzZik7CiAjZW5kaWYKIAl9Ci0tCjIuNDkuMAoK
--b1=_7UGsCf4ZiRH9fNIspiSGAWE5toQ8COgsgQq4cdOII--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 14 Sep 2025 12:04:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 14 08:04:19 2025
Received: from localhost ([127.0.0.1]:60757 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uxlSo-0005La-RG
for submit <at> debbugs.gnu.org; Sun, 14 Sep 2025 08:04:19 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:41162)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uxlSg-0005KY-CY
for 79298 <at> debbugs.gnu.org; Sun, 14 Sep 2025 08:04:09 -0400
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 1uxlSY-00059f-DV; Sun, 14 Sep 2025 08:03:59 -0400
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=LkL6ZrjmR5VeMobyYQztm00bIPVrO4wU+wxERklDDDE=; b=PcyTzs8yQFWf
fThGJuuRuuHwdE5p+Bh9La+FOqACyMMAUxOjspygrHQ1xTS+2TQxt0NcD+yP5PFmL+DMEkpLVFyRn
sX6F4lajcW5Qj6IYo677mFttyNAh+LO/xahyXhZqZoCXjXfahpQzL+0iZnk0iXDNlhtfrkmO8/KCw
qlnmYr7sujiZXXd1tYZIgyRl1szROVhwzhm0Dl+PEve+90vswiqjLm6zJzlo9z89ZcIrPezq/axVn
UoNvl3lzXkyg6x/DaCt/NWA2zOlixlG+GdkutwHxJ9/qBDUOveSL5OHmNH6ctB8VmwxsRxzGN9720
Uib71RZluv76g569znci1w==;
Date: Sun, 14 Sep 2025 15:03:52 +0300
Message-Id: <86wm61nsuv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ewan <ewan@HIDDEN>
In-Reply-To: <m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
(message from Ewan on Sat, 06 Sep 2025 09:19:40 +0000)
Subject: Re: bug#79298: patch: full color in windows terminal
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev>
<86jz2ekew5.fsf@HIDDEN>
<kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev>
<868qiuk9jr.fsf@HIDDEN>
<UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev>
<864itijzmd.fsf@HIDDEN>
<ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev>
<87qzwk2g8h.fsf@HIDDEN>
<m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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: Sat, 06 Sep 2025 09:19:40 +0000
> From: Ewan <ewan@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>, 79298 <at> debbugs.gnu.org
>
> > I might be wrong, but I believe the change is for master (Emacs
> > 31.1). So pls modify etc/NEWS instead of etc/NEWS.30.
>
> Ahh, thank you - updated patches attached.
>
> ...-minimal: system cursor, VT sequences just for color.
> ...-full: system or Emacs-drawn cursor, complete migration to VT sequences.
Thanks. For now, let's focus on the "minimal" patch only. I'm also
ignoring the documentation for the time being. My plan is to arrive
at the agreed-upon initial patch for the code, then try it locally and
fix any problems, then finalize it (including the docs).
So the comments below are intended to (a) slightly cleanup the design
and implementation; and (b) avoid unnecessary changes.
> +;; W32 uses different color indexes than standard
> (defvar w32-tty-standard-colors
> '(("black" 0 0 0 0)
> ("blue" 1 0 0 52480) ; MediumBlue
> @@ -43,56 +42,133 @@
> ("lightmagenta" 13 65535 0 65535) ; Magenta
> ("yellow" 14 65535 65535 0) ; Yellow
> ("white" 15 65535 65535 65535))
> -"A list of VGA console colors, their indices and 16-bit RGB values.")
> + "A list of VGA console colors, their indices and 16-bit RGB values.")
> +
> +;; When using VT sequences for color, use xterm-like indices
> +(defvar w32-tty-virtual-terminal-base-colors
> + '(("black" 0 0 0 0)
> + ("red" 1 45568 8704 8704) ; FireBrick
What is the rationale for using different RGB components in the VT
mode? The RGB components of the 16 colors were determined by
comparing X and PC colors on the same screen. I presume that the VT
mode uses the same colors, so I don't understand why we need different
definitions. Can you explain?
> (defun terminal-init-w32console ()
> "Terminal initialization function for w32 console."
> ;; Share function key initialization with w32 gui frames
> (x-setup-function-keys (selected-frame))
> ;; Set terminal and keyboard encodings to the current OEM codepage.
> (let ((oem-code-page-coding
> - (intern (format "cp%d" (w32-get-console-codepage))))
> - (oem-code-page-output-coding
> - (intern (format "cp%d" (w32-get-console-output-codepage))))
> - oem-cs-p oem-o-cs-p)
> - (setq oem-cs-p (coding-system-p oem-code-page-coding))
> - (setq oem-o-cs-p (coding-system-p oem-code-page-output-coding))
> - (when oem-cs-p
> - (set-keyboard-coding-system oem-code-page-coding)
> - (set-terminal-coding-system
> - (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding))
> - ;; Since we changed the terminal encoding, we need to repeat
> - ;; the test for Unicode quotes being displayable.
> - (startup--setup-quote-display)))
> - (let* ((colors w32-tty-standard-colors)
> - (color (car colors)))
> - (tty-color-clear)
> - (while colors
> - (tty-color-define (car color) (cadr color) (cddr color))
> - (setq colors (cdr colors)
> - color (car colors))))
> - (clear-face-cache)
> - ;; Figure out what are the colors of the console window, and set up
> - ;; the background-mode correspondingly.
> - (let* ((screen-color (get-screen-color))
> - (bg (cadr screen-color))
> - (descr (tty-color-by-index bg))
> - r g b bg-mode)
> - (setq r (nth 2 descr)
> - g (nth 3 descr)
> - b (nth 4 descr))
> - (if (< (+ r g b) (* .6 (+ 65535 65535 65535)))
> - (setq bg-mode 'dark)
> - (setq bg-mode 'light))
> - (set-terminal-parameter nil 'background-mode bg-mode))
> - (tty-set-up-initial-frame-faces)
> + (intern (format "cp%d" (w32-get-console-codepage))))
> + (oem-code-page-output-coding
> + (intern (format "cp%d" (w32-get-console-output-codepage))))
In the interests of making the patch smaller and easier to review,
could you either avoid changing whitespace, or produce the patch using
the --ignore-space-changes command-line switch? AFAIU, most of the
above are whitespace changes (TABs to SPCes, right?), but the code is
basically left intact, by an large.
> --- a/src/term.c
> +++ b/src/term.c
> @@ -73,7 +73,6 @@ static void clear_tty_hooks (struct terminal *terminal);
> static void set_tty_hooks (struct terminal *terminal);
> static void dissociate_if_controlling_tty (int fd);
> static void delete_tty (struct terminal *);
> -
> #endif /* !HAVE_ANDROID */
There are quite a few changes that add or remove empty lines, please
avoid that, to make the patch smaller and more to-the-point.
> @@ -346,10 +345,10 @@ tty_hide_cursor (struct tty_display_info *tty)
> {
> if (tty->cursor_hidden == 0)
> {
> - tty->cursor_hidden = 1;
> #ifdef WINDOWSNT
> w32con_hide_cursor ();
> #else
> + tty->cursor_hidden = 1;
> OUTPUT_IF (tty, tty->TS_cursor_invisible);
Is this change of order important? If so, why? If it isn't
important, please leave the original order intact, again to make the
patch smaller and easier to grasp.
Same in other places where AFAICT you've modified the code for
stylistic reasons, without actually changing it.
> @@ -2264,18 +2263,42 @@ tty_setup_colors (struct tty_display_info *tty, int mode)
> default:
> tty_default_color_capabilities (tty, 0);
> break;
> - case 8: /* 8 standard ANSI colors */
> - tty->TS_orig_pair = "\033[0m";
> + case 8: /* 8 standard ANSI colors */
> + tty->TS_orig_pair = "\x1b[0m";
> + tty->TS_set_foreground = "\x1b[3%dm";
> + tty->TS_set_background = "\x1b[4%dm";
> #ifdef TERMINFO
> - tty->TS_set_foreground = "\033[3%p1%dm";
> - tty->TS_set_background = "\033[4%p1%dm";
> -#else
> - tty->TS_set_foreground = "\033[3%dm";
> - tty->TS_set_background = "\033[4%dm";
> + tty->TS_set_foreground = "\x1b[3%p1%dm";
> + tty->TS_set_background = "\x1b[4%p1%dm";
> +#endif
> +#ifdef WINDOWSNT
> + tty->TS_orig_pair = "\x1b[39m\x1b[49m";
> + tty->TS_set_foreground = "\x1b[%lum";
> + tty->TS_set_background = "\x1b[%lum";
I see you've consistently replaced \033 with \x1b. Any reason for
that? If it's possible to use \033 as in original code, it will again
make the patch smaller and easier to read.
Also, WINDOWSNT and TERMINFO are mutually-exclusive, so please use
#elif to show that.
> {
> - tty->TS_set_foreground = "\033[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m";
> - tty->TS_set_background = "\033[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m";
> + tty->TS_set_foreground = "\x1b[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m";
> + tty->TS_set_background = "\x1b[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m";
> tty->TN_max_colors = 16777216;
> }
This AFAIU also merely replaces \033 with \x1b.
> +#define SEQMAX 256 /* Arbitrary upper limit on VT sequence size */
GNU coding conventions frown on arbitrary limits. At the very least,
let's make sure the SSPRINTF macro bails out if it needs to produce
more than SEQMAX bytes, and let's have eassert there in case it bails
out early because the caller wanted more than that -- so that any such
problems could be caught early.
> +/* For debugging */
> +static void
> +vt_seq_error (char *seq)
Please explain in a comment how this supposed to be used for
debugging.
> + turn_on_face (f, face_id);
> + WriteConsole (cur_screen, conversion_buffer,
> + coding->produced, &r, NULL);
Why do you use WriteConsole here, but WriteConsoleA elsewhere? Is
there a difference? If not, let's be consistent.
> static void
> w32con_update_begin (struct frame * f)
> {
> + current_tty = FRAME_TTY (f);
> +
> + if (!w32_use_virtual_terminal_sequences
> + && current_tty->TN_max_colors > 16)
> + {
> + tty_setup_colors (current_tty, 16);
> + safe_calln (Qw32con_set_up_initial_frame_faces);
> + }
Why is this needed? This will call to Lisp each redisplay cycle,
which is expensive and will slow down redisplay. Why do we need to
setup colors and faces each redisplay cycle? We never needed this
before.
> +/* returns the pixel value for the given index into VT base color map */
> +static unsigned long pixel_cache[16];
> +static unsigned long
> +get_pixel (unsigned long index)
> +{
> + unsigned int i = (unsigned int) index;
> + if (i > 15) return 0;
> + if (i == 0 || pixel_cache[i] > 0)
> + return pixel_cache[i];
> +
> + Lisp_Object pix = safe_calln (Qw32con_get_pixel, make_ufixnum (i));
> + pixel_cache[i] = (unsigned long) XUFIXNUM (pix);
> + return pixel_cache[i];
> +}
This should be implemented in C to avoid a costly call into Lisp (each
time we need to use a different color!). Reusing existing code is
important, but speed of redisplay trumps that by a large margin.
> + DEFVAR_BOOL ("w32-use-virtual-terminal-sequences",
> + w32_use_virtual_terminal_sequences,
> + doc: /* If non-nil w32 console uses terminal sequences for some output processing.
> +This variable is set automatically based on the capabilities of the terminal.
> +It determines the number and indices of colors used for faces in the terminal.
> +If the terminal cannot handle VT sequences, the update hook triggers recomputation of faces.
> +See `w32con-set-up-initial-frame-faces', which should be called after setting this variable
> +manually in a running session. */);
> + w32_use_virtual_terminal_sequences = 0;
Do we want to support setting this from Lisp or by the user (in
addition to setting it automatically at startup)? If yes, does
setting it require some initialization?
Thanks again for working on this.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 6 Sep 2025 09:47:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 06 05:47:42 2025 Received: from localhost ([127.0.0.1]:34501 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uupWH-0001hO-Pb for submit <at> debbugs.gnu.org; Sat, 06 Sep 2025 05:47:42 -0400 Received: from mout.gmx.net ([212.227.17.21]:38353) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1uupWC-0001h1-Ta for 79298 <at> debbugs.gnu.org; Sat, 06 Sep 2025 05:47:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1757152047; x=1757756847; i=michael.albinus@HIDDEN; bh=q+Y+2zYkPvR/17ezGFSaN0GXhkUr0CLGPBkCO3vmhPg=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=Q+C2/g5eR/xYyWceUmO9xIMVADADFlEW0NQktufXMhPyKQlTPXha7GResf9lkblz RH6rIiZUoqJAdKD4ZaNhzocK0pSynPkC35oBHk4uIfSwnuD4CO/bNXdWB1RYxeAr6 JsXo4ROsvDC0j4SZOQVZtCDDf8NfVtTc9CFznb/ej6wK9q+5B7HJsTPBpBpWKt3dm NWh/wkIka/UChS/XVt7rpp6U0SIDs7ErA63JqNuiiSQ38qjQy9wUDzSal3NF9YnFj Pfx+uVNCSbxdKc5sW4oD8cifDJhJ6h70m7G7rnZUIUfdBrSL0zKg4b5LnzClBVnOA ImnJvhW8EYu0FMHXvw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MVeI8-1v2dYJ3DPw-00ROH0; Sat, 06 Sep 2025 11:47:27 +0200 From: Michael Albinus <michael.albinus@HIDDEN> To: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal In-Reply-To: <m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> <868qiuk9jr.fsf@HIDDEN> <UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev> <864itijzmd.fsf@HIDDEN> <ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev> <87qzwk2g8h.fsf@HIDDEN> <m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev> Date: Sat, 06 Sep 2025 11:47:26 +0200 Message-ID: <87ikhv3ob5.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:fbs/GK4Uj24NtUFkzelhmi0tSlmX71q+QfqdzTdnVvAE0sHpz+D ccWqu3OC6uFaRIockpWSQ/zzlYMA3gOFUaDxQJvoGyMgFqJmPfdBrBw3pUday/vkUeHYBl1 rsxaE/mJu+oNkNnMA9yNwPpUnCQTF1PapDem2RqjrmxLyb4/ssBc0ONdn4lN5xF4u8Q8mhK rObFZjL1/ALyBjwyDEYWQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:no+sis6UC48=;Ys6TloxPFOhzP9mh/tmikNmSTxK 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 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: Eli Zaretskii <eliz@HIDDEN>, 79298 <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 (-) Ewan <ewan@HIDDEN> writes: Hi, Another nitpick: > -draws its own cursor to indicate the position of point. A > +draws its own cursor to indicate the position of point. A Please use always two spaces after a period, which finishes a sentence. Everywhere in doc and comments. (You don't need to show new versions of the patches just because of this.) Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 6 Sep 2025 09:20:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 06 05:20:07 2025 Received: from localhost ([127.0.0.1]:34411 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uup5b-0000BI-Q0 for submit <at> debbugs.gnu.org; Sat, 06 Sep 2025 05:20:07 -0400 Received: from mail-10626.protonmail.ch ([79.135.106.26]:63777) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uup5N-00007a-Re for 79298 <at> debbugs.gnu.org; Sat, 06 Sep 2025 05:19:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1757150386; x=1757409586; bh=mz6HEjmSnJIHj9uu1/2mc21kmc0SqgB2GWbnzObBTZs=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=HW8acoDW3k25eoO9gaYIq1an4xZqZsmZaLV9CMcHrjjs4Yl4b3UxSBrQhp09u6CjH TBTYtCemxLLJUkCQ74nmH8k/xrVvt0U9EDZqjzAmO4w6FHA+Vp1m971gufHoBoacyS BudhmNzumd6Ow4olxNuQN/j3hzh9cXYkPZRH3x32pjROKKFMD6flKSjHmDCrW9/jO1 d7471k0M6DJ0PGZIPgqLPv8Qll4w9pKW7c2XTpIVO9wZAcxay+GuxdUh7MlN709kdk H4jLTH8BKLIhqYS4vVqemWENG7gAP30UVXnWqpD0689jywjM86vkZt8KGmeBIkKca2 iK+rgcgfGKqbA== Date: Sat, 06 Sep 2025 09:19:40 +0000 To: Michael Albinus <michael.albinus@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <m-zddfPH72bZV3v35CQ0FLpNA7EJ7jkNasTHq65JzT7fD9rgA36jPGJU1rBJoOfrsSblPWvjHCXJfVyjb77_WOVLtlCvPZFwgUfZ_GWa2Yk=@etown.dev> In-Reply-To: <87qzwk2g8h.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> <868qiuk9jr.fsf@HIDDEN> <UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev> <864itijzmd.fsf@HIDDEN> <ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev> <87qzwk2g8h.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: bdcc6314d98ade310ab387bb665906ed730f47ab MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw" X-Debbugs-Envelope-To: 79298 Cc: Eli Zaretskii <eliz@HIDDEN>, 79298 <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> --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > I might be wrong, but I believe the change is for master (Emacs > 31.1). So pls modify etc/NEWS instead of etc/NEWS.30. Ahh, thank you - updated patches attached. ...-minimal: system cursor, VT sequences just for color. ...-full: system or Emacs-drawn cursor, complete migration to VT sequenc= es. --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw Content-Type: application/octet-stream; name=0001-w32-VT-Sequences-minimal.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-w32-VT-Sequences-minimal.patch RnJvbSBmYzA5ZDJlNzFiMDVlYzYxZDBiMWM3ZGExMDQzYTFhN2NjZWZhYTFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFNhdCwg NiBTZXAgMjAyNSAwMTo1MTowOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHczMiBWVCBTZXF1ZW5j ZXMgKG1pbmltYWwpCgotLS0KIGRvYy9lbWFjcy9jbWRhcmdzLnRleGkgIHwgICA5ICstCiBkb2Mv ZW1hY3MvbXNkb3MudGV4aSAgICB8ICAyNiArKy0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgIHwg IDEyICsrCiBsaXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCB8ICAgMyArLQogbGlzcC90ZXJtL3czMmNv bnNvbGUuZWwgfCAxNTIgKysrKysrKysrLS0tLQogc3JjL3Rlcm0uYyAgICAgICAgICAgICAgfCAg ODUgKysrKysrLS0KIHNyYy90ZXJtY2hhci5oICAgICAgICAgIHwgICAyICsKIHNyYy93MzJjb25z b2xlLmMgICAgICAgIHwgNDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgICAyICstCiA5IGZpbGVzIGNoYW5nZWQsIDYw NCBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNz L2NtZGFyZ3MudGV4aSBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKaW5kZXggNzlhZTJkMDY0ZDEu LmVlZDI2M2MzOTA1IDEwMDY0NAotLS0gYS9kb2MvZW1hY3MvY21kYXJncy50ZXhpCisrKyBiL2Rv Yy9lbWFjcy9jbWRhcmdzLnRleGkKQEAgLTEwMjQsMTkgKzEwMjQsMjIgQEAgY29sb3JlZCBkaXNw bGF5LgogQGl0ZW14IGFuc2k4CiBUdXJuIG9uIHRoZSBjb2xvciBzdXBwb3J0IHVuY29uZGl0aW9u YWxseSwgYW5kIHVzZSBjb2xvciBjb21tYW5kcwogc3BlY2lmaWVkIGJ5IHRoZSBBTlNJIGVzY2Fw ZSBzZXF1ZW5jZXMgZm9yIHRoZSA4IHN0YW5kYXJkIGNvbG9ycy4KK0BpdGVtIDI0Yml0CitUdXJu IG9uIHN1cHBvcnQgZm9yIGFsbCBkZWZpbmVkIDI0LWJpdCBSR0IgY29sb3JzIGlmIGF2YWlsYWJs ZS4KK0N1cnJlbnRseSB0aGlzIGlzIGVmZmVjdGl2ZSBvbiBNUy1XaW5kb3dzICgxMCspIG9ubHku CiBAaXRlbSBAdmFye251bX0KIFVzZSBjb2xvciBtb2RlIGZvciBAdmFye251bX0gY29sb3JzLiAg SWYgQHZhcntudW19IGlzIEBtaW51c3t9MSwgdHVybiBvZmYKIGNvbG9yIHN1cHBvcnQgKGVxdWl2 YWxlbnQgdG8gQHNhbXB7bmV2ZXJ9KTsgaWYgaXQgaXMgMCwgdXNlIHRoZQogZGVmYXVsdCBjb2xv ciBzdXBwb3J0IGZvciB0aGlzIHRlcm1pbmFsIChlcXVpdmFsZW50IHRvIEBzYW1we2F1dG99KTsK IG90aGVyd2lzZSB1c2UgYW4gYXBwcm9wcmlhdGUgc3RhbmRhcmQgbW9kZSBmb3IgQHZhcntudW19 IGNvbG9ycy4KIERlcGVuZGluZyBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVzLCBFbWFj cyBtaWdodCBiZSBhYmxlIHRvIHR1cm4KLW9uIGEgY29sb3IgbW9kZSBmb3IgOCwgMTYsIDg4LCBv ciAyNTYgYXMgdGhlIHZhbHVlIG9mIEB2YXJ7bnVtfS4gIElmCi10aGVyZSBpcyBubyBtb2RlIHRo YXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgorb24gYSBjb2xv ciBtb2RlIGZvciA4LCAxNiwgODgsIDI1Niwgb3IgMTY3NzcyMTYgYXMgdGhlIHZhbHVlIG9mIEB2 YXJ7bnVtfS4KK0lmIHRoZXJlIGlzIG5vIG1vZGUgdGhhdCBzdXBwb3J0cyBAdmFye251bX0gY29s b3JzLCBFbWFjcyBhY3RzIGFzIGlmCiBAdmFye251bX0gd2VyZSAwLCBpLmUuLCBpdCB1c2VzIHRo ZSB0ZXJtaW5hbCdzIGRlZmF1bHQgY29sb3Igc3VwcG9ydAogbW9kZS4KIEBlbmQgdGFibGUKIAot VGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MuCitUaGlz IG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIE1TLURPUywgbm9yIE1TLVdpbmRvd3MgcHJpb3IgdG8g V2luZG93cyAxMC4KIAogQGNpbmRleCBjb2xvcnMgb24gY2hhcmFjdGVyIHRlcm1pbmFsLCBjaGFu Z2luZyBkdXJpbmcgc2Vzc2lvbgogQGNpbmRleCBjaGFyYWN0ZXIgdGVybWluYWwsIGNoYW5nZSBj b2xvciBtb2RlCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvbXNkb3MudGV4aSBiL2RvYy9lbWFjcy9t c2Rvcy50ZXhpCmluZGV4IGY5NzE1MWM2MzBmLi5mZGExYThkNjdjZCAxMDA2NDQKLS0tIGEvZG9j L2VtYWNzL21zZG9zLnRleGkKKysrIGIvZG9jL2VtYWNzL21zZG9zLnRleGkKQEAgLTExNjUsNyAr MTE2NSw3IEBAIGFueXdoZXJlIGVsc2UuCiAgIFRoZSB2YXJpYWJsZSBAY29kZXt3MzItdXNlLXZp c2libGUtc3lzdGVtLWNhcmV0fSBpcyBhIGZsYWcgdGhhdAogZGV0ZXJtaW5lcyB3aGV0aGVyIHRv IG1ha2UgdGhlIHN5c3RlbSBjYXJldCB2aXNpYmxlLiAgVGhlIGRlZmF1bHQgd2hlbgogbm8gc2Ny ZWVuIHJlYWRlciBzb2Z0d2FyZSBpcyBpbiB1c2UgaXMgQGNvZGV7bmlsfSwgd2hpY2ggbWVhbnMg RW1hY3MKLWRyYXdzIGl0cyBvd24gY3Vyc29yIHRvIGluZGljYXRlIHRoZSBwb3NpdGlvbiBvZiBw b2ludC4gIEEKK2RyYXdzIGl0cyBvd24gY3Vyc29yIHRvIGluZGljYXRlIHRoZSBwb3NpdGlvbiBv ZiBwb2ludC4gQQogbm9uLUBjb2Rle25pbH0gdmFsdWUgbWVhbnMgRW1hY3Mgd2lsbCBpbmRpY2F0 ZSBwb2ludCBsb2NhdGlvbiB3aXRoIHRoZQogc3lzdGVtIGNhcmV0OyB0aGlzIGZhY2lsaXRhdGVz IHVzZSBvZiBzY3JlZW4gcmVhZGVyIHNvZnR3YXJlLCBhbmQgaXMKIHRoZSBkZWZhdWx0IHdoZW4g c3VjaCBzb2Z0d2FyZSBpcyBkZXRlY3RlZCB3aGVuIHJ1bm5pbmcgRW1hY3MuCkBAIC0xMjAwLDYg KzEyMDAsMzAgQEAgeW91IHNob3VsZCBzZXQgaXRzIHZhbHVlIGluIHlvdXIgaW5pdCBmaWxlIChA cHhyZWZ7SW5pdCBGaWxlfSksIGVpdGhlcgogZGlyZWN0bHkgb3IgdmlhIEBrYmR7TS14IGN1c3Rv bWl6ZS12YXJpYWJsZX0sIHdoaWNoIGxldHMgeW91IHNhdmUgdGhlCiBjdXN0b21pemVkIHZhbHVl LCBzZWUgQHJlZntTYXZpbmcgQ3VzdG9taXphdGlvbnN9LgogCitAdmluZGV4IHczMi11c2Utdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMKK0BjaW5kZXggV2luZG93cyBUZXJtaW5hbCwgV2luZG93 cyBDb25zb2xlLCBNUy1XaW5kb3dzCisgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBkaXNwbGF5IGZ1 bmN0aW9uYWxpdHkgZm9yIFdpbmRvd3MgQ29uc29sZQorZGlmZmVycyBmcm9tIHRoZSBpbXBsZW1l bnRhdGlvbiBmb3Igb3RoZXIgdGVybWluYWwgZW11bGF0b3JzLAorYmVjYXVzZSBoaXN0b3JpY2Fs bHksIFdpbmRvd3MgcmVxdWlyZWQgdXNlIG9mIGFuIGlkaW9zeW5jcmFjdGljIEFQSS4KK1RoYXQg QVBJIGxpbWl0ZWQgV2luZG93cyBDb25zb2xlIGRpc3BsYXkgb2YgRW1hY3MgdG8gMTYgYmFzaWMg Y29sb3JzLgorV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIFdpbmRvd3MgVGVybWluYWwsIE1pY3Jv c29mdCBpbXBsZW1lbnRlZAorc3VwcG9ydCBmb3IgQVNDSUkgY29udHJvbCBzZXF1ZW5jZXMsIG1v ZGVsbGVkIG9uIHRoZSBWVDEwMCBhbmQgWHRlcm0sCithbmQgMjQtYml0IFJCRyBjb2xvciBkaXNw bGF5LgorCisgIFRoZSB2YXJpYWJsZSBAY29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2Vx dWVuY2VzfSBkZXRlcm1pbmVzCit3aGV0aGVyIHRoaXMgbmV3ZXIgbWVjaGFuaXNtIGlzIHVzZWQg Zm9yIGRpc3BsYXksIG9yIHRoZSBvbGRlciBvbmUuCitJdCBpcyBhdXRvbWF0aWNhbGx5IHNldCBi YXNlZCBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVzIG9uCitzdGFydHVwLiBJZiBpdCBp cyBub24tbmlsLCBFbWFjcyB3aWxsIHVzZSBBU0NJSSBlc2NhcGUgc2VxdWVuY2VzIGZvcgorY3Vy c29yIGFuZCBjb2xvciBkaXNwbGF5LiBCeSBkZWZhdWx0LCAyNC1iaXQgUkdCIGNvbG9yIHdpbGwg YmUgdXNlZCwKK2J1dCBvdGhlciAoOCwgMTYsIDI1NikgY29sb3Igc3BhY2VzIG1heSBiZSB1c2Vk LCBieSBwYXNzaW5nIHRoZQorQGNvZGV7LS1jb2xvcn0gY29tbWFuZCBsaW5lIGFyZ3VtZW50LCBv ciBzZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUKK0Bjb2Rle3R0eS1jb2xvci1tb2RlfSBmcmFtZSBw YXJhbWV0ZXIuCisKKyAgQW55IHRpbWUgQGNvZGV7dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNl cXVlbmNlc30gaXMgc2V0IG1hbnVhbGx5LAordGhlIGNoYW5nZSBpbiB2YWx1ZSBzaG91bGQgYmUg aW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBjYWxsIHRvCitAY29kZXtzZXQtZnJhbWUtcGFyYW1l dGVyfSAocmUpc2V0dGluZyBAY29kZXsndHR5LWNvbG9yLW1vZGV9LCBvcgorYXQgdmVyeSBsZWFz dCwgYSBjYWxsIHRvIEBjb2Rle3czMmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlc30uCisK IEBpZm5vdHRleAogQGluY2x1ZGUgbXNkb3MteHRyYS50ZXhpCiBAZW5kIGlmbm90dGV4CmRpZmYg LS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGUwYzRmM2NiODcxLi4zYjI3NDAyNzdh ZCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMyMjgsNiArMzIyOCwx OCBAQCBBY2NvcmRpbmdseSwgd2UgaGF2ZSByZXZpc2VkIG91ciByZWNvbW1lbmRhdGlvbnMgZm9y IGEgc3VpdGFibGUgREpHUFAKIHRvb2xjaGFpbiB0byBHQ0MgMTQuMi4wIGFuZCBCaW51dGlscyAy LjM1LjEgaW4gbGlldSBvZiBHQ0MgMy40LnggYW5kCiBCaW51dGlscyAyLjI2LgogCisrKysKKyoq IFdpbmRvd3MgVGVybWluYWwgbm93IGRpc3BsYXlzIDI0LWJpdCBSR0IuCitQcmV2aW91c2x5LCB0 ZXJtaW5hbCBzZXNzaW9ucyBvbiBXaW5kb3dzIHN1cHBvcnRlZCBkaXNwbGF5IG9mIDE2Citjb2xv cnMuIFRoZXJlIGlzIG5vdyBzdXBwb3J0IGZvciAyNTYgYW5kIDI0LWJpdCBSR0IgY29sb3IuIFRo ZSBuZXcKK21lY2hhbmlzbSB3aWxsIGJlIGVuYWJsZWQgYXV0b21hdGljYWxseSB3aGVuIHN1cHBv cnRlZC4gSXQgZGVmYXVsdHMKK3RvIDI0LWJpdCBSR0IgY29sb3IsIGJ1dCBjYW4gYmUgc2V0IHRv IDgsIDE2LCAyNTYsIG9yICcyNGJpdCcgYnkKK3Bhc3NpbmcgdGhlICctLWNvbG9yJyBmbGFnIG9y IHNldHRpbmcgdGhlICd0dHktY29sb3ItbW9kZScgZnJhbWUKK3BhcmFtZXRlci4gSXQgY2FuIGJl IGRpc2FibGVkL2VuYWJsZWQgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUKKyd3MzItdXNlLXZpcnR1 YWwtdGVybWluYWwtc2VxdWVuY2VzJy4KKworU2VlIHRoZSBtYW51YWwgZW50cnkgc3BlY2lmaWMg dG8gTVMtV2luZG93cyBmb3IgbW9yZSBkZXRhaWxzLgorCiAMCiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBUaGlz IGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0vdHR5LWNv bG9ycy5lbCBiL2xpc3AvdGVybS90dHktY29sb3JzLmVsCmluZGV4IGRmZDIwN2Q3MWMxLi4xYmEw NDVjOGI3MSAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKKysrIGIvbGlzcC90 ZXJtL3R0eS1jb2xvcnMuZWwKQEAgLTc2NCw3ICs3NjQsOCBAQAogICAgIChhdXRvIC4gMCkKICAg ICAoYW5zaTggLiA4KQogICAgIChhbHdheXMgLiA4KQotICAgICh5ZXMgLiA4KSkKKyAgICAoeWVz IC4gOCkKKyAgICAoMjRiaXQgLiAxNjc3NzIxNikpCiAgICJBbiBhbGlzdCBvZiBzdXBwb3J0ZWQg c3RhbmRhcmQgdHR5IGNvbG9yIG1vZGVzIGFuZCB0aGVpciBhbGlhc2VzLiIpCiAKIChkZWZ1biB0 dHktY29sb3ItYWxpc3QgKCZvcHRpb25hbCBfZnJhbWUpCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0v dzMyY29uc29sZS5lbCBiL2xpc3AvdGVybS93MzJjb25zb2xlLmVsCmluZGV4IDFiNDRkYTQ4YmY3 Li43YTI2MjA5NzQ5MiAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKKysrIGIv bGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKQEAgLTI0LDggKzI0LDcgQEAKIAogOzs7IENvZGU6CiAK LTs7IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQ6Ci0KKzs7 IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQKIChkZWZ2YXIg dzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMKICAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAg ICAwICAgICAwKQogICAgICgiYmx1ZSIgICAgICAgICAgIDEgICAgIDAgICAgIDAgNTI0ODApIDsg TWVkaXVtQmx1ZQpAQCAtNDMsNTYgKzQyLDEzMyBAQAogICAgICgibGlnaHRtYWdlbnRhIiAgMTMg NjU1MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQogICAgICgieWVsbG93IiAgICAgICAgMTQgNjU1 MzUgNjU1MzUgICAgIDApIDsgWWVsbG93CiAgICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2 NTUzNSA2NTUzNSkpCi0iQSBsaXN0IG9mIFZHQSBjb25zb2xlIGNvbG9ycywgdGhlaXIgaW5kaWNl cyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xv cnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFsdWVzLiIpCisKKzs7IFdoZW4gdXNp bmcgVlQgc2VxdWVuY2VzIGZvciBjb2xvciwgdXNlIHh0ZXJtLWxpa2UgaW5kaWNlcworKGRlZnZh ciB3MzItdHR5LXZpcnR1YWwtdGVybWluYWwtYmFzZS1jb2xvcnMKKyAgJygoImJsYWNrIiAgICAg ICAgICAwICAgICAwICAgICAwICAgICAwKQorICAgICgicmVkIiAgICAgICAgICAgIDEgNDU1Njgg IDg3MDQgIDg3MDQpIDsgRmlyZUJyaWNrCisgICAgKCJncmVlbiIgICAgICAgICAgMiAgODcwNCAz NTU4NCAgODcwNCkgOyBGb3Jlc3RHcmVlbgorICAgICgiYnJvd24iICAgICAgICAgIDMgNDA5NjAg MjA5OTIgMTE1MjApIDsgU2llbm5hCisgICAgKCJibHVlIiAgICAgICAgICAgNCAgICAgMCAgICAg MCA1MjQ4MCkgOyBNZWRpdW1CbHVlCisgICAgKCJtYWdlbnRhIiAgICAgICAgNSAzNTU4NCAgICAg MCAzNTU4NCkgOyBEYXJrTWFnZW50YQorICAgICgiY3lhbiIgICAgICAgICAgIDYgICAgIDAgNTI3 MzYgNTM1MDQpIDsgRGFya1R1cnF1b2lzZQorICAgICgibGlnaHRncmF5IiAgICAgIDcgNDg2NDAg NDg2NDAgNDg2NDApIDsgR3JheQorICAgICgiZGFya2dyYXkiICAgICAgIDggMjYxMTIgMjYxMTIg MjYxMTIpIDsgR3JheTQwCisgICAgKCJsaWdodHJlZCIgICAgICAgOSA2NTUzNSAgICAgMCAgICAg MCkgOyBSZWQKKyAgICAoImxpZ2h0Z3JlZW4iICAgIDEwICAgICAwIDY1NTM1ICAgICAwKSA7IEdy ZWVuCisgICAgKCJ5ZWxsb3ciICAgICAgICAxMSA2NTUzNSA2NTUzNSAgICAgMCkgOyBZZWxsb3cK KyAgICAoImxpZ2h0Ymx1ZSIgICAgIDEyICAgICAwICAgICAwIDY1NTM1KSA7IEJsdWUKKyAgICAo ImxpZ2h0bWFnZW50YSIgIDEzIDY1NTM1ICAgICAwIDY1NTM1KSA7IE1hZ2VudGEKKyAgICAoImxp Z2h0Y3lhbiIgICAgIDE0ICAgICAwIDY1NTM1IDY1NTM1KSA7IEN5YW4KKyAgICAoIndoaXRlIiAg ICAgICAgIDE1IDY1NTM1IDY1NTM1IDY1NTM1KSkKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBj b2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFsdWVzLiIpCiAKIChkZWNsYXJl LWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAidGVybS9jb21tb24td2luIiAoZnJhbWUp KQogKGRlY2xhcmUtZnVuY3Rpb24gZ2V0LXNjcmVlbi1jb2xvciAidzMyY29uc29sZS5jIiAoKSkK IChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSAidzMycHJvYy5jIiAo KSkKIChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UgIncz MnByb2MuYyIgKCkpCiAKKyhkZWZ1biB3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzICgpCisgICJE ZWZpbmVzIGJhc2UgMTYtY29sb3Igc3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCogKChj b2xvcnMgKGlmIHczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMKKyAgICAgICAgICAg ICAgICAgICAgIHczMi10dHktdmlydHVhbC10ZXJtaW5hbC1iYXNlLWNvbG9ycworICAgICAgICAg ICAgICAgICAgIHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkKKyAgICAgICAgIChuYmFzZSAobGVu Z3RoIGNvbG9ycykpCisgICAgICAgICAoY29sb3IgKGNhciBjb2xvcnMpKSkKKyAgICAocHJvZ24g KHdoaWxlIGNvbG9ycworICAgICAgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgY29sb3Ip IChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikpCisgICAgICAgICAgICAgKHNldHEgY29sb3JzIChj ZHIgY29sb3JzKQorICAgICAgICAgICAgICAgICAgIGNvbG9yICAoY2FyIGNvbG9ycykpKQorICAg ICAgICAgICBuYmFzZSkpKQorCis7OyBOb3RlOiB0dHktY29sb3ItZGVmaW5lIHN3YXBzIHBhc3Nl ZCBpbmRleCBmb3IgcGl4ZWwgb24gMjRiaXQgdGVybWluYWwKKzs7IFNvLCB3ZSBuZWVkIHRoaXMg ZnVuY3Rpb24gdG8gInJlY292ZXIiIHRoZSB0ZXJtaW5hbCdzIG5hdGl2ZSBtYXBwaW5nCisoZGVm dW4gdzMyY29uLWdldC1waXhlbCAoaW5kZXgpCisgICJDb252ZXJ0IGEgYmFzZS1jb2xvciBpbmRl eCBpbnRvIGEgcGl4ZWwgKGluZGV4IGludG8gMjRiaXQgbWFwKSIKKyAgKGxldCAoKGNvbG9yIChu dGggaW5kZXggdzMyLXR0eS12aXJ0dWFsLXRlcm1pbmFsLWJhc2UtY29sb3JzKSkpCisgICAgKG9y ICh0dHktY29sb3ItMjRiaXQgKGNkZHIgY29sb3IpKSBpbmRleCkpKQorCisoZGVmdW4gdzMyY29u LWRlZmluZS0yNTYtY29sb3JzICgpCisgICJEZWZpbmVzIDI1Ni1jb2xvciBzcGFjZSBmb3IgdzMy IGNvbnNvbGUuIgorICAobGV0ICgociAwKSAoYiAwKSAoZyAwKQorICAgICAgICAobiAoLSAyNTYg KHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAgICAgKGNvbnZlcnQtdG8tMTZiaXQg KGxhbWJkYSAocHJpbSkgKGxvZ2lvciBwcmltIChhc2ggcHJpbSA4KSkpKSkKKyAgICAod2hpbGUg KD4gbiAyNCkgOyBub24tZ3JleQorICAgICAgKGxldCAoKGkgKC0gMjU2IG4pKQorICAgICAgICAg ICAgKGMgKG1hcGNhciBjb252ZXJ0LXRvLTE2Yml0CisgICAgICAgICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoeCkgKGlmICh6ZXJvcCB4KSAwICgrICgqIHggNDApIDU1KSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgciBnIGIpKSkpKQorICAgICAgICAodHR5 LWNvbG9yLWRlZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIGIg KDErIGIpKQorICAgICAgKHdoZW4gKD4gYiA1KSAoc2V0cSBnICgxKyBnKSBiIDApKQorICAgICAg KHdoZW4gKD4gZyA1KSAoc2V0cSByICgxKyByKSBnIDApKQorICAgICAgKHNldHEgbiAoMS0gbikp KQorICAgICh3aGlsZSAoPiBuIDApIDsgYWxsLWdyZXkKKyAgICAgIChsZXQqICgoaSAoLSAyNTYg bikpCisgICAgICAgICAgICAgKHYgKGZ1bmNhbGwgY29udmVydC10by0xNmJpdCAoKyA4ICgqICgt IDI0IG4pIDEwKSkpKQorICAgICAgICAgICAgIChjIChsaXN0IHYgdiB2KSkpCisgICAgICAgICh0 dHktY29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEg biAoMS0gbikpKSkpCisKKyhkZWZ1biB3MzJjb24tZGVmaW5lLTI0Yml0LWNvbG9ycyAoKQorICAi RGVmaW5lcyAyNC1iaXQgY29sb3Igc3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCAoKGkg KHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAobWFwYyAobGFtYmRhIChjKSAodW5s ZXNzIChhc3NvYyAoY2FyIGMpIHczMi10dHktc3RhbmRhcmQtY29sb3JzKQorICAgICAgICAgICAg ICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgYykgaSAoY2RyIGMpKQorICAgICAgICAgICAg ICAgICAgIChzZXRxIGkgKDErIGkpKSkpCisgICAgICAgICAgY29sb3ItbmFtZS1yZ2ItYWxpc3Qp KSkKKwogKGRlZnVuIHRlcm1pbmFsLWluaXQtdzMyY29uc29sZSAoKQogICAiVGVybWluYWwgaW5p dGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHczMiBjb25zb2xlLiIKICAgOzsgU2hhcmUgZnVuY3Rp b24ga2V5IGluaXRpYWxpemF0aW9uIHdpdGggdzMyIGd1aSBmcmFtZXMKICAgKHgtc2V0dXAtZnVu Y3Rpb24ta2V5cyAoc2VsZWN0ZWQtZnJhbWUpKQogICA7OyBTZXQgdGVybWluYWwgYW5kIGtleWJv YXJkIGVuY29kaW5ncyB0byB0aGUgY3VycmVudCBPRU0gY29kZXBhZ2UuCiAgIChsZXQgKChvZW0t Y29kZS1wYWdlLWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNv bGUtY29kZXBhZ2UpKSkpCi0JKG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZwotCSAoaW50ZXJu IChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlKSkpKQotCW9l bS1jcy1wIG9lbS1vLWNzLXApCi0JKHNldHEgb2VtLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0t Y29kZS1wYWdlLWNvZGluZykpCi0JKHNldHEgb2VtLW8tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9l bS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZykpCi0JKHdoZW4gb2VtLWNzLXAKLQkgIChzZXQta2V5 Ym9hcmQtY29kaW5nLXN5c3RlbSBvZW0tY29kZS1wYWdlLWNvZGluZykKLQkgIChzZXQtdGVybWlu YWwtY29kaW5nLXN5c3RlbQotCSAgIChpZiBvZW0tby1jcy1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0 LWNvZGluZyBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0gICAgICAgICAgOzsgU2luY2Ugd2UgY2hh bmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0Ci0gICAgICAgICAg OzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgotICAgICAg ICAgIChzdGFydHVwLS1zZXR1cC1xdW90ZS1kaXNwbGF5KSkpCi0gIChsZXQqICgoY29sb3JzIHcz Mi10dHktc3RhbmRhcmQtY29sb3JzKQotICAgICAgICAgKGNvbG9yIChjYXIgY29sb3JzKSkpCi0g ICAgKHR0eS1jb2xvci1jbGVhcikKLSAgICAod2hpbGUgY29sb3JzCi0gICAgICAodHR5LWNvbG9y LWRlZmluZSAoY2FyIGNvbG9yKSAoY2FkciBjb2xvcikgKGNkZHIgY29sb3IpKQotICAgICAgKHNl dHEgY29sb3JzIChjZHIgY29sb3JzKQotICAgICAgICAgICAgY29sb3IgKGNhciBjb2xvcnMpKSkp Ci0gIChjbGVhci1mYWNlLWNhY2hlKQotICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBjb2xv cnMgb2YgdGhlIGNvbnNvbGUgd2luZG93LCBhbmQgc2V0IHVwCi0gIDs7IHRoZSBiYWNrZ3JvdW5k LW1vZGUgY29ycmVzcG9uZGluZ2x5LgotICAobGV0KiAoKHNjcmVlbi1jb2xvciAoZ2V0LXNjcmVl bi1jb2xvcikpCi0JIChiZyAoY2FkciBzY3JlZW4tY29sb3IpKQotCSAoZGVzY3IgKHR0eS1jb2xv ci1ieS1pbmRleCBiZykpCi0JIHIgZyBiIGJnLW1vZGUpCi0gICAgKHNldHEgciAobnRoIDIgZGVz Y3IpCi0JICBnIChudGggMyBkZXNjcikKLQkgIGIgKG50aCA0IGRlc2NyKSkKLSAgICAoaWYgKDwg KCsgciBnIGIpICgqIC42ICgrIDY1NTM1IDY1NTM1IDY1NTM1KSkpCi0JKHNldHEgYmctbW9kZSAn ZGFyaykKLSAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkKLSAgICAoc2V0LXRlcm1pbmFsLXBh cmFtZXRlciBuaWwgJ2JhY2tncm91bmQtbW9kZSBiZy1tb2RlKSkKLSAgKHR0eS1zZXQtdXAtaW5p dGlhbC1mcmFtZS1mYWNlcykKKyAgICAgICAgIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1n ZXQtY29uc29sZS1jb2RlcGFnZSkpKSkKKyAgICAgICAgKG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNv ZGluZworICAgICAgICAgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLW91 dHB1dC1jb2RlcGFnZSkpKSkKKyAgICAgICAgb2VtLWNzLXAgb2VtLW8tY3MtcCkKKyAgICAoc2V0 cSBvZW0tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAo c2V0cSBvZW0tby1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29k aW5nKSkKKyAgICAod2hlbiBvZW0tY3MtcAorICAgICAgKHNldC1rZXlib2FyZC1jb2Rpbmctc3lz dGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQorICAgICAgKHNldC10ZXJtaW5hbC1jb2Rpbmctc3lz dGVtCisgICAgICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nIG9l bS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAgIDs7IFNpbmNlIHdlIGNoYW5nZWQgdGhlIHRlcm1p bmFsIGVuY29kaW5nLCB3ZSBuZWVkIHRvIHJlcGVhdAorICAgICAgOzsgdGhlIHRlc3QgZm9yIFVu aWNvZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgorICAgICAgKHN0YXJ0dXAtLXNldHVwLXF1 b3RlLWRpc3BsYXkpKSkKKyAgKHczMmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKICAg KHJ1bi1ob29rcyAndGVybWluYWwtaW5pdC13MzItaG9vaykpCiAKKyhkZWZ1biB3MzJjb24tc2V0 LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMgKCkKKyAgIlNldCB1cCBpbml0aWFsIGZhY2UgY29sb3Ig c2NoZW1lIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YKK2Rpc3BsYXkgY29sb3Jz IGFuZCB0aGUgdmFsdWUgb2YgYHczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMnLiIK KyAgKHR0eS1jb2xvci1jbGVhcikKKyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29sb3ItY2Vs bHMpKSkKKyAgICAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworICAgICAg ICAoY29uZCAoKD0gbmNvbG9ycyAxNjc3NzIxNikgKHczMmNvbi1kZWZpbmUtMjRiaXQtY29sb3Jz KSkKKyAgICAgICAgICAgICAgKCg9IG5jb2xvcnMgMjY1ICAgICAgICh3MzJjb24tZGVmaW5lLTI1 Ni1jb2xvcnMpKSkKKyAgICAgICAgICAgICAgKHQgICAgICAgICAgICAgICAgICAgICh3MzJjb24t ZGVmaW5lLWJhc2UtY29sb3JzKSkpCisgICAgICAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykp CisgICAgKGNsZWFyLWZhY2UtY2FjaGUpCisgICAgOzsgRmlndXJlIG91dCB3aGF0IGFyZSB0aGUg Y29sb3JzIG9mIHRoZSBjb25zb2xlIHdpbmRvdywgYW5kIHNldCB1cAorICAgIDs7IHRoZSBiYWNr Z3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5LgorICAgIChsZXQqICgoc2NyZWVuLWNvbG9yIChn ZXQtc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJhc2UtaW5kZXggKGNhZHIgc2NyZWVuLWNv bG9yKSkKKyAgICAgICAgICAgKGJnLXBpeGVsICh3MzJjb24tZ2V0LXBpeGVsIGJhc2UtaW5kZXgp KQorICAgICAgICAgICAoYmcgKGlmICg9IG5jb2xvcnMgMTY3NzcyMTYpIGJnLXBpeGVsIGJhc2Ut aW5kZXgpKQorICAgICAgICAgICAoZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCisgICAg ICAgICAgIHIgZyBiIGJnLW1vZGUpCisgICAgICAoc2V0cSByIChudGggMiBkZXNjcikKKyAgICAg ICAgICAgIGcgKG50aCAzIGRlc2NyKQorICAgICAgICAgICAgYiAobnRoIDQgZGVzY3IpKQorICAg ICAgKGlmICg8ICgrIHIgZyBiKSAoKiAuNiAoKyA2NTUzNSA2NTUzNSA2NTUzNSkpKQorICAgICAg ICAgIChzZXRxIGJnLW1vZGUgJ2RhcmspCisgICAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkK KyAgICAgIChzZXQtdGVybWluYWwtcGFyYW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1v ZGUpKSkKKyAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykpCisKIChwcm92aWRlICd0 ZXJtL3czMmNvbnNvbGUpCiAKIDs7OyB3MzJjb25zb2xlLmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggYTFlM2Y2MzEyYzYuLjZjMzExNmY3ZmNl IDEwMDY0NAotLS0gYS9zcmMvdGVybS5jCisrKyBiL3NyYy90ZXJtLmMKQEAgLTczLDcgKzczLDYg QEAgc3RhdGljIHZvaWQgY2xlYXJfdHR5X2hvb2tzIChzdHJ1Y3QgdGVybWluYWwgKnRlcm1pbmFs KTsKIHN0YXRpYyB2b2lkIHNldF90dHlfaG9va3MgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwp Owogc3RhdGljIHZvaWQgZGlzc29jaWF0ZV9pZl9jb250cm9sbGluZ190dHkgKGludCBmZCk7CiBz dGF0aWMgdm9pZCBkZWxldGVfdHR5IChzdHJ1Y3QgdGVybWluYWwgKik7Ci0KICNlbmRpZiAvKiAh SEFWRV9BTkRST0lEICovCiAKIHN0YXRpYyBBVk9JRCBtYXliZV9mYXRhbCAoYm9vbCwgc3RydWN0 IHRlcm1pbmFsICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLApAQCAtMzQ2LDEwICszNDUs MTAgQEAgdHR5X2hpZGVfY3Vyc29yIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5KQogewog ICBpZiAodHR5LT5jdXJzb3JfaGlkZGVuID09IDApCiAgICAgewotICAgICAgdHR5LT5jdXJzb3Jf aGlkZGVuID0gMTsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9oaWRlX2N1cnNvciAo KTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAxOwogICAgICAgT1VUUFVUX0lG ICh0dHksIHR0eS0+VFNfY3Vyc29yX2ludmlzaWJsZSk7CiAjZW5kaWYKICAgICB9CkBAIC0zNjMs MTAgKzM2MiwxMCBAQCB0dHlfc2hvd19jdXJzb3IgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0 dHkpCiB7CiAgIGlmICh0dHktPmN1cnNvcl9oaWRkZW4pCiAgICAgewotICAgICAgdHR5LT5jdXJz b3JfaGlkZGVuID0gMDsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9zaG93X2N1cnNv ciAoKTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAwOwogICAgICAgT1VUUFVU X0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX25vcm1hbCk7CiAgICAgICBpZiAodmlzaWJsZV9jdXJz b3IpCiAgICAgICAgIE9VVFBVVF9JRiAodHR5LCB0dHktPlRTX2N1cnNvcl92aXNpYmxlKTsKQEAg LTIyMDcsNyArMjIwNiw3IEBAIFRFUk1JTkFMIGRvZXMgbm90IHJlZmVyIHRvIGEgdGV4dCB0ZXJt aW5hbC4gICovKQogICByZXR1cm4gbWFrZV9maXhudW0gKHQgPyB0LT5kaXNwbGF5X2luZm8udHR5 LT5UTl9tYXhfY29sb3JzIDogMCk7CiB9CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYgIWRlZmlu ZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFWRV9BTkRS T0lECiAKIC8qIERlY2xhcmUgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgZnVuY3Rpb24sIGFzIGlu IHRoZSByZXN0IG9mIEVtYWNzLAogICAgdG8gd29yayBhcm91bmQgYW4gSFBVWCBjb21waWxlciBi dWcgKD8pLiBTZWUKQEAgLTIyNDYsNyArMjI0NSw3IEBAIHR0eV9kZWZhdWx0X2NvbG9yX2NhcGFi aWxpdGllcyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgYm9vbCBzYXZlKQogICAgTU9E RSdzIHZhbHVlIGlzIGdlbmVyYWxseSB0aGUgbnVtYmVyIG9mIGNvbG9ycyB3aGljaCB3ZSB3YW50 IHRvCiAgICBzdXBwb3J0OyB6ZXJvIG1lYW5zIHNldCB1cCBmb3IgdGhlIGRlZmF1bHQgY2FwYWJp bGl0aWVzLCB0aGUgb25lcwogICAgd2Ugc2F3IGF0IGluaXRfdHR5IHRpbWU7IC0xIG1lYW5zIHR1 cm4gb2ZmIGNvbG9yIHN1cHBvcnQuICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHR0eV9zZXR1cF9j b2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2RlKQogewogICAvKiBD YW5vbmljYWxpemUgYWxsIG5lZ2F0aXZlIHZhbHVlcyBvZiBNT0RFLiAgKi8KQEAgLTIyNjQsMTgg KzIyNjMsNDIgQEAgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0 eSwgaW50IG1vZGUpCiAgICAgICBkZWZhdWx0OgogCXR0eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxp dGllcyAodHR5LCAwKTsKIAlicmVhazsKLSAgICAgIGNhc2UgODoJLyogOCBzdGFuZGFyZCBBTlNJ IGNvbG9ycyAqLwotCXR0eS0+VFNfb3JpZ19wYWlyID0gIlwwMzNbMG0iOworICAgICAgY2FzZSA4 OiAvKiA4IHN0YW5kYXJkIEFOU0kgY29sb3JzICovCisJdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgx YlswbSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlZG0iOworCXR0eS0+VFNf c2V0X2JhY2tncm91bmQgPSAiXHgxYls0JWRtIjsKICNpZmRlZiBURVJNSU5GTwotCXR0eS0+VFNf c2V0X2ZvcmVncm91bmQgPSAiXDAzM1szJXAxJWRtIjsKLQl0dHktPlRTX3NldF9iYWNrZ3JvdW5k ID0gIlwwMzNbNCVwMSVkbSI7Ci0jZWxzZQotCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXDAz M1szJWRtIjsKLQl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNbNCVkbSI7CisJdHR5LT5U U19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlcDElZG0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91 bmQgPSAiXHgxYls0JXAxJWRtIjsKKyNlbmRpZgorI2lmZGVmIFdJTkRPV1NOVAorCXR0eS0+VFNf b3JpZ19wYWlyID0gIlx4MWJbMzltXHgxYls0OW0iOworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQg PSAiXHgxYlslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJWx1bSI7CiAj ZW5kaWYKIAl0dHktPlROX21heF9jb2xvcnMgPSA4OwogCXR0eS0+VE5fbm9fY29sb3JfdmlkZW8g PSAwOwogCWJyZWFrOworI2lmZGVmIFdJTkRPV1NOVAorICAgICAgY2FzZSAxNjoKKwl0dHktPlRT X3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9 ICJceDFiWyVsdW0iOworCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2OworCXR0eS0+VE5fbm9fY29s b3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAyNTY6CisJdHR5LT5UTl9tYXhfY29s b3JzID0gMjU2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlszODs1OyVsdW0iOwor CXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODs1OyVsdW0iOworCXR0eS0+VE5fbm9f Y29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAxNjc3NzIxNjoKKwl0dHktPlRO X21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJb Mzg7MjslbHU7JWx1OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODsy OyVsdTslbHU7JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7Cisj ZW5kaWYKICAgICB9CiB9CiAKQEAgLTIzMDcsMTIgKzIzMzAsMTYgQEAgc2V0X3R0eV9jb2xvcl9t b2RlIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBzdHJ1Y3QgZnJhbWUgKmYpCiAgICAg ewogICAgICAgdHR5LT5wcmV2aW91c19jb2xvcl9tb2RlID0gbW9kZTsKICAgICAgIHR0eV9zZXR1 cF9jb2xvcnMgKHR0eSAsIG1vZGUpOwotICAgICAgLyogIFRoaXMgcmVjb21wdXRlcyBhbGwgdGhl IGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3IgZGVmaW5pdGlvbnMuICAqLworICAgICAgLyogIFRo aXMgcmVjb21wdXRlcyBhbGwgdGhlIGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3IgZGVmaW5pdGlv bnMuICovCisjaWZkZWYgV0lORE9XU05UCisgICAgICBzYWZlX2NhbGxuIChRdzMyY29uX3NldF91 cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbHNlCiAgICAgICBzYWZlX2NhbGxuIChRdHR5X3Nl dF91cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbmRpZgogICAgIH0KIH0KIAotI2VuZGlmIC8q ICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFWRV9B TkRST0lEICovCiAKIGNoYXIgKgogdHR5X3R5cGVfbmFtZSAoTGlzcF9PYmplY3QgdGVybWluYWwp CkBAIC00NTg2LDggKzQ2MTMsOCBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdURVJN PS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogCQkgfHwgKChiZyA9IGdldGVudiAoIkNP TE9SVEVSTSIpKSAhPSBOVUxMCiAJCSAgICAgJiYgc3RyY2FzZWNtcCAoYmcsICJ0cnVlY29sb3Ii KSA9PSAwKSkKIAkgIHsKLQkgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMzWyU/JXAx JXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2fSUvJXsyNTV9JSYl ZDslcDElezI1NX0lJiVkJTttIjsKLQkgICAgdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJcMDMz WyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2fSUvJXsy NTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9 ICJceDFiWyU/JXAxJXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2 fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19zZXRfYmFja2dy b3VuZCA9ICJceDFiWyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUzNn0lLyVkOyVw MSV7MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKIAkgICAgdHR5LT5UTl9tYXhf Y29sb3JzID0gMTY3NzcyMTY7CiAJICB9CiAgICAgICB9CkBAIC00NjQxLDYgKzQ2NjgsMjcgQEAg dXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBURVJNJyAoQy1z aGVsbDpcblwKIAogICAgIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHRlcm1pbmFsLCAmd2lkdGgs ICZoZWlnaHQpOwogCisgICAgLyogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93cyAoMTArKSBU ZXJtaW5hbCBhbmQgQ29uc29sZSBIb3N0CisgICAgICAgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQu Y29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVu Y2VzICovCisgICAgdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisgICAgdHR5LT5UTl9tYXhf Y29sb3JzID0gMTY3NzcyMTY7CisgICAgdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgxYlszOW1ceDFi WzQ5bSI7CisgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzI7JWx1OyVsdTsl bHVtIjsKKyAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbNDg7MjslbHU7JWx1OyVs dW0iOworCisgICAgLyogU2F2ZSBkZWZhdWx0IGNvbG9yIGNhcGFiaWxpdGllcyAqLworICAgIHR0 eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxpdGllcyAodHR5LCAxKTsKKworICAgIHR0eS0+VFNfZW50 ZXJfYm9sZF9tb2RlID0gIlx4MWJbMW0iOworICAgIHR0eS0+VFNfZW50ZXJfaXRhbGljX21vZGUg PSAiXHgxYlszbSI7CisgICAgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9tb2RlID0gIlx4 MWJbOW0iOworICAgIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUgPSAiXHgxYls0bSI7Cisg ICAgdHR5LT5UU19leGl0X3VuZGVybGluZV9tb2RlID0gIlx4MWJbMjRtIjsKKyAgICB0dHktPlRT X2VudGVyX3JldmVyc2VfbW9kZSA9ICJceDFiWzdtIjsKKyAgICB0dHktPlRTX2V4aXRfYXR0cmli dXRlX21vZGUgPSAiXHgxYlswbSI7CisgICAgdHR5LT5UU19jdXJzb3JfaW52aXNpYmxlID0gIlx4 MWJbPzI1bCI7CisgICAgdHR5LT5UU19jdXJzb3JfdmlzaWJsZSA9ICJceDFiWz8yNWgiOworCiAg ICAgRnJhbWVSb3dzICh0dHkpID0gaGVpZ2h0OwogICAgIEZyYW1lQ29scyAodHR5KSA9IHdpZHRo OwogICAgIHR0eS0+c3BlY2lmaWVkX3dpbmRvdyA9IGhlaWdodDsKQEAgLTQ2ODYsNyArNDczNCw2 IEBAIHVzZSB0aGUgQm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScg KEMtc2hlbGw6XG5cCiAgICAgIGRvbid0IHRoaW5rIHdlJ3JlIGxvc2luZyBhbnl0aGluZyBieSB0 dXJuaW5nIGl0IG9mZi4gICovCiAgIHR0eS0+bGluZV9pbnNfZGVsX29rID0gMDsKIAotICB0dHkt PlROX21heF9jb2xvcnMgPSAxNjsgIC8qIE11c3QgYmUgbm9uLXplcm8gZm9yIHR0eS1kaXNwbGF5 LWNvbG9yLXAuICAqLwogI2VuZGlmCS8qIERPU19OVCAqLwogCiAjaWZkZWYgSEFWRV9HUE0KQEAg LTUyMDIsMTEgKzUyNDksMTEgQEAgbm9uLW5pbCB0byBlbmFibGUgdGhpcyBvcHRpbWl6YXRpb24u ICAqLyk7CiAgIGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfd2lkdGgpOwogICBkZWZzdWJy ICgmU3R0eV9kaXNwbGF5X3BpeGVsX2hlaWdodCk7CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYg IWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFW RV9BTkRST0lECiAgIGRlZmF1bHRfb3JpZ19wYWlyID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfZm9y ZWdyb3VuZCA9IE5VTEw7CiAgIGRlZmF1bHRfc2V0X2JhY2tncm91bmQgPSBOVUxMOwotI2VuZGlm IC8qICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFW RV9BTkRST0lEICovCiAKICNpZm5kZWYgSEFWRV9BTkRST0lECiAgIGVuY29kZV90ZXJtaW5hbF9z cmMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm1jaGFyLmggYi9zcmMvdGVybWNoYXIuaApp bmRleCBlY2UzYTY3NmM2ZS4uMTNhZDJmMGE3MmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtY2hhci5o CisrKyBiL3NyYy90ZXJtY2hhci5oCkBAIC0yNDksNCArMjQ5LDYgQEAgc3RydWN0IGlucHV0X2V2 ZW50OwogZXh0ZXJuIExpc3BfT2JqZWN0IHR0eV9oYW5kbGVfdGFiX2Jhcl9jbGljayAoc3RydWN0 IGZyYW1lICosIGludCwgaW50LCBib29sLAogCQkJCQkgICAgIHN0cnVjdCBpbnB1dF9ldmVudCAq KTsKIAorZXh0ZXJuIHZvaWQgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2lu Zm8gKnR0eSwgaW50IG1vZGUpOworCiAjZW5kaWYgLyogRU1BQ1NfVEVSTUNIQVJfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5kZXggMWJjYTBj YWRmZjkuLjQ3ZDgxZjUyZDJiIDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5jCisrKyBiL3Ny Yy93MzJjb25zb2xlLmMKQEAgLTE5LDEyICsxOSw2MiBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4g IElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogLyoKICAg IFRpbSBGbGVlaGFydCAoYXBvbGxvQG9ubGluZS5jb20pCQkxLTE3LTkyCiAgICBHZW9mZiBWb2Vs a2VyICh2b2Vsa2VyQGNzLndhc2hpbmd0b24uZWR1KQk5LTEyLTkzCisgICBFd2FuIFRvd25zaGVu ZCAoZXdhbkBldG93bi5kZXYpICAgICAgICAgICAgICAyMDI1LTA4CisKKyAgIGMuIH4gMjAyNToK KyAgICogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93cyAoMTArKSBUZXJtaW5hbAorICAgKiBN aWNyb3NvZnQgbW92aW5nIGF3YXkgZnJvbSBpZGlvc3luY3JhdGljIEFQSSwgdG93YXJkIEFTQ0lJ IGNvbnRyb2xzCisKKyAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dz L2NvbnNvbGUvY29uc29sZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworCisgICBGb3IgcmVm ZXJlbmNlIChtb3JlIGRlZmluZWQgYXQgbGluayBhYm92ZSk6CisKKyAgICogImNsZWFyIiA6PSBv dmVyd3JpdGUgd2l0aCBzcGFjZSBjaGFyYWN0ZXIKKworICAgXHgxYlswSiA9PiBjbGVhciBjdXJz b3IgKGluY2x1c2l2ZSkgdG8gZW5kIG9mIHNjcmVlbgorICAgXHgxYlsxSiA9PiBjbGVhciBiZWdp bm5pbmcgb2Ygc2NyZWVuIHRvIGN1cnNvciAoaW5jbHVzaXZlKQorICAgXHgxYlsySiA9PiBjbGVh ciBlbnRpcmUgc2NyZWVuIChleGNsdWRpbmcgc2Nyb2xsYmFjayBhcmVhKQorICAgXHgxYlszSiA9 PiBjbGVhciBzY3JvbGxiYWNrIGFyZWEKKworICAgXHgxYlswSyA9PiBjbGVhciBjdXJzb3IgKGlu Y2x1c2l2ZSkgdG8gZW5kIG9mIGxpbmUKKyAgIFx4MWJbMUsgPT4gY2xlYXIgYmVnaW5uaW5nIG9m IGxpbmUgdG8gY3Vyc29yIChpbmNsdXNpdmUpCisgICBceDFiWzJLID0+IGNsZWFyIGVudGlyZSBs aW5lCisKKyAgIFx4MWJbPG4+QCA9PiBpbnNlcnQgPG4+IHNwYWNlcyBhdCBjdXJzb3IsIHNoaWZ0 IGN1cnJlbnQgdGV4dCByaWdodAorICAgXHgxYls8bj5QID0+IGRlbGV0ZSA8bj4gY2hhcnMgIGF0 IGN1cnNvciwgYWRkaW5nIHNwYWNlcyBmcm9tIHJpZ2h0CisKKyAgIFx4MWJbNyAgICAgICAgPT4g c2F2ZSBjdXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbOCAgICAgICAgPT4gcmVzdG9yZSBzYXZlZCBj dXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbPHk+Ozx4PkggPT4gbW92ZSBjdXJzb3IgdG8gcm93IDx5 PiwgY29sIDx4PiAoMS1pbmRleGVkKQorICAgXHgxYls/MjVsICAgICA9PiBoaWRlIGN1cnNvcgor ICAgXHgxYls/MjVoICAgICA9PiBzaG93IGN1cnNvcgorCisgICBceDFiWzBtID0+IGFsbCBhdHRy aWJ1dGVzIG9mZgorICAgXHgxYlsxbSA9PiBib2xkCisgICBceDFiWzNtID0+IGl0YWxpYworICAg XHgxYls0bSA9PiB1bmRlcmxpbmUKKyAgIFx4MWJbN20gPT4gaW52ZXJzZSB2aWRlbworICAgXHgx Yls5bSA9PiBzdHJpa2UtdGhyb3VnaAorCisgICAqIDE2IGJhc2UgY29sb3JzIGRlZmluZWQgaW4g dzMyY29uc29sZS5lbAorICAgXHgxYlszPGk+ICAoPGk+IGluIDAuLjcpID0+IGZvcmVncm91bmQg PSAxNmNvbG9yc1tpXQorICAgXHgxYls0PGk+ICAoPGk+IGluIDAuLjcpID0+IGJhY2tncm91bmQg PSAxNmNvbG9yc1tpXQorICAgXHgxYls5PGk+ICAoPGk+IGluIDAuLjcpID0+IGZvcmVncm91bmQg PSAxNmNvbG9yc1tpICsgOF0KKyAgIFx4MWJbMTA8aT4gKDxpPiBpbiAwLi43KSA9PiBiYWNrZ3Jv dW5kID0gMTZjb2xvcnNbaSArIDhdCisKKyAgICogMjU2IGNvbG9ycyBmb2xsb3cgeHRlcm0KKyAg IFx4MWJbMzg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGZvcmVncm91bmQgPSAyNTZjb2xvcnNbaV0K KyAgIFx4MWJbNDg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGJhY2tncm91bmQgPSAyNTZjb2xvcnNb aV0KKworICAgKiAyNC1iaXQgY292ZXJzIGFsbCBuYW1lZCBjb2xvcnMgKHNlZSBjb2xvci1uYW1l LXJnYi1hbGlzdCkKKyAgIFx4MWJbMzg7Mjs8cj47PGc+OzxiPiA9PiBmb3JlZ3JvdW5kID0gKDxy PiwgPGc+LCA8Yj4pCisgICBceDFiWzQ4OzI7PHI+OzxnPjs8Yj4gPT4gYmFja2dyb3VuZCA9ICg8 cj4sIDxnPiwgPGI+KQogKi8KIAogCiAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0KICNpbmNsdWRlIDxz dGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogI2lu Y2x1ZGUgImxpc3AuaCIKQEAgLTQwLDcgKzkwLDYgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRl ICJ3MzIuaCIJLyogZm9yIHN5bXNfb2ZfbnR0ZXJtICovCiAjZW5kaWYKIAotc3RhdGljIHZvaWQg dzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByb3csIGludCBjb2wpOwog c3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX3RvX2VuZCAoc3RydWN0IGZyYW1lICpmKTsKIHN0YXRp YyB2b2lkIHczMmNvbl9jbGVhcl9mcmFtZSAoc3RydWN0IGZyYW1lICpmKTsKIHN0YXRpYyB2b2lk IHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoc3RydWN0IGZyYW1lICpmLCBpbnQpOwpAQCAtNTEs MTMgKzEwMCwyOSBAQCBzdGF0aWMgdm9pZCB3MzJjb25fZGVsZXRlX2dseXBocyAoc3RydWN0IGZy YW1lICpmLCBpbnQgbik7CiBzdGF0aWMgdm9pZCB3MzJjb25fcmVzZXRfdGVybWluYWxfbW9kZXMg KHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fc2V0X3Rlcm1pbmFsX21v ZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpOwogc3RhdGljIHZvaWQgdzMyY29uX3VwZGF0ZV9iZWdp biAoc3RydWN0IGZyYW1lICogZik7Ci1zdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2VuZCAoc3Ry dWN0IGZyYW1lICogZik7CitzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2VuZCAoc3RydWN0IGZy YW1lICpmKTsKK3N0YXRpYyBpbnQgIHczMmNvbl93cml0ZV92dF9zZXEgKGNoYXIgKik7CiBzdGF0 aWMgV09SRCB3MzJfZmFjZV9hdHRyaWJ1dGVzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lk KTsKK3N0YXRpYyB2b2lkIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBmYWNlX2lk KTsKK3N0YXRpYyB2b2lkIHR1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqLCBpbnQgZmFjZV9p ZCk7CitzdGF0aWMgdm9pZCB3MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwgaW50 IHJvdywgaW50IGNvbCk7Cit2b2lkIHczMmNvbl9zYXZlX2N1cnNvciAodm9pZCk7Cit2b2lkIHcz MmNvbl9yZXN0b3JlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9zaG93X2N1cnNvciAodm9p ZCk7Cit2b2lkIHczMmNvbl9oaWRlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9kcmF3X2N1 cnNvciAoc3RydWN0IGZyYW1lICpmKTsKIAotc3RhdGljIENPT1JECWN1cnNvcl9jb29yZHM7Ci1z dGF0aWMgSEFORExFCXByZXZfc2NyZWVuLCBjdXJfc2NyZWVuOwotc3RhdGljIFdPUkQJY2hhcl9h dHRyX25vcm1hbDsKLXN0YXRpYyBEV09SRAlwcmV2X2NvbnNvbGVfbW9kZTsKK3N0YXRpYyB1bnNp Z25lZCBsb25nIGdldF9waXhlbCAodW5zaWduZWQgbG9uZyBpbmRleCk7CisKK2V4dGVybiB2b2lk IHR0eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2Rl KTsKKworc3RhdGljIENPT1JEICAgIGN1cnNvcl9jb29yZHM7CitzdGF0aWMgQ09PUkQgICAgc2F2 ZWRfY29vcmRzOworc3RhdGljIEhBTkRMRSAgIHByZXZfc2NyZWVuLCBjdXJfc2NyZWVuOworc3Rh dGljIFdPUkQgICAgIGNoYXJfYXR0cl9ub3JtYWw7CitzdGF0aWMgV09SRCAgICAgYmdfbm9ybWFs Oworc3RhdGljIFdPUkQgICAgIGZnX25vcm1hbDsKK3N0YXRpYyBEV09SRCAgICBwcmV2X2NvbnNv bGVfbW9kZTsKIAogc3RhdGljIENPTlNPTEVfQ1VSU09SX0lORk8gY29uc29sZV9jdXJzb3JfaW5m bzsKICNpZm5kZWYgVVNFX1NFUEFSQVRFX1NDUkVFTgpAQCAtNjgsMTMgKzEzMywxNCBAQCBleHRl cm4gSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIGlu dCB3MzJfY29uc29sZV91bmljb2RlX2lucHV0OwogCi0KLS8qIFNldHRpbmcgdGhpcyBhcyB0aGUg Y3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20gYmVpbmcga2lsbGVkIHdoZW4KLSAgIHNv bWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4KLSAg IEFsc28gaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4gICovCitleHRlcm4gc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Oworc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJl bnRfdHR5ID0gTlVMTDsKIAogQk9PTCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyk7CiAK Ky8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20g YmVpbmcga2lsbGVkCisgICB3aGVuIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNl c3Npb24gKGNoaWxkIHNoZWxsKS4gQWxzbworICAgaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4g ICovCiBCT09MCiBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogewpAQCAtODMs NiArMTQ5LDU1IEBAIGN0cmxfY19oYW5kbGVyICh1bnNpZ25lZCBsb25nIHR5cGUpCiAJICAmJiAo dHlwZSA9PSBDVFJMX0NfRVZFTlQgfHwgdHlwZSA9PSBDVFJMX0JSRUFLX0VWRU5UKSk7CiB9CiAK KyNkZWZpbmUgU1NQUklOVEYoYnVmLCBpLCBzeiwgZm10LCAuLi4pCQkJCQlcCisgIGRvIHsJCQkJ CQkJCQlcCisgICAgaWYgKGZtdCkJCQkJCQkJCVwKKyAgICAgICppICs9IHNucHJpbnRmIChidWYg KyAqaSwgc3ogLSAqaSwgZm10LCBfX1ZBX0FSR1NfXyk7CQlcCisgIH0gd2hpbGUgKDApCisKKyNk ZWZpbmUgREVGQVVMVFAocCkJCQkJCQkJXAorICAocCA9PSBGQUNFX1RUWV9ERUZBVUxUX0NPTE9S CQkJCQkJXAorICAgfHwgcCA9PSBGQUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9SCQkJCQlcCisgICB8 fCBwID09IEZBQ0VfVFRZX0RFRkFVTFRfQkdfQ09MT1IpCisKKyNkZWZpbmUgU0VRTUFYIDI1NiAv KiBBcmJpdHJhcnkgdXBwZXIgbGltaXQgb24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisvKiBGb3Ig ZGVidWdnaW5nICovCitzdGF0aWMgdm9pZAordnRfc2VxX2Vycm9yIChjaGFyICpzZXEpCit7Cisg IGludCBpID0gMDsgaW50IGogPSAwOworICBpZiAoc2VxKQorICAgIGlmIChzZXFbMF0gPT0gJ1ww Jykgc2VxID0gIjxlbXB0eT4iOworICAgIGVsc2UKKyAgICAgIHdoaWxlIChpIDwgU0VRTUFYKQor CXsKKwkgIGlmIChzZXFbaV0gPT0gJ1x4MWInKSBzZXFbaV0gPSAnIyc7CisJICBpZiAoc2VxW2ld ID09ICAgICclJykgc2VxW2ldID0gJ18nOworCSAgaWYgKHNlcVtpXSA9PSAgICdcMCcpIHsgaisr OyBicmVhazsgfQorCSAgaSsrOworCX0KKyAgZWxzZSBzZXEgPSAiPG51bGw+IjsKKyAgcHJpbnRm ICgiRmFpbGVkIHRvIHdyaXRlIFZUIHNlcXVlbmNlOiAlc1xuIiwgaiA/IHNlcSA6ICI8b3ZlcmZs b3c+Iik7CisgIHByaW50ZiAoIkxhc3RFcnJvcjogMHglZHhcbiIsIEdldExhc3RFcnJvciAoKSk7 CisgIGZmbHVzaCAoc3Rkb3V0KTsKKyAgZXhpdCAoMSk7Cit9CisKKy8qIFdyaXRlcyAoZHluYW1p YykgdmlydHVhbCB0ZXJtaW5hbCBBU0NJSSBzZXF1ZW5jZXMgdG8gc2NyZWVuICovCitzdGF0aWMg aW50Cit3MzJjb25fd3JpdGVfdnRfc2VxIChjaGFyICpzZXEpCit7CisgIGNoYXIgYnVmW1NFUU1B WF07CisgIERXT1JEIG4gPSAwLCBrID0gMDsKKyAgU1NQUklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwg c2VxLCBOVUxMKTsKKyAgaWYgKG4pIFdyaXRlQ29uc29sZUEgKGN1cl9zY3JlZW4sIChMUENTVFIp IGJ1ZiwgbiwgJmssIE5VTEwpOworICByZXR1cm4gazsKK30KKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Vyc29yIENvbnRyb2wKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogCiAvKiBNb3ZlIHRoZSBjdXJzb3IgdG8gKFJPVywgQ09MKSBvbiBGUkFNRS4gICovCiBzdGF0 aWMgdm9pZApAQCAtOTAsNyArMjA1LDYgQEAgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJh bWUgKmYsIGludCByb3csIGludCBjb2wpCiB7CiAgIGN1cnNvcl9jb29yZHMuWCA9IGNvbDsKICAg Y3Vyc29yX2Nvb3Jkcy5ZID0gcm93OwotCiAgIC8qIFRPRE86IGZvciBtdWx0aS10dHkgc3VwcG9y dCwgY3VyX3NjcmVlbiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhCiAgICAgIHJlZmVyZW5jZSB0 byB0aGUgdGVybWluYWwgZm9yIHRoaXMgZnJhbWUuICAqLwogICBTZXRDb25zb2xlQ3Vyc29yUG9z aXRpb24gKGN1cl9zY3JlZW4sIGN1cnNvcl9jb29yZHMpOwpAQCAtMTAyLDYgKzIxNiw3IEBAIHcz MmNvbl9oaWRlX2N1cnNvciAodm9pZCkKICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3Jl ZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKICAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJs ZSA9IEZBTFNFOwogICBTZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVf Y3Vyc29yX2luZm8pOworICBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiB9CiAKIHZv aWQKQEAgLTExMCwxNCArMjI1LDMzIEBAIHczMmNvbl9zaG93X2N1cnNvciAodm9pZCkKICAgR2V0 Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKICAg Y29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9IFRSVUU7CiAgIFNldENvbnNvbGVDdXJzb3JJ bmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgIGN1cnJlbnRfdHR5LT5j dXJzb3JfaGlkZGVuID0gMDsKK30KKwordm9pZAordzMyY29uX3NhdmVfY3Vyc29yICh2b2lkKQor eworICBzYXZlZF9jb29yZHMgPSBjdXJzb3JfY29vcmRzOwogfQogCit2b2lkCit3MzJjb25fcmVz dG9yZV9jdXJzb3IgKHZvaWQpCit7CisgIGN1cnNvcl9jb29yZHMgPSBzYXZlZF9jb29yZHM7Cisg IFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoY3VyX3NjcmVlbiwgY3Vyc29yX2Nvb3Jkcyk7Cit9 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgTW9kaWZp Y2F0aW9uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKIC8qIENsZWFyIGZyb20gY3Vyc29yIHRvIGVuZCBv ZiBzY3JlZW4uICAqLwogc3RhdGljIHZvaWQKIHczMmNvbl9jbGVhcl90b19lbmQgKHN0cnVjdCBm cmFtZSAqZikKIHsKICAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChm KSAtIDEpOwotICB3MzJjb25faW5zX2RlbF9saW5lcyAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBGUkFN RV9UT1RBTF9MSU5FUyAoZikgLSBjdXJzb3JfY29vcmRzLlkgLSAxKTsKKyAgaW50IG4gPSBGUkFN RV9UT1RBTF9MSU5FUyAoZikgLSBjdXJzb3JfY29vcmRzLlkgLSAxOworICB3MzJjb25faW5zX2Rl bF9saW5lcyAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBuKTsKIH0KIAogLyogQ2xlYXIgdGhlIGZyYW1l LiAgKi8KQEAgLTEzNyw3ICsyNzEsNiBAQCB3MzJjb25fY2xlYXJfZnJhbWUgKHN0cnVjdCBmcmFt ZSAqZikKIAogICBGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9h dHRyX25vcm1hbCwgbiwgZGVzdCwgJnIpOwogICBGaWxsQ29uc29sZU91dHB1dENoYXJhY3RlciAo Y3VyX3NjcmVlbiwgJyAnLCBuLCBkZXN0LCAmcik7Ci0KICAgdzMyY29uX21vdmVfY3Vyc29yIChm LCAwLCAwKTsKIH0KIApAQCAtMTY2LDEwICsyOTksMTAgQEAgdzMyY29uX2NsZWFyX2VuZF9vZl9s aW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBlbmQpCiAgICAgewogICAgICAgaW50IGk7CiAgICAg ICBmb3IgKGkgPSAwOyBpIDwgZ2x5cGhzX2xlbjsgaSsrKQotICAgICAgICB7CisJewogCSAgbWVt Y3B5ICgmZ2x5cGhzW2ldLCAmc3BhY2VfZ2x5cGgsIHNpemVvZiAoc3RydWN0IGdseXBoKSk7CiAJ ICBnbHlwaHNbaV0uZnJhbWUgPSBOVUxMOwotICAgICAgICB9CisJfQogICAgICAgY2VvbF9pbml0 aWFsaXplZCA9IFRSVUU7CiAgICAgfQogICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBnbHlwaHMs IGVuZCAtIGN1cnNvcl9jb29yZHMuWCk7CkBAIC0yMTgsMjggKzM1MSwyNyBAQCB3MzJjb25faW5z X2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgdnBvcywgaW50IG4pCiAgIGlmIChuID4g MCkKICAgICB7CiAgICAgICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAgewor CXsKIAkgIGZvciAoaSA9IHNjcm9sbC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKLSAgICAgICAg ICAgIHsKKwkgICAgewogCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7CiAJICAg ICAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAg ICAgICB9Ci0gICAgICAgIH0KKwkgICAgfQorCX0KICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAg ICBuYiA9IGRlc3QuWSArIChzY3JvbGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCiAgICAg ICBpZiAobmIgPCBzY3JvbGwuVG9wKQotICAgICAgICB7CisJewogCSAgZm9yIChpID0gbmI7IGkg PCBzY3JvbGwuVG9wOyBpKyspCi0gICAgICAgICAgICB7CisJICAgIHsKIAkgICAgICB3MzJjb25f bW92ZV9jdXJzb3IgKGYsIGksIDApOwogCSAgICAgIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAo ZiwgRlJBTUVfQ09MUyAoZikpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisJICAgIH0KKwl9 CiAgICAgfQotCiAgIGN1cnNvcl9jb29yZHMuWCA9IDA7CiAgIGN1cnNvcl9jb29yZHMuWSA9IHZw b3M7CiB9CkBAIC0yNDgsMTIgKzM4MCwxMSBAQCB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0 IGZyYW1lICpmLCBpbnQgdnBvcywgaW50IG4pCiAjdW5kZWYJUklHSFQKICNkZWZpbmUJTEVGVAkx CiAjZGVmaW5lCVJJR0hUCTAKLQorLyogVGhlIGlkZWEgaGVyZSBpcyB0byBpbXBsZW1lbnQgYSBo b3Jpem9udGFsIHNjcm9sbCBpbiBvbmUgbGluZSB0bworICAgaW1wbGVtZW50IGRlbGV0ZSBhbmQg aGFsZiBvZiBpbnNlcnQuICAqLwogc3RhdGljIHZvaWQKIHNjcm9sbF9saW5lIChzdHJ1Y3QgZnJh bWUgKmYsIGludCBkaXN0LCBpbnQgZGlyZWN0aW9uKQogewotICAvKiBUaGUgaWRlYSBoZXJlIGlz IHRvIGltcGxlbWVudCBhIGhvcml6b250YWwgc2Nyb2xsIGluIG9uZSBsaW5lIHRvCi0gICAgIGlt cGxlbWVudCBkZWxldGUgYW5kIGhhbGYgb2YgaW5zZXJ0LiAgKi8KICAgU01BTExfUkVDVCBzY3Jv bGwsIGNsaXA7CiAgIENPT1JECSAgICAgZGVzdDsKICAgQ0hBUl9JTkZPICBmaWxsOwpAQCAtMjg4 LDE0ICs0MTksMTMgQEAgc3RhdGljIHZvaWQKIHczMmNvbl9pbnNlcnRfZ2x5cGhzIChzdHJ1Y3Qg ZnJhbWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBnbHlwaCAqc3RhcnQsCiAJCSAgICAgIHJlZ2lzdGVy IGludCBsZW4pCiB7CisgIC8qIE1vdmUgbGVuIGNoYXJzIHRvIHRoZSByaWdodCBmcm9tIGN1cnNv cl9jb29yZHMsIGZpbGwgd2l0aCBibGFua3MgKi8KICAgc2Nyb2xsX2xpbmUgKGYsIGxlbiwgUklH SFQpOwotCi0gIC8qIE1vdmUgbGVuIGNoYXJzIHRvIHRoZSByaWdodCBzdGFydGluZyBhdCBjdXJz b3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCisgIAogICBpZiAoc3RhcnQpCiAgICAgewot ICAgICAgLyogUHJpbnQgdGhlIGZpcnN0IGxlbiBjaGFyYWN0ZXJzIG9mIHN0YXJ0LCBjdXJzb3Jf Y29vcmRzLlggYWRqdXN0ZWQKLQkgYnkgd3JpdGVfZ2x5cGhzLiAgKi8KLQorICAgICAgLyogUHJp bnQgdGhlIGZpcnN0IGxlbiBjaGFyYWN0ZXJzIG9mIHN0YXJ0LgorCSBjdXJzb3JfY29vcmRzLlgg YWRqdXN0ZWQgYnkgd3JpdGVfZ2x5cGhzLiAgKi8KICAgICAgIHczMmNvbl93cml0ZV9nbHlwaHMg KGYsIHN0YXJ0LCBsZW4pOwogICAgIH0KICAgZWxzZQpAQCAtMzA2LDEzICs0MzYsMTUgQEAgdzMy Y29uX2luc2VydF9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBo ICpzdGFydCwKIAogc3RhdGljIHZvaWQKIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFt ZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAg ICByZWdpc3RlciBpbnQgbGVuKQorCQkgICAgIHJlZ2lzdGVyIGludCBsZW4pCiB7CiAgIERXT1JE IHI7CiAgIFdPUkQgY2hhcl9hdHRyOwogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0 cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7CiAKKyAgdzMyY29uX2hpZGVfY3Vyc29yKCk7CisK ICAgaWYgKGxlbiA8PSAwKQogICAgIHJldHVybjsKIApAQCAtMzQyLDQzICs0NzQsNDUgQEAgdzMy Y29uX3dyaXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGgg KnN0cmluZywKIAogICAgICAgLyogdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIHNldHMgZnJhbWUg b2YgZ2x5cGhzIHRvIE5VTEwuICAqLwogICAgICAgc3RydWN0IGZyYW1lICphdHRyX2ZyYW1lID0g ZmFjZV9pZF9mcmFtZSA/IGZhY2VfaWRfZnJhbWUgOiBmOwotICAgICAgLyogVHVybiBhcHBlYXJh bmNlIG1vZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLwotICAgICAgY2hhcl9hdHRy ID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoYXR0cl9mcmFtZSwgZmFjZV9pZCk7CiAKICAgICAgIGlm IChuID09IGxlbikKIAkvKiBUaGlzIGlzIHRoZSBsYXN0IHJ1bi4gICovCiAJY29kaW5nLT5tb2Rl IHw9IENPRElOR19NT0RFX0xBU1RfQkxPQ0s7CisKICAgICAgIGNvbnZlcnNpb25fYnVmZmVyID0g KExQQ1NUUikgZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbiwgY29kaW5nKTsKICAgICAg IGlmIChjb2RpbmctPnByb2R1Y2VkID4gMCkKIAl7Ci0JICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBm b3IgdGhlc2UgY2hhcmFjdGVycy4gICovCi0JICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmli dXRlIChjdXJfc2NyZWVuLCBjaGFyX2F0dHIsCi0JCQkJCSAgIGNvZGluZy0+cHJvZHVjZWQsIGN1 cnNvcl9jb29yZHMsCi0JCQkJCSAgICZyKSkKKwkgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWlu YWxfc2VxdWVuY2VzKQogCSAgICB7Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcgY29u c29sZSBhdHRyaWJ1dGVzOiAlbHVcbiIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7Ci0JICAg ICAgZmZsdXNoIChzdGRvdXQpOworCSAgICAgIHR1cm5fb25fZmFjZSAoZiwgZmFjZV9pZCk7CisJ ICAgICAgV3JpdGVDb25zb2xlIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCSAg ICBjb2RpbmctPnByb2R1Y2VkLCAmciwgTlVMTCk7CisJICAgICAgdHVybl9vZmZfZmFjZSAoZiwg ZmFjZV9pZCk7CisJICAgICAgY3Vyc29yX2Nvb3Jkcy5YICs9IGNvZGluZy0+cHJvZHVjZWQ7CiAJ ICAgIH0KLQotCSAgLyogV3JpdGUgdGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFXcml0ZUNv bnNvbGVPdXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAotCQkJ CQkgICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgICZyKSkKKwkg IGVsc2UKIAkgICAgewotCSAgICAgIHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hh cmFjdGVyczogJWx1XG4iLAotCQkgICAgICBHZXRMYXN0RXJyb3IgKCkpOwotCSAgICAgIGZmbHVz aCAoc3Rkb3V0KTsKLQkgICAgfQorCSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBtb2RlcyBvZiB0 aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KKwkgICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9h dHRyaWJ1dGVzIChhdHRyX2ZyYW1lLCBmYWNlX2lkKTsKKwkgICAgICAvKiBTZXQgdGhlIGF0dHJp YnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4gICovCisJICAgICAgRmlsbENvbnNvbGVPdXRwdXRB dHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkJICBjb2RpbmctPnByb2R1Y2Vk LCBjdXJzb3JfY29vcmRzLAorCQkJCQkgICZyKTsKKwkgICAgICAvKiBXcml0ZSB0aGUgY2hhcmFj dGVycy4gICovCisJICAgICAgV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVu LCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nv b3JkcywKKwkJCQkJICAgJnIpOwogCi0JICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5wcm9k dWNlZDsKLQkgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3Jf Y29vcmRzLlgpOworCSAgICAgIGN1cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOwor CSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29v cmRzLlgpOworCSAgICB9CiAJfQogICAgICAgbGVuIC09IG47CiAgICAgICBzdHJpbmcgKz0gbjsK ICAgICB9CiB9CiAKKwogLyogVXNlZCBmb3IgbW91c2UgaGlnaGxpZ2h0LiAgKi8KIHN0YXRpYyB2 b2lkCiB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdp c3RlciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCkBAIC0zODcsNiArNTIxLDkgQEAgdzMyY29uX3dy aXRlX2dseXBoc193aXRoX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJl Z2lzdGVyIGludCB5LAogewogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBj b2Rpbmdfc3lzdGVtICpjb2Rpbmc7CisgIERXT1JEIGZpbGxlZCwgd3JpdHRlbjsKKworICB3MzJj b25faGlkZV9jdXJzb3IgKCk7CiAKICAgaWYgKGxlbiA8PSAwKQogICAgIHJldHVybjsKQEAgLTM5 OSwyOSArNTM2LDM4IEBAIHczMmNvbl93cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3QgZnJh bWUgKmYsIHJlZ2lzdGVyIGludCB4LCByZWdpc3RlciBpbnQgeSwKICAgLyogV2UgYXJlIGdvaW5n IHRvIHdyaXRlIHRoZSBlbnRpcmUgYmxvY2sgb2YgZ2x5cGhzIGluIG9uZSBnbywgYXMKICAgICAg dGhleSBhbGwgaGF2ZSB0aGUgc2FtZSBmYWNlLiAgU28gdGhpcyBfaXNfIHRoZSBsYXN0IGJsb2Nr LiAgKi8KICAgY29kaW5nLT5tb2RlIHw9IENPRElOR19NT0RFX0xBU1RfQkxPQ0s7Ci0KICAgY29u dmVyc2lvbl9idWZmZXIgPSAoTFBDU1RSKSBlbmNvZGVfdGVybWluYWxfY29kZSAoc3RyaW5nLCBs ZW4sIGNvZGluZyk7CiAgIGlmIChjb2RpbmctPnByb2R1Y2VkID4gMCkKICAgICB7Ci0gICAgICBE V09SRCBmaWxsZWQsIHdyaXR0ZW47Ci0gICAgICAvKiBDb21wdXRlIHRoZSBjaGFyYWN0ZXIgYXR0 cmlidXRlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNlLiAgKi8KLSAgICAgIERXT1JEIGNoYXJf YXR0ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGYsIGZhY2VfaWQpOwogICAgICAgQ09PUkQgc3Rh cnRfY29vcmRzOwotCiAgICAgICBzdGFydF9jb29yZHMuWCA9IHg7CiAgICAgICBzdGFydF9jb29y ZHMuWSA9IHk7Ci0gICAgICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVy cy4gICovCi0gICAgICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVu LCBjaGFyX2F0dHIsCi0JCQkJICAgICAgIGNvZGluZy0+cHJvZHVjZWQsIHN0YXJ0X2Nvb3JkcywK LQkJCQkgICAgICAgJmZpbGxlZCkpCi0JRGViUHJpbnQgKCgiRmFpbGVkIHdyaXRpbmcgY29uc29s ZSBhdHRyaWJ1dGVzOiAlZFxuIiwgR2V0TGFzdEVycm9yICgpKSk7CisKKyAgICAgIGlmICh3MzJf dXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorCXsKKwkgIGludCBwcmV2X2N1cnNvcl9o aWRkZW4gPSBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbjsKKwkgIHczMmNvbl9oaWRlX2N1cnNv ciAoKTsKKwkgIHczMmNvbl9zYXZlX2N1cnNvciAoKTsKKwkgIHczMmNvbl9tb3ZlX2N1cnNvciAo ZiwgeSwgeCk7CisJICB0dXJuX29uX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgV3JpdGVDb25zb2xl IChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCWNvZGluZy0+cHJvZHVjZWQsICZ3 cml0dGVuLCBOVUxMKTsKKwkgIHR1cm5fb2ZmX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgdzMyY29u X3Jlc3RvcmVfY3Vyc29yICgpOworCSAgaWYgKCFwcmV2X2N1cnNvcl9oaWRkZW4pIHczMmNvbl9z aG93X2N1cnNvciAoKTsKKwl9CiAgICAgICBlbHNlCiAJeworCSAgLyogQ29tcHV0ZSB0aGUgY2hh cmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjZS4gKi8KKwkgIERXT1JE IGNoYXJfYXR0ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGYsIGZhY2VfaWQpOworCisJICAvKiBT ZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4gICovCisJICBGaWxsQ29uc29s ZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAorCQkJCSAgICAgIGNvZGlu Zy0+cHJvZHVjZWQsIHN0YXJ0X2Nvb3JkcywKKwkJCQkgICAgICAmZmlsbGVkKTsKIAkgIC8qIFdy aXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFj dGVyIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKLQkJCQkJICAgIGZpbGxlZCwgc3Rh cnRfY29vcmRzLCAmd3JpdHRlbikpCi0JICAgIERlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNv bnNvbGUgY2hhcmFjdGVyczogJWRcbiIsCi0JCSAgICAgICBHZXRMYXN0RXJyb3IgKCkpKTsKKwkg IFdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZm ZXIsCisJCQkJICAgICAgIGZpbGxlZCwgc3RhcnRfY29vcmRzLCAmd3JpdHRlbik7CiAJfQogICAg IH0KIH0KQEAgLTQ1Miw5ICs1OTgsNyBAQCB0dHlfZHJhd19yb3dfd2l0aF9tb3VzZV9mYWNlIChz dHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICp3aW5kb3dfcm93LAogICByb290X3h5 IChmLCBmcmFtZV9lbmRfeCwgZnJhbWVfeSwgJnJvb3RfZW5kX3gsICZyb290X3kpOwogICBzdHJ1 Y3QgZ2x5cGhfcm93ICpyb290X3JvdyA9IE1BVFJJWF9ST1cgKHJvb3QtPmN1cnJlbnRfbWF0cml4 LCByb290X3kpOwogCi0gIC8qIFJlbWVtYmVyIGN1cnJlbnQgY3Vyc29yIGNvb3JkaW5hdGVzIHNv IHRoYXQgd2UgY2FuIHJlc3RvcmUKLSAgICAgdGhlbSBhdCB0aGUgZW5kLiAgKi8KLSAgQ09PUkQg c2F2ZV9jb29yZHMgPSBjdXJzb3JfY29vcmRzOworICB3MzJjb25fc2F2ZV9jdXJzb3IoKTsKIAog ICAvKiBJZiB0aGUgcm9vdCBmcmFtZSBkaXNwbGF5cyBjaGlsZCBmcmFtZXMsIHdlIGNhbm5vdCBu YWl2ZWx5CiAgICAgIHdyaXRlIHRvIHRoZSB0ZXJtaW5hbCB3aGF0IHRoZSB3aW5kb3cgdGhpbmtz IHNob3VsZCBiZSBkcmF3bi4KQEAgLTUwNyw5ICs2NTEsNyBAQCB0dHlfZHJhd19yb3dfd2l0aF9t b3VzZV9mYWNlIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICp3aW5kb3dfcm93 LAogCSAgICB9CiAJfQogICAgIH0KLQotICAvKiBSZXN0b3JlIGN1cnNvciB3aGVyZSBpdCB3YXMg YmVmb3JlLiAgKi8KLSAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBzYXZlX2Nvb3Jkcy5ZLCBzYXZl X2Nvb3Jkcy5YKTsKKyAgdzMyY29uX3Jlc3RvcmVfY3Vyc29yKCk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC01MjEsNyArNjYzLDkgQEAgdzMyY29uX2RlbGV0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAq ZiwgaW50IG4pCiAKICAgc2Nyb2xsX2xpbmUgKGYsIG4sIExFRlQpOwogfQotCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgLyBUZWFyIGRvd24KKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwogCiBzdGF0aWMgdm9pZAogdzMyY29uX3Jlc2V0X3Rlcm1pbmFsX21vZGVzIChz dHJ1Y3QgdGVybWluYWwgKnQpCkBAIC01NjksMzAgKzcxMyw1NCBAQCB3MzJjb25fc2V0X3Rlcm1p bmFsX21vZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpCiAgIC8qIElmIFF1aWNrIEVkaXQgaXMgZW5h YmxlZCBmb3IgdGhlIGNvbnNvbGUsIGl0IHdpbGwgZ2V0IGluIHRoZSB3YXkKICAgICAgb2YgcmVj ZWl2aW5nIG1vdXNlIGV2ZW50cywgc28gd2UgZGlzYWJsZSBpdC4gIEJ1dCBsZWF2ZSB0aGUKICAg ICAgSW5zZXJ0IE1vZGUgYXMgaXQgd2FzIHNldCBieSB0aGUgdXNlci4gICovCi0gIERXT1JEIG5l d19jb25zb2xlX21vZGUKKyAgRFdPUkQgaW5fbW9kZQogICAgID0gRU5BQkxFX01PVVNFX0lOUFVU IHwgRU5BQkxFX1dJTkRPV19JTlBVVCB8IEVOQUJMRV9FWFRFTkRFRF9GTEFHUzsKICAgaWYgKChw cmV2X2NvbnNvbGVfbW9kZSAmIEVOQUJMRV9JTlNFUlRfTU9ERSkgIT0gMCkKLSAgICBuZXdfY29u c29sZV9tb2RlIHw9IEVOQUJMRV9JTlNFUlRfTU9ERTsKLSAgU2V0Q29uc29sZU1vZGUgKGtleWJv YXJkX2hhbmRsZSwgbmV3X2NvbnNvbGVfbW9kZSk7CisgICAgaW5fbW9kZSB8PSBFTkFCTEVfSU5T RVJUX01PREU7CisgIFNldENvbnNvbGVNb2RlIChrZXlib2FyZF9oYW5kbGUsIGluX21vZGUpOwog CiAgIC8qIEluaXRpYWxpemUgaW5wdXQgbW9kZTogaW50ZXJydXB0X2lucHV0IG9mZiwgbm8gZmxv dyBjb250cm9sLCBhbGxvdwogICAgICA4IGJpdCBjaGFyYWN0ZXIgaW5wdXQsIHN0YW5kYXJkIHF1 aXQgY2hhci4gICovCiAgIEZzZXRfaW5wdXRfbW9kZSAoUW5pbCwgUW5pbCwgbWFrZV9maXhudW0g KDIpLCBRbmlsKTsKKworICBEV09SRCBvdXRfbW9kZTsKKyAgR2V0Q29uc29sZU1vZGUgKGN1cl9z Y3JlZW4sICZvdXRfbW9kZSk7CisgIG91dF9tb2RlIHw9IEVOQUJMRV9QUk9DRVNTRURfT1VUUFVU OworICBvdXRfbW9kZSB8PSBFTkFCTEVfVklSVFVBTF9URVJNSU5BTF9QUk9DRVNTSU5HOworICBv dXRfbW9kZSB8PSBESVNBQkxFX05FV0xJTkVfQVVUT19SRVRVUk47CisgIHczMl91c2VfdmlydHVh bF90ZXJtaW5hbF9zZXF1ZW5jZXMgPSBTZXRDb25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgb3V0X21v ZGUpOworICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7Cisg ICAgICBpbnQgY3Vyc29yX29mZl9wID0gWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29y X29mZl9wOworICAgICAgdC0+ZGlzcGxheV9pbmZvLnR0eS0+Y3Vyc29yX2hpZGRlbiA9IGN1cnNv cl9vZmZfcDsKKyAgICB9CiB9CiAKIC8qIGhtbW0uLi4gcGVyaGFwcyB0aGVzZSBsZXQgdXMgYnJh Y2tldCBzY3JlZW4gY2hhbmdlcyBzbyB0aGF0IHdlIGNhbiBmbHVzaAogICAgY2x1bXBzIHJhdGhl ciB0aGFuIG9uZS1jaGFyYWN0ZXItYXQtYS10aW1lLi4uCiAKLSAgIHdlJ2xsIHN0YXJ0IHdpdGgg bm90IG1vdmluZyB0aGUgY3Vyc29yIHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4gICov CisgICB3ZSdsbCBzdGFydCB3aXRoIG5vdCBtb3ZpbmcgdGhlIGN1cnNvciB3aGlsZSBhbiB1cGRh dGUgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgIC4uLiBjLiAyMDI1LCBWVCBzZXF1ZW5jZXMgY2FuIG9u bHkgYmUgd3JpdHRlbiB3aXRoIFdyaXRlQ29uc29sZSwKKyAgIHByaW50ZiwgZXRjLiwgd2hpY2gg YWR2YW5jZSB0aGUgY3Vyc29yLgorKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2JlZ2lu IChzdHJ1Y3QgZnJhbWUgKiBmKQogeworICBjdXJyZW50X3R0eSA9IEZSQU1FX1RUWSAoZik7CisK KyAgaWYgKCF3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzCisgICAgICAmJiBjdXJy ZW50X3R0eS0+VE5fbWF4X2NvbG9ycyA+IDE2KQorICAgIHsKKyAgICAgIHR0eV9zZXR1cF9jb2xv cnMgKGN1cnJlbnRfdHR5LCAxNik7CisgICAgICBzYWZlX2NhbGxuIChRdzMyY29uX3NldF91cF9p bml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBk YXRlX2VuZCAoc3RydWN0IGZyYW1lICogZikKIHsKLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9u IChjdXJfc2NyZWVuLCBjdXJzb3JfY29vcmRzKTsKKyAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBj dXJzb3JfY29vcmRzLlksIGN1cnNvcl9jb29yZHMuWCk7CiAgIGlmICghWFdJTkRPVyAoc2VsZWN0 ZWRfd2luZG93KS0+Y3Vyc29yX29mZl9wCiAgICAgICAmJiBjdXJzb3JfY29vcmRzLlggPCBGUkFN RV9DT0xTIChmKSkKICAgICB3MzJjb25fc2hvd19jdXJzb3IgKCk7CkBAIC02MjQsOCArNzkyLDYg QEAgc3lzX3RnZXRzdHIgKGNoYXIgKmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBmcm9tIGNt LmMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KIAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpj dXJyZW50X3R0eTsKLXN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5VTEw7 CiBleHRlcm4gaW50IGNvc3Q7CiBpbnQgY29zdCA9IDA7CiAKQEAgLTY5Myw3ICs4NTksNiBAQCBj dXJzb3JZIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5KQogCQkJCUZhY2VzCiAgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCiAKLQogLyogVHVybiBhcHBlYXJhbmNlcyBvZiBmYWNlIEZBQ0VfSUQgb24gdHR5 IGZyYW1lIEYgb24uICAqLwogCiBzdGF0aWMgV09SRApAQCAtNzI5LDYgKzg5NCwxMDAgQEAgdzMy X2ZhY2VfYXR0cmlidXRlcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAgcmV0dXJu IGNoYXJfYXR0cjsKIH0KIAorc3RhdGljIHZvaWQKK3R1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1l ICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSUQg KGYsIGZhY2VfaWQpOworICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZ IChmKTsKKyAgdW5zaWduZWQgbG9uZyBmZyA9IGZhY2UtPmZvcmVncm91bmQ7CisgIHVuc2lnbmVk IGxvbmcgYmcgPSBmYWNlLT5iYWNrZ3JvdW5kOworCisgIC8qIGlmIGVpdGhlciBvdXQgb2YgcmFu Z2UsIHNldCBib3RoIHRvIHZhbHVlcyByZXRyaWV2ZWQgZnJvbSB0ZXJtaW5hbCAqLworICBpZiAo REVGQVVMVFAgKGZnKSkgZmcgPSBmZ19ub3JtYWw7CisgIGlmIChERUZBVUxUUCAoYmcpKSBiZyA9 IGJnX25vcm1hbDsKKworICAvKiBjb25zdHJ1Y3QgY29tYmluZWQgVlQgc2VxdWVuY2UgZm9yIGZh Y2UgYXR0cmlidXRlcyAqLworICBEV09SRCBuID0gMDsKKyAgc2l6ZV90IHN6ID0gU0VRTUFYOwor ICBjaGFyIHNlcVtzel07CisgIHN6LS07CisKKyAgaWYgKGZhY2UtPnR0eV9ib2xkX3ApCisgICAg U1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX2JvbGRfbW9kZSwgTlVMTCk7Cisg IGlmIChmYWNlLT50dHlfaXRhbGljX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHkt PlRTX2VudGVyX2l0YWxpY19tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9zdHJpa2VfdGhy b3VnaF9wKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9zdHJpa2Vf dGhyb3VnaF9tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnVuZGVybGluZSAhPSAwKQorICAgIFNT UFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSwgTlVMTCk7 CisgIC8qIE5vdGU6IHRoZSB2YWx1ZXMgb2YgZmcgYW5kIGJnIGFyZSBhbHJlYWR5IHN3YXBwZWQg d2hlbiBmZyBhbmQgYmcgYXJlCisgICAgIHNldCBhbmQgZmFjZS0+dHR5X3JldmVyc2VfcC4gQWRk aW5nIHRoZSB0ZXJtaW5hbCBzZXF1ZW5jZSBjb250YWluZWQKKyAgICAgaW4gdHR5LT5UU19lbnRl cl9yZXZlcnNlX21vZGUgc3dhcHMgdGhlbSBiYWNrLCB3aGljaCBpcyBubyBnb29kLiAqLworCisg IGNvbnN0IGNoYXIgKnNldF9mZyA9IHR0eS0+VFNfc2V0X2ZvcmVncm91bmQ7CisgIGNvbnN0IGNo YXIgKnNldF9iZyA9IHR0eS0+VFNfc2V0X2JhY2tncm91bmQ7CisgIGlmICh0dHktPlROX21heF9j b2xvcnMgPT0gOCAgfHwKKyAgICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNiB8fAorICAgICAg dHR5LT5UTl9tYXhfY29sb3JzID09IDI1NikKKyAgICB7CisgICAgICAvKiBpbmRpY2VzIGludG8g TWljcm9zb2Z0LWRlZmluZWQgY29sb3JzIChzZWUgbGluayBhdCB0b3ApICovCisgICAgICB1bnNp Z25lZCBsb25nIGZnaSA9IDAsIGJnaSA9IDA7CisKKyAgICAgIGZnaSA9IChmZyA+PSAwICAmJiBm ZyA8IDgpICAgPyBmZyArIDMwCisJOiAgIChmZyA+PSA4ICAmJiBmZyA8IDE2KSAgPyBmZyAtIDgg KyA5MAorCTogICAoZmcgPj0gMTYgJiYgZmcgPCAyNTYpID8gZmcKKwk6IDA7CisgICAgICBpZiAo ZmdpKQorCVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2ZnLCBmZ2kpOworCisgICAgICBiZ2kg PSAoYmcgPj0gMCAgJiYgYmcgPCA4KSAgID8gYmcgKyA0MAorCTogICAoYmcgPj0gOCAgJiYgYmcg PCAxNikgID8gYmcgLSA4ICsgMTAwCisJOiAgIChiZyA+PSAxNiAmJiBiZyA8IDI1NikgPyBiZwor CTogMDsKKyAgICAgIGlmIChiZ2kpCisJU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIGJn aSk7CisgICAgfQorICBlbHNlIGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gMTY3NzcyMTYpCisg ICAgeworICAgICAgLyogbmVlZCB0byBjb252ZXJ0IGRlZmF1bHRlZCB2YWx1ZXMgdG8gcGl4ZWwg aW5kaWNlcyAqLworICAgICAgaWYgKGZnID09IGZnX25vcm1hbCkgZmcgPSBnZXRfcGl4ZWwoZmcp OworICAgICAgaWYgKGJnID09IGJnX25vcm1hbCkgYmcgPSBnZXRfcGl4ZWwoYmcpOworCisgICAg ICAvKiBmZyBhbmQgYmcgYXJlIHBpeGVsIHZhbHVlcyAtIGRlY29tcG9zZSB0byByZ2IgdHJpcGxl cyAqLworICAgICAgdW5zaWduZWQgbG9uZyByZiA9IGZnLzY1NTM2LCBnZiA9IChmZy8yNTYpJjI1 NSwgYmYgPSBmZyYyNTU7CisgICAgICB1bnNpZ25lZCBsb25nIHJiID0gYmcvNjU1MzYsIGdiID0g KGJnLzI1NikmMjU1LCBiYiA9IGJnJjI1NTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwg c2V0X2ZnLCByZiwgZ2YsIGJmKTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2Jn LCByYiwgZ2IsIGJiKTsKKyAgICB9CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHNlcSk7Cit9CisK K3N0YXRpYyB2b2lkCit0dXJuX29mZl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lk KQoreworICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKKyAg dzMyY29uX3dyaXRlX3Z0X3NlcSAodHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2RlKTsKK30KKwor LyogcmV0dXJucyB0aGUgcGl4ZWwgdmFsdWUgZm9yIHRoZSBnaXZlbiBpbmRleCBpbnRvIFZUIGJh c2UgY29sb3IgbWFwICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyBwaXhlbF9jYWNoZVsxNl07Citz dGF0aWMgdW5zaWduZWQgbG9uZworZ2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KQorewor ICB1bnNpZ25lZCBpbnQgaSA9ICh1bnNpZ25lZCBpbnQpIGluZGV4OworICBpZiAoaSA+IDE1KSBy ZXR1cm4gMDsKKyAgaWYgKGkgPT0gMCB8fCBwaXhlbF9jYWNoZVtpXSA+IDApCisgICAgcmV0dXJu IHBpeGVsX2NhY2hlW2ldOworCisgIExpc3BfT2JqZWN0IHBpeCA9IHNhZmVfY2FsbG4gKFF3MzJj b25fZ2V0X3BpeGVsLCBtYWtlX3VmaXhudW0gKGkpKTsKKyAgcGl4ZWxfY2FjaGVbaV0gPSAodW5z aWduZWQgbG9uZykgWFVGSVhOVU0gKHBpeCk7CisgIHJldHVybiBwaXhlbF9jYWNoZVtpXTsKK30K KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxp emF0aW9uCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKwogLyogVGhlIElNRSB3aW5kb3cgaXMgbmVlZGVkIHRv IHJlY2VpdmUgdGhlIHNlc3Npb24gbm90aWZpY2F0aW9ucwogICAgcmVxdWlyZWQgdG8gcmVzZXQg dGhlIGxvdyBsZXZlbCBrZXlib2FyZCBob29rIHN0YXRlLiAgKi8KIApAQCAtODM0LDcgKzEwOTMs NyBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAq d2lkdGgsIGludCAqaGVpZ2h0KQogCUdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChjdXJfc2Ny ZWVuLCAmaW5mbyk7CiAKIAkvKiBTaHJpbmsgdGhlIHdpbmRvdyBmaXJzdCwgc28gdGhlIGJ1ZmZl ciBkaW1lbnNpb25zIGNhbiBiZQotICAgICAgICAgICByZWR1Y2VkIGlmIG5lY2Vzc2FyeS4gICov CisJICAgcmVkdWNlZCBpZiBuZWNlc3NhcnkuICAqLwogCW5ld193aW5fZGltcy5Ub3AgPSAwOwog CW5ld193aW5fZGltcy5MZWZ0ID0gMDsKIAluZXdfd2luX2RpbXMuQm90dG9tID0gbWluIChuZXdf c2l6ZS5ZLCBpbmZvLmR3U2l6ZS5ZKSAtIDE7CkBAIC04NDksNiArMTEwOCw3IEBAIGluaXRpYWxp emVfdzMyX2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpo ZWlnaHQpCiAJbmV3X3dpbl9kaW1zLkJvdHRvbSA9IG5ld19zaXplLlkgLSAxOwogCW5ld193aW5f ZGltcy5SaWdodCA9IG5ld19zaXplLlggLSAxOwogCVNldENvbnNvbGVXaW5kb3dJbmZvIChjdXJf c2NyZWVuLCBUUlVFLCAmbmV3X3dpbl9kaW1zKTsKKwogICAgICAgfQogICB9CiAKQEAgLTg2MSw2 ICsxMTIxLDggQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJt LCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKICAgICB9CiAKICAgY2hhcl9hdHRyX25vcm1hbCA9 IGluZm8ud0F0dHJpYnV0ZXM7CisgIGZnX25vcm1hbCA9IGNoYXJfYXR0cl9ub3JtYWwgJiAweDAw MGY7CisgIGJnX25vcm1hbCA9IChjaGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmOwogCiAg IC8qIERldGVybWluZSBpZiB0aGUgaW5mbyByZXR1cm5lZCBieSBHZXRDb25zb2xlU2NyZWVuQnVm ZmVySW5mbwogICAgICBpcyByZWFsaXN0aWMuICBPbGQgTVMgVGVsbmV0IHNlcnZlcnMgdXNlZCB0 byBvbmx5IGZpbGwgb3V0CkBAIC05MTcsMTMgKzExNzksMjEgQEAgaW5pdGlhbGl6ZV93MzJfZGlz cGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIH0K IAogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNwIElu dGVyZmFjZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRPRE8gLSBtaWdyYXRlIHRvIFZUIHNlcXVl bmNlcyAoMjU2IGFuZCAyNGJpdCBjb2xvcikgKi8KIERFRlVOICgic2V0LXNjcmVlbi1jb2xvciIs IEZzZXRfc2NyZWVuX2NvbG9yLCBTc2V0X3NjcmVlbl9jb2xvciwgMiwgMiwgMCwKICAgICAgICBk b2M6IC8qIFNldCBzY3JlZW4gZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMuCiAKIEFy Z3VtZW50cyBzaG91bGQgYmUgaW5kaWNlcyBiZXR3ZWVuIDAgYW5kIDE1LCBzZWUgdzMyY29uc29s ZS5lbC4gICovKQogICAoTGlzcF9PYmplY3QgZm9yZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dy b3VuZCkKIHsKLSAgY2hhcl9hdHRyX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVncm91bmQpICsgKFhG SVhOQVQgKGJhY2tncm91bmQpIDw8IDQpOworCisgIGZnX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVn cm91bmQpOworICBiZ19ub3JtYWwgPSBYRklYTkFUIChiYWNrZ3JvdW5kKTsKKyAgY2hhcl9hdHRy X25vcm1hbCA9IGZnX25vcm1hbCArIChiZ19ub3JtYWwgPDwgNCk7CiAKICAgRnJlY2VudGVyIChR bmlsLCBRdCk7CiAgIHJldHVybiBRdDsKQEAgLTkzNyw4ICsxMjA3LDggQEAgU2VlIHczMmNvbnNv bGUuZWwgYW5kIGB0dHktZGVmaW5lZC1jb2xvci1hbGlzdCcgZm9yIG1hcHBpbmcgb2YgaW5kaWNl cwogdG8gY29sb3JzLiAgKi8pCiAgICh2b2lkKQogewotICByZXR1cm4gRmNvbnMgKG1ha2VfZml4 bnVtIChjaGFyX2F0dHJfbm9ybWFsICYgMHgwMDBmKSwKLQkJRmNvbnMgKG1ha2VfZml4bnVtICgo Y2hhcl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4MDAwZiksIFFuaWwpKTsKKyAgcmV0dXJuIEZjb25z IChtYWtlX2ZpeG51bSAoZmdfbm9ybWFsKSwKKwkJRmNvbnMgKG1ha2VfZml4bnVtIChiZ19ub3Jt YWwpLCBRbmlsKSk7CiB9CiAKIERFRlVOICgic2V0LWN1cnNvci1zaXplIiwgRnNldF9jdXJzb3Jf c2l6ZSwgU3NldF9jdXJzb3Jfc2l6ZSwgMSwgMSwgMCwKQEAgLTk1NywxNSArMTIyNywzMiBAQCB2 b2lkCiBzeW1zX29mX250dGVybSAodm9pZCkKIHsKICAgREVGVkFSX0JPT0wgKCJ3MzItdXNlLWZ1 bGwtc2NyZWVuLWJ1ZmZlciIsCi0gICAgICAgICAgICAgICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1 ZmZlciwKLQkgICAgICAgZG9jOiAvKiBOb24tbmlsIG1lYW5zIG1ha2UgdGVybWluYWwgZnJhbWVz IHVzZSB0aGUgZnVsbCBzY3JlZW4gYnVmZmVyIGRpbWVuc2lvbnMuCisJCXczMl91c2VfZnVsbF9z Y3JlZW5fYnVmZmVyLAorCQlkb2M6IC8qIE5vbi1uaWwgbWVhbnMgbWFrZSB0ZXJtaW5hbCBmcmFt ZXMgdXNlIHRoZSBmdWxsIHNjcmVlbiBidWZmZXIgZGltZW5zaW9ucy4KIFRoaXMgaXMgZGVzaXJh YmxlIHdoZW4gcnVubmluZyBFbWFjcyBvdmVyIHRlbG5ldC4KIEEgdmFsdWUgb2YgbmlsIG1lYW5z IHVzZSB0aGUgY3VycmVudCBjb25zb2xlIHdpbmRvdyBkaW1lbnNpb25zOyB0aGlzCiBtYXkgYmUg cHJlZmVyYWJsZSB3aGVuIHdvcmtpbmcgZGlyZWN0bHkgYXQgdGhlIGNvbnNvbGUgd2l0aCBhIGxh cmdlCiBzY3JvbGwtYmFjayBidWZmZXIuICAqLyk7CiAgIHczMl91c2VfZnVsbF9zY3JlZW5fYnVm ZmVyID0gMDsKIAorICBERUZWQVJfQk9PTCAoInczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1 ZW5jZXMiLAorCQl3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzLAorCQlkb2M6IC8q IElmIG5vbi1uaWwgdzMyIGNvbnNvbGUgdXNlcyB0ZXJtaW5hbCBzZXF1ZW5jZXMgZm9yIHNvbWUg b3V0cHV0IHByb2Nlc3NpbmcuCitUaGlzIHZhcmlhYmxlIGlzIHNldCBhdXRvbWF0aWNhbGx5IGJh c2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHRlcm1pbmFsLgorSXQgZGV0ZXJtaW5lcyB0 aGUgbnVtYmVyIGFuZCBpbmRpY2VzIG9mIGNvbG9ycyB1c2VkIGZvciBmYWNlcyBpbiB0aGUgdGVy bWluYWwuCitJZiB0aGUgdGVybWluYWwgY2Fubm90IGhhbmRsZSBWVCBzZXF1ZW5jZXMsIHRoZSB1 cGRhdGUgaG9vayB0cmlnZ2VycyByZWNvbXB1dGF0aW9uIG9mIGZhY2VzLgorU2VlIGB3MzJjb24t c2V0LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMnLCB3aGljaCBzaG91bGQgYmUgY2FsbGVkIGFmdGVy IHNldHRpbmcgdGhpcyB2YXJpYWJsZSAKK21hbnVhbGx5IGluIGEgcnVubmluZyBzZXNzaW9uLiAq Lyk7CisgIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMgPSAwOworCisgIERFRlNZ TSAoUXczMmNvbl9zZXRfdXBfaW5pdGlhbF9mcmFtZV9mYWNlcywKKwkgICJ3MzJjb24tc2V0LXVw LWluaXRpYWwtZnJhbWUtZmFjZXMiKTsKKworICBERUZTWU0gKFF3MzJjb25fZ2V0X3BpeGVsLAor CSAgInczMmNvbi1nZXQtcGl4ZWwiKTsKKwogICBkZWZzdWJyICgmU3NldF9zY3JlZW5fY29sb3Ip OwogICBkZWZzdWJyICgmU2dldF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU3NldF9jdXJz b3Jfc2l6ZSk7CisKIH0KZGlmZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5k ZXggYWVmNDBjMzhlNTQuLmRjN2Y0MmI5OGJhIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysg Yi9zcmMveGRpc3AuYwpAQCAtMTcyMzksOCArMTcyMzksNyBAQCByZWRpc3BsYXlfaW50ZXJuYWwg KHZvaWQpCiAJICAgICBhcmVhLCBkaXNwbGF5aW5nIGEgZGlmZmVyZW50IGZyYW1lIG1lYW5zIHJl ZGlzcGxheSB0aGUKIAkgICAgIHdob2xlIHRoaW5nLiAgKi8KIAkgIFNFVF9GUkFNRV9HQVJCQUdF RCAoc2YpOwotI2lmICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNp ZiAhZGVmaW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAkgIHNldF90dHlfY29s b3JfbW9kZSAoRlJBTUVfVFRZIChzZiksIHNmKTsKICNlbmRpZgogCX0KLS0KMi40OS4wCgo= --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw Content-Type: application/octet-stream; name=0001-w32-VT-Sequences-full.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-w32-VT-Sequences-full.patch RnJvbSAwNzgwOTFjOTQwMTc0MTkxNDc3ZmQ4MzJlMGM4NWI4NjU2YmE2ZTY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFNhdCwg NiBTZXAgMjAyNSAwMTozODozOCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHczMiBWVCBTZXF1ZW5j ZXMgKGZ1bGwpCgotLS0KIGRvYy9lbWFjcy9jbWRhcmdzLnRleGkgIHwgICA5ICstCiBkb2MvZW1h Y3MvbXNkb3MudGV4aSAgICB8ICA0NyArKy0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgIHwgIDI1 ICsrCiBsaXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCB8ICAgMyArLQogbGlzcC90ZXJtL3czMmNvbnNv bGUuZWwgfCAxNTIgKysrKysrLS0KIHNyYy9kaXNwbmV3LmMgICAgICAgICAgIHwgIDY3ICsrKy0K IHNyYy90ZXJtLmMgICAgICAgICAgICAgIHwgIDg1ICsrKy0KIHNyYy90ZXJtY2hhci5oICAgICAg ICAgIHwgICAyICsKIHNyYy93MzJjb25zb2xlLmMgICAgICAgIHwgODM0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgICAy ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCA5NjEgaW5zZXJ0aW9ucygrKSwgMjY1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkgYi9kb2MvZW1hY3MvY21kYXJn cy50ZXhpCmluZGV4IDc5YWUyZDA2NGQxLi5lZWQyNjNjMzkwNSAxMDA2NDQKLS0tIGEvZG9jL2Vt YWNzL2NtZGFyZ3MudGV4aQorKysgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCkBAIC0xMDI0LDE5 ICsxMDI0LDIyIEBAIGNvbG9yZWQgZGlzcGxheS4KIEBpdGVteCBhbnNpOAogVHVybiBvbiB0aGUg Y29sb3Igc3VwcG9ydCB1bmNvbmRpdGlvbmFsbHksIGFuZCB1c2UgY29sb3IgY29tbWFuZHMKIHNw ZWNpZmllZCBieSB0aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZvciB0aGUgOCBzdGFuZGFyZCBj b2xvcnMuCitAaXRlbSAyNGJpdAorVHVybiBvbiBzdXBwb3J0IGZvciBhbGwgZGVmaW5lZCAyNC1i aXQgUkdCIGNvbG9ycyBpZiBhdmFpbGFibGUuCitDdXJyZW50bHkgdGhpcyBpcyBlZmZlY3RpdmUg b24gTVMtV2luZG93cyAoMTArKSBvbmx5LgogQGl0ZW0gQHZhcntudW19CiBVc2UgY29sb3IgbW9k ZSBmb3IgQHZhcntudW19IGNvbG9ycy4gIElmIEB2YXJ7bnVtfSBpcyBAbWludXN7fTEsIHR1cm4g b2ZmCiBjb2xvciBzdXBwb3J0IChlcXVpdmFsZW50IHRvIEBzYW1we25ldmVyfSk7IGlmIGl0IGlz IDAsIHVzZSB0aGUKIGRlZmF1bHQgY29sb3Igc3VwcG9ydCBmb3IgdGhpcyB0ZXJtaW5hbCAoZXF1 aXZhbGVudCB0byBAc2FtcHthdXRvfSk7CiBvdGhlcndpc2UgdXNlIGFuIGFwcHJvcHJpYXRlIHN0 YW5kYXJkIG1vZGUgZm9yIEB2YXJ7bnVtfSBjb2xvcnMuCiBEZXBlbmRpbmcgb24geW91ciB0ZXJt aW5hbCdzIGNhcGFiaWxpdGllcywgRW1hY3MgbWlnaHQgYmUgYWJsZSB0byB0dXJuCi1vbiBhIGNv bG9yIG1vZGUgZm9yIDgsIDE2LCA4OCwgb3IgMjU2IGFzIHRoZSB2YWx1ZSBvZiBAdmFye251bX0u ICBJZgotdGhlcmUgaXMgbm8gbW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMsIEVt YWNzIGFjdHMgYXMgaWYKK29uIGEgY29sb3IgbW9kZSBmb3IgOCwgMTYsIDg4LCAyNTYsIG9yIDE2 Nzc3MjE2IGFzIHRoZSB2YWx1ZSBvZiBAdmFye251bX0uCitJZiB0aGVyZSBpcyBubyBtb2RlIHRo YXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgogQHZhcntudW19 IHdlcmUgMCwgaS5lLiwgaXQgdXNlcyB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNvbG9yIHN1cHBv cnQKIG1vZGUuCiBAZW5kIHRhYmxlCiAKLVRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMt V2luZG93cyBhbmQgTVMtRE9TLgorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1ET1Ms IG5vciBNUy1XaW5kb3dzIHByaW9yIHRvIFdpbmRvd3MgMTAuCiAKIEBjaW5kZXggY29sb3JzIG9u IGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdpbmcgZHVyaW5nIHNlc3Npb24KIEBjaW5kZXggY2hh cmFjdGVyIHRlcm1pbmFsLCBjaGFuZ2UgY29sb3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNz L21zZG9zLnRleGkgYi9kb2MvZW1hY3MvbXNkb3MudGV4aQppbmRleCBmOTcxNTFjNjMwZi4uMmVi Y2EyNGQwOTAgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCisrKyBiL2RvYy9lbWFj cy9tc2Rvcy50ZXhpCkBAIC0xMTY1LDcgKzExNjUsNyBAQCBhbnl3aGVyZSBlbHNlLgogICBUaGUg dmFyaWFibGUgQGNvZGV7dzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldH0gaXMgYSBmbGFnIHRo YXQKIGRldGVybWluZXMgd2hldGhlciB0byBtYWtlIHRoZSBzeXN0ZW0gY2FyZXQgdmlzaWJsZS4g IFRoZSBkZWZhdWx0IHdoZW4KIG5vIHNjcmVlbiByZWFkZXIgc29mdHdhcmUgaXMgaW4gdXNlIGlz IEBjb2Rle25pbH0sIHdoaWNoIG1lYW5zIEVtYWNzCi1kcmF3cyBpdHMgb3duIGN1cnNvciB0byBp bmRpY2F0ZSB0aGUgcG9zaXRpb24gb2YgcG9pbnQuICBBCitkcmF3cyBpdHMgb3duIGN1cnNvciB0 byBpbmRpY2F0ZSB0aGUgcG9zaXRpb24gb2YgcG9pbnQuIEEKIG5vbi1AY29kZXtuaWx9IHZhbHVl IG1lYW5zIEVtYWNzIHdpbGwgaW5kaWNhdGUgcG9pbnQgbG9jYXRpb24gd2l0aCB0aGUKIHN5c3Rl bSBjYXJldDsgdGhpcyBmYWNpbGl0YXRlcyB1c2Ugb2Ygc2NyZWVuIHJlYWRlciBzb2Z0d2FyZSwg YW5kIGlzCiB0aGUgZGVmYXVsdCB3aGVuIHN1Y2ggc29mdHdhcmUgaXMgZGV0ZWN0ZWQgd2hlbiBy dW5uaW5nIEVtYWNzLgpAQCAtMTIwMCw2ICsxMjAwLDUxIEBAIHlvdSBzaG91bGQgc2V0IGl0cyB2 YWx1ZSBpbiB5b3VyIGluaXQgZmlsZSAoQHB4cmVme0luaXQgRmlsZX0pLCBlaXRoZXIKIGRpcmVj dGx5IG9yIHZpYSBAa2Jke00teCBjdXN0b21pemUtdmFyaWFibGV9LCB3aGljaCBsZXRzIHlvdSBz YXZlIHRoZQogY3VzdG9taXplZCB2YWx1ZSwgc2VlIEByZWZ7U2F2aW5nIEN1c3RvbWl6YXRpb25z fS4KIAorQHZpbmRleCB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCitAY2luZGV4 IFdpbmRvd3MgVGVybWluYWwsIFdpbmRvd3MgQ29uc29sZSwgTVMtV2luZG93cworICBUaGUgaW1w bGVtZW50YXRpb24gb2YgZGlzcGxheSBmdW5jdGlvbmFsaXR5IGZvciBXaW5kb3dzIENvbnNvbGUK K2RpZmZlcnMgZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIG90aGVyIHRlcm1pbmFsIGVtdWxh dG9ycywKK2JlY2F1c2UgaGlzdG9yaWNhbGx5LCBXaW5kb3dzIHJlcXVpcmVkIHVzZSBvZiBhbiBp ZGlvc3luY3JhY3RpYyBBUEkuCitUaGF0IEFQSSBsaW1pdGVkIFdpbmRvd3MgQ29uc29sZSBkaXNw bGF5IG9mIEVtYWNzIHRvIDE2IGJhc2ljIGNvbG9ycy4KK1dpdGggdGhlIGludHJvZHVjdGlvbiBv ZiBXaW5kb3dzIFRlcm1pbmFsLCBNaWNyb3NvZnQgaW1wbGVtZW50ZWQKK3N1cHBvcnQgZm9yIEFT Q0lJIGNvbnRyb2wgc2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUgVlQxMDAgYW5kIFh0ZXJtLAor YXMgd2VsbCBhcyAyNC1iaXQgUkJHIGNvbG9yIGRpc3BsYXkuCisKKyAgVGhlIHZhcmlhYmxlIEBj b2Rle3czMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXN9IGRldGVybWluZXMKK3doZXRo ZXIgdGhpcyBuZXdlciBtZWNoYW5pc20gaXMgdXNlZCBmb3IgZGlzcGxheSwgb3IgdGhlIG9sZGVy IG9uZS4KK0l0IGlzIGF1dG9tYXRpY2FsbHkgc2V0IGJhc2VkIG9uIHlvdXIgdGVybWluYWwncyBj YXBhYmlsaXRpZXMgb24KK3N0YXJ0dXAuIElmIGl0IGlzIG5vbi1uaWwsIEVtYWNzIHdpbGwgdXNl IEFTQ0lJIGVzY2FwZSBzZXF1ZW5jZXMgZm9yCitjdXJzb3IgYW5kIGNvbG9yIGRpc3BsYXkuIEJ5 IGRlZmF1bHQsIDI0LWJpdCBSR0IgY29sb3Igd2lsbCBiZSB1c2VkLAorYnV0IG90aGVyICg4LCAx NiwgMjU2KSBjb2xvciBzcGFjZXMgbWF5IGJlIHVzZWQsIGJ5IHBhc3NpbmcgdGhlCitAY29kZXst LWNvbG9yfSBjb21tYW5kIGxpbmUgYXJndW1lbnQsIG9yIHNldHRpbmcgdGhlIHZhbHVlIG9mIHRo ZQorQGNvZGV7dHR5LWNvbG9yLW1vZGV9IGZyYW1lIHBhcmFtZXRlci4KKworICBBbnkgdGltZSBA Y29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzfSBpcyBzZXQgbWFudWFsbHks Cit0aGUgY2hhbmdlIGluIHZhbHVlIHNob3VsZCBiZSBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBh IGNhbGwgdG8KK0Bjb2Rle3NldC1mcmFtZS1wYXJhbWV0ZXJ9IChyZSlzZXR0aW5nIEBjb2Rleyd0 dHktY29sb3ItbW9kZX0sIG9yCithdCB2ZXJ5IGxlYXN0LCBhIGNhbGwgdG8gQGNvZGV7dzMyY29u LXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzfS4KKworICAgVFRZIEVtYWNzIHRyYWRpdGlvbmFs bHkgbGVhdmVzIHRleHQgY3Vyc29yIGRpc3BsYXkgdXAgdG8gdGhlIHRlcm1pbmFsLgorU2NyZWVu IHVwZGF0ZXMgdmlhIHRoZSBXaW5kb3dzIENvbnNvbGUgQVBJIHdlcmUgcGVyZm9ybWVkIGRpcmVj dGx5IG9uCityZWdpb25zIG9mIHRoZSBzY3JlZW4gYnVmZmVyLCB3aXRob3V0IGFueSBuZWVkIHRv IG1vdmUgdGhlIGN1cnNvciBkdXJpbmcKK2EgZGlzcGxheSB1cGRhdGUuIFZpcnR1YWwgdGVybWlu YWwgc2VxdWVuY2VzIHJlcXVpcmUgbW92aW5nIHRoZSBjdXJzb3IKK3RvIGV2ZXJ5IHBvaW50IGF0 IHdoaWNoIHdlIG5lZWQgdG8gd3JpdGUgYSBjaGFuZ2UuIFVuZm9ydHVuYXRlbHksIHRoZQorY29u dGVudCBvZiB0aGUgZWNobyBhcmVhIGNoYW5nZXMgZnJlcXVlbnRseSwgYW5kIHVwZGF0ZXMgYXJl IG5vdCBhbHdheXMKK3F1aWNrIGVub3VnaCBmb3IgdGhlIGN1cnNvciBtb3ZlbWVudCB0byBiZSBt YWRlIGltcGVyY2VwdGlibGUuIFRoaXMKK3ByZXNlbnRzIGEgVVggZGlsZW1tYS4gRWl0aGVyIHdl ICgxKSBoaWRlIHRoZSBjdXJzb3IgbW9tZW50YXJpbHkgd2hlbmV2ZXIKK2l0IGBganVtcHMnJyB0 byB0aGUgZWNobyBhcmVhLCB3aGljaCBtYW5pZmVzdHMgaW4gdGhlIGN1cnNvciBhcHBlYXJpbmcg dG8KK2BgZmxpY2tlcicnIGluLXBsYWNlLCBvciAoMikgd2UgZG9uJ3QsIGluIHdoaWNoIGNhc2Ug dGhlIGN1cnNvciBqdW1wcyB0bworLyBmbGFzaGVzIGluIHRoZSBlY2hvIGFyZWEuIFdlIGdldCB0 aHJvdWdoIHRoZSBob3JucyBvZiB0aGUgZGlsZW1tYSBieSAoMykKK2Fsd2F5cyBoaWRpbmcgdGhl IHN5c3RlbSBjdXJzb3IsIGFuZCBoYXZpbmcgRW1hY3MgdGFrZSBvdmVyIGN1cnNvciBkaXNwbGF5 LgorCisgIEFmdGVyIHRoZSBtaWdyYXRpb24gdG8gdmlydHVhbCB0ZXJtaW5hbCBzZXF1ZW5jZXMg RW1hY3MgZGVmYXVsdHMgdG8gKDMpLAorYnV0IGxlYXZlcyAoMikgYXMgYW4gb3B0aW9uLiBXaGVu IEBjb2Rle3czMi11c2UtdmlzaWJsZS1zeXN0ZW0tY2FyZXR9IGlzCitAY29kZXtuaWx9LCBhIHNv bGlkIG5vbi1ibGlua2luZyB0ZXh0IGN1cnNvciB3aWxsIGRpc3BsYXllZCAoaW4gdGhlCisnY3Vy c29yJyBmYWNlKS4gV2hlbiBpdCBpcyBub24tQGNvZGV7bmlsfSwgYSBzeXN0ZW0gY3Vyc29yIHdp bGwgYmUgc2hvd24KKyhwb3NzaWJseSB3aXRoIGEgc2xpZ2h0IGZsaWNrZXIpLiBUaGlzIGNoYW5n ZSBpcyBpbmRlcGVuZGVudCBvZgorQGNvZGV7dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVl bmNlc30uCisKKwogQGlmbm90dGV4CiBAaW5jbHVkZSBtc2Rvcy14dHJhLnRleGkKIEBlbmQgaWZu b3R0ZXgKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggZTBjNGYzY2I4NzEu LjdjODg1NTNjMjgxIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMzIy OCw2ICszMjI4LDMxIEBAIEFjY29yZGluZ2x5LCB3ZSBoYXZlIHJldmlzZWQgb3VyIHJlY29tbWVu ZGF0aW9ucyBmb3IgYSBzdWl0YWJsZSBESkdQUAogdG9vbGNoYWluIHRvIEdDQyAxNC4yLjAgYW5k IEJpbnV0aWxzIDIuMzUuMSBpbiBsaWV1IG9mIEdDQyAzLjQueCBhbmQKIEJpbnV0aWxzIDIuMjYu CiAKKysrKworKiogV2luZG93cyBUZXJtaW5hbCBub3cgZGlzcGxheXMgMjQtYml0IFJHQi4KK1By ZXZpb3VzbHksIHRlcm1pbmFsIHNlc3Npb25zIG9uIFdpbmRvd3Mgc3VwcG9ydGVkIGRpc3BsYXkg b2YgMTYKK2NvbG9ycywgdmlhIHRoZSBXaW5kb3dzIENvbnNvbGUgQVBJLiBUaGVyZSBpcyBub3cg c3VwcG9ydCBmb3IgMjU2CithbmQgMjQtYml0IFJHQiBjb2xvciwgYnkgZW1pdHRpbmcgQVNDSUkg Y29udHJvbCBzZXF1ZW5jZXMuCitDdXJzb3IgbW92ZW1lbnQgLyBkaXNwbGF5IGhhcyBhbHNvIGJl ZW4gKHJlLSlpbXBsZW1lbnRlZC4KKworVGhlIG5ldyBtZWNoYW5pc20gd2lsbCBiZSBlbmFibGVk IGF1dG9tYXRpY2FsbHkgd2hlbiBzdXBwb3J0ZWQuCitJdCBkZWZhdWx0cyB0byAyNC1iaXQgUkdC IGNvbG9yLCBidXQgY2FuIGJlIHNldCB0byA4LCAxNiwgMjU2LCBvcgorJzI0Yml0JyBieSBwYXNz aW5nIHRoZSAnLS1jb2xvcicgZmxhZyBvciBzZXR0aW5nIHRoZSAndHR5LWNvbG9yLW1vZGUnCitm cmFtZSBwYXJhbWV0ZXIuIEl0IGNhbiBiZSBkaXNhYmxlZC9lbmFibGVkIGJ5IHNldHRpbmcgdGhl IHZhcmlhYmxlCisndzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcycuCisKKysrKwor KiogRW1hY3Mgbm93IGhhbmRsZXMgdGV4dCBjdXJzb3IgZGlzcGxheSBpbiBXaW5kb3dzIFRlcm1p bmFsL0NvbnNvbGUuCitQcmV2aW91c2x5LCBpbiB0ZXJtaW5hbCBzZXNzaW9ucyBvbiBXaW5kb3dz LCBFbWFjcyBkZWxlZ2F0ZWQgdGV4dCBjdXJzb3IKK2Rpc3BsYXkgdG8gdGhlIHN5c3RlbSAoYXMg b24gb3RoZXIgVFRZcykuIEZvbGxvd2luZyB0aGUgbWlncmF0aW9uIHRvCitBU0NJSSBjb250cm9s IHNlcXVlbmNlcyAoc2VlIGFib3ZlKSwgY3Vyc29yIGRpc3BsYXkgaXMgbm93IG9wdGlvbmFsbHks CitidXQgYnkgZGVmYXVsdCwgaGFuZGxlZCBieSBFbWFjcy4gV2hlbiAndzMyLXVzZS12aXNpYmxl LXN5c3RlbS1jYXJldCcgaXMKK25pbCwgYSBzb2xpZCBub24tYmxpbmtpbmcgdGV4dCBjdXJzb3Ig d2lsbCBkaXNwbGF5ZWQgKGluIHRoZSAnY3Vyc29yJworZmFjZSkuIFdoZW4gaXQgaXMgc2V0IHRv IG5vbi1uaWwsIHRoZSBzeXN0ZW0gY3Vyc29yIHdpbGwgYmUgc2hvd24uCisKK1NlZSB0aGUgbWFu dWFsIGVudHJ5IHNwZWNpZmljIHRvIE1TLVdpbmRvd3MgZm9yIG1vcmUgZGV0YWlscy4KKworCiAM CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCmRpZmYgLS1n aXQgYS9saXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCBiL2xpc3AvdGVybS90dHktY29sb3JzLmVsCmlu ZGV4IGRmZDIwN2Q3MWMxLi4xYmEwNDVjOGI3MSAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3R0eS1j b2xvcnMuZWwKKysrIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKQEAgLTc2NCw3ICs3NjQsOCBA QAogICAgIChhdXRvIC4gMCkKICAgICAoYW5zaTggLiA4KQogICAgIChhbHdheXMgLiA4KQotICAg ICh5ZXMgLiA4KSkKKyAgICAoeWVzIC4gOCkKKyAgICAoMjRiaXQgLiAxNjc3NzIxNikpCiAgICJB biBhbGlzdCBvZiBzdXBwb3J0ZWQgc3RhbmRhcmQgdHR5IGNvbG9yIG1vZGVzIGFuZCB0aGVpciBh bGlhc2VzLiIpCiAKIChkZWZ1biB0dHktY29sb3ItYWxpc3QgKCZvcHRpb25hbCBfZnJhbWUpCmRp ZmYgLS1naXQgYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbCBiL2xpc3AvdGVybS93MzJjb25zb2xl LmVsCmluZGV4IDFiNDRkYTQ4YmY3Li43YTI2MjA5NzQ5MiAxMDA2NDQKLS0tIGEvbGlzcC90ZXJt L3czMmNvbnNvbGUuZWwKKysrIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKQEAgLTI0LDggKzI0 LDcgQEAKIAogOzs7IENvZGU6CiAKLTs7IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVz IHRoYW4gc3RhbmRhcmQ6Ci0KKzs7IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVzIHRo YW4gc3RhbmRhcmQKIChkZWZ2YXIgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMKICAgJygoImJsYWNr IiAgICAgICAgICAwICAgICAwICAgICAwICAgICAwKQogICAgICgiYmx1ZSIgICAgICAgICAgIDEg ICAgIDAgICAgIDAgNTI0ODApIDsgTWVkaXVtQmx1ZQpAQCAtNDMsNTYgKzQyLDEzMyBAQAogICAg ICgibGlnaHRtYWdlbnRhIiAgMTMgNjU1MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQogICAgICgi eWVsbG93IiAgICAgICAgMTQgNjU1MzUgNjU1MzUgICAgIDApIDsgWWVsbG93CiAgICAgKCJ3aGl0 ZSIgICAgICAgICAxNSA2NTUzNSA2NTUzNSA2NTUzNSkpCi0iQSBsaXN0IG9mIFZHQSBjb25zb2xl IGNvbG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKKyAgIkEgbGlz dCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFs dWVzLiIpCisKKzs7IFdoZW4gdXNpbmcgVlQgc2VxdWVuY2VzIGZvciBjb2xvciwgdXNlIHh0ZXJt LWxpa2UgaW5kaWNlcworKGRlZnZhciB3MzItdHR5LXZpcnR1YWwtdGVybWluYWwtYmFzZS1jb2xv cnMKKyAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAgICAwICAgICAwKQorICAgICgicmVk IiAgICAgICAgICAgIDEgNDU1NjggIDg3MDQgIDg3MDQpIDsgRmlyZUJyaWNrCisgICAgKCJncmVl biIgICAgICAgICAgMiAgODcwNCAzNTU4NCAgODcwNCkgOyBGb3Jlc3RHcmVlbgorICAgICgiYnJv d24iICAgICAgICAgIDMgNDA5NjAgMjA5OTIgMTE1MjApIDsgU2llbm5hCisgICAgKCJibHVlIiAg ICAgICAgICAgNCAgICAgMCAgICAgMCA1MjQ4MCkgOyBNZWRpdW1CbHVlCisgICAgKCJtYWdlbnRh IiAgICAgICAgNSAzNTU4NCAgICAgMCAzNTU4NCkgOyBEYXJrTWFnZW50YQorICAgICgiY3lhbiIg ICAgICAgICAgIDYgICAgIDAgNTI3MzYgNTM1MDQpIDsgRGFya1R1cnF1b2lzZQorICAgICgibGln aHRncmF5IiAgICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQorICAgICgiZGFya2dyYXki ICAgICAgIDggMjYxMTIgMjYxMTIgMjYxMTIpIDsgR3JheTQwCisgICAgKCJsaWdodHJlZCIgICAg ICAgOSA2NTUzNSAgICAgMCAgICAgMCkgOyBSZWQKKyAgICAoImxpZ2h0Z3JlZW4iICAgIDEwICAg ICAwIDY1NTM1ICAgICAwKSA7IEdyZWVuCisgICAgKCJ5ZWxsb3ciICAgICAgICAxMSA2NTUzNSA2 NTUzNSAgICAgMCkgOyBZZWxsb3cKKyAgICAoImxpZ2h0Ymx1ZSIgICAgIDEyICAgICAwICAgICAw IDY1NTM1KSA7IEJsdWUKKyAgICAoImxpZ2h0bWFnZW50YSIgIDEzIDY1NTM1ICAgICAwIDY1NTM1 KSA7IE1hZ2VudGEKKyAgICAoImxpZ2h0Y3lhbiIgICAgIDE0ICAgICAwIDY1NTM1IDY1NTM1KSA7 IEN5YW4KKyAgICAoIndoaXRlIiAgICAgICAgIDE1IDY1NTM1IDY1NTM1IDY1NTM1KSkKKyAgIkEg bGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0Ig dmFsdWVzLiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAidGVy bS9jb21tb24td2luIiAoZnJhbWUpKQogKGRlY2xhcmUtZnVuY3Rpb24gZ2V0LXNjcmVlbi1jb2xv ciAidzMyY29uc29sZS5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1j b2RlcGFnZSAidzMycHJvYy5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29s ZS1vdXRwdXQtY29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAKKyhkZWZ1biB3MzJjb24tZGVmaW5l LWJhc2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJhc2UgMTYtY29sb3Igc3BhY2UgZm9yIHczMiBj b25zb2xlLiIKKyAgKGxldCogKChjb2xvcnMgKGlmIHczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1z ZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgIHczMi10dHktdmlydHVhbC10ZXJtaW5hbC1i YXNlLWNvbG9ycworICAgICAgICAgICAgICAgICAgIHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkK KyAgICAgICAgIChuYmFzZSAobGVuZ3RoIGNvbG9ycykpCisgICAgICAgICAoY29sb3IgKGNhciBj b2xvcnMpKSkKKyAgICAocHJvZ24gKHdoaWxlIGNvbG9ycworICAgICAgICAgICAgICh0dHktY29s b3ItZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikpCisgICAgICAg ICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3JzKQorICAgICAgICAgICAgICAgICAgIGNvbG9y ICAoY2FyIGNvbG9ycykpKQorICAgICAgICAgICBuYmFzZSkpKQorCis7OyBOb3RlOiB0dHktY29s b3ItZGVmaW5lIHN3YXBzIHBhc3NlZCBpbmRleCBmb3IgcGl4ZWwgb24gMjRiaXQgdGVybWluYWwK Kzs7IFNvLCB3ZSBuZWVkIHRoaXMgZnVuY3Rpb24gdG8gInJlY292ZXIiIHRoZSB0ZXJtaW5hbCdz IG5hdGl2ZSBtYXBwaW5nCisoZGVmdW4gdzMyY29uLWdldC1waXhlbCAoaW5kZXgpCisgICJDb252 ZXJ0IGEgYmFzZS1jb2xvciBpbmRleCBpbnRvIGEgcGl4ZWwgKGluZGV4IGludG8gMjRiaXQgbWFw KSIKKyAgKGxldCAoKGNvbG9yIChudGggaW5kZXggdzMyLXR0eS12aXJ0dWFsLXRlcm1pbmFsLWJh c2UtY29sb3JzKSkpCisgICAgKG9yICh0dHktY29sb3ItMjRiaXQgKGNkZHIgY29sb3IpKSBpbmRl eCkpKQorCisoZGVmdW4gdzMyY29uLWRlZmluZS0yNTYtY29sb3JzICgpCisgICJEZWZpbmVzIDI1 Ni1jb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0ICgociAwKSAoYiAwKSAoZyAw KQorICAgICAgICAobiAoLSAyNTYgKHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAg ICAgKGNvbnZlcnQtdG8tMTZiaXQgKGxhbWJkYSAocHJpbSkgKGxvZ2lvciBwcmltIChhc2ggcHJp bSA4KSkpKSkKKyAgICAod2hpbGUgKD4gbiAyNCkgOyBub24tZ3JleQorICAgICAgKGxldCAoKGkg KC0gMjU2IG4pKQorICAgICAgICAgICAgKGMgKG1hcGNhciBjb252ZXJ0LXRvLTE2Yml0CisgICAg ICAgICAgICAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoeCkgKGlmICh6ZXJvcCB4KSAwICgr ICgqIHggNDApIDU1KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgciBn IGIpKSkpKQorICAgICAgICAodHR5LWNvbG9yLWRlZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkg aSBjKSkKKyAgICAgIChzZXRxIGIgKDErIGIpKQorICAgICAgKHdoZW4gKD4gYiA1KSAoc2V0cSBn ICgxKyBnKSBiIDApKQorICAgICAgKHdoZW4gKD4gZyA1KSAoc2V0cSByICgxKyByKSBnIDApKQor ICAgICAgKHNldHEgbiAoMS0gbikpKQorICAgICh3aGlsZSAoPiBuIDApIDsgYWxsLWdyZXkKKyAg ICAgIChsZXQqICgoaSAoLSAyNTYgbikpCisgICAgICAgICAgICAgKHYgKGZ1bmNhbGwgY29udmVy dC10by0xNmJpdCAoKyA4ICgqICgtIDI0IG4pIDEwKSkpKQorICAgICAgICAgICAgIChjIChsaXN0 IHYgdiB2KSkpCisgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBp KSBpIGMpKQorICAgICAgKHNldHEgbiAoMS0gbikpKSkpCisKKyhkZWZ1biB3MzJjb24tZGVmaW5l LTI0Yml0LWNvbG9ycyAoKQorICAiRGVmaW5lcyAyNC1iaXQgY29sb3Igc3BhY2UgZm9yIHczMiBj b25zb2xlLiIKKyAgKGxldCAoKGkgKHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAo bWFwYyAobGFtYmRhIChjKSAodW5sZXNzIChhc3NvYyAoY2FyIGMpIHczMi10dHktc3RhbmRhcmQt Y29sb3JzKQorICAgICAgICAgICAgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgYykgaSAo Y2RyIGMpKQorICAgICAgICAgICAgICAgICAgIChzZXRxIGkgKDErIGkpKSkpCisgICAgICAgICAg Y29sb3ItbmFtZS1yZ2ItYWxpc3QpKSkKKwogKGRlZnVuIHRlcm1pbmFsLWluaXQtdzMyY29uc29s ZSAoKQogICAiVGVybWluYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHczMiBjb25zb2xl LiIKICAgOzsgU2hhcmUgZnVuY3Rpb24ga2V5IGluaXRpYWxpemF0aW9uIHdpdGggdzMyIGd1aSBm cmFtZXMKICAgKHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAoc2VsZWN0ZWQtZnJhbWUpKQogICA7OyBT ZXQgdGVybWluYWwgYW5kIGtleWJvYXJkIGVuY29kaW5ncyB0byB0aGUgY3VycmVudCBPRU0gY29k ZXBhZ2UuCiAgIChsZXQgKChvZW0tY29kZS1wYWdlLWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQg ImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UpKSkpCi0JKG9lbS1jb2RlLXBhZ2Utb3V0 cHV0LWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0 cHV0LWNvZGVwYWdlKSkpKQotCW9lbS1jcy1wIG9lbS1vLWNzLXApCi0JKHNldHEgb2VtLWNzLXAg KGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0JKHNldHEgb2VtLW8tY3Mt cCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZykpCi0JKHdoZW4g b2VtLWNzLXAKLQkgIChzZXQta2V5Ym9hcmQtY29kaW5nLXN5c3RlbSBvZW0tY29kZS1wYWdlLWNv ZGluZykKLQkgIChzZXQtdGVybWluYWwtY29kaW5nLXN5c3RlbQotCSAgIChpZiBvZW0tby1jcy1w IG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZyBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0gICAg ICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQg dG8gcmVwZWF0Ci0gICAgICAgICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5n IGRpc3BsYXlhYmxlLgotICAgICAgICAgIChzdGFydHVwLS1zZXR1cC1xdW90ZS1kaXNwbGF5KSkp Ci0gIChsZXQqICgoY29sb3JzIHczMi10dHktc3RhbmRhcmQtY29sb3JzKQotICAgICAgICAgKGNv bG9yIChjYXIgY29sb3JzKSkpCi0gICAgKHR0eS1jb2xvci1jbGVhcikKLSAgICAod2hpbGUgY29s b3JzCi0gICAgICAodHR5LWNvbG9yLWRlZmluZSAoY2FyIGNvbG9yKSAoY2FkciBjb2xvcikgKGNk ZHIgY29sb3IpKQotICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3JzKQotICAgICAgICAgICAg Y29sb3IgKGNhciBjb2xvcnMpKSkpCi0gIChjbGVhci1mYWNlLWNhY2hlKQotICA7OyBGaWd1cmUg b3V0IHdoYXQgYXJlIHRoZSBjb2xvcnMgb2YgdGhlIGNvbnNvbGUgd2luZG93LCBhbmQgc2V0IHVw Ci0gIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5LgotICAobGV0KiAoKHNj cmVlbi1jb2xvciAoZ2V0LXNjcmVlbi1jb2xvcikpCi0JIChiZyAoY2FkciBzY3JlZW4tY29sb3Ip KQotCSAoZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCi0JIHIgZyBiIGJnLW1vZGUpCi0g ICAgKHNldHEgciAobnRoIDIgZGVzY3IpCi0JICBnIChudGggMyBkZXNjcikKLQkgIGIgKG50aCA0 IGRlc2NyKSkKLSAgICAoaWYgKDwgKCsgciBnIGIpICgqIC42ICgrIDY1NTM1IDY1NTM1IDY1NTM1 KSkpCi0JKHNldHEgYmctbW9kZSAnZGFyaykKLSAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkK LSAgICAoc2V0LXRlcm1pbmFsLXBhcmFtZXRlciBuaWwgJ2JhY2tncm91bmQtbW9kZSBiZy1tb2Rl KSkKLSAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKKyAgICAgICAgIChpbnRlcm4g KGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSkpKSkKKyAgICAgICAgKG9l bS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZworICAgICAgICAgKGludGVybiAoZm9ybWF0ICJjcCVk IiAodzMyLWdldC1jb25zb2xlLW91dHB1dC1jb2RlcGFnZSkpKSkKKyAgICAgICAgb2VtLWNzLXAg b2VtLW8tY3MtcCkKKyAgICAoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2Rl LXBhZ2UtY29kaW5nKSkKKyAgICAoc2V0cSBvZW0tby1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2Vt LWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKKyAgICAod2hlbiBvZW0tY3MtcAorICAgICAgKHNl dC1rZXlib2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQorICAgICAgKHNl dC10ZXJtaW5hbC1jb2Rpbmctc3lzdGVtCisgICAgICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUt cGFnZS1vdXRwdXQtY29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAgIDs7IFNpbmNl IHdlIGNoYW5nZWQgdGhlIHRlcm1pbmFsIGVuY29kaW5nLCB3ZSBuZWVkIHRvIHJlcGVhdAorICAg ICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgorICAg ICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKKyAgKHczMmNvbi1zZXQtdXAtaW5p dGlhbC1mcmFtZS1mYWNlcykKICAgKHJ1bi1ob29rcyAndGVybWluYWwtaW5pdC13MzItaG9vaykp CiAKKyhkZWZ1biB3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMgKCkKKyAgIlNldCB1 cCBpbml0aWFsIGZhY2UgY29sb3Igc2NoZW1lIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHRoZSBudW1i ZXIgb2YKK2Rpc3BsYXkgY29sb3JzIGFuZCB0aGUgdmFsdWUgb2YgYHczMi11c2UtdmlydHVhbC10 ZXJtaW5hbC1zZXF1ZW5jZXMnLiIKKyAgKHR0eS1jb2xvci1jbGVhcikKKyAgKGxldCAoKG5jb2xv cnMgKGRpc3BsYXktY29sb3ItY2VsbHMpKSkKKyAgICAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1p bmFsLXNlcXVlbmNlcworICAgICAgICAoY29uZCAoKD0gbmNvbG9ycyAxNjc3NzIxNikgKHczMmNv bi1kZWZpbmUtMjRiaXQtY29sb3JzKSkKKyAgICAgICAgICAgICAgKCg9IG5jb2xvcnMgMjY1ICAg ICAgICh3MzJjb24tZGVmaW5lLTI1Ni1jb2xvcnMpKSkKKyAgICAgICAgICAgICAgKHQgICAgICAg ICAgICAgICAgICAgICh3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzKSkpCisgICAgICAodzMyY29u LWRlZmluZS1iYXNlLWNvbG9ycykpCisgICAgKGNsZWFyLWZhY2UtY2FjaGUpCisgICAgOzsgRmln dXJlIG91dCB3aGF0IGFyZSB0aGUgY29sb3JzIG9mIHRoZSBjb25zb2xlIHdpbmRvdywgYW5kIHNl dCB1cAorICAgIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5LgorICAgIChs ZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJhc2Ut aW5kZXggKGNhZHIgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJnLXBpeGVsICh3MzJjb24t Z2V0LXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAoYmcgKGlmICg9IG5jb2xvcnMgMTY3 NzcyMTYpIGJnLXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAoZGVzY3IgKHR0eS1jb2xv ci1ieS1pbmRleCBiZykpCisgICAgICAgICAgIHIgZyBiIGJnLW1vZGUpCisgICAgICAoc2V0cSBy IChudGggMiBkZXNjcikKKyAgICAgICAgICAgIGcgKG50aCAzIGRlc2NyKQorICAgICAgICAgICAg YiAobnRoIDQgZGVzY3IpKQorICAgICAgKGlmICg8ICgrIHIgZyBiKSAoKiAuNiAoKyA2NTUzNSA2 NTUzNSA2NTUzNSkpKQorICAgICAgICAgIChzZXRxIGJnLW1vZGUgJ2RhcmspCisgICAgICAgIChz ZXRxIGJnLW1vZGUgJ2xpZ2h0KSkKKyAgICAgIChzZXQtdGVybWluYWwtcGFyYW1ldGVyIG5pbCAn YmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKSkKKyAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1m YWNlcykpCisKIChwcm92aWRlICd0ZXJtL3czMmNvbnNvbGUpCiAKIDs7OyB3MzJjb25zb2xlLmVs IGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BuZXcuYyBiL3NyYy9kaXNwbmV3LmMKaW5k ZXggZDY1YTdjYmMxZjEuLjkyOGZiZDc4YzE3IDEwMDY0NAotLS0gYS9zcmMvZGlzcG5ldy5jCisr KyBiL3NyYy9kaXNwbmV3LmMKQEAgLTEwMyw2ICsxMDMsMTMgQEAgc3RhdGljIHZvaWQgYWRqdXN0 X2ZyYW1lX2dseXBoc19mb3JfZnJhbWVfcmVkaXNwbGF5IChzdHJ1Y3QgZnJhbWUgKik7CiBzdGF0 aWMgdm9pZCBzZXRfd2luZG93X3VwZGF0ZV9mbGFncyAoc3RydWN0IHdpbmRvdyAqdywgYm9vbCBv bl9wKTsKIHN0YXRpYyB2b2lkIHR0eV9zZXRfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYpOwogCisj aWZkZWYgV0lORE9XU05UCitleHRlcm4gdm9pZCB3MzJjb25faGlkZV9jdXJzb3IgKHZvaWQpOwor ZXh0ZXJuIHZvaWQgdzMyY29uX3Nob3dfY3Vyc29yICh2b2lkKTsKK2V4dGVybiB2b2lkIHczMmNv bl9zYXZlX2N1cnNvciAodm9pZCk7CitleHRlcm4gdm9pZCB3MzJjb25fcmVzdG9yZV9jdXJzb3Ig KHZvaWQpOworZXh0ZXJuIHZvaWQgdzMyY29uX2RyYXdfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKik7 CisjZW5kaWYKIAogI2lmIDAgLyogUGxlYXNlIGxlYXZlIHRoaXMgaW4gYXMgYSBkZWJ1Z2dpbmcg YWlkLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC00MDUyLDIwICs0MDU5LDI2IEBAIGNvbWJpbmVfdXBk YXRlc19mb3JfZnJhbWUgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBpbmhpYml0X3Njcm9sbGluZykK ICAgICAgIGlmICh0b3Btb3N0X2NoaWxkLT5hZnRlcl9tYWtlX2ZyYW1lKQogCWNvcHlfY2hpbGRf Z2x5cGhzIChyb290LCB0b3Btb3N0X2NoaWxkKTsKICAgICB9Ci0KLSAgdXBkYXRlX2JlZ2luIChy b290KTsKLSAgd3JpdGVfbWF0cml4IChyb290LCBpbmhpYml0X3Njcm9sbGluZywgZmFsc2UpOwot ICBtYWtlX21hdHJpeF9jdXJyZW50IChyb290KTsKLSAgdXBkYXRlX2VuZCAocm9vdCk7Ci0KICAg LyogVGhlIHNlbGVjdGVkIGZyYW1lIGRldGVybWluZXMgd2hlcmUgdGhlIGN1cnNvciBvbiB0dHlz IGdvZXMsIGV4Y2VwdAogICAgICB3aGVuIGl0IGlzIGEgZnJhbWUgdGhhdCBpcyBjb21wbGV0ZWx5 IHVucmVsYXRlZCB0byB0aGUgZnJhbWUgYmVpbmcKICAgICAgZGlzcGxheWVkLiAgVGhpcyBjYW4g aGFwcGVuIHdpdGggbXVsdGktdHR5LCB3aGVuIHRoZSBzZWxlY3RlZCBmcmFtZQogICAgICBjYW4g YmUgYSB3aW5kb3ctc3lzdGVtIGZyYW1lLiAgKi8KKyAgc3RydWN0IGZyYW1lICpjZjsKICAgaWYg KGZyYW1lX2FuY2VzdG9yX3AgKHJvb3QsIFNFTEVDVEVEX0ZSQU1FICgpKSkKLSAgICB0dHlfc2V0 X2N1cnNvciAoU0VMRUNURURfRlJBTUUgKCkpOworICAgIGNmID0gU0VMRUNURURfRlJBTUUgKCk7 CiAgIGVsc2UKLSAgICB0dHlfc2V0X2N1cnNvciAocm9vdCk7CisgICAgY2YgPSByb290OworCisg IHVwZGF0ZV9iZWdpbiAocm9vdCk7CisjaWZkZWYgV0lORE9XU05UCisgIHR0eV9zZXRfY3Vyc29y IChjZik7CisgIHczMmNvbl9kcmF3X2N1cnNvcihjZik7CisjZW5kaWYgIAorICB3cml0ZV9tYXRy aXggKHJvb3QsIGluaGliaXRfc2Nyb2xsaW5nLCBmYWxzZSk7CisgIG1ha2VfbWF0cml4X2N1cnJl bnQgKHJvb3QpOworICB1cGRhdGVfZW5kIChyb290KTsKKworICB0dHlfc2V0X2N1cnNvciAoY2Yp OwogCiAgIC8qIElmIGEgY2hpbGQgaXMgZGlzcGxheWVkLCBhbmQgdGhlIGN1cnNvciBpcyBkaXNw bGF5ZWQgaW4gYW5vdGhlcgogICAgICBmcmFtZSwgdGhlIGNoaWxkIG1pZ2h0IGxheSBhYm92ZSB0 aGUgY3Vyc29yLCBzbyB0aGF0IGl0IGFwcGVhcnMgdG8KQEAgLTQxNDEsMTUgKzQxNTQsMjMgQEAg dXBkYXRlX2ZyYW1lX3dpdGhfbWVudSAoc3RydWN0IGZyYW1lICpmLCBpbnQgcm93LCBpbnQgY29s KQogCiAgIC8qIFVwZGF0ZSB0aGUgZGlzcGxheS4gICovCiAgIHVwZGF0ZV9iZWdpbiAoZik7Cisj aWZkZWYgV0lORE9XU05UCisgIGlmIChyb3cgPj0gMCAmJiBjb2wgPj0gMCkKKyAgICBjdXJzb3Jf dG8gKGYsIHJvdywgY29sKTsKKyAgZWxzZQorICAgIHR0eV9zZXRfY3Vyc29yIChmKTsgIAorICB3 MzJjb25fZHJhd19jdXJzb3IgKGYpOworI2VuZGlmICAKICAgd3JpdGVfbWF0cml4IChmLCB0cnVl LCB0cnVlKTsKICAgbWFrZV9tYXRyaXhfY3VycmVudCAoZik7Ci0gIGNsZWFyX2Rlc2lyZWRfbWF0 cmljZXMgKGYpOwogICAvKiBST1cgYW5kIENPTCB0ZWxsIHVzIHdoZXJlIGluIHRoZSBtZW51IHRv IHBvc2l0aW9uIHRoZSBjdXJzb3IsIHNvCiAgICAgIHRoYXQgc2NyZWVuIHJlYWRlcnMga25vdyB0 aGUgYWN0aXZlIHJlZ2lvbiBvbiB0aGUgc2NyZWVuLiAgKi8KICAgaWYgKHJvdyA+PSAwICYmIGNv bCA+PSAwKQogICAgIGN1cnNvcl90byAoZiwgcm93LCBjb2wpOwogICBlbHNlCiAgICAgdHR5X3Nl dF9jdXJzb3IgKGYpOworCisgIGNsZWFyX2Rlc2lyZWRfbWF0cmljZXMgKGYpOwogICB1cGRhdGVf ZW5kIChmKTsKICAgZmx1c2hfdGVybWluYWwgKGYpOwogCkBAIC01NzQ3LDcgKzU3NjgsMzMgQEAg d3JpdGVfbWF0cml4IChzdHJ1Y3QgZnJhbWUgKmYsIGJvb2wgaW5oaWJpdF9pZF9wLCBib29sIHVw ZGF0aW5nX21lbnVfcCkKICAgICAgaXMgZG9uZSBzbyB0aGF0IG1lc3NhZ2VzIGFyZSBtYWRlIHZp c2libGUgd2hlbiBwYXVzaW5nLiAgKi8KICAgaW50IGxhc3Rfcm93ID0gZi0+ZGVzaXJlZF9tYXRy aXgtPm5yb3dzIC0gMTsKICAgaWYgKE1BVFJJWF9ST1dfRU5BQkxFRF9QIChmLT5kZXNpcmVkX21h dHJpeCwgbGFzdF9yb3cpKQotICAgIHdyaXRlX3JvdyAoZiwgbGFzdF9yb3csIHVwZGF0aW5nX21l bnVfcCk7CisgICAgeworICAgICAgLyogVGhpcyBzcGVjaWFsIGNhc2UgaGFuZGxlcyBzeXN0ZW0g Y3Vyc29yIGZsYXNoaW5nIGluL3RvIHRoZSBlY2hvCisgICAgICBhcmVhIHdoZW4gcnVubmluZyB3 aXRoIGNvbG9yIGJhY2tncm91bmRzIGluIFdpbmRvd3MgVGVybWluYWwuIFdlCisgICAgICBoYXZl IG9uZSBjdXJzb3IsIGl0IG1vdmVzIGludG8gd2hhdGV2ZXIgcm93IHdlIHdyaXRlLCBhbmQgV2lu ZG93cworICAgICAgZHJhd3MgaXQgdGhlcmUuIFdlIGRvbid0IHdhbnQgdGhlIGN1cnNvciBqdW1w aW5nIGF0IGV2ZXJ5IGVjaG8uCisgICAgICBTbyB3ZSBoaWRlIGl0IHdoZW4gaXQganVtcHMsIGFu ZCBpdCBqdXN0ICJmbGlja2VycyIgaW4tcGxhY2UuICovCisKKyNpZmRlZiBXSU5ET1dTTlQKKyAg ICAgIGludCBwcmV2X2N1cnNvcl9oaWRkZW4gPSAoRlJBTUVfVFRZIChmKSktPmN1cnNvcl9oaWRk ZW47CisgICAgICBpZiAodzMyX3VzZV92aXNpYmxlX3N5c3RlbV9jYXJldCAmJiAhY3Vyc29yX2lu X2VjaG9fYXJlYSkKKwl7CisJICB3MzJjb25fc2F2ZV9jdXJzb3IgKCk7CisJICB3MzJjb25faGlk ZV9jdXJzb3IgKCk7CisJfQorI2VuZGlmCisKKyAgICAgIHdyaXRlX3JvdyAoZiwgbGFzdF9yb3cs IHVwZGF0aW5nX21lbnVfcCk7CisKKyNpZmRlZiBXSU5ET1dTTlQKKyAgICAgIGlmICh3MzJfdXNl X3Zpc2libGVfc3lzdGVtX2NhcmV0ICYmICFjdXJzb3JfaW5fZWNob19hcmVhKQorCXsKKwkgIHcz MmNvbl9yZXN0b3JlX2N1cnNvciAoKTsKKwkgIGlmICghcHJldl9jdXJzb3JfaGlkZGVuKSB3MzJj b25fc2hvd19jdXJzb3IgKCk7CisJfQorI2VuZGlmCisgICAgfQorCiAKICAgaWYgKGZpcnN0X3Jv dyA+PSAwKQogICAgIGZvciAoaW50IGkgPSBmaXJzdF9yb3c7IGkgPCBsYXN0X3JvdzsgKytpKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggYTFlM2Y2MzEyYzYuLjZj MzExNmY3ZmNlIDEwMDY0NAotLS0gYS9zcmMvdGVybS5jCisrKyBiL3NyYy90ZXJtLmMKQEAgLTcz LDcgKzczLDYgQEAgc3RhdGljIHZvaWQgY2xlYXJfdHR5X2hvb2tzIChzdHJ1Y3QgdGVybWluYWwg KnRlcm1pbmFsKTsKIHN0YXRpYyB2b2lkIHNldF90dHlfaG9va3MgKHN0cnVjdCB0ZXJtaW5hbCAq dGVybWluYWwpOwogc3RhdGljIHZvaWQgZGlzc29jaWF0ZV9pZl9jb250cm9sbGluZ190dHkgKGlu dCBmZCk7CiBzdGF0aWMgdm9pZCBkZWxldGVfdHR5IChzdHJ1Y3QgdGVybWluYWwgKik7Ci0KICNl bmRpZiAvKiAhSEFWRV9BTkRST0lEICovCiAKIHN0YXRpYyBBVk9JRCBtYXliZV9mYXRhbCAoYm9v bCwgc3RydWN0IHRlcm1pbmFsICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLApAQCAtMzQ2 LDEwICszNDUsMTAgQEAgdHR5X2hpZGVfY3Vyc29yIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAq dHR5KQogewogICBpZiAodHR5LT5jdXJzb3JfaGlkZGVuID09IDApCiAgICAgewotICAgICAgdHR5 LT5jdXJzb3JfaGlkZGVuID0gMTsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9oaWRl X2N1cnNvciAoKTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAxOwogICAgICAg T1VUUFVUX0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX2ludmlzaWJsZSk7CiAjZW5kaWYKICAgICB9 CkBAIC0zNjMsMTAgKzM2MiwxMCBAQCB0dHlfc2hvd19jdXJzb3IgKHN0cnVjdCB0dHlfZGlzcGxh eV9pbmZvICp0dHkpCiB7CiAgIGlmICh0dHktPmN1cnNvcl9oaWRkZW4pCiAgICAgewotICAgICAg dHR5LT5jdXJzb3JfaGlkZGVuID0gMDsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9z aG93X2N1cnNvciAoKTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAwOwogICAg ICAgT1VUUFVUX0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX25vcm1hbCk7CiAgICAgICBpZiAodmlz aWJsZV9jdXJzb3IpCiAgICAgICAgIE9VVFBVVF9JRiAodHR5LCB0dHktPlRTX2N1cnNvcl92aXNp YmxlKTsKQEAgLTIyMDcsNyArMjIwNiw3IEBAIFRFUk1JTkFMIGRvZXMgbm90IHJlZmVyIHRvIGEg dGV4dCB0ZXJtaW5hbC4gICovKQogICByZXR1cm4gbWFrZV9maXhudW0gKHQgPyB0LT5kaXNwbGF5 X2luZm8udHR5LT5UTl9tYXhfY29sb3JzIDogMCk7CiB9CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQg JiYgIWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQg SEFWRV9BTkRST0lECiAKIC8qIERlY2xhcmUgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgZnVuY3Rp b24sIGFzIGluIHRoZSByZXN0IG9mIEVtYWNzLAogICAgdG8gd29yayBhcm91bmQgYW4gSFBVWCBj b21waWxlciBidWcgKD8pLiBTZWUKQEAgLTIyNDYsNyArMjI0NSw3IEBAIHR0eV9kZWZhdWx0X2Nv bG9yX2NhcGFiaWxpdGllcyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgYm9vbCBzYXZl KQogICAgTU9ERSdzIHZhbHVlIGlzIGdlbmVyYWxseSB0aGUgbnVtYmVyIG9mIGNvbG9ycyB3aGlj aCB3ZSB3YW50IHRvCiAgICBzdXBwb3J0OyB6ZXJvIG1lYW5zIHNldCB1cCBmb3IgdGhlIGRlZmF1 bHQgY2FwYWJpbGl0aWVzLCB0aGUgb25lcwogICAgd2Ugc2F3IGF0IGluaXRfdHR5IHRpbWU7IC0x IG1lYW5zIHR1cm4gb2ZmIGNvbG9yIHN1cHBvcnQuICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHR0 eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2RlKQog ewogICAvKiBDYW5vbmljYWxpemUgYWxsIG5lZ2F0aXZlIHZhbHVlcyBvZiBNT0RFLiAgKi8KQEAg LTIyNjQsMTggKzIyNjMsNDIgQEAgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5 X2luZm8gKnR0eSwgaW50IG1vZGUpCiAgICAgICBkZWZhdWx0OgogCXR0eV9kZWZhdWx0X2NvbG9y X2NhcGFiaWxpdGllcyAodHR5LCAwKTsKIAlicmVhazsKLSAgICAgIGNhc2UgODoJLyogOCBzdGFu ZGFyZCBBTlNJIGNvbG9ycyAqLwotCXR0eS0+VFNfb3JpZ19wYWlyID0gIlwwMzNbMG0iOworICAg ICAgY2FzZSA4OiAvKiA4IHN0YW5kYXJkIEFOU0kgY29sb3JzICovCisJdHR5LT5UU19vcmlnX3Bh aXIgPSAiXHgxYlswbSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlZG0iOwor CXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0JWRtIjsKICNpZmRlZiBURVJNSU5GTwot CXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXDAzM1szJXAxJWRtIjsKLQl0dHktPlRTX3NldF9i YWNrZ3JvdW5kID0gIlwwMzNbNCVwMSVkbSI7Ci0jZWxzZQotCXR0eS0+VFNfc2V0X2ZvcmVncm91 bmQgPSAiXDAzM1szJWRtIjsKLQl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNbNCVkbSI7 CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlcDElZG0iOworCXR0eS0+VFNfc2V0 X2JhY2tncm91bmQgPSAiXHgxYls0JXAxJWRtIjsKKyNlbmRpZgorI2lmZGVmIFdJTkRPV1NOVAor CXR0eS0+VFNfb3JpZ19wYWlyID0gIlx4MWJbMzltXHgxYls0OW0iOworCXR0eS0+VFNfc2V0X2Zv cmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJb JWx1bSI7CiAjZW5kaWYKIAl0dHktPlROX21heF9jb2xvcnMgPSA4OwogCXR0eS0+VE5fbm9fY29s b3JfdmlkZW8gPSAwOwogCWJyZWFrOworI2lmZGVmIFdJTkRPV1NOVAorICAgICAgY2FzZSAxNjoK Kwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UU19zZXRfYmFj a2dyb3VuZCA9ICJceDFiWyVsdW0iOworCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2OworCXR0eS0+ VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAyNTY6CisJdHR5LT5U Tl9tYXhfY29sb3JzID0gMjU2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlszODs1 OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODs1OyVsdW0iOworCXR0 eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAxNjc3NzIxNjoK Kwl0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5k ID0gIlx4MWJbMzg7MjslbHU7JWx1OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAi XHgxYls0ODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJ YnJlYWs7CisjZW5kaWYKICAgICB9CiB9CiAKQEAgLTIzMDcsMTIgKzIzMzAsMTYgQEAgc2V0X3R0 eV9jb2xvcl9tb2RlIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBzdHJ1Y3QgZnJhbWUg KmYpCiAgICAgewogICAgICAgdHR5LT5wcmV2aW91c19jb2xvcl9tb2RlID0gbW9kZTsKICAgICAg IHR0eV9zZXR1cF9jb2xvcnMgKHR0eSAsIG1vZGUpOwotICAgICAgLyogIFRoaXMgcmVjb21wdXRl cyBhbGwgdGhlIGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3IgZGVmaW5pdGlvbnMuICAqLworICAg ICAgLyogIFRoaXMgcmVjb21wdXRlcyBhbGwgdGhlIGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3Ig ZGVmaW5pdGlvbnMuICovCisjaWZkZWYgV0lORE9XU05UCisgICAgICBzYWZlX2NhbGxuIChRdzMy Y29uX3NldF91cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbHNlCiAgICAgICBzYWZlX2NhbGxu IChRdHR5X3NldF91cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbmRpZgogICAgIH0KIH0KIAot I2VuZGlmIC8qICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAm JiAhSEFWRV9BTkRST0lEICovCiAKIGNoYXIgKgogdHR5X3R5cGVfbmFtZSAoTGlzcF9PYmplY3Qg dGVybWluYWwpCkBAIC00NTg2LDggKzQ2MTMsOCBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21t YW5kICdURVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogCQkgfHwgKChiZyA9IGdl dGVudiAoIkNPTE9SVEVSTSIpKSAhPSBOVUxMCiAJCSAgICAgJiYgc3RyY2FzZWNtcCAoYmcsICJ0 cnVlY29sb3IiKSA9PSAwKSkKIAkgIHsKLQkgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJc MDMzWyU/JXAxJXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2fSUv JXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKLQkgICAgdHR5LT5UU19zZXRfYmFja2dyb3Vu ZCA9ICJcMDMzWyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7 MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19zZXRfZm9y ZWdyb3VuZCA9ICJceDFiWyU/JXAxJXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVk OyVwMSV7MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19z ZXRfYmFja2dyb3VuZCA9ICJceDFiWyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUz Nn0lLyVkOyVwMSV7MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKIAkgICAgdHR5 LT5UTl9tYXhfY29sb3JzID0gMTY3NzcyMTY7CiAJICB9CiAgICAgICB9CkBAIC00NjQxLDYgKzQ2 NjgsMjcgQEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBU RVJNJyAoQy1zaGVsbDpcblwKIAogICAgIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHRlcm1pbmFs LCAmd2lkdGgsICZoZWlnaHQpOwogCisgICAgLyogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93 cyAoMTArKSBUZXJtaW5hbCBhbmQgQ29uc29sZSBIb3N0CisgICAgICAgaHR0cHM6Ly9sZWFybi5t aWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWlu YWwtc2VxdWVuY2VzICovCisgICAgdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisgICAgdHR5 LT5UTl9tYXhfY29sb3JzID0gMTY3NzcyMTY7CisgICAgdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgx YlszOW1ceDFiWzQ5bSI7CisgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzI7 JWx1OyVsdTslbHVtIjsKKyAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbNDg7Mjsl bHU7JWx1OyVsdW0iOworCisgICAgLyogU2F2ZSBkZWZhdWx0IGNvbG9yIGNhcGFiaWxpdGllcyAq LworICAgIHR0eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxpdGllcyAodHR5LCAxKTsKKworICAgIHR0 eS0+VFNfZW50ZXJfYm9sZF9tb2RlID0gIlx4MWJbMW0iOworICAgIHR0eS0+VFNfZW50ZXJfaXRh bGljX21vZGUgPSAiXHgxYlszbSI7CisgICAgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9t b2RlID0gIlx4MWJbOW0iOworICAgIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUgPSAiXHgx Yls0bSI7CisgICAgdHR5LT5UU19leGl0X3VuZGVybGluZV9tb2RlID0gIlx4MWJbMjRtIjsKKyAg ICB0dHktPlRTX2VudGVyX3JldmVyc2VfbW9kZSA9ICJceDFiWzdtIjsKKyAgICB0dHktPlRTX2V4 aXRfYXR0cmlidXRlX21vZGUgPSAiXHgxYlswbSI7CisgICAgdHR5LT5UU19jdXJzb3JfaW52aXNp YmxlID0gIlx4MWJbPzI1bCI7CisgICAgdHR5LT5UU19jdXJzb3JfdmlzaWJsZSA9ICJceDFiWz8y NWgiOworCiAgICAgRnJhbWVSb3dzICh0dHkpID0gaGVpZ2h0OwogICAgIEZyYW1lQ29scyAodHR5 KSA9IHdpZHRoOwogICAgIHR0eS0+c3BlY2lmaWVkX3dpbmRvdyA9IGhlaWdodDsKQEAgLTQ2ODYs NyArNDczNCw2IEBAIHVzZSB0aGUgQm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBv cnQgVEVSTScgKEMtc2hlbGw6XG5cCiAgICAgIGRvbid0IHRoaW5rIHdlJ3JlIGxvc2luZyBhbnl0 aGluZyBieSB0dXJuaW5nIGl0IG9mZi4gICovCiAgIHR0eS0+bGluZV9pbnNfZGVsX29rID0gMDsK IAotICB0dHktPlROX21heF9jb2xvcnMgPSAxNjsgIC8qIE11c3QgYmUgbm9uLXplcm8gZm9yIHR0 eS1kaXNwbGF5LWNvbG9yLXAuICAqLwogI2VuZGlmCS8qIERPU19OVCAqLwogCiAjaWZkZWYgSEFW RV9HUE0KQEAgLTUyMDIsMTEgKzUyNDksMTEgQEAgbm9uLW5pbCB0byBlbmFibGUgdGhpcyBvcHRp bWl6YXRpb24uICAqLyk7CiAgIGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfd2lkdGgpOwog ICBkZWZzdWJyICgmU3R0eV9kaXNwbGF5X3BpeGVsX2hlaWdodCk7CiAKLSNpZiAhZGVmaW5lZCBE T1NfTlQgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRl ZmluZWQgSEFWRV9BTkRST0lECiAgIGRlZmF1bHRfb3JpZ19wYWlyID0gTlVMTDsKICAgZGVmYXVs dF9zZXRfZm9yZWdyb3VuZCA9IE5VTEw7CiAgIGRlZmF1bHRfc2V0X2JhY2tncm91bmQgPSBOVUxM OwotI2VuZGlmIC8qICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RP UyAmJiAhSEFWRV9BTkRST0lEICovCiAKICNpZm5kZWYgSEFWRV9BTkRST0lECiAgIGVuY29kZV90 ZXJtaW5hbF9zcmMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm1jaGFyLmggYi9zcmMvdGVy bWNoYXIuaAppbmRleCBlY2UzYTY3NmM2ZS4uMTNhZDJmMGE3MmEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXJtY2hhci5oCisrKyBiL3NyYy90ZXJtY2hhci5oCkBAIC0yNDksNCArMjQ5LDYgQEAgc3RydWN0 IGlucHV0X2V2ZW50OwogZXh0ZXJuIExpc3BfT2JqZWN0IHR0eV9oYW5kbGVfdGFiX2Jhcl9jbGlj ayAoc3RydWN0IGZyYW1lICosIGludCwgaW50LCBib29sLAogCQkJCQkgICAgIHN0cnVjdCBpbnB1 dF9ldmVudCAqKTsKIAorZXh0ZXJuIHZvaWQgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpOworCiAjZW5kaWYgLyogRU1BQ1NfVEVSTUNIQVJf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5k ZXggMWJjYTBjYWRmZjkuLjk3NjQwZTc1YTk2IDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5j CisrKyBiL3NyYy93MzJjb25zb2xlLmMKQEAgLTE5LDEyICsxOSw2MiBAQCBhbG9uZyB3aXRoIEdO VSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwogLyoKICAgIFRpbSBGbGVlaGFydCAoYXBvbGxvQG9ubGluZS5jb20pCQkxLTE3LTkyCiAgICBH ZW9mZiBWb2Vsa2VyICh2b2Vsa2VyQGNzLndhc2hpbmd0b24uZWR1KQk5LTEyLTkzCisgICBFd2Fu IFRvd25zaGVuZCAoZXdhbkBldG93bi5kZXYpICAgICAgICAgICAgICAyMDI1LTA4CisKKyAgIGMu IH4gMjAyNToKKyAgICogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93cyAoMTArKSBUZXJtaW5h bAorICAgKiBNaWNyb3NvZnQgbW92aW5nIGF3YXkgZnJvbSBpZGlvc3luY3JhdGljIEFQSSwgdG93 YXJkIEFTQ0lJIGNvbnRyb2xzCisKKyAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11 cy93aW5kb3dzL2NvbnNvbGUvY29uc29sZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworCisg ICBGb3IgcmVmZXJlbmNlIChtb3JlIGRlZmluZWQgYXQgbGluayBhYm92ZSk6CisKKyAgICogImNs ZWFyIiA6PSBvdmVyd3JpdGUgd2l0aCBzcGFjZSBjaGFyYWN0ZXIKKworICAgXHgxYlswSiA9PiBj bGVhciBjdXJzb3IgKGluY2x1c2l2ZSkgdG8gZW5kIG9mIHNjcmVlbgorICAgXHgxYlsxSiA9PiBj bGVhciBiZWdpbm5pbmcgb2Ygc2NyZWVuIHRvIGN1cnNvciAoaW5jbHVzaXZlKQorICAgXHgxYlsy SiA9PiBjbGVhciBlbnRpcmUgc2NyZWVuIChleGNsdWRpbmcgc2Nyb2xsYmFjayBhcmVhKQorICAg XHgxYlszSiA9PiBjbGVhciBzY3JvbGxiYWNrIGFyZWEKKworICAgXHgxYlswSyA9PiBjbGVhciBj dXJzb3IgKGluY2x1c2l2ZSkgdG8gZW5kIG9mIGxpbmUKKyAgIFx4MWJbMUsgPT4gY2xlYXIgYmVn aW5uaW5nIG9mIGxpbmUgdG8gY3Vyc29yIChpbmNsdXNpdmUpCisgICBceDFiWzJLID0+IGNsZWFy IGVudGlyZSBsaW5lCisKKyAgIFx4MWJbPG4+QCA9PiBpbnNlcnQgPG4+IHNwYWNlcyBhdCBjdXJz b3IsIHNoaWZ0IGN1cnJlbnQgdGV4dCByaWdodAorICAgXHgxYls8bj5QID0+IGRlbGV0ZSA8bj4g Y2hhcnMgIGF0IGN1cnNvciwgYWRkaW5nIHNwYWNlcyBmcm9tIHJpZ2h0CisKKyAgIFx4MWJbNyAg ICAgICAgPT4gc2F2ZSBjdXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbOCAgICAgICAgPT4gcmVzdG9y ZSBzYXZlZCBjdXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbPHk+Ozx4PkggPT4gbW92ZSBjdXJzb3Ig dG8gcm93IDx5PiwgY29sIDx4PiAoMS1pbmRleGVkKQorICAgXHgxYls/MjVsICAgICA9PiBoaWRl IGN1cnNvcgorICAgXHgxYls/MjVoICAgICA9PiBzaG93IGN1cnNvcgorCisgICBceDFiWzBtID0+ IGFsbCBhdHRyaWJ1dGVzIG9mZgorICAgXHgxYlsxbSA9PiBib2xkCisgICBceDFiWzNtID0+IGl0 YWxpYworICAgXHgxYls0bSA9PiB1bmRlcmxpbmUKKyAgIFx4MWJbN20gPT4gaW52ZXJzZSB2aWRl bworICAgXHgxYls5bSA9PiBzdHJpa2UtdGhyb3VnaAorCisgICAqIDE2IGJhc2UgY29sb3JzIGRl ZmluZWQgaW4gdzMyY29uc29sZS5lbAorICAgXHgxYlszPGk+ICAoPGk+IGluIDAuLjcpID0+IGZv cmVncm91bmQgPSAxNmNvbG9yc1tpXQorICAgXHgxYls0PGk+ICAoPGk+IGluIDAuLjcpID0+IGJh Y2tncm91bmQgPSAxNmNvbG9yc1tpXQorICAgXHgxYls5PGk+ICAoPGk+IGluIDAuLjcpID0+IGZv cmVncm91bmQgPSAxNmNvbG9yc1tpICsgOF0KKyAgIFx4MWJbMTA8aT4gKDxpPiBpbiAwLi43KSA9 PiBiYWNrZ3JvdW5kID0gMTZjb2xvcnNbaSArIDhdCisKKyAgICogMjU2IGNvbG9ycyBmb2xsb3cg eHRlcm0KKyAgIFx4MWJbMzg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGZvcmVncm91bmQgPSAyNTZj b2xvcnNbaV0KKyAgIFx4MWJbNDg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGJhY2tncm91bmQgPSAy NTZjb2xvcnNbaV0KKworICAgKiAyNC1iaXQgY292ZXJzIGFsbCBuYW1lZCBjb2xvcnMgKHNlZSBj b2xvci1uYW1lLXJnYi1hbGlzdCkKKyAgIFx4MWJbMzg7Mjs8cj47PGc+OzxiPiA9PiBmb3JlZ3Jv dW5kID0gKDxyPiwgPGc+LCA8Yj4pCisgICBceDFiWzQ4OzI7PHI+OzxnPjs8Yj4gPT4gYmFja2dy b3VuZCA9ICg8cj4sIDxnPiwgPGI+KQogKi8KIAogCiAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0KICNp bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHdpbmRvd3Mu aD4KIAogI2luY2x1ZGUgImxpc3AuaCIKQEAgLTQwLDcgKzkwLDYgQEAgYWxvbmcgd2l0aCBHTlUg RW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K ICNpbmNsdWRlICJ3MzIuaCIJLyogZm9yIHN5bXNfb2ZfbnR0ZXJtICovCiAjZW5kaWYKIAotc3Rh dGljIHZvaWQgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByb3csIGlu dCBjb2wpOwogc3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX3RvX2VuZCAoc3RydWN0IGZyYW1lICpm KTsKIHN0YXRpYyB2b2lkIHczMmNvbl9jbGVhcl9mcmFtZSAoc3RydWN0IGZyYW1lICpmKTsKIHN0 YXRpYyB2b2lkIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoc3RydWN0IGZyYW1lICpmLCBpbnQp OwpAQCAtNTEsMTMgKzEwMCwzMCBAQCBzdGF0aWMgdm9pZCB3MzJjb25fZGVsZXRlX2dseXBocyAo c3RydWN0IGZyYW1lICpmLCBpbnQgbik7CiBzdGF0aWMgdm9pZCB3MzJjb25fcmVzZXRfdGVybWlu YWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fc2V0X3Rl cm1pbmFsX21vZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpOwogc3RhdGljIHZvaWQgdzMyY29uX3Vw ZGF0ZV9iZWdpbiAoc3RydWN0IGZyYW1lICogZik7Ci1zdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRl X2VuZCAoc3RydWN0IGZyYW1lICogZik7CitzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2VuZCAo c3RydWN0IGZyYW1lICpmKTsKK3N0YXRpYyBpbnQgIHczMmNvbl93cml0ZV92dF9zZXEgKGNoYXIg Kik7CiBzdGF0aWMgV09SRCB3MzJfZmFjZV9hdHRyaWJ1dGVzIChzdHJ1Y3QgZnJhbWUgKmYsIGlu dCBmYWNlX2lkKTsKK3N0YXRpYyB2b2lkIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICosIGlu dCBmYWNlX2lkKTsKK3N0YXRpYyB2b2lkIHR1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqLCBp bnQgZmFjZV9pZCk7CitzdGF0aWMgdm9pZCB3MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IHJvdywgaW50IGNvbCk7Cit2b2lkIHczMmNvbl9zYXZlX2N1cnNvciAodm9pZCk7 Cit2b2lkIHczMmNvbl9yZXN0b3JlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9zaG93X2N1 cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9oaWRlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNv bl9kcmF3X2N1cnNvciAoc3RydWN0IGZyYW1lICpmKTsKKworc3RhdGljIHVuc2lnbmVkIGxvbmcg Z2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KTsKKworZXh0ZXJuIHZvaWQgdHR5X3NldHVw X2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpOwogCi1zdGF0 aWMgQ09PUkQJY3Vyc29yX2Nvb3JkczsKLXN0YXRpYyBIQU5ETEUJcHJldl9zY3JlZW4sIGN1cl9z Y3JlZW47Ci1zdGF0aWMgV09SRAljaGFyX2F0dHJfbm9ybWFsOwotc3RhdGljIERXT1JECXByZXZf Y29uc29sZV9tb2RlOworc3RhdGljIENPT1JEICAgIGN1cnNvcl9jb29yZHM7CitzdGF0aWMgQ09P UkQgICAgc2F2ZWRfY29vcmRzOworc3RhdGljIEhBTkRMRSAgIHByZXZfc2NyZWVuLCBjdXJfc2Ny ZWVuOworc3RhdGljIFdPUkQgICAgIGNoYXJfYXR0cl9ub3JtYWw7CitzdGF0aWMgV09SRCAgICAg Ymdfbm9ybWFsOworc3RhdGljIFdPUkQgICAgIGZnX25vcm1hbDsKK3N0YXRpYyBEV09SRCAgICBw cmV2X2NvbnNvbGVfbW9kZTsKK3N0YXRpYyBpbnQgICAgICB1c2luZ19zeXN0ZW1fY2FyZXQ7CiAK IHN0YXRpYyBDT05TT0xFX0NVUlNPUl9JTkZPIGNvbnNvbGVfY3Vyc29yX2luZm87CiAjaWZuZGVm IFVTRV9TRVBBUkFURV9TQ1JFRU4KQEAgLTY4LDEzICsxMzQsMTQgQEAgZXh0ZXJuIEhBTkRMRSAg a2V5Ym9hcmRfaGFuZGxlOwogSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBpbnQgdzMyX2NvbnNv bGVfdW5pY29kZV9pbnB1dDsKIAotCi0vKiBTZXR0aW5nIHRoaXMgYXMgdGhlIGN0cmwgaGFuZGxl ciBwcmV2ZW50cyBlbWFjcyBmcm9tIGJlaW5nIGtpbGxlZCB3aGVuCi0gICBzb21lb25lIGhpdHMg XkMgaW4gYSAnc3VzcGVuZGVkJyBzZXNzaW9uIChjaGlsZCBzaGVsbCkuCi0gICBBbHNvIGlnbm9y ZSBDdHJsLUJyZWFrIHNpZ25hbHMuICAqLworZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZv ICpjdXJyZW50X3R0eTsKK3N0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5V TEw7CiAKIEJPT0wgY3RybF9jX2hhbmRsZXIgKHVuc2lnbmVkIGxvbmcpOwogCisvKiBTZXR0aW5n IHRoaXMgYXMgdGhlIGN0cmwgaGFuZGxlciBwcmV2ZW50cyBlbWFjcyBmcm9tIGJlaW5nIGtpbGxl ZAorICAgd2hlbiBzb21lb25lIGhpdHMgXkMgaW4gYSAnc3VzcGVuZGVkJyBzZXNzaW9uIChjaGls ZCBzaGVsbCkuIEFsc28KKyAgIGlnbm9yZSBDdHJsLUJyZWFrIHNpZ25hbHMuICAqLwogQk9PTAog Y3RybF9jX2hhbmRsZXIgKHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKQEAgLTgzLDYgKzE1MCw1NSBA QCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogCSAgJiYgKHR5cGUgPT0gQ1RS TF9DX0VWRU5UIHx8IHR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkpOwogfQogCisjZGVmaW5lIFNT UFJJTlRGKGJ1ZiwgaSwgc3osIGZtdCwgLi4uKQkJCQkJXAorICBkbyB7CQkJCQkJCQkJXAorICAg IGlmIChmbXQpCQkJCQkJCQlcCisgICAgICAqaSArPSBzbnByaW50ZiAoYnVmICsgKmksIHN6IC0g KmksIGZtdCwgX19WQV9BUkdTX18pOwkJXAorICB9IHdoaWxlICgwKQorCisjZGVmaW5lIERFRkFV TFRQKHApCQkJCQkJCVwKKyAgKHAgPT0gRkFDRV9UVFlfREVGQVVMVF9DT0xPUgkJCQkJCVwKKyAg IHx8IHAgPT0gRkFDRV9UVFlfREVGQVVMVF9GR19DT0xPUgkJCQkJXAorICAgfHwgcCA9PSBGQUNF X1RUWV9ERUZBVUxUX0JHX0NPTE9SKQorCisjZGVmaW5lIFNFUU1BWCAyNTYgLyogQXJiaXRyYXJ5 IHVwcGVyIGxpbWl0IG9uIFZUIHNlcXVlbmNlIHNpemUgKi8KKworLyogRm9yIGRlYnVnZ2luZyAq Lworc3RhdGljIHZvaWQKK3Z0X3NlcV9lcnJvciAoY2hhciAqc2VxKQoreworICBpbnQgaSA9IDA7 IGludCBqID0gMDsKKyAgaWYgKHNlcSkKKyAgICBpZiAoc2VxWzBdID09ICdcMCcpIHNlcSA9ICI8 ZW1wdHk+IjsKKyAgICBlbHNlCisgICAgICB3aGlsZSAoaSA8IFNFUU1BWCkKKwl7CisJICBpZiAo c2VxW2ldID09ICdceDFiJykgc2VxW2ldID0gJyMnOworCSAgaWYgKHNlcVtpXSA9PSAgICAnJScp IHNlcVtpXSA9ICdfJzsKKwkgIGlmIChzZXFbaV0gPT0gICAnXDAnKSB7IGorKzsgYnJlYWs7IH0K KwkgIGkrKzsKKwl9CisgIGVsc2Ugc2VxID0gIjxudWxsPiI7CisgIHByaW50ZiAoIkZhaWxlZCB0 byB3cml0ZSBWVCBzZXF1ZW5jZTogJXNcbiIsIGogPyBzZXEgOiAiPG92ZXJmbG93PiIpOworICBw cmludGYgKCJMYXN0RXJyb3I6IDB4JWR4XG4iLCBHZXRMYXN0RXJyb3IgKCkpOworICBmZmx1c2gg KHN0ZG91dCk7CisgIGV4aXQgKDEpOworfQorCisvKiBXcml0ZXMgKGR5bmFtaWMpIHZpcnR1YWwg dGVybWluYWwgQVNDSUkgc2VxdWVuY2VzIHRvIHNjcmVlbiAqLworc3RhdGljIGludAordzMyY29u X3dyaXRlX3Z0X3NlcSAoY2hhciAqc2VxKQoreworICBjaGFyIGJ1ZltTRVFNQVhdOworICBEV09S RCBuID0gMCwgayA9IDA7CisgIFNTUFJJTlRGIChidWYsICZuLCBTRVFNQVgsIHNlcSwgTlVMTCk7 CisgIGlmIChuKSBXcml0ZUNvbnNvbGVBIChjdXJfc2NyZWVuLCAoTFBDU1RSKSBidWYsIG4sICZr LCBOVUxMKTsKKyAgcmV0dXJuIGs7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEN1cnNvciBDb250cm9sCisqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogTW92 ZSB0aGUgY3Vyc29yIHRvIChST1csIENPTCkgb24gRlJBTUUuICAqLwogc3RhdGljIHZvaWQKQEAg LTkwLDU0ICsyMDYsMTgyIEBAIHczMmNvbl9tb3ZlX2N1cnNvciAoc3RydWN0IGZyYW1lICpmLCBp bnQgcm93LCBpbnQgY29sKQogewogICBjdXJzb3JfY29vcmRzLlggPSBjb2w7CiAgIGN1cnNvcl9j b29yZHMuWSA9IHJvdzsKLQotICAvKiBUT0RPOiBmb3IgbXVsdGktdHR5IHN1cHBvcnQsIGN1cl9z Y3JlZW4gc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYQotICAgICByZWZlcmVuY2UgdG8gdGhlIHRl cm1pbmFsIGZvciB0aGlzIGZyYW1lLiAgKi8KLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChj dXJfc2NyZWVuLCBjdXJzb3JfY29vcmRzKTsKKyAgaWYgKHczMl91c2VfdmlydHVhbF90ZXJtaW5h bF9zZXF1ZW5jZXMpCisgICAgeworICAgICAgY2hhciBzZXFbMzJdOworICAgICAgc3ByaW50Zihz ZXEsICJceDFiWyVkOyVkSCIsIHJvdyArIDEsIGNvbCArIDEpOyAvKiAxLWluZGV4ZWQgKi8KKyAg ICAgIHczMmNvbl93cml0ZV92dF9zZXEoc2VxKTsKKyAgICB9CisgIGVsc2UKKyAgeworICAgIC8q IFRPRE86IGZvciBtdWx0aS10dHkgc3VwcG9ydCwgY3VyX3NjcmVlbiBzaG91bGQgYmUgcmVwbGFj ZWQgd2l0aCBhCisgICAgICAgcmVmZXJlbmNlIHRvIHRoZSB0ZXJtaW5hbCBmb3IgdGhpcyBmcmFt ZS4gICovCisgICAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChjdXJfc2NyZWVuLCBjdXJzb3Jf Y29vcmRzKTsKKyAgfQogfQogCiB2b2lkCiB3MzJjb25faGlkZV9jdXJzb3IgKHZvaWQpCiB7Ci0g IEdldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7 Ci0gIGNvbnNvbGVfY3Vyc29yX2luZm8uYlZpc2libGUgPSBGQUxTRTsKLSAgU2V0Q29uc29sZUN1 cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKKyAgaWYgKHVzaW5n X3N5c3RlbV9jYXJldCkKKyAgICB7CisgICAgICBHZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3Nj cmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOworICAgICAgY29uc29sZV9jdXJzb3JfaW5mby5i VmlzaWJsZSA9IEZBTFNFOworCisgICAgICBpZiAoIWN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVu KQorCWlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorCSAgdzMyY29uX3dy aXRlX3Z0X3NlcSAoKGNoYXIgKikgY3VycmVudF90dHktPlRTX2N1cnNvcl9pbnZpc2libGUpOwor CWVsc2UKKwkgIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJz b3JfaW5mbyk7CisgICAgfQorICBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiB9CiAK IHZvaWQKIHczMmNvbl9zaG93X2N1cnNvciAodm9pZCkKIHsKLSAgR2V0Q29uc29sZUN1cnNvcklu Zm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKLSAgY29uc29sZV9jdXJzb3Jf aW5mby5iVmlzaWJsZSA9IFRSVUU7Ci0gIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVu LCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgIGlmICh1c2luZ19zeXN0ZW1fY2FyZXQpCisgICAg eworICAgICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNv cl9pbmZvKTsKKyAgICAgIGNvbnNvbGVfY3Vyc29yX2luZm8uYlZpc2libGUgPSBUUlVFOworCisg ICAgICBpZiAoY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4pCisJaWYgKHczMl91c2VfdmlydHVh bF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisJICB3MzJjb25fd3JpdGVfdnRfc2VxICgoY2hhciAqKSBj dXJyZW50X3R0eS0+VFNfY3Vyc29yX3Zpc2libGUpOworCWVsc2UKKwkgIFNldENvbnNvbGVDdXJz b3JJbmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgICAgfQorICBjdXJy ZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDA7Cit9CisKK3ZvaWQKK3czMmNvbl9zYXZlX2N1cnNv ciAodm9pZCkKK3sKKyAgc2F2ZWRfY29vcmRzID0gY3Vyc29yX2Nvb3JkczsKKyAgaWYgKHczMl91 c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisgICAgdzMyY29uX3dyaXRlX3Z0X3NlcSAo KGNoYXIgKikgIlx4MWJbNyIpOworfQorCit2b2lkCit3MzJjb25fcmVzdG9yZV9jdXJzb3IgKHZv aWQpCit7CisgIGN1cnNvcl9jb29yZHMgPSBzYXZlZF9jb29yZHM7CisgIGlmICh3MzJfdXNlX3Zp cnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorICAgIHczMmNvbl93cml0ZV92dF9zZXEgKChjaGFy ICopICJceDFiWzgiKTsKKyAgZWxzZQorICAgIFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoY3Vy X3NjcmVlbiwgY3Vyc29yX2Nvb3Jkcyk7CiB9CiAKKy8qIFRoaXMgZnVuY3Rpb24gb25seSB0byBi ZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHdyaXRlX21hdHJpeCAqLworc3RhdGljIHVuc2ln bmVkIGxvbmcgc2F2ZWRfY3Vyc29yX2JnID0gLTk7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBzYXZl ZF9jdXJzb3JfZmcgPSAtOTsKK3N0YXRpYyBDT09SRCBwcmV2X2N1cnNvcl9wb3MgPSB7IC0xLCAt MSB9Oworc3RhdGljIGludCBzYXZlZF9mYWNlX2lkID0gLTE7Cit2b2lkCit3MzJjb25fZHJhd19j dXJzb3IgKHN0cnVjdCBmcmFtZSAqZikKK3sKKyAgaWYgKCF1c2luZ19zeXN0ZW1fY2FyZXQpCisg ICAgeworICAgICAgaW50IHggPSBjdXJzb3JfY29vcmRzLlgsIHkgPSBjdXJzb3JfY29vcmRzLlk7 CisgICAgICBzdHJ1Y3QgZ2x5cGhfcm93ICpvcm93ID0gTUFUUklYX1JPVyAoZi0+Y3VycmVudF9t YXRyaXgsIHkpOworICAgICAgc3RydWN0IGdseXBoX3JvdyAqbnJvdyA9IE1BVFJJWF9ST1cgKGYt PmRlc2lyZWRfbWF0cml4LCB5KTsKKyAgICAgIGludCBnbHlwaF9mYWNlX2lkID0gbnJvdy0+Z2x5 cGhzW1RFWFRfQVJFQV1beF0uZmFjZV9pZDsKKyAgICAgIGlmIChnbHlwaF9mYWNlX2lkICE9IENV UlNPUl9GQUNFX0lEKQorCXsKKwkgIHN0cnVjdCBmYWNlICpnbHlwaF9mYWNlID0gRkFDRV9GUk9N X0lEIChmLCBnbHlwaF9mYWNlX2lkKTsKKwkgIHN0cnVjdCBmYWNlICpjdXJzb3JfZmFjZSA9IEZB Q0VfRlJPTV9JRCAoZiwgQ1VSU09SX0ZBQ0VfSUQpOworCisJICAvKiBjbGVhbiB1cCBmcm9tIGxh c3QgcnVuIGlmIGZhY2VzIGNvbmZsaWN0ZWQgKi8KKwkgIGlmIChzYXZlZF9jdXJzb3JfYmcgPiAt OSAmJiBzYXZlZF9jdXJzb3JfZmcgPiAtOSkKKwkgICAgeworCSAgICAgIGN1cnNvcl9mYWNlLT5i YWNrZ3JvdW5kID0gc2F2ZWRfY3Vyc29yX2JnOworCSAgICAgIGN1cnNvcl9mYWNlLT5mb3JlZ3Jv dW5kID0gc2F2ZWRfY3Vyc29yX2ZnOworCSAgICAgIHNhdmVkX2N1cnNvcl9iZyA9IC05OworCSAg ICAgIHNhdmVkX2N1cnNvcl9mZyA9IC05OworCSAgICB9CisJICAvKiBkcmF3IGN1cnNvciAoaS5l LiBtYW5pcHVsYXRlIGZhY2VzKSAqLworCSAgaWYgKGN1cnNvcl9mYWNlLT5iYWNrZ3JvdW5kID09 IGdseXBoX2ZhY2UtPmJhY2tncm91bmQpCisJICAgIHsKKwkgICAgICBzYXZlZF9jdXJzb3JfYmcg PSBjdXJzb3JfZmFjZS0+YmFja2dyb3VuZDsKKwkgICAgICBzYXZlZF9jdXJzb3JfZmcgPSBjdXJz b3JfZmFjZS0+Zm9yZWdyb3VuZDsKKwkgICAgICBjdXJzb3JfZmFjZS0+YmFja2dyb3VuZCA9IGds eXBoX2ZhY2UtPmZvcmVncm91bmQ7CisJICAgICAgY3Vyc29yX2ZhY2UtPmZvcmVncm91bmQgPSBn bHlwaF9mYWNlLT5iYWNrZ3JvdW5kOworCSAgICB9CisJICBpZiAoIShGUkFNRV9UVFkgKGYpLT5j dXJzb3JfaGlkZGVuKSkKKwkgICAgeworCSAgICAgIG5yb3ctPmdseXBoc1tURVhUX0FSRUFdW3hd LmZhY2VfaWQgPSBDVVJTT1JfRkFDRV9JRDsKKworCSAgICAgIC8qIGZvcmNlIGEgcmV3cml0ZSBv ZiBuZXcgY3Vyc29yIHJvdyAoaW5jbHVkaW5nIHNwYWNlcykgKi8KKwkgICAgICBGUkFNRV9UVFkg KGYpLT5tdXN0X3dyaXRlX3NwYWNlcyA9IDE7CisJICAgICAgb3Jvdy0+ZW5hYmxlZF9wID0gMDsK KwkgICAgICBucm93LT5lbmFibGVkX3AgPSAxOworCSAgICB9CisJICAvKiBmb3JjZSBhIHJld3Jp dGUgb2Ygb2xkIGN1cnNvciByb3cgKGlmIG5lZWRlZCkgKi8KKwkgIGludCBweCA9IHByZXZfY3Vy c29yX3Bvcy5YLCBweSA9IHByZXZfY3Vyc29yX3Bvcy5ZOworCSAgaWYgKHNhdmVkX2ZhY2VfaWQg PiAtMSAmJiAocHggIT0geCB8fCBweSAhPSB5KSkKKwkgICAgeworCSAgICAgIHN0cnVjdCBnbHlw aF9yb3cgKnBvcm93ID0gTUFUUklYX1JPVyAoZi0+Y3VycmVudF9tYXRyaXgsIHB5KTsKKwkgICAg ICBzdHJ1Y3QgZ2x5cGhfcm93ICpwbnJvdyA9IE1BVFJJWF9ST1cgKGYtPmRlc2lyZWRfbWF0cml4 LCBweSk7CisJICAgICAgaWYgKHBucm93LT5nbHlwaHNbVEVYVF9BUkVBXVtweF0uZmFjZV9pZCA9 PSBDVVJTT1JfRkFDRV9JRCkKKwkJcG5yb3ctPmdseXBoc1tURVhUX0FSRUFdW3B4XS5mYWNlX2lk ID0gc2F2ZWRfZmFjZV9pZDsKKwkgICAgICBwb3Jvdy0+ZW5hYmxlZF9wID0gMDsKKwkgICAgICBw bnJvdy0+ZW5hYmxlZF9wID0gMTsKKwkgICAgfQorCSAgc2F2ZWRfZmFjZV9pZCA9IGdseXBoX2Zh Y2VfaWQ7CisJICBwcmV2X2N1cnNvcl9wb3MuWCA9IHg7CisJICBwcmV2X2N1cnNvcl9wb3MuWSA9 IHk7CisJfQorICAgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAgICAgICAgICAg ICAgICAgVGV4dCBNb2RpZmljYXRpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogLyogQ2xlYXIgZnJv bSBjdXJzb3IgdG8gZW5kIG9mIHNjcmVlbi4gICovCiBzdGF0aWMgdm9pZAogdzMyY29uX2NsZWFy X3RvX2VuZCAoc3RydWN0IGZyYW1lICpmKQogewotICB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUg KGYsIEZSQU1FX0NPTFMgKGYpIC0gMSk7Ci0gIHczMmNvbl9pbnNfZGVsX2xpbmVzIChmLCBjdXJz b3JfY29vcmRzLlksIEZSQU1FX1RPVEFMX0xJTkVTIChmKSAtIGN1cnNvcl9jb29yZHMuWSAtIDEp OworICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7CisgICAg ICB0dXJuX29uX2ZhY2UgKGYsIHNwYWNlX2dseXBoLmZhY2VfaWQpOworICAgICAgdzMyY29uX3dy aXRlX3Z0X3NlcSAoIlx4MWJbMUoiKTsKKyAgICAgIHR1cm5fb2ZmX2ZhY2UgKGYsIHNwYWNlX2ds eXBoLmZhY2VfaWQpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHczMmNvbl9jbGVhcl9l bmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikgLSAxKTsKKyAgICAgIGludCBuID0gRlJBTUVf VE9UQUxfTElORVMgKGYpIC0gY3Vyc29yX2Nvb3Jkcy5ZIC0gMTsKKyAgICAgIHczMmNvbl9pbnNf ZGVsX2xpbmVzIChmLCBjdXJzb3JfY29vcmRzLlksIG4pOworICAgIH0KIH0KIAogLyogQ2xlYXIg dGhlIGZyYW1lLiAgKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fY2xlYXJfZnJhbWUgKHN0cnVjdCBm cmFtZSAqZikKIHsKLSAgQ09PUkQJICAgICBkZXN0OwotICBpbnQgICAgICAgIG47Ci0gIERXT1JE ICAgICAgcjsKLSAgQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8gaW5mbzsKLQotICBHZXRDb25z b2xlU2NyZWVuQnVmZmVySW5mbyAoR2V0U3RkSGFuZGxlIChTVERfT1VUUFVUX0hBTkRMRSksICZp bmZvKTsKLQotICAvKiBSZW1lbWJlciB0aGF0IHRoZSBzY3JlZW4gYnVmZmVyIG1pZ2h0IGJlIHdp ZGVyIHRoYW4gdGhlIHdpbmRvdy4gICovCi0gIG4gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgKiBp bmZvLmR3U2l6ZS5YOwotICBkZXN0LlggPSBkZXN0LlkgPSAwOwotCi0gIEZpbGxDb25zb2xlT3V0 cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFyX2F0dHJfbm9ybWFsLCBuLCBkZXN0LCAmcik7 Ci0gIEZpbGxDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCAnICcsIG4sIGRlc3Qs ICZyKTsKLQorICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7 CisgICAgICB0dXJuX29uX2ZhY2UgKGYsIHNwYWNlX2dseXBoLmZhY2VfaWQpOworICAgICAgdzMy Y29uX3dyaXRlX3Z0X3NlcSAoIlx4MWJbMkpceDFiWzNKIik7CisgICAgICB0dXJuX29mZl9mYWNl IChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBD T09SRAkgICAgIGRlc3Q7CisgICAgICBpbnQgICAgICAgIG47CisgICAgICBEV09SRCAgICAgIHI7 CisgICAgICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBpbmZvOworICAgICAgCisgICAgICBH ZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyAoR2V0U3RkSGFuZGxlIChTVERfT1VUUFVUX0hBTkRM RSksICZpbmZvKTsKKyAgICAgIAorICAgICAgLyogUmVtZW1iZXIgdGhhdCB0aGUgc2NyZWVuIGJ1 ZmZlciBtaWdodCBiZSB3aWRlciB0aGFuIHRoZSB3aW5kb3cuICAqLworICAgICAgbiA9IEZSQU1F X1RPVEFMX0xJTkVTIChmKSAqIGluZm8uZHdTaXplLlg7CisgICAgICBkZXN0LlggPSBkZXN0Llkg PSAwOworICAgICAgCisgICAgICBGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVl biwgY2hhcl9hdHRyX25vcm1hbCwgbiwgZGVzdCwgJnIpOworICAgICAgRmlsbENvbnNvbGVPdXRw dXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sICcgJywgbiwgZGVzdCwgJnIpOworICAgIH0KICAgdzMy Y29uX21vdmVfY3Vyc29yIChmLCAwLCAwKTsKIH0KIApAQCAtMTUxLDk1ICszOTUsMTE2IEBAIHN0 YXRpYyBCT09MICBjZW9sX2luaXRpYWxpemVkID0gRkFMU0U7CiBzdGF0aWMgdm9pZAogdzMyY29u X2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBlbmQpCiB7Ci0gIC8qIFRp bWUgdG8gcmVhbGxvY2F0ZSBvdXIgImVtcHR5IHJvdyI/ICBXaXRoIHRvZGF5J3MgbGFyZ2Ugc2Ny ZWVucywKLSAgICAgaXQgaXMgbm90IHVudGhpbmthYmxlIHRvIHNlZSBUVFkgZnJhbWVzIHdlbGwg aW4gZXhjZXNzIG9mCi0gICAgIDgwLWNoYXJhY3RlciB3aWR0aC4gICovCi0gIGlmIChlbmQgLSBj dXJzb3JfY29vcmRzLlggPiBnbHlwaHNfbGVuKQorICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1p bmFsX3NlcXVlbmNlcykKICAgICB7Ci0gICAgICBpZiAoZ2x5cGhzID09IGdseXBoX2Jhc2UpCi0J Z2x5cGhzID0gTlVMTDsKLSAgICAgIGdseXBocyA9IHhyZWFsbG9jIChnbHlwaHMsIEZSQU1FX0NP TFMgKGYpICogc2l6ZW9mIChzdHJ1Y3QgZ2x5cGgpKTsKLSAgICAgIGdseXBoc19sZW4gPSBGUkFN RV9DT0xTIChmKTsKLSAgICAgIGNlb2xfaW5pdGlhbGl6ZWQgPSBGQUxTRTsKKyAgICAgIHR1cm5f b25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3MzJjb25fd3JpdGVfdnRf c2VxICgiXHgxYlswSyIpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFj ZV9pZCk7CiAgICAgfQotICBpZiAoIWNlb2xfaW5pdGlhbGl6ZWQpCisgIGVsc2UKICAgICB7Ci0g ICAgICBpbnQgaTsKLSAgICAgIGZvciAoaSA9IDA7IGkgPCBnbHlwaHNfbGVuOyBpKyspCi0gICAg ICAgIHsKLQkgIG1lbWNweSAoJmdseXBoc1tpXSwgJnNwYWNlX2dseXBoLCBzaXplb2YgKHN0cnVj dCBnbHlwaCkpOwotCSAgZ2x5cGhzW2ldLmZyYW1lID0gTlVMTDsKLSAgICAgICAgfQotICAgICAg Y2VvbF9pbml0aWFsaXplZCA9IFRSVUU7CisgICAgICAvKiBUaW1lIHRvIHJlYWxsb2NhdGUgb3Vy ICJlbXB0eSByb3ciPyAgV2l0aCB0b2RheSdzIGxhcmdlIHNjcmVlbnMsCisJIGl0IGlzIG5vdCB1 bnRoaW5rYWJsZSB0byBzZWUgVFRZIGZyYW1lcyB3ZWxsIGluIGV4Y2VzcyBvZgorCSA4MC1jaGFy YWN0ZXIgd2lkdGguICAqLworICAgICAgaWYgKGVuZCAtIGN1cnNvcl9jb29yZHMuWCA+IGdseXBo c19sZW4pCisJeworCSAgaWYgKGdseXBocyA9PSBnbHlwaF9iYXNlKQorCSAgICBnbHlwaHMgPSBO VUxMOworCSAgZ2x5cGhzID0geHJlYWxsb2MgKGdseXBocywgRlJBTUVfQ09MUyAoZikgKiBzaXpl b2YgKHN0cnVjdCBnbHlwaCkpOworCSAgZ2x5cGhzX2xlbiA9IEZSQU1FX0NPTFMgKGYpOworCSAg Y2VvbF9pbml0aWFsaXplZCA9IEZBTFNFOworCX0KKyAgICAgIGlmICghY2VvbF9pbml0aWFsaXpl ZCkKKwl7CisJICBpbnQgaTsKKwkgIGZvciAoaSA9IDA7IGkgPCBnbHlwaHNfbGVuOyBpKyspCisJ ICAgIHsKKwkgICAgICBtZW1jcHkgKCZnbHlwaHNbaV0sICZzcGFjZV9nbHlwaCwgc2l6ZW9mIChz dHJ1Y3QgZ2x5cGgpKTsKKwkgICAgICBnbHlwaHNbaV0uZnJhbWUgPSBOVUxMOworCSAgICB9CisJ ICBjZW9sX2luaXRpYWxpemVkID0gVFJVRTsKKwl9CisgICAgICB3MzJjb25fd3JpdGVfZ2x5cGhz IChmLCBnbHlwaHMsIGVuZCAtIGN1cnNvcl9jb29yZHMuWCk7CiAgICAgfQotICB3MzJjb25fd3Jp dGVfZ2x5cGhzIChmLCBnbHlwaHMsIGVuZCAtIGN1cnNvcl9jb29yZHMuWCk7CiB9CiAKIC8qIElu c2VydCBuIGxpbmVzIGF0IHZwb3MuIGlmIG4gaXMgbmVnYXRpdmUgZGVsZXRlIC1uIGxpbmVzLiAg Ki8KIHN0YXRpYyB2b2lkCiB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpmLCBp bnQgdnBvcywgaW50IG4pCiB7Ci0gIGludAkgICAgIGksIG5iOwotICBTTUFMTF9SRUNUIHNjcm9s bDsKLSAgU01BTExfUkVDVCBjbGlwOwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5GTyAg ZmlsbDsKLQotICBpZiAobiA8IDApCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2Vx dWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5Ub3AgPSB2cG9zIC0gbjsKLSAgICAgIHNjcm9s bC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7Ci0gICAgICBkZXN0LlkgPSB2cG9zOwor ICAgICAgY2hhciBzZXFbMzJdOworICAgICAgY2hhciAqZm10ID0gbiA8IDAgPyAiXHgxYlslZEwi IDogIlx4MWJbJWRNIjsKKyAgICAgIHNwcmludGYgKHNlcSwgZm10LCBhYnMgKG4pKTsKKworICAg ICAgdHVybl9vbl9mYWNlIChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICAgIHczMmNvbl93 cml0ZV92dF9zZXEgKHNlcSk7CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBzcGFjZV9nbHlwaC5m YWNlX2lkKTsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBzY3JvbGwuVG9wID0gdnBvczsK LSAgICAgIHNjcm9sbC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBuOwotICAgICAg ZGVzdC5ZID0gdnBvcyArIG47Ci0gICAgfQotICBjbGlwLlRvcCA9IGNsaXAuTGVmdCA9IHNjcm9s bC5MZWZ0ID0gMDsKLSAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYp OwotICBjbGlwLkJvdHRvbSA9IEZSQU1FX1RPVEFMX0xJTkVTIChmKTsKKyAgICAgIGludAkgICAg IGksIG5iOworICAgICAgU01BTExfUkVDVCBzY3JvbGw7CisgICAgICBTTUFMTF9SRUNUIGNsaXA7 CisgICAgICBDT09SRAkgICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CiAKLSAgZGVz dC5YID0gMDsKKyAgICAgIGlmIChuIDwgMCkKKwl7CisJICBzY3JvbGwuVG9wID0gdnBvcyAtIG47 CisJICBzY3JvbGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpOworCSAgZGVzdC5ZID0g dnBvczsKKwl9CisgICAgICBlbHNlCisJeworCSAgc2Nyb2xsLlRvcCA9IHZwb3M7CisJICBzY3Jv bGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpIC0gbjsKKwkgIGRlc3QuWSA9IHZwb3Mg KyBuOworCX0KKyAgICAgIGNsaXAuVG9wID0gY2xpcC5MZWZ0ID0gc2Nyb2xsLkxlZnQgPSAwOwor ICAgICAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpOworICAgICAg Y2xpcC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7CiAKLSAgZmlsbC5DaGFyLkFzY2lp Q2hhciA9IDB4MjA7Ci0gIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7CisgICAg ICBkZXN0LlggPSAwOwogCi0gIFNjcm9sbENvbnNvbGVTY3JlZW5CdWZmZXIgKGN1cl9zY3JlZW4s ICZzY3JvbGwsICZjbGlwLCBkZXN0LCAmZmlsbCk7CisgICAgICBmaWxsLkNoYXIuQXNjaWlDaGFy ID0gMHgyMDsKKyAgICAgIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7CiAKLSAg LyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBhIHczMiBjb25zb2xlIGZsYWtlOiBJZiB0aGUg c2Nyb2xsCi0gICAgIHJlZ2lvbiBsb29rcyBsaWtlIGFiYyBhbmQgd2Ugc2Nyb2xsIGMgdG8gYSBh bmQgZmlsbCB3aXRoIGQgd2UgZ2V0Ci0gICAgIGNiZC4uLiBpZiB3ZSBzY3JvbGwgYmxvY2sgYyBv bmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4uLgotICAgICBFbWFjcyBleHBlY3Rz IGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhhdAotICAgICBo ZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2FtZSB3YXkgaW4gdGhlIG90 aGVyCi0gICAgIGRpcmVjdGlvbi4gICovCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVmZmVy IChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogCi0gIGlmIChuID4g MCkKLSAgICB7Ci0gICAgICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAgewot CSAgZm9yIChpID0gc2Nyb2xsLkJvdHRvbTsgaSA8IGRlc3QuWTsgaSsrKQotICAgICAgICAgICAg ewotCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7Ci0JICAgICAgdzMyY29uX2Ns ZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAgICAgICB9Ci0gICAg ICAgIH0KLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBuYiA9IGRlc3QuWSArIChzY3JvbGwu Qm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwotCi0gICAgICBpZiAobmIgPCBzY3JvbGwuVG9wKQot ICAgICAgICB7Ci0JICBmb3IgKGkgPSBuYjsgaSA8IHNjcm9sbC5Ub3A7IGkrKykKLSAgICAgICAg ICAgIHsKLQkgICAgICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOwotCSAgICAgIHczMmNv bl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOwotICAgICAgICAgICAgfQot ICAgICAgICB9Ci0gICAgfQorICAgICAgLyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBhIHcz MiBjb25zb2xlIGZsYWtlOiBJZiB0aGUgc2Nyb2xsCisJIHJlZ2lvbiBsb29rcyBsaWtlIGFiYyBh bmQgd2Ugc2Nyb2xsIGMgdG8gYSBhbmQgZmlsbCB3aXRoIGQgd2UgZ2V0CisJIGNiZC4uLiBpZiB3 ZSBzY3JvbGwgYmxvY2sgYyBvbmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4uLgor CSBFbWFjcyBleHBlY3RzIGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFsIHdp dGggdGhhdAorCSBoZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2FtZSB3 YXkgaW4gdGhlIG90aGVyCisJIGRpcmVjdGlvbi4gICovCisKKyAgICAgIGlmIChuID4gMCkKKwl7 CisJICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKKwkgICAgeworCSAgICAgIGZvciAoaSA9 IHNjcm9sbC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKKwkJeworCQkgIHczMmNvbl9tb3ZlX2N1 cnNvciAoZiwgaSwgMCk7CisJCSAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9D T0xTIChmKSk7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBuYiA9IGRlc3Qu WSArIChzY3JvbGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCisJICBpZiAobmIgPCBzY3Jv bGwuVG9wKQorCSAgICB7CisJICAgICAgZm9yIChpID0gbmI7IGkgPCBzY3JvbGwuVG9wOyBpKysp CisJCXsKKwkJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOworCQkgIHczMmNvbl9jbGVh cl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOworCQl9CisJICAgIH0KKwl9CisgICAg fQogICBjdXJzb3JfY29vcmRzLlggPSAwOwogICBjdXJzb3JfY29vcmRzLlkgPSB2cG9zOwogfQpA QCAtMjQ4LDM4ICs1MTMsNTAgQEAgdzMyY29uX2luc19kZWxfbGluZXMgKHN0cnVjdCBmcmFtZSAq ZiwgaW50IHZwb3MsIGludCBuKQogI3VuZGVmCVJJR0hUCiAjZGVmaW5lCUxFRlQJMQogI2RlZmlu ZQlSSUdIVAkwCi0KKy8qIFRoZSBpZGVhIGhlcmUgaXMgdG8gaW1wbGVtZW50IGEgaG9yaXpvbnRh bCBzY3JvbGwgaW4gb25lIGxpbmUgdG8KKyAgIGltcGxlbWVudCBkZWxldGUgYW5kIGhhbGYgb2Yg aW5zZXJ0LiAgKi8KIHN0YXRpYyB2b2lkCiBzY3JvbGxfbGluZSAoc3RydWN0IGZyYW1lICpmLCBp bnQgZGlzdCwgaW50IGRpcmVjdGlvbikKIHsKLSAgLyogVGhlIGlkZWEgaGVyZSBpcyB0byBpbXBs ZW1lbnQgYSBob3Jpem9udGFsIHNjcm9sbCBpbiBvbmUgbGluZSB0bwotICAgICBpbXBsZW1lbnQg ZGVsZXRlIGFuZCBoYWxmIG9mIGluc2VydC4gICovCi0gIFNNQUxMX1JFQ1Qgc2Nyb2xsLCBjbGlw OwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5GTyAgZmlsbDsKLQotICBjbGlwLlRvcCA9 IHNjcm9sbC5Ub3AgPSBjbGlwLkJvdHRvbSA9IHNjcm9sbC5Cb3R0b20gPSBjdXJzb3JfY29vcmRz Llk7Ci0gIGNsaXAuTGVmdCA9IDA7Ci0gIGNsaXAuUmlnaHQgPSBGUkFNRV9DT0xTIChmKTsKLQot ICBpZiAoZGlyZWN0aW9uID09IExFRlQpCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxf c2VxdWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5MZWZ0ID0gY3Vyc29yX2Nvb3Jkcy5YICsg ZGlzdDsKLSAgICAgIHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpIC0gMTsKKyAgICAgIGNo YXIgc2VxWzMyXTsKKyAgICAgIGNoYXIgKmZtdCA9IGRpcmVjdGlvbiA9PSBMRUZUID8gIlx4MWJb JWRAIiA6ICJceDFiWyVkUCI7CisgICAgICBzcHJpbnRmIChzZXEsIGZtdCwgYWJzIChkaXN0KSk7 CisKKyAgICAgIHR1cm5fb25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3 MzJjb25fd3JpdGVfdnRfc2VxIChzZXEpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3BhY2Vf Z2x5cGguZmFjZV9pZCk7CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgc2Nyb2xsLkxlZnQg PSBjdXJzb3JfY29vcmRzLlg7Ci0gICAgICBzY3JvbGwuUmlnaHQgPSBGUkFNRV9DT0xTIChmKSAt IGRpc3QgLSAxOworICAgICAgU01BTExfUkVDVCBzY3JvbGwsIGNsaXA7CisgICAgICBDT09SRAkg ICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CisgICAgICAKKyAgICAgIGNsaXAuVG9w ID0gc2Nyb2xsLlRvcCA9IGNsaXAuQm90dG9tID0gc2Nyb2xsLkJvdHRvbSA9IGN1cnNvcl9jb29y ZHMuWTsKKyAgICAgIGNsaXAuTGVmdCA9IDA7CisgICAgICBjbGlwLlJpZ2h0ID0gRlJBTUVfQ09M UyAoZik7CisgICAgICAKKyAgICAgIGlmIChkaXJlY3Rpb24gPT0gTEVGVCkKKwl7CisJICBzY3Jv bGwuTGVmdCA9IGN1cnNvcl9jb29yZHMuWCArIGRpc3Q7CisJICBzY3JvbGwuUmlnaHQgPSBGUkFN RV9DT0xTIChmKSAtIDE7CisJfQorICAgICAgZWxzZQorCXsKKwkgIHNjcm9sbC5MZWZ0ID0gY3Vy c29yX2Nvb3Jkcy5YOworCSAgc2Nyb2xsLlJpZ2h0ID0gRlJBTUVfQ09MUyAoZikgLSBkaXN0IC0g MTsKKwl9CisgICAgICAKKyAgICAgIGRlc3QuWCA9IGN1cnNvcl9jb29yZHMuWDsKKyAgICAgIGRl c3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKKyAgICAgIAorICAgICAgZmlsbC5DaGFyLkFzY2lpQ2hh ciA9IDB4MjA7CisgICAgICBmaWxsLkF0dHJpYnV0ZXMgPSBjaGFyX2F0dHJfbm9ybWFsOworICAg ICAgCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xs LCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogICAgIH0KLQotICBkZXN0LlggPSBjdXJzb3JfY29vcmRz Llg7Ci0gIGRlc3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKLQotICBmaWxsLkNoYXIuQXNjaWlDaGFy ID0gMHgyMDsKLSAgZmlsbC5BdHRyaWJ1dGVzID0gY2hhcl9hdHRyX25vcm1hbDsKLQotICBTY3Jv bGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVzdCwg JmZpbGwpOwogfQogCiAKQEAgLTI4OCwxNCArNTY1LDEzIEBAIHN0YXRpYyB2b2lkCiB3MzJjb25f aW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0 YXJ0LAogCQkgICAgICByZWdpc3RlciBpbnQgbGVuKQogeworICAvKiBNb3ZlIGxlbiBjaGFycyB0 byB0aGUgcmlnaHQgZnJvbSBjdXJzb3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCiAgIHNj cm9sbF9saW5lIChmLCBsZW4sIFJJR0hUKTsKLQotICAvKiBNb3ZlIGxlbiBjaGFycyB0byB0aGUg cmlnaHQgc3RhcnRpbmcgYXQgY3Vyc29yX2Nvb3JkcywgZmlsbCB3aXRoIGJsYW5rcyAqLworICAK ICAgaWYgKHN0YXJ0KQogICAgIHsKLSAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hhcmFj dGVycyBvZiBzdGFydCwgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkCi0JIGJ5IHdyaXRlX2dseXBo cy4gICovCi0KKyAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hhcmFjdGVycyBvZiBzdGFy dC4KKwkgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkIGJ5IHdyaXRlX2dseXBocy4gICovCiAgICAg ICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBzdGFydCwgbGVuKTsKICAgICB9CiAgIGVsc2UKQEAg LTMwNiw3ICs1ODIsNyBAQCB3MzJjb25faW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCBy ZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0YXJ0LAogCiBzdGF0aWMgdm9pZAogdzMyY29uX3dyaXRl X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmluZywK LSAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBsZW4pCisJCSAgICAgcmVnaXN0ZXIg aW50IGxlbikKIHsKICAgRFdPUkQgcjsKICAgV09SRCBjaGFyX2F0dHI7CkBAIC0zNDIsNDMgKzYx OCw0NSBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0 cnVjdCBnbHlwaCAqc3RyaW5nLAogCiAgICAgICAvKiB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUg c2V0cyBmcmFtZSBvZiBnbHlwaHMgdG8gTlVMTC4gICovCiAgICAgICBzdHJ1Y3QgZnJhbWUgKmF0 dHJfZnJhbWUgPSBmYWNlX2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFtZSA6IGY7Ci0gICAgICAvKiBU dXJuIGFwcGVhcmFuY2UgbW9kZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICovCi0gICAg ICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1lLCBmYWNlX2lkKTsK IAogICAgICAgaWYgKG4gPT0gbGVuKQogCS8qIFRoaXMgaXMgdGhlIGxhc3QgcnVuLiAgKi8KIAlj b2RpbmctPm1vZGUgfD0gQ09ESU5HX01PREVfTEFTVF9CTE9DSzsKKwogICAgICAgY29udmVyc2lv bl9idWZmZXIgPSAoTFBDU1RSKSBlbmNvZGVfdGVybWluYWxfY29kZSAoc3RyaW5nLCBuLCBjb2Rp bmcpOwogICAgICAgaWYgKGNvZGluZy0+cHJvZHVjZWQgPiAwKQogCXsKLQkgIC8qIFNldCB0aGUg YXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghRmlsbENvbnNvbGVP dXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKLQkJCQkJICAgY29kaW5nLT5w cm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgJnIpKQorCSAgaWYgKHczMl91c2Vfdmly dHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCiAJICAgIHsKLQkgICAgICBwcmludGYgKCJGYWlsZWQg d3JpdGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVsdVxuIiwKLQkJICAgICAgR2V0TGFzdEVycm9y ICgpKTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7CisJICAgICAgdHVybl9vbl9mYWNlIChmLCBm YWNlX2lkKTsKKwkgICAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVm ZmVyLAorCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxMKTsKKwkgICAgICB0dXJuX29m Zl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgICAgICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5w cm9kdWNlZDsKIAkgICAgfQotCi0JICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCi0JICBp ZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9i dWZmZXIsCi0JCQkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAotCQkJCQkg ICAgJnIpKQorCSAgZWxzZQogCSAgICB7Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcg Y29uc29sZSBjaGFyYWN0ZXJzOiAlbHVcbiIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7Ci0J ICAgICAgZmZsdXNoIChzdGRvdXQpOwotCSAgICB9CisJICAgICAgLyogVHVybiBhcHBlYXJhbmNl IG1vZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLworCSAgICAgIGNoYXJfYXR0ciA9 IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOworCSAgICAgIC8qIFNl dCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBGaWxsQ29u c29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAorCQkJCQkgIGNvZGlu Zy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCisJCQkJCSAgJnIpOworCSAgICAgIC8qIFdyaXRl IHRoZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIg KGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCQkgICBjb2RpbmctPnByb2R1Y2Vk LCBjdXJzb3JfY29vcmRzLAorCQkJCQkgICAmcik7CiAKLQkgIGN1cnNvcl9jb29yZHMuWCArPSBj b2RpbmctPnByb2R1Y2VkOwotCSAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRz LlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgICAgY3Vyc29yX2Nvb3Jkcy5YICs9IGNvZGluZy0+ cHJvZHVjZWQ7CisJICAgICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRzLlks IGN1cnNvcl9jb29yZHMuWCk7CisJICAgIH0KIAl9CiAgICAgICBsZW4gLT0gbjsKICAgICAgIHN0 cmluZyArPSBuOwogICAgIH0KIH0KIAorCiAvKiBVc2VkIGZvciBtb3VzZSBoaWdobGlnaHQuICAq Lwogc3RhdGljIHZvaWQKIHczMmNvbl93cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3QgZnJh bWUgKmYsIHJlZ2lzdGVyIGludCB4LCByZWdpc3RlciBpbnQgeSwKQEAgLTM4Nyw2ICs2NjUsNyBA QCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3Rl ciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiB7CiAgIExQQ1NUUiBjb252ZXJzaW9uX2J1ZmZlcjsK ICAgc3RydWN0IGNvZGluZ19zeXN0ZW0gKmNvZGluZzsKKyAgRFdPUkQgZmlsbGVkLCB3cml0dGVu OwogCiAgIGlmIChsZW4gPD0gMCkKICAgICByZXR1cm47CkBAIC0zOTksMjkgKzY3OCwzOCBAQCB3 MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBp bnQgeCwgcmVnaXN0ZXIgaW50IHksCiAgIC8qIFdlIGFyZSBnb2luZyB0byB3cml0ZSB0aGUgZW50 aXJlIGJsb2NrIG9mIGdseXBocyBpbiBvbmUgZ28sIGFzCiAgICAgIHRoZXkgYWxsIGhhdmUgdGhl IHNhbWUgZmFjZS4gIFNvIHRoaXMgX2lzXyB0aGUgbGFzdCBibG9jay4gICovCiAgIGNvZGluZy0+ bW9kZSB8PSBDT0RJTkdfTU9ERV9MQVNUX0JMT0NLOwotCiAgIGNvbnZlcnNpb25fYnVmZmVyID0g KExQQ1NUUikgZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbGVuLCBjb2RpbmcpOwogICBp ZiAoY29kaW5nLT5wcm9kdWNlZCA+IDApCiAgICAgewotICAgICAgRFdPUkQgZmlsbGVkLCB3cml0 dGVuOwotICAgICAgLyogQ29tcHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVzcG9u ZGluZyB0byB0aGUgZmFjZS4gICovCi0gICAgICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFjZV9h dHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKICAgICAgIENPT1JEIHN0YXJ0X2Nvb3JkczsKLQogICAg ICAgc3RhcnRfY29vcmRzLlggPSB4OwogICAgICAgc3RhcnRfY29vcmRzLlkgPSB5OwotICAgICAg LyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwotICAgICAgaWYg KCFGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAotCQkJ CSAgICAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFydF9jb29yZHMsCi0JCQkJICAgICAgICZmaWxs ZWQpKQotCURlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRlczogJWRc biIsIEdldExhc3RFcnJvciAoKSkpOworCisgICAgICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1p bmFsX3NlcXVlbmNlcykKKwl7CisJICBpbnQgcHJldl9jdXJzb3JfaGlkZGVuID0gY3VycmVudF90 dHktPmN1cnNvcl9oaWRkZW47CisJICB3MzJjb25faGlkZV9jdXJzb3IgKCk7CisJICB3MzJjb25f c2F2ZV9jdXJzb3IgKCk7CisJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIHksIHgpOworCSAgdHVy bl9vbl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgY29u dmVyc2lvbl9idWZmZXIsCisJCQljb2RpbmctPnByb2R1Y2VkLCAmd3JpdHRlbiwgTlVMTCk7CisJ ICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIHczMmNvbl9yZXN0b3JlX2N1cnNvciAo KTsKKwkgIGlmICghcHJldl9jdXJzb3JfaGlkZGVuKSB3MzJjb25fc2hvd19jdXJzb3IgKCk7CisJ fQogICAgICAgZWxzZQogCXsKKwkgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBhdHRyaWJ1dGVz IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICovCisJICBEV09SRCBjaGFyX2F0dHIgPSB3MzJf ZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKKworCSAgLyogU2V0IHRoZSBhdHRyaWJ1dGUg Zm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUg KGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkgICAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFy dF9jb29yZHMsCisJCQkJICAgICAgJmZpbGxlZCk7CiAJICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVy cy4gICovCi0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwg Y29udmVyc2lvbl9idWZmZXIsCi0JCQkJCSAgICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0 ZW4pKQotCSAgICBEZWJQcmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3RlcnM6 ICVkXG4iLAotCQkgICAgICAgR2V0TGFzdEVycm9yICgpKSk7CisJICBXcml0ZUNvbnNvbGVPdXRw dXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCSAgICAgICBm aWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0ZW4pOwogCX0KICAgICB9CiB9CkBAIC00NTIsOSAr NzQwLDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3RydWN0IHdpbmRvdyAqdywg c3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKICAgcm9vdF94eSAoZiwgZnJhbWVfZW5kX3gs IGZyYW1lX3ksICZyb290X2VuZF94LCAmcm9vdF95KTsKICAgc3RydWN0IGdseXBoX3JvdyAqcm9v dF9yb3cgPSBNQVRSSVhfUk9XIChyb290LT5jdXJyZW50X21hdHJpeCwgcm9vdF95KTsKIAotICAv KiBSZW1lbWJlciBjdXJyZW50IGN1cnNvciBjb29yZGluYXRlcyBzbyB0aGF0IHdlIGNhbiByZXN0 b3JlCi0gICAgIHRoZW0gYXQgdGhlIGVuZC4gICovCi0gIENPT1JEIHNhdmVfY29vcmRzID0gY3Vy c29yX2Nvb3JkczsKKyAgdzMyY29uX3NhdmVfY3Vyc29yKCk7CiAKICAgLyogSWYgdGhlIHJvb3Qg ZnJhbWUgZGlzcGxheXMgY2hpbGQgZnJhbWVzLCB3ZSBjYW5ub3QgbmFpdmVseQogICAgICB3cml0 ZSB0byB0aGUgdGVybWluYWwgd2hhdCB0aGUgd2luZG93IHRoaW5rcyBzaG91bGQgYmUgZHJhd24u CkBAIC01MDcsOSArNzkzLDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3RydWN0 IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKIAkgICAgfQogCX0KICAg ICB9Ci0KLSAgLyogUmVzdG9yZSBjdXJzb3Igd2hlcmUgaXQgd2FzIGJlZm9yZS4gICovCi0gIHcz MmNvbl9tb3ZlX2N1cnNvciAoZiwgc2F2ZV9jb29yZHMuWSwgc2F2ZV9jb29yZHMuWCk7CisgIHcz MmNvbl9yZXN0b3JlX2N1cnNvcigpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTIxLDcgKzgwNSw5 IEBAIHczMmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogCiAgIHNj cm9sbF9saW5lIChmLCBuLCBMRUZUKTsKIH0KLQorLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAg ICAgICAgICAgICAgICAgU2V0IHVwIC8gVGVhciBkb3duCisqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3Rh dGljIHZvaWQKIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFsICp0 KQpAQCAtNTU5LDkgKzg0NSwxMSBAQCB3MzJjb25fc2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1Y3Qg dGVybWluYWwgKnQpCiB7CiAgIENPTlNPTEVfQ1VSU09SX0lORk8gY2NpOwogCisgIHVzaW5nX3N5 c3RlbV9jYXJldCA9IHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQ7CisKICAgLyogbWFrZSBj dXJzb3IgYmlnIGFuZCB2aXNpYmxlICgxMDAgb24gV2luZG93cyA5NSBtYWtlcyBpdCBkaXNhcHBl YXIpICAqLwogICBjY2kuZHdTaXplID0gOTk7Ci0gIGNjaS5iVmlzaWJsZSA9IFRSVUU7CisgIGNj aS5iVmlzaWJsZSA9IHVzaW5nX3N5c3RlbV9jYXJldCA/IFRSVUUgOiBGQUxTRTsKICAgKHZvaWQp IFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY2NpKTsKIAogICBTZXRDb25zb2xl QWN0aXZlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuKTsKQEAgLTU2OSwzMCArODU3LDczIEBAIHcz MmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKICAgLyogSWYgUXVp Y2sgRWRpdCBpcyBlbmFibGVkIGZvciB0aGUgY29uc29sZSwgaXQgd2lsbCBnZXQgaW4gdGhlIHdh eQogICAgICBvZiByZWNlaXZpbmcgbW91c2UgZXZlbnRzLCBzbyB3ZSBkaXNhYmxlIGl0LiAgQnV0 IGxlYXZlIHRoZQogICAgICBJbnNlcnQgTW9kZSBhcyBpdCB3YXMgc2V0IGJ5IHRoZSB1c2VyLiAg Ki8KLSAgRFdPUkQgbmV3X2NvbnNvbGVfbW9kZQorICBEV09SRCBpbl9tb2RlCiAgICAgPSBFTkFC TEVfTU9VU0VfSU5QVVQgfCBFTkFCTEVfV0lORE9XX0lOUFVUIHwgRU5BQkxFX0VYVEVOREVEX0ZM QUdTOwogICBpZiAoKHByZXZfY29uc29sZV9tb2RlICYgRU5BQkxFX0lOU0VSVF9NT0RFKSAhPSAw KQotICAgIG5ld19jb25zb2xlX21vZGUgfD0gRU5BQkxFX0lOU0VSVF9NT0RFOwotICBTZXRDb25z b2xlTW9kZSAoa2V5Ym9hcmRfaGFuZGxlLCBuZXdfY29uc29sZV9tb2RlKTsKKyAgICBpbl9tb2Rl IHw9IEVOQUJMRV9JTlNFUlRfTU9ERTsKKyAgU2V0Q29uc29sZU1vZGUgKGtleWJvYXJkX2hhbmRs ZSwgaW5fbW9kZSk7CiAKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2RlOiBpbnRlcnJ1cHRfaW5w dXQgb2ZmLCBubyBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0IGNoYXJhY3RlciBpbnB1 dCwgc3RhbmRhcmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9tb2RlIChRbmlsLCBRbmls LCBtYWtlX2ZpeG51bSAoMiksIFFuaWwpOworCisgIERXT1JEIG91dF9tb2RlOworICBHZXRDb25z b2xlTW9kZSAoY3VyX3NjcmVlbiwgJm91dF9tb2RlKTsKKyAgb3V0X21vZGUgfD0gRU5BQkxFX1BS T0NFU1NFRF9PVVRQVVQ7CisgIG91dF9tb2RlIHw9IEVOQUJMRV9WSVJUVUFMX1RFUk1JTkFMX1BS T0NFU1NJTkc7CisgIG91dF9tb2RlIHw9IERJU0FCTEVfTkVXTElORV9BVVRPX1JFVFVSTjsKKyAg dzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcyA9IFNldENvbnNvbGVNb2RlIChjdXJf c2NyZWVuLCBvdXRfbW9kZSk7CisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVu Y2VzKQorICAgIHsKKyAgICAgIGludCBjdXJzb3Jfb2ZmX3AgPSBYV0lORE9XIChzZWxlY3RlZF93 aW5kb3cpLT5jdXJzb3Jfb2ZmX3A7CisgICAgICB0LT5kaXNwbGF5X2luZm8udHR5LT5jdXJzb3Jf aGlkZGVuID0gY3Vyc29yX29mZl9wOworICAgIH0KIH0KIAogLyogaG1tbS4uLiBwZXJoYXBzIHRo ZXNlIGxldCB1cyBicmFja2V0IHNjcmVlbiBjaGFuZ2VzIHNvIHRoYXQgd2UgY2FuIGZsdXNoCiAg ICBjbHVtcHMgcmF0aGVyIHRoYW4gb25lLWNoYXJhY3Rlci1hdC1hLXRpbWUuLi4KIAotICAgd2Un bGwgc3RhcnQgd2l0aCBub3QgbW92aW5nIHRoZSBjdXJzb3Igd2hpbGUgYW4gdXBkYXRlIGlzIGlu IHByb2dyZXNzLiAgKi8KKyAgIHdlJ2xsIHN0YXJ0IHdpdGggbm90IG1vdmluZyB0aGUgY3Vyc29y IHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4KKworICAgLi4uIGMuIDIwMjUsIFZUIHNl cXVlbmNlcyBjYW4gb25seSBiZSB3cml0dGVuIHdpdGggV3JpdGVDb25zb2xlLAorICAgcHJpbnRm LCBldGMuLCB3aGljaCBhZHZhbmNlIHRoZSBjdXJzb3IuCisqLwogc3RhdGljIHZvaWQKIHczMmNv bl91cGRhdGVfYmVnaW4gKHN0cnVjdCBmcmFtZSAqIGYpCiB7CisgIGN1cnJlbnRfdHR5ID0gRlJB TUVfVFRZIChmKTsKKworICBpZiAoIXczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMK KyAgICAgICYmIGN1cnJlbnRfdHR5LT5UTl9tYXhfY29sb3JzID4gMTYpCisgICAgeworICAgICAg dHR5X3NldHVwX2NvbG9ycyAoY3VycmVudF90dHksIDE2KTsKKyAgICAgIHNhZmVfY2FsbG4gKFF3 MzJjb25fc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworICAgIH0KKyAgaWYgKHVzaW5nX3N5 c3RlbV9jYXJldCAhPSB3MzJfdXNlX3Zpc2libGVfc3lzdGVtX2NhcmV0KQorICAgIHsKKyAgICAg IGludCBwcmV2X2N1cnNvcl9oaWRkZW4gPSBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbjsKKyAg ICAgIGlmICh1c2luZ19zeXN0ZW1fY2FyZXQpCisJeworCSAgdzMyY29uX2hpZGVfY3Vyc29yICgp OworCSAgY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4gPSBwcmV2X2N1cnNvcl9oaWRkZW47CisJ fQorICAgICAgdXNpbmdfc3lzdGVtX2NhcmV0ID0gdzMyX3VzZV92aXNpYmxlX3N5c3RlbV9jYXJl dDsKKworICAgICAgaWYgKHVzaW5nX3N5c3RlbV9jYXJldCkgLyogbmVlZCB0byBzeW5jICovCisJ eworCSAgY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4gPSAhY3VycmVudF90dHktPmN1cnNvcl9o aWRkZW47CisJICBpZiAoY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4pCisJICAgIHczMmNvbl9z aG93X2N1cnNvciAoKTsKKwkgIGVsc2UKKwkgICAgdzMyY29uX2hpZGVfY3Vyc29yICgpOworCX0K KyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2VuZCAoc3RydWN0IGZyYW1l ICogZikKIHsKLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChjdXJfc2NyZWVuLCBjdXJzb3Jf Y29vcmRzKTsKKyAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRzLlksIGN1cnNv cl9jb29yZHMuWCk7CiAgIGlmICghWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29yX29m Zl9wCiAgICAgICAmJiBjdXJzb3JfY29vcmRzLlggPCBGUkFNRV9DT0xTIChmKSkKICAgICB3MzJj b25fc2hvd19jdXJzb3IgKCk7CkBAIC02MjQsOCArOTU1LDYgQEAgc3lzX3RnZXRzdHIgKGNoYXIg KmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBmcm9tIGNtLmMKICAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K IAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eTsKLXN0cnVjdCB0 dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5VTEw7CiBleHRlcm4gaW50IGNvc3Q7CiBp bnQgY29zdCA9IDA7CiAKQEAgLTY5Myw3ICsxMDIyLDYgQEAgY3Vyc29yWSAoc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKnR0eSkKIAkJCQlGYWNlcwogICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0KIC8qIFR1 cm4gYXBwZWFyYW5jZXMgb2YgZmFjZSBGQUNFX0lEIG9uIHR0eSBmcmFtZSBGIG9uLiAgKi8KIAog c3RhdGljIFdPUkQKQEAgLTcyOSw2ICsxMDU3LDEwMCBAQCB3MzJfZmFjZV9hdHRyaWJ1dGVzIChz dHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQogICByZXR1cm4gY2hhcl9hdHRyOwogfQogCitz dGF0aWMgdm9pZAordHVybl9vbl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQor eworICBzdHJ1Y3QgZmFjZSAqZmFjZSA9IEZBQ0VfRlJPTV9JRCAoZiwgZmFjZV9pZCk7CisgIHN0 cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkgKGYpOworICB1bnNpZ25lZCBs b25nIGZnID0gZmFjZS0+Zm9yZWdyb3VuZDsKKyAgdW5zaWduZWQgbG9uZyBiZyA9IGZhY2UtPmJh Y2tncm91bmQ7CisKKyAgLyogaWYgZWl0aGVyIG91dCBvZiByYW5nZSwgc2V0IGJvdGggdG8gdmFs dWVzIHJldHJpZXZlZCBmcm9tIHRlcm1pbmFsICovCisgIGlmIChERUZBVUxUUCAoZmcpKSBmZyA9 IGZnX25vcm1hbDsKKyAgaWYgKERFRkFVTFRQIChiZykpIGJnID0gYmdfbm9ybWFsOworCisgIC8q IGNvbnN0cnVjdCBjb21iaW5lZCBWVCBzZXF1ZW5jZSBmb3IgZmFjZSBhdHRyaWJ1dGVzICovCisg IERXT1JEIG4gPSAwOworICBzaXplX3Qgc3ogPSBTRVFNQVg7CisgIGNoYXIgc2VxW3N6XTsKKyAg c3otLTsKKworICBpZiAoZmFjZS0+dHR5X2JvbGRfcCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwg c3osIHR0eS0+VFNfZW50ZXJfYm9sZF9tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9pdGFs aWNfcCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfaXRhbGljX21v ZGUsIE5VTEwpOworICBpZiAoZmFjZS0+dHR5X3N0cmlrZV90aHJvdWdoX3ApCisgICAgU1NQUklO VEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX3N0cmlrZV90aHJvdWdoX21vZGUsIE5VTEwp OworICBpZiAoZmFjZS0+dW5kZXJsaW5lICE9IDApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6 LCB0dHktPlRTX2VudGVyX3VuZGVybGluZV9tb2RlLCBOVUxMKTsKKyAgLyogTm90ZTogdGhlIHZh bHVlcyBvZiBmZyBhbmQgYmcgYXJlIGFscmVhZHkgc3dhcHBlZCB3aGVuIGZnIGFuZCBiZyBhcmUK KyAgICAgc2V0IGFuZCBmYWNlLT50dHlfcmV2ZXJzZV9wLiBBZGRpbmcgdGhlIHRlcm1pbmFsIHNl cXVlbmNlIGNvbnRhaW5lZAorICAgICBpbiB0dHktPlRTX2VudGVyX3JldmVyc2VfbW9kZSBzd2Fw cyB0aGVtIGJhY2ssIHdoaWNoIGlzIG5vIGdvb2QuICovCisKKyAgY29uc3QgY2hhciAqc2V0X2Zn ID0gdHR5LT5UU19zZXRfZm9yZWdyb3VuZDsKKyAgY29uc3QgY2hhciAqc2V0X2JnID0gdHR5LT5U U19zZXRfYmFja2dyb3VuZDsKKyAgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSA4ICB8fAorICAg ICAgdHR5LT5UTl9tYXhfY29sb3JzID09IDE2IHx8CisgICAgICB0dHktPlROX21heF9jb2xvcnMg PT0gMjU2KQorICAgIHsKKyAgICAgIC8qIGluZGljZXMgaW50byBNaWNyb3NvZnQtZGVmaW5lZCBj b2xvcnMgKHNlZSBsaW5rIGF0IHRvcCkgKi8KKyAgICAgIHVuc2lnbmVkIGxvbmcgZmdpID0gMCwg YmdpID0gMDsKKworICAgICAgZmdpID0gKGZnID49IDAgICYmIGZnIDwgOCkgICA/IGZnICsgMzAK Kwk6ICAgKGZnID49IDggICYmIGZnIDwgMTYpICA/IGZnIC0gOCArIDkwCisJOiAgIChmZyA+PSAx NiAmJiBmZyA8IDI1NikgPyBmZworCTogMDsKKyAgICAgIGlmIChmZ2kpCisJU1NQUklOVEYgKHNl cSwgJm4sIHN6LCBzZXRfZmcsIGZnaSk7CisKKyAgICAgIGJnaSA9IChiZyA+PSAwICAmJiBiZyA8 IDgpICAgPyBiZyArIDQwCisJOiAgIChiZyA+PSA4ICAmJiBiZyA8IDE2KSAgPyBiZyAtIDggKyAx MDAKKwk6ICAgKGJnID49IDE2ICYmIGJnIDwgMjU2KSA/IGJnCisJOiAwOworICAgICAgaWYgKGJn aSkKKwlTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9iZywgYmdpKTsKKyAgICB9CisgIGVsc2Ug aWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNjc3NzIxNikKKyAgICB7CisgICAgICAvKiBuZWVk IHRvIGNvbnZlcnQgZGVmYXVsdGVkIHZhbHVlcyB0byBwaXhlbCBpbmRpY2VzICovCisgICAgICBp ZiAoZmcgPT0gZmdfbm9ybWFsKSBmZyA9IGdldF9waXhlbChmZyk7CisgICAgICBpZiAoYmcgPT0g Ymdfbm9ybWFsKSBiZyA9IGdldF9waXhlbChiZyk7CisKKyAgICAgIC8qIGZnIGFuZCBiZyBhcmUg cGl4ZWwgdmFsdWVzIC0gZGVjb21wb3NlIHRvIHJnYiB0cmlwbGVzICovCisgICAgICB1bnNpZ25l ZCBsb25nIHJmID0gZmcvNjU1MzYsIGdmID0gKGZnLzI1NikmMjU1LCBiZiA9IGZnJjI1NTsKKyAg ICAgIHVuc2lnbmVkIGxvbmcgcmIgPSBiZy82NTUzNiwgZ2IgPSAoYmcvMjU2KSYyNTUsIGJiID0g YmcmMjU1OworICAgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfZmcsIHJmLCBnZiwgYmYp OworICAgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIHJiLCBnYiwgYmIpOworICAg IH0KKyAgdzMyY29uX3dyaXRlX3Z0X3NlcSAoc2VxKTsKK30KKworc3RhdGljIHZvaWQKK3R1cm5f b2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCit7CisgIHN0cnVjdCB0dHlf ZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkgKGYpOworICB3MzJjb25fd3JpdGVfdnRfc2Vx ICh0dHktPlRTX2V4aXRfYXR0cmlidXRlX21vZGUpOworfQorCisvKiByZXR1cm5zIHRoZSBwaXhl bCB2YWx1ZSBmb3IgdGhlIGdpdmVuIGluZGV4IGludG8gVlQgYmFzZSBjb2xvciBtYXAgKi8KK3N0 YXRpYyB1bnNpZ25lZCBsb25nIHBpeGVsX2NhY2hlWzE2XTsKK3N0YXRpYyB1bnNpZ25lZCBsb25n CitnZXRfcGl4ZWwgKHVuc2lnbmVkIGxvbmcgaW5kZXgpCit7CisgIHVuc2lnbmVkIGludCBpID0g KHVuc2lnbmVkIGludCkgaW5kZXg7CisgIGlmIChpID4gMTUpIHJldHVybiAwOworICBpZiAoaSA9 PSAwIHx8IHBpeGVsX2NhY2hlW2ldID4gMCkKKyAgICByZXR1cm4gcGl4ZWxfY2FjaGVbaV07CisK KyAgTGlzcF9PYmplY3QgcGl4ID0gc2FmZV9jYWxsbiAoUXczMmNvbl9nZXRfcGl4ZWwsIG1ha2Vf dWZpeG51bSAoaSkpOworICBwaXhlbF9jYWNoZVtpXSA9ICh1bnNpZ25lZCBsb25nKSBYVUZJWE5V TSAocGl4KTsKKyAgcmV0dXJuIHBpeGVsX2NhY2hlW2ldOworfQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6YXRpb24KKyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCiAvKiBUaGUgSU1FIHdpbmRvdyBpcyBuZWVkZWQgdG8gcmVjZWl2ZSB0aGUgc2Vzc2lv biBub3RpZmljYXRpb25zCiAgICByZXF1aXJlZCB0byByZXNldCB0aGUgbG93IGxldmVsIGtleWJv YXJkIGhvb2sgc3RhdGUuICAqLwogCkBAIC04MzQsNyArMTI1Niw3IEBAIGluaXRpYWxpemVfdzMy X2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQp CiAJR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8gKGN1cl9zY3JlZW4sICZpbmZvKTsKIAogCS8q IFNocmluayB0aGUgd2luZG93IGZpcnN0LCBzbyB0aGUgYnVmZmVyIGRpbWVuc2lvbnMgY2FuIGJl Ci0gICAgICAgICAgIHJlZHVjZWQgaWYgbmVjZXNzYXJ5LiAgKi8KKwkgICByZWR1Y2VkIGlmIG5l Y2Vzc2FyeS4gICovCiAJbmV3X3dpbl9kaW1zLlRvcCA9IDA7CiAJbmV3X3dpbl9kaW1zLkxlZnQg PSAwOwogCW5ld193aW5fZGltcy5Cb3R0b20gPSBtaW4gKG5ld19zaXplLlksIGluZm8uZHdTaXpl LlkpIC0gMTsKQEAgLTg0OSw2ICsxMjcxLDcgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3Ry dWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIAluZXdfd2luX2Rp bXMuQm90dG9tID0gbmV3X3NpemUuWSAtIDE7CiAJbmV3X3dpbl9kaW1zLlJpZ2h0ID0gbmV3X3Np emUuWCAtIDE7CiAJU2V0Q29uc29sZVdpbmRvd0luZm8gKGN1cl9zY3JlZW4sIFRSVUUsICZuZXdf d2luX2RpbXMpOworCiAgICAgICB9CiAgIH0KIApAQCAtODYxLDYgKzEyODQsOCBAQCBpbml0aWFs aXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAq aGVpZ2h0KQogICAgIH0KIAogICBjaGFyX2F0dHJfbm9ybWFsID0gaW5mby53QXR0cmlidXRlczsK KyAgZmdfbm9ybWFsID0gY2hhcl9hdHRyX25vcm1hbCAmIDB4MDAwZjsKKyAgYmdfbm9ybWFsID0g KGNoYXJfYXR0cl9ub3JtYWwgPj4gNCkgJiAweDAwMGY7CiAKICAgLyogRGV0ZXJtaW5lIGlmIHRo ZSBpbmZvIHJldHVybmVkIGJ5IEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvCiAgICAgIGlzIHJl YWxpc3RpYy4gIE9sZCBNUyBUZWxuZXQgc2VydmVycyB1c2VkIHRvIG9ubHkgZmlsbCBvdXQKQEAg LTkxNywxMyArMTM0MiwyMSBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWlu YWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQogfQogCiAKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3AgSW50ZXJmYWNlCisqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworLyogVE9ETyAtIG1pZ3JhdGUgdG8gVlQgc2VxdWVuY2VzICgyNTYgYW5kIDI0Yml0 IGNvbG9yKSAqLwogREVGVU4gKCJzZXQtc2NyZWVuLWNvbG9yIiwgRnNldF9zY3JlZW5fY29sb3Is IFNzZXRfc2NyZWVuX2NvbG9yLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogU2V0IHNjcmVlbiBm b3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KIAogQXJndW1lbnRzIHNob3VsZCBiZSBp bmRpY2VzIGJldHdlZW4gMCBhbmQgMTUsIHNlZSB3MzJjb25zb2xlLmVsLiAgKi8pCiAgIChMaXNw X09iamVjdCBmb3JlZ3JvdW5kLCBMaXNwX09iamVjdCBiYWNrZ3JvdW5kKQogewotICBjaGFyX2F0 dHJfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdyb3VuZCkgKyAoWEZJWE5BVCAoYmFja2dyb3VuZCkg PDwgNCk7CisKKyAgZmdfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdyb3VuZCk7CisgIGJnX25vcm1h bCA9IFhGSVhOQVQgKGJhY2tncm91bmQpOworICBjaGFyX2F0dHJfbm9ybWFsID0gZmdfbm9ybWFs ICsgKGJnX25vcm1hbCA8PCA0KTsKIAogICBGcmVjZW50ZXIgKFFuaWwsIFF0KTsKICAgcmV0dXJu IFF0OwpAQCAtOTM3LDggKzEzNzAsOCBAQCBTZWUgdzMyY29uc29sZS5lbCBhbmQgYHR0eS1kZWZp bmVkLWNvbG9yLWFsaXN0JyBmb3IgbWFwcGluZyBvZiBpbmRpY2VzCiB0byBjb2xvcnMuICAqLykK ICAgKHZvaWQpCiB7Ci0gIHJldHVybiBGY29ucyAobWFrZV9maXhudW0gKGNoYXJfYXR0cl9ub3Jt YWwgJiAweDAwMGYpLAotCQlGY29ucyAobWFrZV9maXhudW0gKChjaGFyX2F0dHJfbm9ybWFsID4+ IDQpICYgMHgwMDBmKSwgUW5pbCkpOworICByZXR1cm4gRmNvbnMgKG1ha2VfZml4bnVtIChmZ19u b3JtYWwpLAorCQlGY29ucyAobWFrZV9maXhudW0gKGJnX25vcm1hbCksIFFuaWwpKTsKIH0KIAog REVGVU4gKCJzZXQtY3Vyc29yLXNpemUiLCBGc2V0X2N1cnNvcl9zaXplLCBTc2V0X2N1cnNvcl9z aXplLCAxLCAxLCAwLApAQCAtOTU3LDE1ICsxMzkwLDMyIEBAIHZvaWQKIHN5bXNfb2ZfbnR0ZXJt ICh2b2lkKQogewogICBERUZWQVJfQk9PTCAoInczMi11c2UtZnVsbC1zY3JlZW4tYnVmZmVyIiwK LSAgICAgICAgICAgICAgIHczMl91c2VfZnVsbF9zY3JlZW5fYnVmZmVyLAotCSAgICAgICBkb2M6 IC8qIE5vbi1uaWwgbWVhbnMgbWFrZSB0ZXJtaW5hbCBmcmFtZXMgdXNlIHRoZSBmdWxsIHNjcmVl biBidWZmZXIgZGltZW5zaW9ucy4KKwkJdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIsCisJCWRv YzogLyogTm9uLW5pbCBtZWFucyBtYWtlIHRlcm1pbmFsIGZyYW1lcyB1c2UgdGhlIGZ1bGwgc2Ny ZWVuIGJ1ZmZlciBkaW1lbnNpb25zLgogVGhpcyBpcyBkZXNpcmFibGUgd2hlbiBydW5uaW5nIEVt YWNzIG92ZXIgdGVsbmV0LgogQSB2YWx1ZSBvZiBuaWwgbWVhbnMgdXNlIHRoZSBjdXJyZW50IGNv bnNvbGUgd2luZG93IGRpbWVuc2lvbnM7IHRoaXMKIG1heSBiZSBwcmVmZXJhYmxlIHdoZW4gd29y a2luZyBkaXJlY3RseSBhdCB0aGUgY29uc29sZSB3aXRoIGEgbGFyZ2UKIHNjcm9sbC1iYWNrIGJ1 ZmZlci4gICovKTsKICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIgPSAwOwogCisgIERFRlZB Ul9CT09MICgidzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcyIsCisJCXczMl91c2Vf dmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMsCisJCWRvYzogLyogSWYgbm9uLW5pbCB3MzIgY29u c29sZSB1c2VzIHRlcm1pbmFsIHNlcXVlbmNlcyBmb3Igc29tZSBvdXRwdXQgcHJvY2Vzc2luZy4K K1RoaXMgdmFyaWFibGUgaXMgc2V0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIGNhcGFiaWxp dGllcyBvZiB0aGUgdGVybWluYWwuCitJdCBkZXRlcm1pbmVzIHRoZSBudW1iZXIgYW5kIGluZGlj ZXMgb2YgY29sb3JzIHVzZWQgZm9yIGZhY2VzIGluIHRoZSB0ZXJtaW5hbC4KK0lmIHRoZSB0ZXJt aW5hbCBjYW5ub3QgaGFuZGxlIFZUIHNlcXVlbmNlcywgdGhlIHVwZGF0ZSBob29rIHRyaWdnZXJz IHJlY29tcHV0YXRpb24gb2YgZmFjZXMuCitTZWUgYHczMmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFt ZS1mYWNlcycsIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgc2V0dGluZyB0aGlzIHZhcmlh YmxlCittYW51YWxseSBpbiBhIHJ1bm5pbmcgc2Vzc2lvbi4gKi8pOworICB3MzJfdXNlX3ZpcnR1 YWxfdGVybWluYWxfc2VxdWVuY2VzID0gMDsKKworICBERUZTWU0gKFF3MzJjb25fc2V0X3VwX2lu aXRpYWxfZnJhbWVfZmFjZXMsCisJICAidzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2Vz Iik7CisKKyAgREVGU1lNIChRdzMyY29uX2dldF9waXhlbCwKKwkgICJ3MzJjb24tZ2V0LXBpeGVs Iik7CisKICAgZGVmc3ViciAoJlNzZXRfc2NyZWVuX2NvbG9yKTsKICAgZGVmc3ViciAoJlNnZXRf c2NyZWVuX2NvbG9yKTsKICAgZGVmc3ViciAoJlNzZXRfY3Vyc29yX3NpemUpOworCiB9CmRpZmYg LS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4IGFlZjQwYzM4ZTU0Li5kYzdm NDJiOThiYSAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTE3 MjM5LDggKzE3MjM5LDcgQEAgcmVkaXNwbGF5X2ludGVybmFsICh2b2lkKQogCSAgICAgYXJlYSwg ZGlzcGxheWluZyBhIGRpZmZlcmVudCBmcmFtZSBtZWFucyByZWRpc3BsYXkgdGhlCiAJICAgICB3 aG9sZSB0aGluZy4gICovCiAJICBTRVRfRlJBTUVfR0FSQkFHRUQgKHNmKTsKLSNpZiAhZGVmaW5l ZCBET1NfTlQgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYg IWRlZmluZWQgSEFWRV9BTkRST0lECiAJICBzZXRfdHR5X2NvbG9yX21vZGUgKEZSQU1FX1RUWSAo c2YpLCBzZik7CiAjZW5kaWYKIAl9Ci0tCjIuNDkuMAoK --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 6 Sep 2025 07:27:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 06 03:27:43 2025 Received: from localhost ([127.0.0.1]:33359 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uunKn-00039G-Nq for submit <at> debbugs.gnu.org; Sat, 06 Sep 2025 03:27:42 -0400 Received: from mout.gmx.net ([212.227.17.20]:57799) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1uunKe-000378-6o for 79298 <at> debbugs.gnu.org; Sat, 06 Sep 2025 03:27:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1757143631; x=1757748431; i=michael.albinus@HIDDEN; bh=A7yWSgLRpN/JOh35xYkzQQz48npzRyt3zQyGQeH9TuE=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=nNpTJaKaX3ZeEbDcUwcqrOfwRk1/fR6lS8F+ZHbc9zA3Y8FUDofELiNDG2aIeMaF Vhd0tfqcpYtrxxME55DHrX/P4TJTaWvbdNQoScaP2WVc1gIwlrsq868DRSdIhStI+ pVJvmbV1iWd8uq8qyShi0i89UYcSuw6+P3RBzRNd0OQjbNsUQAkthGBits+Nzva2E Q9aWlgSkC7k2joeFLgUintoF8N3EqQqNvWhTJ2D5b5s+DHu0dWn8D8U8cxbsZgjVB SmjPvjoTySEbQzkINIo90v2N0TysQgEU7OUCvncoxsh2CIifOn1EnXtkzbPjZtfYQ jA0K+nBD5ZpbXqDtzw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mof9F-1u5mKc03Vh-00qJd3; Sat, 06 Sep 2025 09:27:11 +0200 From: Michael Albinus <michael.albinus@HIDDEN> To: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal In-Reply-To: <ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> <868qiuk9jr.fsf@HIDDEN> <UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev> <864itijzmd.fsf@HIDDEN> <ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev> Date: Sat, 06 Sep 2025 09:27:10 +0200 Message-ID: <87qzwk2g8h.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:JtlxrVoIGSzcnSyJReuvI0jtayFdMXXrACYFtn1tGG7iLMNRBpJ hoTsZQI/BaYd9sQa8eq+xOf4k+ualnfQHYBCCLwpJNFXBuhe3glNsonA01ElEgrs6AGn1Jh 8Eg07B4NfxsNAZeAKxYf8WykweEmmpxQDYfxw9EniVWyA8Ou1q/9Q2Q1sKO4WWeK6+wq1Uu AHhWkKy/XqjaGRTRrwsFw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:O/KDzm4bNGk=;5rb0E4+Cncwq+BId7xrBc/igilo 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 dp1I9X5Wmg Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: Eli Zaretskii <eliz@HIDDEN>, 79298 <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 (-) Ewan via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN> writes: Hi, just a comment from the sideline: > diff --git a/etc/NEWS.30 b/etc/NEWS.30 > index dfe6c5cafe6..814ca843be5 100644 > --- a/etc/NEWS.30 > +++ b/etc/NEWS.30 > @@ -15,6 +15,35 @@ in older Emacs versions. > You can narrow news to a specific version by calling 'view-emacs-news' > with a prefix argument or by typing 'C-u C-h C-n'. > =20 > +=0C > +* Changes in Emacs 30.3 I might be wrong, but I believe the change is for master (Emacs 31.1). So pls modify etc/NEWS instead of etc/NEWS.30. Best cregards, Michael.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 5 Sep 2025 20:48:20 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 05 16:48:20 2025 Received: from localhost ([127.0.0.1]:57775 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uudM3-0001ZJ-SZ for submit <at> debbugs.gnu.org; Fri, 05 Sep 2025 16:48:20 -0400 Received: from mail-24421.protonmail.ch ([109.224.244.21]:54239) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uudLt-0001Yl-JV for 79298 <at> debbugs.gnu.org; Fri, 05 Sep 2025 16:48:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1757105281; x=1757364481; bh=PwQa20q67ZgVL2LohMwQf2WHHzKiEeR7+UP5YIRfAM4=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=M+MksaLi6TuG95asLWzzL2+tAYHS/gliJ8wAo+POYci3LzFRbpcVnV8sJzgWEP0Yl JtUjhKGkpfIQ5sIQPW0NvNfFhG4fZ2FTHM9xxbHqm77XzpVVp5uDsLvXcOkyTWQUYU x9sqs08bgbXiWqyXs82QPQjHPRM6ulvOKZGt1ZL4K05SqZc28Iyu5dqVFyaXKYgnaq /VoNspUjg/GgLvxtXCnhCHl257XmjOhdNRQSTavmrOS3RtMaz/38oYI4aRQnYh9Nt0 c6ma9h6OXM9gi5XO9dqrdZReykOrHfcnijwQT/XuKi0hrK7CnqmMl98C0cQ0Y8sV+L D1629m61RSDaw== Date: Fri, 05 Sep 2025 20:47:56 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <ASjdoVevEJL7XnTD074aIjMsPyCzNbnQilckAA-NPJIHfLKpBk8MvrVaoh6RFw_ow3eCEhsdUtsmekXfUvl-ssBAtIpeZNJ794Vxxx2mHu0=@etown.dev> In-Reply-To: <864itijzmd.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> <868qiuk9jr.fsf@HIDDEN> <UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev> <864itijzmd.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 9c22d08ca05e83b066a3fa9246a5bcd47bc66a72 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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 (-) --b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > Tell you what: why don't you post a patch that includes all we were > talking about, i.e. leaving most of the code not related to colors > unmodified and using the system cursor, and including the call to > hide/show the cursor modeled after what the Unix systems do, and we > then take it from there? Maybe I'm missing something important here, > but then I should be able to see if after applying the patch and > building Emacs. Sure -- attached. Just ignore the documentation, comments, and cruft=20 for now, I will clean it all up once we get this figured out. --b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4 Content-Type: application/octet-stream; name=0001-w32-Virtual-Terminal-Sequences-min.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-w32-Virtual-Terminal-Sequences-min.patch RnJvbSBhNzAzZTczZWUxY2IyN2ZhMmI0MjIwOTdhNGMwNDljZjMwODI4YTZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IEZyaSwg NSBTZXAgMjAyNSAxMzo0MDoxMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHczMiBWaXJ0dWFsIFRl cm1pbmFsIFNlcXVlbmNlcyAobWluKQoKLS0tCiBkb2MvZW1hY3MvY21kYXJncy50ZXhpICB8ICAg OSArLQogZG9jL2VtYWNzL21zZG9zLnRleGkgICAgfCAgNDggKysrKy0KIGV0Yy9ORVdTLjMwICAg ICAgICAgICAgIHwgIDI5ICsrKwogbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwgfCAgIDMgKy0KIGxp c3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTUyICsrKysrKysrKy0tLS0KIHNyYy90ZXJtLmMgICAg ICAgICAgICAgIHwgIDg1ICsrKysrKy0tCiBzcmMvdGVybWNoYXIuaCAgICAgICAgICB8ICAgMiAr CiBzcmMvdzMyY29uc29sZS5jICAgICAgICB8IDQ2OCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiBzcmMveGRpc3AuYyAgICAgICAgICAgICB8ICAgMiArLQogOSBmaWxl cyBjaGFuZ2VkLCA2NDUgaW5zZXJ0aW9ucygrKSwgMTUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCmluZGV4 IDc5YWUyZDA2NGQxLi5lZWQyNjNjMzkwNSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2NtZGFyZ3Mu dGV4aQorKysgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCkBAIC0xMDI0LDE5ICsxMDI0LDIyIEBA IGNvbG9yZWQgZGlzcGxheS4KIEBpdGVteCBhbnNpOAogVHVybiBvbiB0aGUgY29sb3Igc3VwcG9y dCB1bmNvbmRpdGlvbmFsbHksIGFuZCB1c2UgY29sb3IgY29tbWFuZHMKIHNwZWNpZmllZCBieSB0 aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZvciB0aGUgOCBzdGFuZGFyZCBjb2xvcnMuCitAaXRl bSAyNGJpdAorVHVybiBvbiBzdXBwb3J0IGZvciBhbGwgZGVmaW5lZCAyNC1iaXQgUkdCIGNvbG9y cyBpZiBhdmFpbGFibGUuCitDdXJyZW50bHkgdGhpcyBpcyBlZmZlY3RpdmUgb24gTVMtV2luZG93 cyAoMTArKSBvbmx5LgogQGl0ZW0gQHZhcntudW19CiBVc2UgY29sb3IgbW9kZSBmb3IgQHZhcntu dW19IGNvbG9ycy4gIElmIEB2YXJ7bnVtfSBpcyBAbWludXN7fTEsIHR1cm4gb2ZmCiBjb2xvciBz dXBwb3J0IChlcXVpdmFsZW50IHRvIEBzYW1we25ldmVyfSk7IGlmIGl0IGlzIDAsIHVzZSB0aGUK IGRlZmF1bHQgY29sb3Igc3VwcG9ydCBmb3IgdGhpcyB0ZXJtaW5hbCAoZXF1aXZhbGVudCB0byBA c2FtcHthdXRvfSk7CiBvdGhlcndpc2UgdXNlIGFuIGFwcHJvcHJpYXRlIHN0YW5kYXJkIG1vZGUg Zm9yIEB2YXJ7bnVtfSBjb2xvcnMuCiBEZXBlbmRpbmcgb24geW91ciB0ZXJtaW5hbCdzIGNhcGFi aWxpdGllcywgRW1hY3MgbWlnaHQgYmUgYWJsZSB0byB0dXJuCi1vbiBhIGNvbG9yIG1vZGUgZm9y IDgsIDE2LCA4OCwgb3IgMjU2IGFzIHRoZSB2YWx1ZSBvZiBAdmFye251bX0uICBJZgotdGhlcmUg aXMgbm8gbW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMsIEVtYWNzIGFjdHMgYXMg aWYKK29uIGEgY29sb3IgbW9kZSBmb3IgOCwgMTYsIDg4LCAyNTYsIG9yIDE2Nzc3MjE2IGFzIHRo ZSB2YWx1ZSBvZiBAdmFye251bX0uCitJZiB0aGVyZSBpcyBubyBtb2RlIHRoYXQgc3VwcG9ydHMg QHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgogQHZhcntudW19IHdlcmUgMCwgaS5l LiwgaXQgdXNlcyB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNvbG9yIHN1cHBvcnQKIG1vZGUuCiBA ZW5kIHRhYmxlCiAKLVRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMtV2luZG93cyBhbmQg TVMtRE9TLgorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1ET1MsIG5vciBNUy1XaW5k b3dzIHByaW9yIHRvIFdpbmRvd3MgMTAuCiAKIEBjaW5kZXggY29sb3JzIG9uIGNoYXJhY3RlciB0 ZXJtaW5hbCwgY2hhbmdpbmcgZHVyaW5nIHNlc3Npb24KIEBjaW5kZXggY2hhcmFjdGVyIHRlcm1p bmFsLCBjaGFuZ2UgY29sb3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL21zZG9zLnRleGkg Yi9kb2MvZW1hY3MvbXNkb3MudGV4aQppbmRleCBmOTcxNTFjNjMwZi4uY2Q4ZTMyMDI3YzcgMTAw NjQ0Ci0tLSBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCisrKyBiL2RvYy9lbWFjcy9tc2Rvcy50ZXhp CkBAIC0xMTY1LDcgKzExNjUsNyBAQCBhbnl3aGVyZSBlbHNlLgogICBUaGUgdmFyaWFibGUgQGNv ZGV7dzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldH0gaXMgYSBmbGFnIHRoYXQKIGRldGVybWlu ZXMgd2hldGhlciB0byBtYWtlIHRoZSBzeXN0ZW0gY2FyZXQgdmlzaWJsZS4gIFRoZSBkZWZhdWx0 IHdoZW4KIG5vIHNjcmVlbiByZWFkZXIgc29mdHdhcmUgaXMgaW4gdXNlIGlzIEBjb2Rle25pbH0s IHdoaWNoIG1lYW5zIEVtYWNzCi1kcmF3cyBpdHMgb3duIGN1cnNvciB0byBpbmRpY2F0ZSB0aGUg cG9zaXRpb24gb2YgcG9pbnQuICBBCitkcmF3cyBpdHMgb3duIGN1cnNvciB0byBpbmRpY2F0ZSB0 aGUgcG9zaXRpb24gb2YgcG9pbnQuIEEKIG5vbi1AY29kZXtuaWx9IHZhbHVlIG1lYW5zIEVtYWNz IHdpbGwgaW5kaWNhdGUgcG9pbnQgbG9jYXRpb24gd2l0aCB0aGUKIHN5c3RlbSBjYXJldDsgdGhp cyBmYWNpbGl0YXRlcyB1c2Ugb2Ygc2NyZWVuIHJlYWRlciBzb2Z0d2FyZSwgYW5kIGlzCiB0aGUg ZGVmYXVsdCB3aGVuIHN1Y2ggc29mdHdhcmUgaXMgZGV0ZWN0ZWQgd2hlbiBydW5uaW5nIEVtYWNz LgpAQCAtMTIwMCw2ICsxMjAwLDUyIEBAIHlvdSBzaG91bGQgc2V0IGl0cyB2YWx1ZSBpbiB5b3Vy IGluaXQgZmlsZSAoQHB4cmVme0luaXQgRmlsZX0pLCBlaXRoZXIKIGRpcmVjdGx5IG9yIHZpYSBA a2Jke00teCBjdXN0b21pemUtdmFyaWFibGV9LCB3aGljaCBsZXRzIHlvdSBzYXZlIHRoZQogY3Vz dG9taXplZCB2YWx1ZSwgc2VlIEByZWZ7U2F2aW5nIEN1c3RvbWl6YXRpb25zfS4KIAorQHZpbmRl eCB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCitAY2luZGV4IFdpbmRvd3MgVGVy bWluYWwsIFdpbmRvd3MgQ29uc29sZSwgTVMtV2luZG93cworICBUaGUgaW1wbGVtZW50YXRpb24g b2YgZGlzcGxheSBmdW5jdGlvbmFsaXR5IGZvciBXaW5kb3dzIENvbnNvbGUKK2RpZmZlcnMgZnJv bSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIG90aGVyIHRlcm1pbmFsIGVtdWxhdG9ycywKK2JlY2F1 c2UgaGlzdG9yaWNhbGx5LCBXaW5kb3dzIHJlcXVpcmVkIHVzZSBvZiBhbiBpZGlvc3luY3JhY3Rp YyBBUEkuCitUaGF0IEFQSSBsaW1pdGVkIFdpbmRvd3MgQ29uc29sZSBkaXNwbGF5IG9mIEVtYWNz IHRvIDE2IGJhc2ljIGNvbG9ycy4KK1dpdGggdGhlIGludHJvZHVjdGlvbiBvZiBXaW5kb3dzIFRl cm1pbmFsLCBNaWNyb3NvZnQgaW1wbGVtZW50ZWQKK3N1cHBvcnQgZm9yIEFTQ0lJIGNvbnRyb2wg c2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUgVlQxMDAgYW5kIFh0ZXJtLAorYW5kIDI0LWJpdCBS QkcgY29sb3IgZGlzcGxheS4KKworICBUaGUgdmFyaWFibGUgQGNvZGV7dzMyLXVzZS12aXJ0dWFs LXRlcm1pbmFsLXNlcXVlbmNlc30gZGV0ZXJtaW5lcword2hldGhlciB0aGlzIG5ld2VyIG1lY2hh bmlzbSBpcyB1c2VkIGZvciBkaXNwbGF5LCBvciB0aGUgb2xkZXIgb25lLiAKK0l0IGlzIGF1dG9t YXRpY2FsbHkgc2V0IGJhc2VkIG9uIHlvdXIgdGVybWluYWwncyBjYXBhYmlsaXRpZXMgb24gCitz dGFydHVwLiBJZiBpdCBpcyBub24tbmlsLCBFbWFjcyB3aWxsIHVzZSBBU0NJSSBlc2NhcGUgc2Vx dWVuY2VzIGZvciAKK2N1cnNvciBhbmQgY29sb3IgZGlzcGxheS4gQnkgZGVmYXVsdCwgMjQtYml0 IFJHQiBjb2xvciB3aWxsIGJlIHVzZWQsCitidXQgb3RoZXIgKDgsIDE2LCAyNTYpIGNvbG9yIHNw YWNlcyBtYXkgYmUgdXNlZCwgYnkgcGFzc2luZyB0aGUKK0Bjb2Rley0tY29sb3J9IGNvbW1hbmQg bGluZSBhcmd1bWVudCwgb3Igc2V0dGluZyB0aGUgdmFsdWUgb2YgdGhlCitAY29kZXt0dHktY29s b3ItbW9kZX0gZnJhbWUgcGFyYW1ldGVyLgorCisgIEFueSB0aW1lIEBjb2Rle3czMi11c2Utdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXN9IGlzIHNldCBtYW51YWxseSwKK3RoZSBjaGFuZ2UgaW4g dmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgY2FsbCB0bworQGNvZGV7 c2V0LWZyYW1lLXBhcmFtZXRlcn0gKHJlKXNldHRpbmcgQGNvZGV7J3R0eS1jb2xvci1tb2RlfSwg b3IKK2F0IHZlcnkgbGVhc3QsIGEgY2FsbCB0byBAY29kZXt3MzJjb24tc2V0LXVwLWluaXRpYWwt ZnJhbWUtZmFjZXN9LgorCisgIE9uZSBub3RlIG9uIHRoZSB0cmFuc2l0aW9uIGF3YXkgZnJvbSB0 aGUgb2xkIFdpbmRvd3MgQ29uc29sZSBBUEkuCitUVFkgRW1hY3MgdHJhZGl0aW9uYWxseSBsZWF2 ZXMgdGV4dCBjdXJzb3IgZGlzcGxheSB1cCB0byB0aGUgdGVybWluYWwuCitTY3JlZW4gdXBkYXRl cyB2aWEgdGhlIFdpbmRvd3MgQ29uc29sZSBBUEkgd2VyZSBwZXJmb3JtZWQgZGlyZWN0bHkgb24K K3JlZ2lvbnMgb2YgdGhlIHNjcmVlbiBidWZmZXIsIHdpdGhvdXQgYW55IG5lZWQgdG8gbW92ZSB0 aGUgY3Vyc29yIGR1cmluZworYSBkaXNwbGF5IHVwZGF0ZS4gVmlydHVhbCB0ZXJtaW5hbCBzZXF1 ZW5jZXMgcmVxdWlyZSBtb3ZpbmcgdGhlIGN1cnNvcgordG8gZXZlcnkgcG9pbnQgYXQgd2hpY2gg d2UgbmVlZCB0byB3cml0ZSBhIGNoYW5nZS4gVW5mb3J0dW5hdGVseSwgdGhlCitjb250ZW50IG9m IHRoZSBlY2hvIGFyZWEgY2hhbmdlcyBmcmVxdWVudGx5LCBhbmQgdXBkYXRlcyBhcmUgbm90IGFs d2F5cworcXVpY2sgZW5vdWdoIGZvciB0aGUgY3Vyc29yIG1vdmVtZW50IHRvIGJlIG1hZGUgaW1w ZXJjZXB0aWJsZS4gVGhpcworcHJlc2VudHMgYSBVWCBkaWxlbW1hLiBFaXRoZXIgd2UgKDEpIGhp ZGUgdGhlIGN1cnNvciBtb21lbnRhcmlseSB3aGVuZXZlcgoraXQgYGBqdW1wcycnIHRvIHRoZSBl Y2hvIGFyZWEsIHdoaWNoIG1hbmlmZXN0cyBpbiB0aGUgY3Vyc29yIGFwcGVhcmluZyB0bworYGBm bGlja2VyJycgaW4tcGxhY2UsIG9yICgyKSB3ZSBkb24ndCwgaW4gd2hpY2ggY2FzZSB0aGUgY3Vy c29yIGp1bXBzIHRvCisvIGZsYXNoZXMgaW4gdGhlIGVjaG8gYXJlYS4gV2UgZ2V0IHRocm91Z2gg dGhlIGhvcm5zIG9mIHRoZSBkaWxlbW1hIGJ5ICgzKQorYWx3YXlzIGhpZGluZyB0aGUgc3lzdGVt IGN1cnNvciwgYW5kIGhhdmluZyBFbWFjcyB0YWtlIG92ZXIgY3Vyc29yIGRpc3BsYXkuCisKKyAg QWZ0ZXIgdGhlIG1pZ3JhdGlvbiB0byB2aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlcyBFbWFjcyBk ZWZhdWx0cyB0byAoMyksCitidXQgbGVhdmVzICgyKSBhcyBhbiBvcHRpb24uIFdoZW4gQGNvZGV7 dzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldH0gaXMKK0Bjb2Rle25pbH0sIGEgc29saWQgbm9u LWJsaW5raW5nIHRleHQgY3Vyc29yIHdpbGwgZGlzcGxheWVkIChpbiB0aGUKKydjdXJzb3InIGZh Y2UpLiBXaGVuIGl0IGlzIG5vbi1AY29kZXtuaWx9LCBhIHN5c3RlbSBjdXJzb3Igd2lsbCBiZSBz aG93bgorKHBvc3NpYmx5IHdpdGggYSBzbGlnaHQgZmxpY2tlcikuIFRoaXMgY2hhbmdlIGlzIGlu ZGVwZW5kZW50IG9mCitAY29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzfSwg YnV0IHJlcXVpcmVkIGZvciBhIHNtb290aCBVWC4KKworCiBAaWZub3R0ZXgKIEBpbmNsdWRlIG1z ZG9zLXh0cmEudGV4aQogQGVuZCBpZm5vdHRleApkaWZmIC0tZ2l0IGEvZXRjL05FV1MuMzAgYi9l dGMvTkVXUy4zMAppbmRleCBkZmU2YzVjYWZlNi4uODE0Y2E4NDNiZTUgMTAwNjQ0Ci0tLSBhL2V0 Yy9ORVdTLjMwCisrKyBiL2V0Yy9ORVdTLjMwCkBAIC0xNSw2ICsxNSwzNSBAQCBpbiBvbGRlciBF bWFjcyB2ZXJzaW9ucy4KIFlvdSBjYW4gbmFycm93IG5ld3MgdG8gYSBzcGVjaWZpYyB2ZXJzaW9u IGJ5IGNhbGxpbmcgJ3ZpZXctZW1hY3MtbmV3cycKIHdpdGggYSBwcmVmaXggYXJndW1lbnQgb3Ig YnkgdHlwaW5nICdDLXUgQy1oIEMtbicuCiAKKwwKKyogQ2hhbmdlcyBpbiBFbWFjcyAzMC4zCisq KiBXaW5kb3dzIFRlcm1pbmFsIG5vdyBkaXNwbGF5cyAyNC1iaXQgUkdCLgorUHJldmlvdXNseSwg dGVybWluYWwgc2Vzc2lvbnMgaW4gV2luZG93cyBUZXJtaW5hbCBhbmQgV2luZG93cyBDb25zb2xl CitzdXBwb3J0ZWQgZGlzcGxheSBvZiAxNiBjb2xvcnMsIHZpYSB0aGUgV2luZG93cyBDb25zb2xl IEFQSS4gVGhlcmUgaXMKK25vdyBzdXBwb3J0IGluIFdpbmRvd3MgVGVybWluYWwgZm9yIDI1NiBh bmQgMjQtYml0IFJHQiBjb2xvciwgYnkKK2VtaXR0aW5nIEFTQ0lJIGNvbnRyb2wgc2VxdWVuY2Vz IChtb2RlbGxlZCBvbiBWVDEwMCBhbmQgWHRlcm0pLgorQ3Vyc29yIG1vdmVtZW50IC8gZGlzcGxh eSBoYXMgYWxzbyBiZWVuIChyZS0paW1wbGVtZW50ZWQuIFRoaXMgYWxpZ25zCit3aXRoIE1pY3Jv c29mdCdzIGxvbmctdGVybSByb2FkbWFwIGFuZCBpcyBhIGZpcnN0IHN0ZXAgaW4gbW92aW5nIEVt YWNzCit0ZXJtaW5hbCBzZXNzaW9ucyBvdmVyIHRvIHRoZSBuZXdlciBXaW5kb3dzIFRlcm1pbmFs IGludGVyZmFjZS4KKworVGhlIG5ldyBtZWNoYW5pc20gd2lsbCBiZSBlbmFibGVkIGF1dG9tYXRp Y2FsbHkgd2hlbiBzdXBwb3J0ZWQuCitJdCBkZWZhdWx0cyB0byAyNC1iaXQgUkdCIGNvbG9yLCBi dXQgY2FuIGJlIHNldCB0byA4LCAxNiwgMjU2LCBvcgorJzI0Yml0JyBieSBwYXNzaW5nIHRoZSAn LS1jb2xvcicgZmxhZyBvciBzZXR0aW5nIHRoZSAndHR5LWNvbG9yLW1vZGUnCitmcmFtZSBwYXJh bWV0ZXIuIEl0IGNhbiBiZSBkaXNhYmxlZC9lbmFibGVkIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxl CisndzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcycuIFRoZSBvbGRlciAoMTYtY29s b3IpIGludGVyZmFjZQord2lsbCBzdGlsbCBiZSB1c2VkIGluIFdpbmRvd3MgQ29uc29sZSBhbmQg b24gcHJlLVdpbjEwIHN5c3RlbXMuCisKKyoqIEVtYWNzIG5vdyBoYW5kbGVzIHRleHQgY3Vyc29y IGRpc3BsYXkgaW4gV2luZG93cyBUZXJtaW5hbC9Db25zb2xlLgorUHJldmlvdXNseSwgd2hlbiBy dW5uaW5nIGluIFdpbmRvd3MgVGVybWluYWwvQ29uc29sZSwgRW1hY3MgZGVsZWdhdGVkCit0ZXh0 IGN1cnNvciBkaXNwbGF5IHRvIHRoZSBzeXN0ZW0gKGFzIG9uIG90aGVyIFRUWXMpLiBUbyBlbmFi bGUgYQorc21vb3RoIFVYIGZvbGxvd2luZyB0aGUgbWlncmF0aW9uIHRvIEFTQ0lJIGNvbnRyb2wg c2VxdWVuY2VzIChzZWUgYWJvdmUpLAorY3Vyc29yIGRpc3BsYXkgaXMgbm93IC0tIG9wdGlvbmFs bHksIGJ1dCBieSBkZWZhdWx0IC0tIGhhbmRsZWQgYnkgRW1hY3MuCitXaGVuICd3MzItdXNlLXZp c2libGUtc3lzdGVtLWNhcmV0JyBpcyBuaWwsIGEgc29saWQgbm9uLWJsaW5raW5nIHRleHQKK2N1 cnNvciB3aWxsIGRpc3BsYXllZCAoaW4gdGhlICdjdXJzb3InIGZhY2UpLiBXaGVuIGl0IGlzIHNl dCB0byBub24tbmlsLAordGhlIHN5c3RlbSBjdXJzb3Igd2lsbCBiZSBzaG93bi4KKworU2VlIHRo ZSBtYW51YWwgZW50cnkgc3BlY2lmaWMgdG8gTVMtV2luZG93cyBmb3IgbW9yZSBkZXRhaWxzLgor CiAMCiAqIENoYW5nZXMgaW4gRW1hY3MgMzAuMgogRW1hY3MgMzAuMiBpcyBhIGJ1Zy1maXggcmVs ZWFzZSB3aXRoIG5vIG5ldyBmZWF0dXJlcy4KZGlmZiAtLWdpdCBhL2xpc3AvdGVybS90dHktY29s b3JzLmVsIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKaW5kZXggZGZkMjA3ZDcxYzEuLjFiYTA0 NWM4YjcxIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdHR5LWNvbG9ycy5lbAorKysgYi9saXNwL3Rl cm0vdHR5LWNvbG9ycy5lbApAQCAtNzY0LDcgKzc2NCw4IEBACiAgICAgKGF1dG8gLiAwKQogICAg IChhbnNpOCAuIDgpCiAgICAgKGFsd2F5cyAuIDgpCi0gICAgKHllcyAuIDgpKQorICAgICh5ZXMg LiA4KQorICAgICgyNGJpdCAuIDE2Nzc3MjE2KSkKICAgIkFuIGFsaXN0IG9mIHN1cHBvcnRlZCBz dGFuZGFyZCB0dHkgY29sb3IgbW9kZXMgYW5kIHRoZWlyIGFsaWFzZXMuIikKIAogKGRlZnVuIHR0 eS1jb2xvci1hbGlzdCAoJm9wdGlvbmFsIF9mcmFtZSkKZGlmZiAtLWdpdCBhL2xpc3AvdGVybS93 MzJjb25zb2xlLmVsIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKaW5kZXggMWI0NGRhNDhiZjcu LjdhMjYyMDk3NDkyIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAorKysgYi9s aXNwL3Rlcm0vdzMyY29uc29sZS5lbApAQCAtMjQsOCArMjQsNyBAQAogCiA7OzsgQ29kZToKIAot OzsgVzMyIHVzZXMgZGlmZmVyZW50IGNvbG9yIGluZGV4ZXMgdGhhbiBzdGFuZGFyZDoKLQorOzsg VzMyIHVzZXMgZGlmZmVyZW50IGNvbG9yIGluZGV4ZXMgdGhhbiBzdGFuZGFyZAogKGRlZnZhciB3 MzItdHR5LXN0YW5kYXJkLWNvbG9ycwogICAnKCgiYmxhY2siICAgICAgICAgIDAgICAgIDAgICAg IDAgICAgIDApCiAgICAgKCJibHVlIiAgICAgICAgICAgMSAgICAgMCAgICAgMCA1MjQ4MCkgOyBN ZWRpdW1CbHVlCkBAIC00Myw1NiArNDIsMTMzIEBACiAgICAgKCJsaWdodG1hZ2VudGEiICAxMyA2 NTUzNSAgICAgMCA2NTUzNSkgOyBNYWdlbnRhCiAgICAgKCJ5ZWxsb3ciICAgICAgICAxNCA2NTUz NSA2NTUzNSAgICAgMCkgOyBZZWxsb3cKICAgICAoIndoaXRlIiAgICAgICAgIDE1IDY1NTM1IDY1 NTM1IDY1NTM1KSkKLSJBIGxpc3Qgb2YgVkdBIGNvbnNvbGUgY29sb3JzLCB0aGVpciBpbmRpY2Vz IGFuZCAxNi1iaXQgUkdCIHZhbHVlcy4iKQorICAiQSBsaXN0IG9mIFZHQSBjb25zb2xlIGNvbG9y cywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKKworOzsgV2hlbiB1c2lu ZyBWVCBzZXF1ZW5jZXMgZm9yIGNvbG9yLCB1c2UgeHRlcm0tbGlrZSBpbmRpY2VzCisoZGVmdmFy IHczMi10dHktdmlydHVhbC10ZXJtaW5hbC1iYXNlLWNvbG9ycworICAnKCgiYmxhY2siICAgICAg ICAgIDAgICAgIDAgICAgIDAgICAgIDApCisgICAgKCJyZWQiICAgICAgICAgICAgMSA0NTU2OCAg ODcwNCAgODcwNCkgOyBGaXJlQnJpY2sKKyAgICAoImdyZWVuIiAgICAgICAgICAyICA4NzA0IDM1 NTg0ICA4NzA0KSA7IEZvcmVzdEdyZWVuCisgICAgKCJicm93biIgICAgICAgICAgMyA0MDk2MCAy MDk5MiAxMTUyMCkgOyBTaWVubmEKKyAgICAoImJsdWUiICAgICAgICAgICA0ICAgICAwICAgICAw IDUyNDgwKSA7IE1lZGl1bUJsdWUKKyAgICAoIm1hZ2VudGEiICAgICAgICA1IDM1NTg0ICAgICAw IDM1NTg0KSA7IERhcmtNYWdlbnRhCisgICAgKCJjeWFuIiAgICAgICAgICAgNiAgICAgMCA1Mjcz NiA1MzUwNCkgOyBEYXJrVHVycXVvaXNlCisgICAgKCJsaWdodGdyYXkiICAgICAgNyA0ODY0MCA0 ODY0MCA0ODY0MCkgOyBHcmF5CisgICAgKCJkYXJrZ3JheSIgICAgICAgOCAyNjExMiAyNjExMiAy NjExMikgOyBHcmF5NDAKKyAgICAoImxpZ2h0cmVkIiAgICAgICA5IDY1NTM1ICAgICAwICAgICAw KSA7IFJlZAorICAgICgibGlnaHRncmVlbiIgICAgMTAgICAgIDAgNjU1MzUgICAgIDApIDsgR3Jl ZW4KKyAgICAoInllbGxvdyIgICAgICAgIDExIDY1NTM1IDY1NTM1ICAgICAwKSA7IFllbGxvdwor ICAgICgibGlnaHRibHVlIiAgICAgMTIgICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQorICAgICgi bGlnaHRtYWdlbnRhIiAgMTMgNjU1MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQorICAgICgibGln aHRjeWFuIiAgICAgMTQgICAgIDAgNjU1MzUgNjU1MzUpIDsgQ3lhbgorICAgICgid2hpdGUiICAg ICAgICAgMTUgNjU1MzUgNjU1MzUgNjU1MzUpKQorICAiQSBsaXN0IG9mIFZHQSBjb25zb2xlIGNv bG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKIAogKGRlY2xhcmUt ZnVuY3Rpb24geC1zZXR1cC1mdW5jdGlvbi1rZXlzICJ0ZXJtL2NvbW1vbi13aW4iIChmcmFtZSkp CiAoZGVjbGFyZS1mdW5jdGlvbiBnZXQtc2NyZWVuLWNvbG9yICJ3MzJjb25zb2xlLmMiICgpKQog KGRlY2xhcmUtZnVuY3Rpb24gdzMyLWdldC1jb25zb2xlLWNvZGVwYWdlICJ3MzJwcm9jLmMiICgp KQogKGRlY2xhcmUtZnVuY3Rpb24gdzMyLWdldC1jb25zb2xlLW91dHB1dC1jb2RlcGFnZSAidzMy cHJvYy5jIiAoKSkKIAorKGRlZnVuIHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMgKCkKKyAgIkRl ZmluZXMgYmFzZSAxNi1jb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0KiAoKGNv bG9ycyAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworICAgICAgICAgICAg ICAgICAgICAgdzMyLXR0eS12aXJ0dWFsLXRlcm1pbmFsLWJhc2UtY29sb3JzCisgICAgICAgICAg ICAgICAgICAgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpKQorICAgICAgICAgKG5iYXNlIChsZW5n dGggY29sb3JzKSkKKyAgICAgICAgIChjb2xvciAoY2FyIGNvbG9ycykpKQorICAgIChwcm9nbiAo d2hpbGUgY29sb3JzCisgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjb2xvcikg KGNhZHIgY29sb3IpIChjZGRyIGNvbG9yKSkKKyAgICAgICAgICAgICAoc2V0cSBjb2xvcnMgKGNk ciBjb2xvcnMpCisgICAgICAgICAgICAgICAgICAgY29sb3IgIChjYXIgY29sb3JzKSkpCisgICAg ICAgICAgIG5iYXNlKSkpCisKKzs7IE5vdGU6IHR0eS1jb2xvci1kZWZpbmUgc3dhcHMgcGFzc2Vk IGluZGV4IGZvciBwaXhlbCBvbiAyNGJpdCB0ZXJtaW5hbAorOzsgU28sIHdlIG5lZWQgdGhpcyBm dW5jdGlvbiB0byAicmVjb3ZlciIgdGhlIHRlcm1pbmFsJ3MgbmF0aXZlIG1hcHBpbmcKKyhkZWZ1 biB3MzJjb24tZ2V0LXBpeGVsIChpbmRleCkKKyAgIkNvbnZlcnQgYSBiYXNlLWNvbG9yIGluZGV4 IGludG8gYSBwaXhlbCAoaW5kZXggaW50byAyNGJpdCBtYXApIgorICAobGV0ICgoY29sb3IgKG50 aCBpbmRleCB3MzItdHR5LXZpcnR1YWwtdGVybWluYWwtYmFzZS1jb2xvcnMpKSkKKyAgICAob3Ig KHR0eS1jb2xvci0yNGJpdCAoY2RkciBjb2xvcikpIGluZGV4KSkpCisKKyhkZWZ1biB3MzJjb24t ZGVmaW5lLTI1Ni1jb2xvcnMgKCkKKyAgIkRlZmluZXMgMjU2LWNvbG9yIHNwYWNlIGZvciB3MzIg Y29uc29sZS4iCisgIChsZXQgKChyIDApIChiIDApIChnIDApCisgICAgICAgIChuICgtIDI1NiAo dzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVydC10by0xNmJpdCAo bGFtYmRhIChwcmltKSAobG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQorICAgICh3aGlsZSAo PiBuIDI0KSA7IG5vbi1ncmV5CisgICAgICAobGV0ICgoaSAoLSAyNTYgbikpCisgICAgICAgICAg ICAoYyAobWFwY2FyIGNvbnZlcnQtdG8tMTZiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG1h cGNhciAobGFtYmRhICh4KSAoaWYgKHplcm9wIHgpIDAgKCsgKCogeCA0MCkgNTUpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCByIGcgYikpKSkpCisgICAgICAgICh0dHkt Y29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEgYiAo MSsgYikpCisgICAgICAod2hlbiAoPiBiIDUpIChzZXRxIGcgKDErIGcpIGIgMCkpCisgICAgICAo d2hlbiAoPiBnIDUpIChzZXRxIHIgKDErIHIpIGcgMCkpCisgICAgICAoc2V0cSBuICgxLSBuKSkp CisgICAgKHdoaWxlICg+IG4gMCkgOyBhbGwtZ3JleQorICAgICAgKGxldCogKChpICgtIDI1NiBu KSkKKyAgICAgICAgICAgICAodiAoZnVuY2FsbCBjb252ZXJ0LXRvLTE2Yml0ICgrIDggKCogKC0g MjQgbikgMTApKSkpCisgICAgICAgICAgICAgKGMgKGxpc3QgdiB2IHYpKSkKKyAgICAgICAgKHR0 eS1jb2xvci1kZWZpbmUgKGZvcm1hdCAiY29sb3ItJWQiIGkpIGkgYykpCisgICAgICAoc2V0cSBu ICgxLSBuKSkpKSkKKworKGRlZnVuIHczMmNvbi1kZWZpbmUtMjRiaXQtY29sb3JzICgpCisgICJE ZWZpbmVzIDI0LWJpdCBjb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0ICgoaSAo dzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgIChtYXBjIChsYW1iZGEgKGMpICh1bmxl c3MgKGFzc29jIChjYXIgYykgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCisgICAgICAgICAgICAg ICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjKSBpIChjZHIgYykpCisgICAgICAgICAgICAg ICAgICAgKHNldHEgaSAoMSsgaSkpKSkKKyAgICAgICAgICBjb2xvci1uYW1lLXJnYi1hbGlzdCkp KQorCiAoZGVmdW4gdGVybWluYWwtaW5pdC13MzJjb25zb2xlICgpCiAgICJUZXJtaW5hbCBpbml0 aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdzMyIGNvbnNvbGUuIgogICA7OyBTaGFyZSBmdW5jdGlv biBrZXkgaW5pdGlhbGl6YXRpb24gd2l0aCB3MzIgZ3VpIGZyYW1lcwogICAoeC1zZXR1cC1mdW5j dGlvbi1rZXlzIChzZWxlY3RlZC1mcmFtZSkpCiAgIDs7IFNldCB0ZXJtaW5hbCBhbmQga2V5Ym9h cmQgZW5jb2RpbmdzIHRvIHRoZSBjdXJyZW50IE9FTSBjb2RlcGFnZS4KICAgKGxldCAoKG9lbS1j b2RlLXBhZ2UtY29kaW5nCi0JIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29s ZS1jb2RlcGFnZSkpKSkKLQkob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nCi0JIChpbnRlcm4g KGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UpKSkpCi0Jb2Vt LWNzLXAgb2VtLW8tY3MtcCkKLQkoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1j b2RlLXBhZ2UtY29kaW5nKSkKLQkoc2V0cSBvZW0tby1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2Vt LWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKLQkod2hlbiBvZW0tY3MtcAotCSAgKHNldC1rZXli b2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQotCSAgKHNldC10ZXJtaW5h bC1jb2Rpbmctc3lzdGVtCi0JICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQt Y29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKLSAgICAgICAgICA7OyBTaW5jZSB3ZSBjaGFu Z2VkIHRoZSB0ZXJtaW5hbCBlbmNvZGluZywgd2UgbmVlZCB0byByZXBlYXQKLSAgICAgICAgICA7 OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFibGUuCi0gICAgICAg ICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKLSAgKGxldCogKChjb2xvcnMgdzMy LXR0eS1zdGFuZGFyZC1jb2xvcnMpCi0gICAgICAgICAoY29sb3IgKGNhciBjb2xvcnMpKSkKLSAg ICAodHR5LWNvbG9yLWNsZWFyKQotICAgICh3aGlsZSBjb2xvcnMKLSAgICAgICh0dHktY29sb3It ZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikpCi0gICAgICAoc2V0 cSBjb2xvcnMgKGNkciBjb2xvcnMpCi0gICAgICAgICAgICBjb2xvciAoY2FyIGNvbG9ycykpKSkK LSAgKGNsZWFyLWZhY2UtY2FjaGUpCi0gIDs7IEZpZ3VyZSBvdXQgd2hhdCBhcmUgdGhlIGNvbG9y cyBvZiB0aGUgY29uc29sZSB3aW5kb3csIGFuZCBzZXQgdXAKLSAgOzsgdGhlIGJhY2tncm91bmQt bW9kZSBjb3JyZXNwb25kaW5nbHkuCi0gIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2NyZWVu LWNvbG9yKSkKLQkgKGJnIChjYWRyIHNjcmVlbi1jb2xvcikpCi0JIChkZXNjciAodHR5LWNvbG9y LWJ5LWluZGV4IGJnKSkKLQkgciBnIGIgYmctbW9kZSkKLSAgICAoc2V0cSByIChudGggMiBkZXNj cikKLQkgIGcgKG50aCAzIGRlc2NyKQotCSAgYiAobnRoIDQgZGVzY3IpKQotICAgIChpZiAoPCAo KyByIGcgYikgKCogLjYgKCsgNjU1MzUgNjU1MzUgNjU1MzUpKSkKLQkoc2V0cSBiZy1tb2RlICdk YXJrKQotICAgICAgKHNldHEgYmctbW9kZSAnbGlnaHQpKQotICAgIChzZXQtdGVybWluYWwtcGFy YW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKQotICAodHR5LXNldC11cC1pbml0 aWFsLWZyYW1lLWZhY2VzKQorICAgICAgICAgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdl dC1jb25zb2xlLWNvZGVwYWdlKSkpKQorICAgICAgICAob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29k aW5nCisgICAgICAgICAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0 cHV0LWNvZGVwYWdlKSkpKQorICAgICAgICBvZW0tY3MtcCBvZW0tby1jcy1wKQorICAgIChzZXRx IG9lbS1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAgIChz ZXRxIG9lbS1vLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rp bmcpKQorICAgICh3aGVuIG9lbS1jcy1wCisgICAgICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0 ZW0gb2VtLWNvZGUtcGFnZS1jb2RpbmcpCisgICAgICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0 ZW0KKyAgICAgICAoaWYgb2VtLW8tY3MtcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2Vt LWNvZGUtcGFnZS1jb2RpbmcpKQorICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWlu YWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0CisgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5p Y29kZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFibGUuCisgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVv dGUtZGlzcGxheSkpKQorICAodzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzKQogICAo cnVuLWhvb2tzICd0ZXJtaW5hbC1pbml0LXczMi1ob29rKSkKIAorKGRlZnVuIHczMmNvbi1zZXQt dXAtaW5pdGlhbC1mcmFtZS1mYWNlcyAoKQorICAiU2V0IHVwIGluaXRpYWwgZmFjZSBjb2xvciBz Y2hlbWUgZHluYW1pY2FsbHkgYmFzZWQgb24gdGhlIG51bWJlciBvZgorZGlzcGxheSBjb2xvcnMg YW5kIHRoZSB2YWx1ZSBvZiBgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcycuIgor ICAodHR5LWNvbG9yLWNsZWFyKQorICAobGV0ICgobmNvbG9ycyAoZGlzcGxheS1jb2xvci1jZWxs cykpKQorICAgIChpZiB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCisgICAgICAg IChjb25kICgoPSBuY29sb3JzIDE2Nzc3MjE2KSAodzMyY29uLWRlZmluZS0yNGJpdC1jb2xvcnMp KQorICAgICAgICAgICAgICAoKD0gbmNvbG9ycyAyNjUgICAgICAgKHczMmNvbi1kZWZpbmUtMjU2 LWNvbG9ycykpKQorICAgICAgICAgICAgICAodCAgICAgICAgICAgICAgICAgICAgKHczMmNvbi1k ZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAgICh3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzKSkK KyAgICAoY2xlYXItZmFjZS1jYWNoZSkKKyAgICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBj b2xvcnMgb2YgdGhlIGNvbnNvbGUgd2luZG93LCBhbmQgc2V0IHVwCisgICAgOzsgdGhlIGJhY2tn cm91bmQtbW9kZSBjb3JyZXNwb25kaW5nbHkuCisgICAgKGxldCogKChzY3JlZW4tY29sb3IgKGdl dC1zY3JlZW4tY29sb3IpKQorICAgICAgICAgICAoYmFzZS1pbmRleCAoY2FkciBzY3JlZW4tY29s b3IpKQorICAgICAgICAgICAoYmctcGl4ZWwgKHczMmNvbi1nZXQtcGl4ZWwgYmFzZS1pbmRleCkp CisgICAgICAgICAgIChiZyAoaWYgKD0gbmNvbG9ycyAxNjc3NzIxNikgYmctcGl4ZWwgYmFzZS1p bmRleCkpCisgICAgICAgICAgIChkZXNjciAodHR5LWNvbG9yLWJ5LWluZGV4IGJnKSkKKyAgICAg ICAgICAgciBnIGIgYmctbW9kZSkKKyAgICAgIChzZXRxIHIgKG50aCAyIGRlc2NyKQorICAgICAg ICAgICAgZyAobnRoIDMgZGVzY3IpCisgICAgICAgICAgICBiIChudGggNCBkZXNjcikpCisgICAg ICAoaWYgKDwgKCsgciBnIGIpICgqIC42ICgrIDY1NTM1IDY1NTM1IDY1NTM1KSkpCisgICAgICAg ICAgKHNldHEgYmctbW9kZSAnZGFyaykKKyAgICAgICAgKHNldHEgYmctbW9kZSAnbGlnaHQpKQor ICAgICAgKHNldC10ZXJtaW5hbC1wYXJhbWV0ZXIgbmlsICdiYWNrZ3JvdW5kLW1vZGUgYmctbW9k ZSkpKQorICAodHR5LXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzKSkKKwogKHByb3ZpZGUgJ3Rl cm0vdzMyY29uc29sZSkKIAogOzs7IHczMmNvbnNvbGUuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQg YS9zcmMvdGVybS5jIGIvc3JjL3Rlcm0uYwppbmRleCBhMWUzZjYzMTJjNi4uNmMzMTE2ZjdmY2Ug MTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rlcm0uYwpAQCAtNzMsNyArNzMsNiBA QCBzdGF0aWMgdm9pZCBjbGVhcl90dHlfaG9va3MgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwp Owogc3RhdGljIHZvaWQgc2V0X3R0eV9ob29rcyAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCk7 CiBzdGF0aWMgdm9pZCBkaXNzb2NpYXRlX2lmX2NvbnRyb2xsaW5nX3R0eSAoaW50IGZkKTsKIHN0 YXRpYyB2b2lkIGRlbGV0ZV90dHkgKHN0cnVjdCB0ZXJtaW5hbCAqKTsKLQogI2VuZGlmIC8qICFI QVZFX0FORFJPSUQgKi8KIAogc3RhdGljIEFWT0lEIG1heWJlX2ZhdGFsIChib29sLCBzdHJ1Y3Qg dGVybWluYWwgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCkBAIC0zNDYsMTAgKzM0NSwx MCBAQCB0dHlfaGlkZV9jdXJzb3IgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkpCiB7CiAg IGlmICh0dHktPmN1cnNvcl9oaWRkZW4gPT0gMCkKICAgICB7Ci0gICAgICB0dHktPmN1cnNvcl9o aWRkZW4gPSAxOwogI2lmZGVmIFdJTkRPV1NOVAogICAgICAgdzMyY29uX2hpZGVfY3Vyc29yICgp OwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiAgICAgICBPVVRQVVRfSUYg KHR0eSwgdHR5LT5UU19jdXJzb3JfaW52aXNpYmxlKTsKICNlbmRpZgogICAgIH0KQEAgLTM2Mywx MCArMzYyLDEwIEBAIHR0eV9zaG93X2N1cnNvciAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0 eSkKIHsKICAgaWYgKHR0eS0+Y3Vyc29yX2hpZGRlbikKICAgICB7Ci0gICAgICB0dHktPmN1cnNv cl9oaWRkZW4gPSAwOwogI2lmZGVmIFdJTkRPV1NOVAogICAgICAgdzMyY29uX3Nob3dfY3Vyc29y ICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRlbiA9IDA7CiAgICAgICBPVVRQVVRf SUYgKHR0eSwgdHR5LT5UU19jdXJzb3Jfbm9ybWFsKTsKICAgICAgIGlmICh2aXNpYmxlX2N1cnNv cikKICAgICAgICAgT1VUUFVUX0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX3Zpc2libGUpOwpAQCAt MjIwNyw3ICsyMjA2LDcgQEAgVEVSTUlOQUwgZG9lcyBub3QgcmVmZXIgdG8gYSB0ZXh0IHRlcm1p bmFsLiAgKi8pCiAgIHJldHVybiBtYWtlX2ZpeG51bSAodCA/IHQtPmRpc3BsYXlfaW5mby50dHkt PlROX21heF9jb2xvcnMgOiAwKTsKIH0KIAotI2lmICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5l ZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJP SUQKIAogLyogRGVjbGFyZSBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBmdW5jdGlvbiwgYXMgaW4g dGhlIHJlc3Qgb2YgRW1hY3MsCiAgICB0byB3b3JrIGFyb3VuZCBhbiBIUFVYIGNvbXBpbGVyIGJ1 ZyAoPykuIFNlZQpAQCAtMjI0Niw3ICsyMjQ1LDcgQEAgdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJp bGl0aWVzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBib29sIHNhdmUpCiAgICBNT0RF J3MgdmFsdWUgaXMgZ2VuZXJhbGx5IHRoZSBudW1iZXIgb2YgY29sb3JzIHdoaWNoIHdlIHdhbnQg dG8KICAgIHN1cHBvcnQ7IHplcm8gbWVhbnMgc2V0IHVwIGZvciB0aGUgZGVmYXVsdCBjYXBhYmls aXRpZXMsIHRoZSBvbmVzCiAgICB3ZSBzYXcgYXQgaW5pdF90dHkgdGltZTsgLTEgbWVhbnMgdHVy biBvZmYgY29sb3Igc3VwcG9ydC4gICovCi1zdGF0aWMgdm9pZAordm9pZAogdHR5X3NldHVwX2Nv bG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpCiB7CiAgIC8qIENh bm9uaWNhbGl6ZSBhbGwgbmVnYXRpdmUgdmFsdWVzIG9mIE1PREUuICAqLwpAQCAtMjI2NCwxOCAr MjI2Myw0MiBAQCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5 LCBpbnQgbW9kZSkKICAgICAgIGRlZmF1bHQ6CiAJdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0 aWVzICh0dHksIDApOwogCWJyZWFrOwotICAgICAgY2FzZSA4OgkvKiA4IHN0YW5kYXJkIEFOU0kg Y29sb3JzICovCi0JdHR5LT5UU19vcmlnX3BhaXIgPSAiXDAzM1swbSI7CisgICAgICBjYXNlIDg6 IC8qIDggc3RhbmRhcmQgQU5TSSBjb2xvcnMgKi8KKwl0dHktPlRTX29yaWdfcGFpciA9ICJceDFi WzBtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMyVkbSI7CisJdHR5LT5UU19z ZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlZG0iOwogI2lmZGVmIFRFUk1JTkZPCi0JdHR5LT5UU19z ZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlcDElZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tncm91bmQg PSAiXDAzM1s0JXAxJWRtIjsKLSNlbHNlCi0JdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMz WzMlZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0JWRtIjsKKwl0dHktPlRT X3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMyVwMSVkbSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3Vu ZCA9ICJceDFiWzQlcDElZG0iOworI2VuZGlmCisjaWZkZWYgV0lORE9XU05UCisJdHR5LT5UU19v cmlnX3BhaXIgPSAiXHgxYlszOW1ceDFiWzQ5bSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9 ICJceDFiWyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYlslbHVtIjsKICNl bmRpZgogCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDg7CiAJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9 IDA7CiAJYnJlYWs7CisjaWZkZWYgV0lORE9XU05UCisgICAgICBjYXNlIDE2OgorCXR0eS0+VFNf c2V0X2ZvcmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0g Ilx4MWJbJWx1bSI7CisJdHR5LT5UTl9tYXhfY29sb3JzID0gMTY7CisJdHR5LT5UTl9ub19jb2xv cl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDI1NjoKKwl0dHktPlROX21heF9jb2xv cnMgPSAyNTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzU7JWx1bSI7CisJ dHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzU7JWx1bSI7CisJdHR5LT5UTl9ub19j b2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDE2Nzc3MjE2OgorCXR0eS0+VE5f bWF4X2NvbG9ycyA9IDE2Nzc3MjE2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlsz ODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzI7 JWx1OyVsdTslbHVtIjsKKwl0dHktPlROX25vX2NvbG9yX3ZpZGVvID0gMDsKKwlicmVhazsKKyNl bmRpZgogICAgIH0KIH0KIApAQCAtMjMwNywxMiArMjMzMCwxNiBAQCBzZXRfdHR5X2NvbG9yX21v ZGUgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIHN0cnVjdCBmcmFtZSAqZikKICAgICB7 CiAgICAgICB0dHktPnByZXZpb3VzX2NvbG9yX21vZGUgPSBtb2RlOwogICAgICAgdHR5X3NldHVw X2NvbG9ycyAodHR5ICwgbW9kZSk7Ci0gICAgICAvKiAgVGhpcyByZWNvbXB1dGVzIGFsbCB0aGUg ZmFjZXMgZ2l2ZW4gdGhlIG5ldyBjb2xvciBkZWZpbml0aW9ucy4gICovCisgICAgICAvKiAgVGhp cyByZWNvbXB1dGVzIGFsbCB0aGUgZmFjZXMgZ2l2ZW4gdGhlIG5ldyBjb2xvciBkZWZpbml0aW9u cy4gKi8KKyNpZmRlZiBXSU5ET1dTTlQKKyAgICAgIHNhZmVfY2FsbG4gKFF3MzJjb25fc2V0X3Vw X2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2Vsc2UKICAgICAgIHNhZmVfY2FsbG4gKFF0dHlfc2V0 X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2VuZGlmCiAgICAgfQogfQogCi0jZW5kaWYgLyog IURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5kaWYgLyogIU1TRE9TICYmICFIQVZFX0FO RFJPSUQgKi8KIAogY2hhciAqCiB0dHlfdHlwZV9uYW1lIChMaXNwX09iamVjdCB0ZXJtaW5hbCkK QEAgLTQ1ODYsOCArNDYxMyw4IEBAIHVzZSB0aGUgQm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09 Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6XG5cCiAJCSB8fCAoKGJnID0gZ2V0ZW52ICgiQ09M T1JURVJNIikpICE9IE5VTEwKIAkJICAgICAmJiBzdHJjYXNlY21wIChiZywgInRydWVjb2xvciIp ID09IDApKQogCSAgewotCSAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlwwMzNbJT8lcDEl ezh9JTwldDMlcDElZCVlMzg7MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVk OyVwMSV7MjU1fSUmJWQlO20iOwotCSAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNb JT8lcDElezh9JTwldDQlcDElZCVlNDg7MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1 NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0g Ilx4MWJbJT8lcDElezh9JTwldDMlcDElZCVlMzg7MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9 JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAgICB0dHktPlRTX3NldF9iYWNrZ3Jv dW5kID0gIlx4MWJbJT8lcDElezh9JTwldDQlcDElZCVlNDg7MjslcDElezY1NTM2fSUvJWQ7JXAx JXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOwogCSAgICB0dHktPlROX21heF9j b2xvcnMgPSAxNjc3NzIxNjsKIAkgIH0KICAgICAgIH0KQEAgLTQ2NDEsNiArNDY2OCwyNyBAQCB1 c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdURVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNo ZWxsOlxuXAogCiAgICAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAodGVybWluYWwsICZ3aWR0aCwg JmhlaWdodCk7CiAKKyAgICAvKiAyNGJpdCBSR0Igc3VwcG9ydCBpbiBXaW5kb3dzICgxMCspIFRl cm1pbmFsIGFuZCBDb25zb2xlIEhvc3QKKyAgICAgICBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5j b20vZW4tdXMvd2luZG93cy9jb25zb2xlL2NvbnNvbGUtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5j ZXMgKi8KKyAgICB0dHktPlROX25vX2NvbG9yX3ZpZGVvID0gMDsKKyAgICB0dHktPlROX21heF9j b2xvcnMgPSAxNjc3NzIxNjsKKyAgICB0dHktPlRTX29yaWdfcGFpciA9ICJceDFiWzM5bVx4MWJb NDltIjsKKyAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMzg7MjslbHU7JWx1OyVs dW0iOworICAgIHR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODsyOyVsdTslbHU7JWx1 bSI7CisKKyAgICAvKiBTYXZlIGRlZmF1bHQgY29sb3IgY2FwYWJpbGl0aWVzICovCisgICAgdHR5 X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzICh0dHksIDEpOworCisgICAgdHR5LT5UU19lbnRl cl9ib2xkX21vZGUgPSAiXHgxYlsxbSI7CisgICAgdHR5LT5UU19lbnRlcl9pdGFsaWNfbW9kZSA9 ICJceDFiWzNtIjsKKyAgICB0dHktPlRTX2VudGVyX3N0cmlrZV90aHJvdWdoX21vZGUgPSAiXHgx Yls5bSI7CisgICAgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSA9ICJceDFiWzRtIjsKKyAg ICB0dHktPlRTX2V4aXRfdW5kZXJsaW5lX21vZGUgPSAiXHgxYlsyNG0iOworICAgIHR0eS0+VFNf ZW50ZXJfcmV2ZXJzZV9tb2RlID0gIlx4MWJbN20iOworICAgIHR0eS0+VFNfZXhpdF9hdHRyaWJ1 dGVfbW9kZSA9ICJceDFiWzBtIjsKKyAgICB0dHktPlRTX2N1cnNvcl9pbnZpc2libGUgPSAiXHgx Yls/MjVsIjsKKyAgICB0dHktPlRTX2N1cnNvcl92aXNpYmxlID0gIlx4MWJbPzI1aCI7CisKICAg ICBGcmFtZVJvd3MgKHR0eSkgPSBoZWlnaHQ7CiAgICAgRnJhbWVDb2xzICh0dHkpID0gd2lkdGg7 CiAgICAgdHR5LT5zcGVjaWZpZWRfd2luZG93ID0gaGVpZ2h0OwpAQCAtNDY4Niw3ICs0NzM0LDYg QEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBURVJNJyAo Qy1zaGVsbDpcblwKICAgICAgZG9uJ3QgdGhpbmsgd2UncmUgbG9zaW5nIGFueXRoaW5nIGJ5IHR1 cm5pbmcgaXQgb2ZmLiAgKi8KICAgdHR5LT5saW5lX2luc19kZWxfb2sgPSAwOwogCi0gIHR0eS0+ VE5fbWF4X2NvbG9ycyA9IDE2OyAgLyogTXVzdCBiZSBub24temVybyBmb3IgdHR5LWRpc3BsYXkt Y29sb3ItcC4gICovCiAjZW5kaWYJLyogRE9TX05UICovCiAKICNpZmRlZiBIQVZFX0dQTQpAQCAt NTIwMiwxMSArNTI0OSwxMSBAQCBub24tbmlsIHRvIGVuYWJsZSB0aGlzIG9wdGltaXphdGlvbi4g ICovKTsKICAgZGVmc3ViciAoJlN0dHlfZGlzcGxheV9waXhlbF93aWR0aCk7CiAgIGRlZnN1YnIg KCZTdHR5X2Rpc3BsYXlfcGl4ZWxfaGVpZ2h0KTsKIAotI2lmICFkZWZpbmVkIERPU19OVCAmJiAh ZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZF X0FORFJPSUQKICAgZGVmYXVsdF9vcmlnX3BhaXIgPSBOVUxMOwogICBkZWZhdWx0X3NldF9mb3Jl Z3JvdW5kID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfYmFja2dyb3VuZCA9IE5VTEw7Ci0jZW5kaWYg LyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5kaWYgLyogIU1TRE9TICYmICFIQVZF X0FORFJPSUQgKi8KIAogI2lmbmRlZiBIQVZFX0FORFJPSUQKICAgZW5jb2RlX3Rlcm1pbmFsX3Ny YyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVybWNoYXIuaCBiL3NyYy90ZXJtY2hhci5oCmlu ZGV4IGVjZTNhNjc2YzZlLi4xM2FkMmYwYTcyYSAxMDA2NDQKLS0tIGEvc3JjL3Rlcm1jaGFyLmgK KysrIGIvc3JjL3Rlcm1jaGFyLmgKQEAgLTI0OSw0ICsyNDksNiBAQCBzdHJ1Y3QgaW5wdXRfZXZl bnQ7CiBleHRlcm4gTGlzcF9PYmplY3QgdHR5X2hhbmRsZV90YWJfYmFyX2NsaWNrIChzdHJ1Y3Qg ZnJhbWUgKiwgaW50LCBpbnQsIGJvb2wsCiAJCQkJCSAgICAgc3RydWN0IGlucHV0X2V2ZW50ICop OwogCitleHRlcm4gdm9pZCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5m byAqdHR5LCBpbnQgbW9kZSk7CisKICNlbmRpZiAvKiBFTUFDU19URVJNQ0hBUl9IICovCmRpZmYg LS1naXQgYS9zcmMvdzMyY29uc29sZS5jIGIvc3JjL3czMmNvbnNvbGUuYwppbmRleCAxYmNhMGNh ZGZmOS4uMjJmMzg4YTQxNmIgMTAwNjQ0Ci0tLSBhL3NyYy93MzJjb25zb2xlLmMKKysrIGIvc3Jj L3czMmNvbnNvbGUuYwpAQCAtMTksMTIgKzE5LDYyIEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAg SWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAvKgogICAg VGltIEZsZWVoYXJ0IChhcG9sbG9Ab25saW5lLmNvbSkJCTEtMTctOTIKICAgIEdlb2ZmIFZvZWxr ZXIgKHZvZWxrZXJAY3Mud2FzaGluZ3Rvbi5lZHUpCTktMTItOTMKKyAgIEV3YW4gVG93bnNoZW5k IChld2FuQGV0b3duLmRldikgICAgICAgICAgICAgIDIwMjUtMDgKKworICAgYy4gfiAyMDI1Ogor ICAgKiAyNGJpdCBSR0Igc3VwcG9ydCBpbiBXaW5kb3dzICgxMCspIFRlcm1pbmFsCisgICAqIE1p Y3Jvc29mdCBtb3ZpbmcgYXdheSBmcm9tIGlkaW9zeW5jcmF0aWMgQVBJLCB0b3dhcmQgQVNDSUkg Y29udHJvbHMKKworICAgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mv Y29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCisKKyAgIEZvciByZWZl cmVuY2UgKG1vcmUgZGVmaW5lZCBhdCBsaW5rIGFib3ZlKToKKworICAgKiAiY2xlYXIiIDo9IG92 ZXJ3cml0ZSB3aXRoIHNwYWNlIGNoYXJhY3RlcgorCisgICBceDFiWzBKID0+IGNsZWFyIGN1cnNv ciAoaW5jbHVzaXZlKSB0byBlbmQgb2Ygc2NyZWVuCisgICBceDFiWzFKID0+IGNsZWFyIGJlZ2lu bmluZyBvZiBzY3JlZW4gdG8gY3Vyc29yIChpbmNsdXNpdmUpCisgICBceDFiWzJKID0+IGNsZWFy IGVudGlyZSBzY3JlZW4gKGV4Y2x1ZGluZyBzY3JvbGxiYWNrIGFyZWEpCisgICBceDFiWzNKID0+ IGNsZWFyIHNjcm9sbGJhY2sgYXJlYQorCisgICBceDFiWzBLID0+IGNsZWFyIGN1cnNvciAoaW5j bHVzaXZlKSB0byBlbmQgb2YgbGluZQorICAgXHgxYlsxSyA9PiBjbGVhciBiZWdpbm5pbmcgb2Yg bGluZSB0byBjdXJzb3IgKGluY2x1c2l2ZSkKKyAgIFx4MWJbMksgPT4gY2xlYXIgZW50aXJlIGxp bmUKKworICAgXHgxYls8bj5AID0+IGluc2VydCA8bj4gc3BhY2VzIGF0IGN1cnNvciwgc2hpZnQg Y3VycmVudCB0ZXh0IHJpZ2h0CisgICBceDFiWzxuPlAgPT4gZGVsZXRlIDxuPiBjaGFycyAgYXQg Y3Vyc29yLCBhZGRpbmcgc3BhY2VzIGZyb20gcmlnaHQKKworICAgXHgxYls3ICAgICAgICA9PiBz YXZlIGN1cnNvciBwb3NpdGlvbgorICAgXHgxYls4ICAgICAgICA9PiByZXN0b3JlIHNhdmVkIGN1 cnNvciBwb3NpdGlvbgorICAgXHgxYls8eT47PHg+SCA9PiBtb3ZlIGN1cnNvciB0byByb3cgPHk+ LCBjb2wgPHg+ICgxLWluZGV4ZWQpCisgICBceDFiWz8yNWwgICAgID0+IGhpZGUgY3Vyc29yCisg ICBceDFiWz8yNWggICAgID0+IHNob3cgY3Vyc29yCisKKyAgIFx4MWJbMG0gPT4gYWxsIGF0dHJp YnV0ZXMgb2ZmCisgICBceDFiWzFtID0+IGJvbGQKKyAgIFx4MWJbM20gPT4gaXRhbGljCisgICBc eDFiWzRtID0+IHVuZGVybGluZQorICAgXHgxYls3bSA9PiBpbnZlcnNlIHZpZGVvCisgICBceDFi WzltID0+IHN0cmlrZS10aHJvdWdoCisKKyAgICogMTYgYmFzZSBjb2xvcnMgZGVmaW5lZCBpbiB3 MzJjb25zb2xlLmVsCisgICBceDFiWzM8aT4gICg8aT4gaW4gMC4uNykgPT4gZm9yZWdyb3VuZCA9 IDE2Y29sb3JzW2ldCisgICBceDFiWzQ8aT4gICg8aT4gaW4gMC4uNykgPT4gYmFja2dyb3VuZCA9 IDE2Y29sb3JzW2ldCisgICBceDFiWzk8aT4gICg8aT4gaW4gMC4uNykgPT4gZm9yZWdyb3VuZCA9 IDE2Y29sb3JzW2kgKyA4XQorICAgXHgxYlsxMDxpPiAoPGk+IGluIDAuLjcpID0+IGJhY2tncm91 bmQgPSAxNmNvbG9yc1tpICsgOF0KKworICAgKiAyNTYgY29sb3JzIGZvbGxvdyB4dGVybQorICAg XHgxYlszODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gZm9yZWdyb3VuZCA9IDI1NmNvbG9yc1tpXQor ICAgXHgxYls0ODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gYmFja2dyb3VuZCA9IDI1NmNvbG9yc1tp XQorCisgICAqIDI0LWJpdCBjb3ZlcnMgYWxsIG5hbWVkIGNvbG9ycyAoc2VlIGNvbG9yLW5hbWUt cmdiLWFsaXN0KQorICAgXHgxYlszODsyOzxyPjs8Zz47PGI+ID0+IGZvcmVncm91bmQgPSAoPHI+ LCA8Zz4sIDxiPikKKyAgIFx4MWJbNDg7Mjs8cj47PGc+OzxiPiA9PiBiYWNrZ3JvdW5kID0gKDxy PiwgPGc+LCA8Yj4pCiAqLwogCiAKICNpbmNsdWRlIDxjb25maWcuaD4KLQogI2luY2x1ZGUgPHN0 ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogCiAjaW5j bHVkZSAibGlzcC5oIgpAQCAtNDAsNyArOTAsNiBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElm IG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2luY2x1ZGUg InczMi5oIgkvKiBmb3Igc3ltc19vZl9udHRlcm0gKi8KICNlbmRpZgogCi1zdGF0aWMgdm9pZCB3 MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHJvdywgaW50IGNvbCk7CiBz dGF0aWMgdm9pZCB3MzJjb25fY2xlYXJfdG9fZW5kIChzdHJ1Y3QgZnJhbWUgKmYpOwogc3RhdGlj IHZvaWQgdzMyY29uX2NsZWFyX2ZyYW1lIChzdHJ1Y3QgZnJhbWUgKmYpOwogc3RhdGljIHZvaWQg dzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCk7CkBAIC01MSwx MyArMTAwLDMwIEBAIHN0YXRpYyB2b2lkIHczMmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJh bWUgKmYsIGludCBuKTsKIHN0YXRpYyB2b2lkIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAo c3RydWN0IHRlcm1pbmFsICp0KTsKIHN0YXRpYyB2b2lkIHczMmNvbl9zZXRfdGVybWluYWxfbW9k ZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2JlZ2lu IChzdHJ1Y3QgZnJhbWUgKiBmKTsKLXN0YXRpYyB2b2lkIHczMmNvbl91cGRhdGVfZW5kIChzdHJ1 Y3QgZnJhbWUgKiBmKTsKK3N0YXRpYyB2b2lkIHczMmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJh bWUgKmYpOworc3RhdGljIGludCAgdzMyY29uX3dyaXRlX3Z0X3NlcSAoY2hhciAqKTsKIHN0YXRp YyBXT1JEIHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQp Oworc3RhdGljIHZvaWQgdHVybl9vbl9mYWNlIChzdHJ1Y3QgZnJhbWUgKiwgaW50IGZhY2VfaWQp Oworc3RhdGljIHZvaWQgdHVybl9vZmZfZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBmYWNlX2lk KTsKK3N0YXRpYyB2b2lkIHczMmNvbl9tb3ZlX2N1cnNvciAoc3RydWN0IGZyYW1lICpmLCBpbnQg cm93LCBpbnQgY29sKTsKK3ZvaWQgdzMyY29uX3NhdmVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMy Y29uX3Jlc3RvcmVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX3Nob3dfY3Vyc29yICh2b2lk KTsKK3ZvaWQgdzMyY29uX2hpZGVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX2RyYXdfY3Vy c29yIChzdHJ1Y3QgZnJhbWUgKmYpOwogCi1zdGF0aWMgQ09PUkQJY3Vyc29yX2Nvb3JkczsKLXN0 YXRpYyBIQU5ETEUJcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47Ci1zdGF0aWMgV09SRAljaGFyX2F0 dHJfbm9ybWFsOwotc3RhdGljIERXT1JECXByZXZfY29uc29sZV9tb2RlOworc3RhdGljIHVuc2ln bmVkIGxvbmcgZ2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KTsKKworZXh0ZXJuIHZvaWQg dHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUp OworCitzdGF0aWMgQ09PUkQgICAgY3Vyc29yX2Nvb3JkczsKK3N0YXRpYyBDT09SRCAgICBzYXZl ZF9jb29yZHM7CitzdGF0aWMgSEFORExFICAgcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47CitzdGF0 aWMgV09SRCAgICAgY2hhcl9hdHRyX25vcm1hbDsKK3N0YXRpYyBXT1JEICAgICBiZ19ub3JtYWw7 CitzdGF0aWMgV09SRCAgICAgZmdfbm9ybWFsOworc3RhdGljIERXT1JEICAgIHByZXZfY29uc29s ZV9tb2RlOworc3RhdGljIGludCAgICAgIHVzaW5nX3N5c3RlbV9jYXJldDsKIAogc3RhdGljIENP TlNPTEVfQ1VSU09SX0lORk8gY29uc29sZV9jdXJzb3JfaW5mbzsKICNpZm5kZWYgVVNFX1NFUEFS QVRFX1NDUkVFTgpAQCAtNjgsMTMgKzEzNCwxNCBAQCBleHRlcm4gSEFORExFICBrZXlib2FyZF9o YW5kbGU7CiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIGludCB3MzJfY29uc29sZV91bmljb2Rl X2lucHV0OwogCi0KLS8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRz IGVtYWNzIGZyb20gYmVpbmcga2lsbGVkIHdoZW4KLSAgIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdz dXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4KLSAgIEFsc28gaWdub3JlIEN0cmwtQnJl YWsgc2lnbmFscy4gICovCitleHRlcm4gc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRf dHR5Oworc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5ID0gTlVMTDsKIAogQk9P TCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyk7CiAKKy8qIFNldHRpbmcgdGhpcyBhcyB0 aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20gYmVpbmcga2lsbGVkCisgICB3aGVu IHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4g QWxzbworICAgaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4gICovCiBCT09MCiBjdHJsX2NfaGFu ZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogewpAQCAtODMsNiArMTUwLDU1IEBAIGN0cmxfY19o YW5kbGVyICh1bnNpZ25lZCBsb25nIHR5cGUpCiAJICAmJiAodHlwZSA9PSBDVFJMX0NfRVZFTlQg fHwgdHlwZSA9PSBDVFJMX0JSRUFLX0VWRU5UKSk7CiB9CiAKKyNkZWZpbmUgU1NQUklOVEYoYnVm LCBpLCBzeiwgZm10LCAuLi4pCQkJCQlcCisgIGRvIHsJCQkJCQkJCQlcCisgICAgaWYgKGZtdCkJ CQkJCQkJCVwKKyAgICAgICppICs9IHNucHJpbnRmIChidWYgKyAqaSwgc3ogLSAqaSwgZm10LCBf X1ZBX0FSR1NfXyk7CQlcCisgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgREVGQVVMVFAocCkJCQkJ CQkJXAorICAocCA9PSBGQUNFX1RUWV9ERUZBVUxUX0NPTE9SCQkJCQkJXAorICAgfHwgcCA9PSBG QUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9SCQkJCQlcCisgICB8fCBwID09IEZBQ0VfVFRZX0RFRkFV TFRfQkdfQ09MT1IpCisKKyNkZWZpbmUgU0VRTUFYIDI1NiAvKiBBcmJpdHJhcnkgdXBwZXIgbGlt aXQgb24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisvKiBGb3IgZGVidWdnaW5nICovCitzdGF0aWMg dm9pZAordnRfc2VxX2Vycm9yIChjaGFyICpzZXEpCit7CisgIGludCBpID0gMDsgaW50IGogPSAw OworICBpZiAoc2VxKQorICAgIGlmIChzZXFbMF0gPT0gJ1wwJykgc2VxID0gIjxlbXB0eT4iOwor ICAgIGVsc2UKKyAgICAgIHdoaWxlIChpIDwgU0VRTUFYKQorCXsKKwkgIGlmIChzZXFbaV0gPT0g J1x4MWInKSBzZXFbaV0gPSAnIyc7CisJICBpZiAoc2VxW2ldID09ICAgICclJykgc2VxW2ldID0g J18nOworCSAgaWYgKHNlcVtpXSA9PSAgICdcMCcpIHsgaisrOyBicmVhazsgfQorCSAgaSsrOwor CX0KKyAgZWxzZSBzZXEgPSAiPG51bGw+IjsKKyAgcHJpbnRmICgiRmFpbGVkIHRvIHdyaXRlIFZU IHNlcXVlbmNlOiAlc1xuIiwgaiA/IHNlcSA6ICI8b3ZlcmZsb3c+Iik7CisgIHByaW50ZiAoIkxh c3RFcnJvcjogMHglZHhcbiIsIEdldExhc3RFcnJvciAoKSk7CisgIGZmbHVzaCAoc3Rkb3V0KTsK KyAgZXhpdCAoMSk7Cit9CisKKy8qIFdyaXRlcyAoZHluYW1pYykgdmlydHVhbCB0ZXJtaW5hbCBB U0NJSSBzZXF1ZW5jZXMgdG8gc2NyZWVuICovCitzdGF0aWMgaW50Cit3MzJjb25fd3JpdGVfdnRf c2VxIChjaGFyICpzZXEpCit7CisgIGNoYXIgYnVmW1NFUU1BWF07CisgIERXT1JEIG4gPSAwLCBr ID0gMDsKKyAgU1NQUklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwgc2VxLCBOVUxMKTsKKyAgaWYgKG4p IFdyaXRlQ29uc29sZUEgKGN1cl9zY3JlZW4sIChMUENTVFIpIGJ1ZiwgbiwgJmssIE5VTEwpOwor ICByZXR1cm4gazsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ3Vyc29yIENvbnRyb2wKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBNb3ZlIHRoZSBjdXJz b3IgdG8gKFJPVywgQ09MKSBvbiBGUkFNRS4gICovCiBzdGF0aWMgdm9pZApAQCAtOTAsNyArMjA2 LDYgQEAgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByb3csIGludCBj b2wpCiB7CiAgIGN1cnNvcl9jb29yZHMuWCA9IGNvbDsKICAgY3Vyc29yX2Nvb3Jkcy5ZID0gcm93 OwotCiAgIC8qIFRPRE86IGZvciBtdWx0aS10dHkgc3VwcG9ydCwgY3VyX3NjcmVlbiBzaG91bGQg YmUgcmVwbGFjZWQgd2l0aCBhCiAgICAgIHJlZmVyZW5jZSB0byB0aGUgdGVybWluYWwgZm9yIHRo aXMgZnJhbWUuICAqLwogICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24gKGN1cl9zY3JlZW4sIGN1 cnNvcl9jb29yZHMpOwpAQCAtMTAyLDYgKzIxNyw3IEBAIHczMmNvbl9oaWRlX2N1cnNvciAodm9p ZCkKICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9p bmZvKTsKICAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9IEZBTFNFOwogICBTZXRDb25z b2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOworICBjdXJy ZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiB9CiAKIHZvaWQKQEAgLTExMCwxNCArMjI2LDMz IEBAIHczMmNvbl9zaG93X2N1cnNvciAodm9pZCkKICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1 cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKICAgY29uc29sZV9jdXJzb3JfaW5mby5i VmlzaWJsZSA9IFRSVUU7CiAgIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY29u c29sZV9jdXJzb3JfaW5mbyk7CisgIGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVuID0gMDsKK30K Kwordm9pZAordzMyY29uX3NhdmVfY3Vyc29yICh2b2lkKQoreworICBzYXZlZF9jb29yZHMgPSBj dXJzb3JfY29vcmRzOwogfQogCit2b2lkCit3MzJjb25fcmVzdG9yZV9jdXJzb3IgKHZvaWQpCit7 CisgIGN1cnNvcl9jb29yZHMgPSBzYXZlZF9jb29yZHM7CisgIFNldENvbnNvbGVDdXJzb3JQb3Np dGlvbiAoY3VyX3NjcmVlbiwgY3Vyc29yX2Nvb3Jkcyk7Cit9CisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgTW9kaWZpY2F0aW9uCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKIC8qIENsZWFyIGZyb20gY3Vyc29yIHRvIGVuZCBvZiBzY3JlZW4uICAqLwogc3RhdGlj IHZvaWQKIHczMmNvbl9jbGVhcl90b19lbmQgKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgdzMyY29u X2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSAtIDEpOwotICB3MzJjb25faW5z X2RlbF9saW5lcyAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBj dXJzb3JfY29vcmRzLlkgLSAxKTsKKyAgaW50IG4gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBj dXJzb3JfY29vcmRzLlkgLSAxOworICB3MzJjb25faW5zX2RlbF9saW5lcyAoZiwgY3Vyc29yX2Nv b3Jkcy5ZLCBuKTsKIH0KIAogLyogQ2xlYXIgdGhlIGZyYW1lLiAgKi8KQEAgLTEzNyw3ICsyNzIs NiBAQCB3MzJjb25fY2xlYXJfZnJhbWUgKHN0cnVjdCBmcmFtZSAqZikKIAogICBGaWxsQ29uc29s ZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyX25vcm1hbCwgbiwgZGVzdCwg JnIpOwogICBGaWxsQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgJyAnLCBuLCBk ZXN0LCAmcik7Ci0KICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCAwLCAwKTsKIH0KIApAQCAtMTY2 LDEwICszMDAsMTAgQEAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJhbWUgKmYs IGludCBlbmQpCiAgICAgewogICAgICAgaW50IGk7CiAgICAgICBmb3IgKGkgPSAwOyBpIDwgZ2x5 cGhzX2xlbjsgaSsrKQotICAgICAgICB7CisJewogCSAgbWVtY3B5ICgmZ2x5cGhzW2ldLCAmc3Bh Y2VfZ2x5cGgsIHNpemVvZiAoc3RydWN0IGdseXBoKSk7CiAJICBnbHlwaHNbaV0uZnJhbWUgPSBO VUxMOwotICAgICAgICB9CisJfQogICAgICAgY2VvbF9pbml0aWFsaXplZCA9IFRSVUU7CiAgICAg fQogICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBnbHlwaHMsIGVuZCAtIGN1cnNvcl9jb29yZHMu WCk7CkBAIC0yMTgsMjggKzM1MiwyNyBAQCB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZy YW1lICpmLCBpbnQgdnBvcywgaW50IG4pCiAgIGlmIChuID4gMCkKICAgICB7CiAgICAgICBpZiAo c2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAgeworCXsKIAkgIGZvciAoaSA9IHNjcm9s bC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKLSAgICAgICAgICAgIHsKKwkgICAgewogCSAgICAg IHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7CiAJICAgICAgdzMyY29uX2NsZWFyX2VuZF9v Zl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkg ICAgfQorCX0KICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBuYiA9IGRlc3QuWSArIChzY3Jv bGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCiAgICAgICBpZiAobmIgPCBzY3JvbGwuVG9w KQotICAgICAgICB7CisJewogCSAgZm9yIChpID0gbmI7IGkgPCBzY3JvbGwuVG9wOyBpKyspCi0g ICAgICAgICAgICB7CisJICAgIHsKIAkgICAgICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDAp OwogCSAgICAgIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOwot ICAgICAgICAgICAgfQotICAgICAgICB9CisJICAgIH0KKwl9CiAgICAgfQotCiAgIGN1cnNvcl9j b29yZHMuWCA9IDA7CiAgIGN1cnNvcl9jb29yZHMuWSA9IHZwb3M7CiB9CkBAIC0yNDgsMTIgKzM4 MSwxMSBAQCB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgdnBvcywg aW50IG4pCiAjdW5kZWYJUklHSFQKICNkZWZpbmUJTEVGVAkxCiAjZGVmaW5lCVJJR0hUCTAKLQor LyogVGhlIGlkZWEgaGVyZSBpcyB0byBpbXBsZW1lbnQgYSBob3Jpem9udGFsIHNjcm9sbCBpbiBv bmUgbGluZSB0bworICAgaW1wbGVtZW50IGRlbGV0ZSBhbmQgaGFsZiBvZiBpbnNlcnQuICAqLwog c3RhdGljIHZvaWQKIHNjcm9sbF9saW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBkaXN0LCBpbnQg ZGlyZWN0aW9uKQogewotICAvKiBUaGUgaWRlYSBoZXJlIGlzIHRvIGltcGxlbWVudCBhIGhvcml6 b250YWwgc2Nyb2xsIGluIG9uZSBsaW5lIHRvCi0gICAgIGltcGxlbWVudCBkZWxldGUgYW5kIGhh bGYgb2YgaW5zZXJ0LiAgKi8KICAgU01BTExfUkVDVCBzY3JvbGwsIGNsaXA7CiAgIENPT1JECSAg ICAgZGVzdDsKICAgQ0hBUl9JTkZPICBmaWxsOwpAQCAtMjg4LDE0ICs0MjAsMTMgQEAgc3RhdGlj IHZvaWQKIHczMmNvbl9pbnNlcnRfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0 cnVjdCBnbHlwaCAqc3RhcnQsCiAJCSAgICAgIHJlZ2lzdGVyIGludCBsZW4pCiB7CisgIC8qIE1v dmUgbGVuIGNoYXJzIHRvIHRoZSByaWdodCBmcm9tIGN1cnNvcl9jb29yZHMsIGZpbGwgd2l0aCBi bGFua3MgKi8KICAgc2Nyb2xsX2xpbmUgKGYsIGxlbiwgUklHSFQpOwotCi0gIC8qIE1vdmUgbGVu IGNoYXJzIHRvIHRoZSByaWdodCBzdGFydGluZyBhdCBjdXJzb3JfY29vcmRzLCBmaWxsIHdpdGgg YmxhbmtzICovCisgIAogICBpZiAoc3RhcnQpCiAgICAgewotICAgICAgLyogUHJpbnQgdGhlIGZp cnN0IGxlbiBjaGFyYWN0ZXJzIG9mIHN0YXJ0LCBjdXJzb3JfY29vcmRzLlggYWRqdXN0ZWQKLQkg Ynkgd3JpdGVfZ2x5cGhzLiAgKi8KLQorICAgICAgLyogUHJpbnQgdGhlIGZpcnN0IGxlbiBjaGFy YWN0ZXJzIG9mIHN0YXJ0LgorCSBjdXJzb3JfY29vcmRzLlggYWRqdXN0ZWQgYnkgd3JpdGVfZ2x5 cGhzLiAgKi8KICAgICAgIHczMmNvbl93cml0ZV9nbHlwaHMgKGYsIHN0YXJ0LCBsZW4pOwogICAg IH0KICAgZWxzZQpAQCAtMzA2LDEzICs0MzcsMTUgQEAgdzMyY29uX2luc2VydF9nbHlwaHMgKHN0 cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdGFydCwKIAogc3RhdGljIHZv aWQKIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0 IGdseXBoICpzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBpbnQgbGVuKQor CQkgICAgIHJlZ2lzdGVyIGludCBsZW4pCiB7CiAgIERXT1JEIHI7CiAgIFdPUkQgY2hhcl9hdHRy OwogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpj b2Rpbmc7CiAKKyAgdzMyY29uX2hpZGVfY3Vyc29yKCk7CisKICAgaWYgKGxlbiA8PSAwKQogICAg IHJldHVybjsKIApAQCAtMzQyLDQzICs0NzUsNDUgQEAgdzMyY29uX3dyaXRlX2dseXBocyAoc3Ry dWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmluZywKIAogICAgICAgLyog dzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIHNldHMgZnJhbWUgb2YgZ2x5cGhzIHRvIE5VTEwuICAq LwogICAgICAgc3RydWN0IGZyYW1lICphdHRyX2ZyYW1lID0gZmFjZV9pZF9mcmFtZSA/IGZhY2Vf aWRfZnJhbWUgOiBmOwotICAgICAgLyogVHVybiBhcHBlYXJhbmNlIG1vZGVzIG9mIHRoZSBmYWNl IG9mIHRoZSBydW4gb24uICAqLwotICAgICAgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRl cyAoYXR0cl9mcmFtZSwgZmFjZV9pZCk7CiAKICAgICAgIGlmIChuID09IGxlbikKIAkvKiBUaGlz IGlzIHRoZSBsYXN0IHJ1bi4gICovCiAJY29kaW5nLT5tb2RlIHw9IENPRElOR19NT0RFX0xBU1Rf QkxPQ0s7CisKICAgICAgIGNvbnZlcnNpb25fYnVmZmVyID0gKExQQ1NUUikgZW5jb2RlX3Rlcm1p bmFsX2NvZGUgKHN0cmluZywgbiwgY29kaW5nKTsKICAgICAgIGlmIChjb2RpbmctPnByb2R1Y2Vk ID4gMCkKIAl7Ci0JICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4g ICovCi0JICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFy X2F0dHIsCi0JCQkJCSAgIGNvZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCi0JCQkJCSAg ICZyKSkKKwkgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQogCSAgICB7 Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBhdHRyaWJ1dGVzOiAlbHVc biIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7Ci0JICAgICAgZmZsdXNoIChzdGRvdXQpOwor CSAgICAgIHR1cm5fb25fZmFjZSAoZiwgZmFjZV9pZCk7CisJICAgICAgV3JpdGVDb25zb2xlIChj dXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCAm ciwgTlVMTCk7CisJICAgICAgdHVybl9vZmZfZmFjZSAoZiwgZmFjZV9pZCk7CisJICAgICAgY3Vy c29yX2Nvb3Jkcy5YICs9IGNvZGluZy0+cHJvZHVjZWQ7CiAJICAgIH0KLQotCSAgLyogV3JpdGUg dGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIg KGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAotCQkJCQkgICAgY29kaW5nLT5wcm9kdWNl ZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgICZyKSkKKwkgIGVsc2UKIAkgICAgewotCSAgICAg IHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hhcmFjdGVyczogJWx1XG4iLAotCQkg ICAgICBHZXRMYXN0RXJyb3IgKCkpOwotCSAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKLQkgICAgfQor CSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBtb2RlcyBvZiB0aGUgZmFjZSBvZiB0aGUgcnVuIG9u LiAgKi8KKwkgICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1l LCBmYWNlX2lkKTsKKwkgICAgICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFj dGVycy4gICovCisJICAgICAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4s IGNoYXJfYXR0ciwKKwkJCQkJICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAorCQkJ CQkgICZyKTsKKwkgICAgICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCisJICAgICAgV3Jp dGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwK KwkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKKwkJCQkJICAgJnIpOwog Ci0JICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5wcm9kdWNlZDsKLQkgIHczMmNvbl9tb3Zl X2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29vcmRzLlgpOworCSAgICAgIGN1 cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOworCSAgICAgIHczMmNvbl9tb3ZlX2N1 cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29vcmRzLlgpOworCSAgICB9CiAJfQog ICAgICAgbGVuIC09IG47CiAgICAgICBzdHJpbmcgKz0gbjsKICAgICB9CiB9CiAKKwogLyogVXNl ZCBmb3IgbW91c2UgaGlnaGxpZ2h0LiAgKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fd3JpdGVfZ2x5 cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBpbnQgeCwgcmVnaXN0ZXIg aW50IHksCkBAIC0zODcsNiArNTIyLDcgQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2Ug KHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogewogICBM UENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7 CisgIERXT1JEIGZpbGxlZCwgd3JpdHRlbjsKIAogICBpZiAobGVuIDw9IDApCiAgICAgcmV0dXJu OwpAQCAtMzk5LDI5ICs1MzUsMzggQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2UgKHN0 cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogICAvKiBXZSBh cmUgZ29pbmcgdG8gd3JpdGUgdGhlIGVudGlyZSBibG9jayBvZiBnbHlwaHMgaW4gb25lIGdvLCBh cwogICAgICB0aGV5IGFsbCBoYXZlIHRoZSBzYW1lIGZhY2UuICBTbyB0aGlzIF9pc18gdGhlIGxh c3QgYmxvY2suICAqLwogICBjb2RpbmctPm1vZGUgfD0gQ09ESU5HX01PREVfTEFTVF9CTE9DSzsK LQogICBjb252ZXJzaW9uX2J1ZmZlciA9IChMUENTVFIpIGVuY29kZV90ZXJtaW5hbF9jb2RlIChz dHJpbmcsIGxlbiwgY29kaW5nKTsKICAgaWYgKGNvZGluZy0+cHJvZHVjZWQgPiAwKQogICAgIHsK LSAgICAgIERXT1JEIGZpbGxlZCwgd3JpdHRlbjsKLSAgICAgIC8qIENvbXB1dGUgdGhlIGNoYXJh Y3RlciBhdHRyaWJ1dGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICAqLwotICAgICAgRFdP UkQgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoZiwgZmFjZV9pZCk7CiAgICAgICBD T09SRCBzdGFydF9jb29yZHM7Ci0KICAgICAgIHN0YXJ0X2Nvb3Jkcy5YID0geDsKICAgICAgIHN0 YXJ0X2Nvb3Jkcy5ZID0geTsKLSAgICAgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBj aGFyYWN0ZXJzLiAgKi8KLSAgICAgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1 cl9zY3JlZW4sIGNoYXJfYXR0ciwKLQkJCQkgICAgICAgY29kaW5nLT5wcm9kdWNlZCwgc3RhcnRf Y29vcmRzLAotCQkJCSAgICAgICAmZmlsbGVkKSkKLQlEZWJQcmludCAoKCJGYWlsZWQgd3JpdGlu ZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVkXG4iLCBHZXRMYXN0RXJyb3IgKCkpKTsKKworICAgICAg aWYgKHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisJeworCSAgaW50IHByZXZf Y3Vyc29yX2hpZGRlbiA9IGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVuOworCSAgdzMyY29uX2hp ZGVfY3Vyc29yICgpOworCSAgdzMyY29uX3NhdmVfY3Vyc29yICgpOworCSAgdzMyY29uX21vdmVf Y3Vyc29yIChmLCB5LCB4KTsKKwkgIHR1cm5fb25fZmFjZSAoZiwgZmFjZV9pZCk7CisJICBXcml0 ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJY29kaW5nLT5wcm9k dWNlZCwgJndyaXR0ZW4sIE5VTEwpOworCSAgdHVybl9vZmZfZmFjZSAoZiwgZmFjZV9pZCk7CisJ ICB3MzJjb25fcmVzdG9yZV9jdXJzb3IgKCk7CisJICBpZiAoIXByZXZfY3Vyc29yX2hpZGRlbikg dzMyY29uX3Nob3dfY3Vyc29yICgpOworCX0KICAgICAgIGVsc2UKIAl7CisJICAvKiBDb21wdXRl IHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNlLiAqLwor CSAgRFdPUkQgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoZiwgZmFjZV9pZCk7CisK KwkgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KKwkgIEZp bGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFyX2F0dHIsCisJCQkJICAg ICAgY29kaW5nLT5wcm9kdWNlZCwgc3RhcnRfY29vcmRzLAorCQkJCSAgICAgICZmaWxsZWQpOwog CSAgLyogV3JpdGUgdGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFXcml0ZUNvbnNvbGVPdXRw dXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAotCQkJCQkgICAgZmls bGVkLCBzdGFydF9jb29yZHMsICZ3cml0dGVuKSkKLQkgICAgRGViUHJpbnQgKCgiRmFpbGVkIHdy aXRpbmcgY29uc29sZSBjaGFyYWN0ZXJzOiAlZFxuIiwKLQkJICAgICAgIEdldExhc3RFcnJvciAo KSkpOworCSAgV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCBjb252ZXJz aW9uX2J1ZmZlciwKKwkJCQkgICAgICAgZmlsbGVkLCBzdGFydF9jb29yZHMsICZ3cml0dGVuKTsK IAl9CiAgICAgfQogfQpAQCAtNDUyLDkgKzU5Nyw3IEBAIHR0eV9kcmF3X3Jvd193aXRoX21vdXNl X2ZhY2UgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKndpbmRvd19yb3csCiAg IHJvb3RfeHkgKGYsIGZyYW1lX2VuZF94LCBmcmFtZV95LCAmcm9vdF9lbmRfeCwgJnJvb3RfeSk7 CiAgIHN0cnVjdCBnbHlwaF9yb3cgKnJvb3Rfcm93ID0gTUFUUklYX1JPVyAocm9vdC0+Y3VycmVu dF9tYXRyaXgsIHJvb3RfeSk7CiAKLSAgLyogUmVtZW1iZXIgY3VycmVudCBjdXJzb3IgY29vcmRp bmF0ZXMgc28gdGhhdCB3ZSBjYW4gcmVzdG9yZQotICAgICB0aGVtIGF0IHRoZSBlbmQuICAqLwot ICBDT09SRCBzYXZlX2Nvb3JkcyA9IGN1cnNvcl9jb29yZHM7CisgIHczMmNvbl9zYXZlX2N1cnNv cigpOwogCiAgIC8qIElmIHRoZSByb290IGZyYW1lIGRpc3BsYXlzIGNoaWxkIGZyYW1lcywgd2Ug Y2Fubm90IG5haXZlbHkKICAgICAgd3JpdGUgdG8gdGhlIHRlcm1pbmFsIHdoYXQgdGhlIHdpbmRv dyB0aGlua3Mgc2hvdWxkIGJlIGRyYXduLgpAQCAtNTA3LDkgKzY1MCw3IEBAIHR0eV9kcmF3X3Jv d193aXRoX21vdXNlX2ZhY2UgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKndp bmRvd19yb3csCiAJICAgIH0KIAl9CiAgICAgfQotCi0gIC8qIFJlc3RvcmUgY3Vyc29yIHdoZXJl IGl0IHdhcyBiZWZvcmUuICAqLwotICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIHNhdmVfY29vcmRz LlksIHNhdmVfY29vcmRzLlgpOworICB3MzJjb25fcmVzdG9yZV9jdXJzb3IoKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTUyMSw3ICs2NjIsOSBAQCB3MzJjb25fZGVsZXRlX2dseXBocyAoc3RydWN0 IGZyYW1lICpmLCBpbnQgbikKIAogICBzY3JvbGxfbGluZSAoZiwgbiwgTEVGVCk7CiB9Ci0KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICAgICAgICAgICAgICAgICAgICAgICAgIFNldCB1cCAvIFRlYXIgZG93 bgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fcmVzZXRfdGVybWluYWxf bW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKQEAgLTU1OSw5ICs3MDIsMTEgQEAgdzMyY29uX3Nl dF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFsICp0KQogewogICBDT05TT0xFX0NVUlNP Ul9JTkZPIGNjaTsKIAorICB1c2luZ19zeXN0ZW1fY2FyZXQgPSB3MzJfdXNlX3Zpc2libGVfc3lz dGVtX2NhcmV0OworCiAgIC8qIG1ha2UgY3Vyc29yIGJpZyBhbmQgdmlzaWJsZSAoMTAwIG9uIFdp bmRvd3MgOTUgbWFrZXMgaXQgZGlzYXBwZWFyKSAgKi8KICAgY2NpLmR3U2l6ZSA9IDk5OwotICBj Y2kuYlZpc2libGUgPSBUUlVFOworICBjY2kuYlZpc2libGUgPSB1c2luZ19zeXN0ZW1fY2FyZXQg PyBUUlVFIDogRkFMU0U7CiAgICh2b2lkKSBTZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVl biwgJmNjaSk7CiAKICAgU2V0Q29uc29sZUFjdGl2ZVNjcmVlbkJ1ZmZlciAoY3VyX3NjcmVlbik7 CkBAIC01NjksMzAgKzcxNCw1NCBAQCB3MzJjb25fc2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1Y3Qg dGVybWluYWwgKnQpCiAgIC8qIElmIFF1aWNrIEVkaXQgaXMgZW5hYmxlZCBmb3IgdGhlIGNvbnNv bGUsIGl0IHdpbGwgZ2V0IGluIHRoZSB3YXkKICAgICAgb2YgcmVjZWl2aW5nIG1vdXNlIGV2ZW50 cywgc28gd2UgZGlzYWJsZSBpdC4gIEJ1dCBsZWF2ZSB0aGUKICAgICAgSW5zZXJ0IE1vZGUgYXMg aXQgd2FzIHNldCBieSB0aGUgdXNlci4gICovCi0gIERXT1JEIG5ld19jb25zb2xlX21vZGUKKyAg RFdPUkQgaW5fbW9kZQogICAgID0gRU5BQkxFX01PVVNFX0lOUFVUIHwgRU5BQkxFX1dJTkRPV19J TlBVVCB8IEVOQUJMRV9FWFRFTkRFRF9GTEFHUzsKICAgaWYgKChwcmV2X2NvbnNvbGVfbW9kZSAm IEVOQUJMRV9JTlNFUlRfTU9ERSkgIT0gMCkKLSAgICBuZXdfY29uc29sZV9tb2RlIHw9IEVOQUJM RV9JTlNFUlRfTU9ERTsKLSAgU2V0Q29uc29sZU1vZGUgKGtleWJvYXJkX2hhbmRsZSwgbmV3X2Nv bnNvbGVfbW9kZSk7CisgICAgaW5fbW9kZSB8PSBFTkFCTEVfSU5TRVJUX01PREU7CisgIFNldENv bnNvbGVNb2RlIChrZXlib2FyZF9oYW5kbGUsIGluX21vZGUpOwogCiAgIC8qIEluaXRpYWxpemUg aW5wdXQgbW9kZTogaW50ZXJydXB0X2lucHV0IG9mZiwgbm8gZmxvdyBjb250cm9sLCBhbGxvdwog ICAgICA4IGJpdCBjaGFyYWN0ZXIgaW5wdXQsIHN0YW5kYXJkIHF1aXQgY2hhci4gICovCiAgIEZz ZXRfaW5wdXRfbW9kZSAoUW5pbCwgUW5pbCwgbWFrZV9maXhudW0gKDIpLCBRbmlsKTsKKworICBE V09SRCBvdXRfbW9kZTsKKyAgR2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sICZvdXRfbW9kZSk7 CisgIG91dF9tb2RlIHw9IEVOQUJMRV9QUk9DRVNTRURfT1VUUFVUOworICBvdXRfbW9kZSB8PSBF TkFCTEVfVklSVFVBTF9URVJNSU5BTF9QUk9DRVNTSU5HOworICBvdXRfbW9kZSB8PSBESVNBQkxF X05FV0xJTkVfQVVUT19SRVRVUk47CisgIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5j ZXMgPSBTZXRDb25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgb3V0X21vZGUpOworICBpZiAodzMyX3Vz ZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7CisgICAgICBpbnQgY3Vyc29yX29m Zl9wID0gWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29yX29mZl9wOworICAgICAgdC0+ ZGlzcGxheV9pbmZvLnR0eS0+Y3Vyc29yX2hpZGRlbiA9IGN1cnNvcl9vZmZfcDsKKyAgICB9CiB9 CiAKIC8qIGhtbW0uLi4gcGVyaGFwcyB0aGVzZSBsZXQgdXMgYnJhY2tldCBzY3JlZW4gY2hhbmdl cyBzbyB0aGF0IHdlIGNhbiBmbHVzaAogICAgY2x1bXBzIHJhdGhlciB0aGFuIG9uZS1jaGFyYWN0 ZXItYXQtYS10aW1lLi4uCiAKLSAgIHdlJ2xsIHN0YXJ0IHdpdGggbm90IG1vdmluZyB0aGUgY3Vy c29yIHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4gICovCisgICB3ZSdsbCBzdGFydCB3 aXRoIG5vdCBtb3ZpbmcgdGhlIGN1cnNvciB3aGlsZSBhbiB1cGRhdGUgaXMgaW4gcHJvZ3Jlc3Mu CisKKyAgIC4uLiBjLiAyMDI1LCBWVCBzZXF1ZW5jZXMgY2FuIG9ubHkgYmUgd3JpdHRlbiB3aXRo IFdyaXRlQ29uc29sZSwKKyAgIHByaW50ZiwgZXRjLiwgd2hpY2ggYWR2YW5jZSB0aGUgY3Vyc29y LgorKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2JlZ2luIChzdHJ1Y3QgZnJhbWUgKiBm KQogeworICBjdXJyZW50X3R0eSA9IEZSQU1FX1RUWSAoZik7CisKKyAgaWYgKCF3MzJfdXNlX3Zp cnR1YWxfdGVybWluYWxfc2VxdWVuY2VzCisgICAgICAmJiBjdXJyZW50X3R0eS0+VE5fbWF4X2Nv bG9ycyA+IDE2KQorICAgIHsKKyAgICAgIHR0eV9zZXR1cF9jb2xvcnMgKGN1cnJlbnRfdHR5LCAx Nik7CisgICAgICBzYWZlX2NhbGxuIChRdzMyY29uX3NldF91cF9pbml0aWFsX2ZyYW1lX2ZhY2Vz KTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2VuZCAoc3RydWN0IGZy YW1lICogZikKIHsKLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChjdXJfc2NyZWVuLCBjdXJz b3JfY29vcmRzKTsKKyAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRzLlksIGN1 cnNvcl9jb29yZHMuWCk7CiAgIGlmICghWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29y X29mZl9wCiAgICAgICAmJiBjdXJzb3JfY29vcmRzLlggPCBGUkFNRV9DT0xTIChmKSkKICAgICB3 MzJjb25fc2hvd19jdXJzb3IgKCk7CkBAIC02MjQsOCArNzkzLDYgQEAgc3lzX3RnZXRzdHIgKGNo YXIgKmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBmcm9tIGNtLmMKICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KIAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eTsKLXN0cnVj dCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5VTEw7CiBleHRlcm4gaW50IGNvc3Q7 CiBpbnQgY29zdCA9IDA7CiAKQEAgLTY5Myw3ICs4NjAsNiBAQCBjdXJzb3JZIChzdHJ1Y3QgdHR5 X2Rpc3BsYXlfaW5mbyAqdHR5KQogCQkJCUZhY2VzCiAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQogLyog VHVybiBhcHBlYXJhbmNlcyBvZiBmYWNlIEZBQ0VfSUQgb24gdHR5IGZyYW1lIEYgb24uICAqLwog CiBzdGF0aWMgV09SRApAQCAtNzI5LDYgKzg5NSwxMDAgQEAgdzMyX2ZhY2VfYXR0cmlidXRlcyAo c3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAgcmV0dXJuIGNoYXJfYXR0cjsKIH0KIAor c3RhdGljIHZvaWQKK3R1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkK K3sKKyAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSUQgKGYsIGZhY2VfaWQpOworICBz dHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKKyAgdW5zaWduZWQg bG9uZyBmZyA9IGZhY2UtPmZvcmVncm91bmQ7CisgIHVuc2lnbmVkIGxvbmcgYmcgPSBmYWNlLT5i YWNrZ3JvdW5kOworCisgIC8qIGlmIGVpdGhlciBvdXQgb2YgcmFuZ2UsIHNldCBib3RoIHRvIHZh bHVlcyByZXRyaWV2ZWQgZnJvbSB0ZXJtaW5hbCAqLworICBpZiAoREVGQVVMVFAgKGZnKSkgZmcg PSBmZ19ub3JtYWw7CisgIGlmIChERUZBVUxUUCAoYmcpKSBiZyA9IGJnX25vcm1hbDsKKworICAv KiBjb25zdHJ1Y3QgY29tYmluZWQgVlQgc2VxdWVuY2UgZm9yIGZhY2UgYXR0cmlidXRlcyAqLwor ICBEV09SRCBuID0gMDsKKyAgc2l6ZV90IHN6ID0gU0VRTUFYOworICBjaGFyIHNlcVtzel07Cisg IHN6LS07CisKKyAgaWYgKGZhY2UtPnR0eV9ib2xkX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4s IHN6LCB0dHktPlRTX2VudGVyX2JvbGRfbW9kZSwgTlVMTCk7CisgIGlmIChmYWNlLT50dHlfaXRh bGljX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX2l0YWxpY19t b2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9zdHJpa2VfdGhyb3VnaF9wKQorICAgIFNTUFJJ TlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9tb2RlLCBOVUxM KTsKKyAgaWYgKGZhY2UtPnVuZGVybGluZSAhPSAwKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBz eiwgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSwgTlVMTCk7CisgIC8qIE5vdGU6IHRoZSB2 YWx1ZXMgb2YgZmcgYW5kIGJnIGFyZSBhbHJlYWR5IHN3YXBwZWQgd2hlbiBmZyBhbmQgYmcgYXJl CisgICAgIHNldCBhbmQgZmFjZS0+dHR5X3JldmVyc2VfcC4gQWRkaW5nIHRoZSB0ZXJtaW5hbCBz ZXF1ZW5jZSBjb250YWluZWQKKyAgICAgaW4gdHR5LT5UU19lbnRlcl9yZXZlcnNlX21vZGUgc3dh cHMgdGhlbSBiYWNrLCB3aGljaCBpcyBubyBnb29kLiAqLworCisgIGNvbnN0IGNoYXIgKnNldF9m ZyA9IHR0eS0+VFNfc2V0X2ZvcmVncm91bmQ7CisgIGNvbnN0IGNoYXIgKnNldF9iZyA9IHR0eS0+ VFNfc2V0X2JhY2tncm91bmQ7CisgIGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gOCAgfHwKKyAg ICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNiB8fAorICAgICAgdHR5LT5UTl9tYXhfY29sb3Jz ID09IDI1NikKKyAgICB7CisgICAgICAvKiBpbmRpY2VzIGludG8gTWljcm9zb2Z0LWRlZmluZWQg Y29sb3JzIChzZWUgbGluayBhdCB0b3ApICovCisgICAgICB1bnNpZ25lZCBsb25nIGZnaSA9IDAs IGJnaSA9IDA7CisKKyAgICAgIGZnaSA9IChmZyA+PSAwICAmJiBmZyA8IDgpICAgPyBmZyArIDMw CisJOiAgIChmZyA+PSA4ICAmJiBmZyA8IDE2KSAgPyBmZyAtIDggKyA5MAorCTogICAoZmcgPj0g MTYgJiYgZmcgPCAyNTYpID8gZmcKKwk6IDA7CisgICAgICBpZiAoZmdpKQorCVNTUFJJTlRGIChz ZXEsICZuLCBzeiwgc2V0X2ZnLCBmZ2kpOworCisgICAgICBiZ2kgPSAoYmcgPj0gMCAgJiYgYmcg PCA4KSAgID8gYmcgKyA0MAorCTogICAoYmcgPj0gOCAgJiYgYmcgPCAxNikgID8gYmcgLSA4ICsg MTAwCisJOiAgIChiZyA+PSAxNiAmJiBiZyA8IDI1NikgPyBiZworCTogMDsKKyAgICAgIGlmIChi Z2kpCisJU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIGJnaSk7CisgICAgfQorICBlbHNl IGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gMTY3NzcyMTYpCisgICAgeworICAgICAgLyogbmVl ZCB0byBjb252ZXJ0IGRlZmF1bHRlZCB2YWx1ZXMgdG8gcGl4ZWwgaW5kaWNlcyAqLworICAgICAg aWYgKGZnID09IGZnX25vcm1hbCkgZmcgPSBnZXRfcGl4ZWwoZmcpOworICAgICAgaWYgKGJnID09 IGJnX25vcm1hbCkgYmcgPSBnZXRfcGl4ZWwoYmcpOworCisgICAgICAvKiBmZyBhbmQgYmcgYXJl IHBpeGVsIHZhbHVlcyAtIGRlY29tcG9zZSB0byByZ2IgdHJpcGxlcyAqLworICAgICAgdW5zaWdu ZWQgbG9uZyByZiA9IGZnLzY1NTM2LCBnZiA9IChmZy8yNTYpJjI1NSwgYmYgPSBmZyYyNTU7Cisg ICAgICB1bnNpZ25lZCBsb25nIHJiID0gYmcvNjU1MzYsIGdiID0gKGJnLzI1NikmMjU1LCBiYiA9 IGJnJjI1NTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2ZnLCByZiwgZ2YsIGJm KTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCByYiwgZ2IsIGJiKTsKKyAg ICB9CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHNlcSk7Cit9CisKK3N0YXRpYyB2b2lkCit0dXJu X29mZl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQoreworICBzdHJ1Y3QgdHR5 X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKKyAgdzMyY29uX3dyaXRlX3Z0X3Nl cSAodHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2RlKTsKK30KKworLyogcmV0dXJucyB0aGUgcGl4 ZWwgdmFsdWUgZm9yIHRoZSBnaXZlbiBpbmRleCBpbnRvIFZUIGJhc2UgY29sb3IgbWFwICovCitz dGF0aWMgdW5zaWduZWQgbG9uZyBwaXhlbF9jYWNoZVsxNl07CitzdGF0aWMgdW5zaWduZWQgbG9u ZworZ2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KQoreworICB1bnNpZ25lZCBpbnQgaSA9 ICh1bnNpZ25lZCBpbnQpIGluZGV4OworICBpZiAoaSA+IDE1KSByZXR1cm4gMDsKKyAgaWYgKGkg PT0gMCB8fCBwaXhlbF9jYWNoZVtpXSA+IDApCisgICAgcmV0dXJuIHBpeGVsX2NhY2hlW2ldOwor CisgIExpc3BfT2JqZWN0IHBpeCA9IHNhZmVfY2FsbG4gKFF3MzJjb25fZ2V0X3BpeGVsLCBtYWtl X3VmaXhudW0gKGkpKTsKKyAgcGl4ZWxfY2FjaGVbaV0gPSAodW5zaWduZWQgbG9uZykgWFVGSVhO VU0gKHBpeCk7CisgIHJldHVybiBwaXhlbF9jYWNoZVtpXTsKK30KKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemF0aW9uCisqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKwogLyogVGhlIElNRSB3aW5kb3cgaXMgbmVlZGVkIHRvIHJlY2VpdmUgdGhlIHNlc3Np b24gbm90aWZpY2F0aW9ucwogICAgcmVxdWlyZWQgdG8gcmVzZXQgdGhlIGxvdyBsZXZlbCBrZXli b2FyZCBob29rIHN0YXRlLiAgKi8KIApAQCAtODM0LDcgKzEwOTQsNyBAQCBpbml0aWFsaXplX3cz Ml9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0 KQogCUdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChjdXJfc2NyZWVuLCAmaW5mbyk7CiAKIAkv KiBTaHJpbmsgdGhlIHdpbmRvdyBmaXJzdCwgc28gdGhlIGJ1ZmZlciBkaW1lbnNpb25zIGNhbiBi ZQotICAgICAgICAgICByZWR1Y2VkIGlmIG5lY2Vzc2FyeS4gICovCisJICAgcmVkdWNlZCBpZiBu ZWNlc3NhcnkuICAqLwogCW5ld193aW5fZGltcy5Ub3AgPSAwOwogCW5ld193aW5fZGltcy5MZWZ0 ID0gMDsKIAluZXdfd2luX2RpbXMuQm90dG9tID0gbWluIChuZXdfc2l6ZS5ZLCBpbmZvLmR3U2l6 ZS5ZKSAtIDE7CkBAIC04NDksNiArMTEwOSw3IEBAIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHN0 cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCiAJbmV3X3dpbl9k aW1zLkJvdHRvbSA9IG5ld19zaXplLlkgLSAxOwogCW5ld193aW5fZGltcy5SaWdodCA9IG5ld19z aXplLlggLSAxOwogCVNldENvbnNvbGVXaW5kb3dJbmZvIChjdXJfc2NyZWVuLCBUUlVFLCAmbmV3 X3dpbl9kaW1zKTsKKwogICAgICAgfQogICB9CiAKQEAgLTg2MSw2ICsxMTIyLDggQEAgaW5pdGlh bGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQg KmhlaWdodCkKICAgICB9CiAKICAgY2hhcl9hdHRyX25vcm1hbCA9IGluZm8ud0F0dHJpYnV0ZXM7 CisgIGZnX25vcm1hbCA9IGNoYXJfYXR0cl9ub3JtYWwgJiAweDAwMGY7CisgIGJnX25vcm1hbCA9 IChjaGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmOwogCiAgIC8qIERldGVybWluZSBpZiB0 aGUgaW5mbyByZXR1cm5lZCBieSBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbwogICAgICBpcyBy ZWFsaXN0aWMuICBPbGQgTVMgVGVsbmV0IHNlcnZlcnMgdXNlZCB0byBvbmx5IGZpbGwgb3V0CkBA IC05MTcsMTMgKzExODAsMjEgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1p bmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIH0KIAogCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNwIEludGVyZmFjZQorKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKKy8qIFRPRE8gLSBtaWdyYXRlIHRvIFZUIHNlcXVlbmNlcyAoMjU2IGFuZCAyNGJp dCBjb2xvcikgKi8KIERFRlVOICgic2V0LXNjcmVlbi1jb2xvciIsIEZzZXRfc2NyZWVuX2NvbG9y LCBTc2V0X3NjcmVlbl9jb2xvciwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFNldCBzY3JlZW4g Zm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMuCiAKIEFyZ3VtZW50cyBzaG91bGQgYmUg aW5kaWNlcyBiZXR3ZWVuIDAgYW5kIDE1LCBzZWUgdzMyY29uc29sZS5lbC4gICovKQogICAoTGlz cF9PYmplY3QgZm9yZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCkKIHsKLSAgY2hhcl9h dHRyX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVncm91bmQpICsgKFhGSVhOQVQgKGJhY2tncm91bmQp IDw8IDQpOworCisgIGZnX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVncm91bmQpOworICBiZ19ub3Jt YWwgPSBYRklYTkFUIChiYWNrZ3JvdW5kKTsKKyAgY2hhcl9hdHRyX25vcm1hbCA9IGZnX25vcm1h bCArIChiZ19ub3JtYWwgPDwgNCk7CiAKICAgRnJlY2VudGVyIChRbmlsLCBRdCk7CiAgIHJldHVy biBRdDsKQEAgLTkzNyw4ICsxMjA4LDggQEAgU2VlIHczMmNvbnNvbGUuZWwgYW5kIGB0dHktZGVm aW5lZC1jb2xvci1hbGlzdCcgZm9yIG1hcHBpbmcgb2YgaW5kaWNlcwogdG8gY29sb3JzLiAgKi8p CiAgICh2b2lkKQogewotICByZXR1cm4gRmNvbnMgKG1ha2VfZml4bnVtIChjaGFyX2F0dHJfbm9y bWFsICYgMHgwMDBmKSwKLQkJRmNvbnMgKG1ha2VfZml4bnVtICgoY2hhcl9hdHRyX25vcm1hbCA+ PiA0KSAmIDB4MDAwZiksIFFuaWwpKTsKKyAgcmV0dXJuIEZjb25zIChtYWtlX2ZpeG51bSAoZmdf bm9ybWFsKSwKKwkJRmNvbnMgKG1ha2VfZml4bnVtIChiZ19ub3JtYWwpLCBRbmlsKSk7CiB9CiAK IERFRlVOICgic2V0LWN1cnNvci1zaXplIiwgRnNldF9jdXJzb3Jfc2l6ZSwgU3NldF9jdXJzb3Jf c2l6ZSwgMSwgMSwgMCwKQEAgLTk1NywxNSArMTIyOCwzMiBAQCB2b2lkCiBzeW1zX29mX250dGVy bSAodm9pZCkKIHsKICAgREVGVkFSX0JPT0wgKCJ3MzItdXNlLWZ1bGwtc2NyZWVuLWJ1ZmZlciIs Ci0gICAgICAgICAgICAgICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciwKLQkgICAgICAgZG9j OiAvKiBOb24tbmlsIG1lYW5zIG1ha2UgdGVybWluYWwgZnJhbWVzIHVzZSB0aGUgZnVsbCBzY3Jl ZW4gYnVmZmVyIGRpbWVuc2lvbnMuCisJCXczMl91c2VfZnVsbF9zY3JlZW5fYnVmZmVyLAorCQlk b2M6IC8qIE5vbi1uaWwgbWVhbnMgbWFrZSB0ZXJtaW5hbCBmcmFtZXMgdXNlIHRoZSBmdWxsIHNj cmVlbiBidWZmZXIgZGltZW5zaW9ucy4KIFRoaXMgaXMgZGVzaXJhYmxlIHdoZW4gcnVubmluZyBF bWFjcyBvdmVyIHRlbG5ldC4KIEEgdmFsdWUgb2YgbmlsIG1lYW5zIHVzZSB0aGUgY3VycmVudCBj b25zb2xlIHdpbmRvdyBkaW1lbnNpb25zOyB0aGlzCiBtYXkgYmUgcHJlZmVyYWJsZSB3aGVuIHdv cmtpbmcgZGlyZWN0bHkgYXQgdGhlIGNvbnNvbGUgd2l0aCBhIGxhcmdlCiBzY3JvbGwtYmFjayBi dWZmZXIuICAqLyk7CiAgIHczMl91c2VfZnVsbF9zY3JlZW5fYnVmZmVyID0gMDsKIAorICBERUZW QVJfQk9PTCAoInczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMiLAorCQl3MzJfdXNl X3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzLAorCQlkb2M6IC8qIElmIG5vbi1uaWwgdzMyIGNv bnNvbGUgdXNlcyB0ZXJtaW5hbCBzZXF1ZW5jZXMgZm9yIHNvbWUgb3V0cHV0IHByb2Nlc3Npbmcu CitUaGlzIHZhcmlhYmxlIGlzIHNldCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZSBjYXBhYmls aXRpZXMgb2YgdGhlIHRlcm1pbmFsLgorSXQgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIGFuZCBpbmRp Y2VzIG9mIGNvbG9ycyB1c2VkIGZvciBmYWNlcyBpbiB0aGUgdGVybWluYWwuCitJZiB0aGUgdGVy bWluYWwgY2Fubm90IGhhbmRsZSBWVCBzZXF1ZW5jZXMsIHRoZSB1cGRhdGUgaG9vayB0cmlnZ2Vy cyByZWNvbXB1dGF0aW9uIG9mIGZhY2VzLgorU2VlIGB3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJh bWUtZmFjZXMnLCB3aGljaCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHNldHRpbmcgdGhpcyB2YXJp YWJsZSAKK21hbnVhbGx5IGluIGEgcnVubmluZyBzZXNzaW9uLiAqLyk7CisgIHczMl91c2Vfdmly dHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMgPSAwOworCisgIERFRlNZTSAoUXczMmNvbl9zZXRfdXBf aW5pdGlhbF9mcmFtZV9mYWNlcywKKwkgICJ3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFj ZXMiKTsKKworICBERUZTWU0gKFF3MzJjb25fZ2V0X3BpeGVsLAorCSAgInczMmNvbi1nZXQtcGl4 ZWwiKTsKKwogICBkZWZzdWJyICgmU3NldF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU2dl dF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU3NldF9jdXJzb3Jfc2l6ZSk7CisgIAogfQpk aWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCA4OTU2MWQ3NTBiNi4u ZDMwNDBlYTYyOWIgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBA IC0xNzIzOSw3ICsxNzIzOSw3IEBAIHJlZGlzcGxheV9pbnRlcm5hbCAodm9pZCkKIAkgICAgIGFy ZWEsIGRpc3BsYXlpbmcgYSBkaWZmZXJlbnQgZnJhbWUgbWVhbnMgcmVkaXNwbGF5IHRoZQogCSAg ICAgd2hvbGUgdGhpbmcuICAqLwogCSAgU0VUX0ZSQU1FX0dBUkJBR0VEIChzZik7Ci0jaWYgIWRl ZmluZWQgRE9TX05UICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAorI2lmICFkZWZpbmVkIE1TRE9T ICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAogCSAgc2V0X3R0eV9jb2xvcl9tb2RlIChGUkFNRV9U VFkgKHNmKSwgc2YpOwogI2VuZGlmCiAJfQotLSAKMi40OS4wCgo= --b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 10:12:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 04 06:12:09 2025 Received: from localhost ([127.0.0.1]:45695 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uu6wr-0002m4-39 for submit <at> debbugs.gnu.org; Thu, 04 Sep 2025 06:12:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56020) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uu6wm-0002km-7I for 79298 <at> debbugs.gnu.org; Thu, 04 Sep 2025 06:12:05 -0400 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 1uu6wg-0007Wu-8J; Thu, 04 Sep 2025 06:11:58 -0400 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=b4w7yl8JwuPWs7fe+7Z1U79PnAX9mSbMVYYjw/2BQ3Q=; b=iafR5fwUeEsU fn1VIijK8VYqH7xzb9orhslfFKMhO93X1KrDe4hFJp5FfIdiqohsP7dYIaZ3b3G4lfZgy9bM4UkEq JA0I1dcowj7qvb4Dftjlms+xd1o0w2RyphugSnyxRkLXMhsvsyrA6r+5sqDkoT8P37SEcGb4f950x McNKCynYtBPp4izEWxlChufyv2ujq9M5EGtM29fZhgZ2ThXusDcOSZxJTFjjbWzRro3eAT3AbdJt6 mAuqLizr2Ip9IHYuzVJrY7z2oMcMYRhVj5wMjojEpsRaqHf7ENPsPbys3yOBz2FhpGuJW4rFIMbEF bVIc7yjEXKQmIJPmev+noQ==; Date: Thu, 04 Sep 2025 13:11:54 +0300 Message-Id: <864itijzmd.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev> (message from Ewan on Thu, 04 Sep 2025 09:40:18 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> <868qiuk9jr.fsf@HIDDEN> <UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Thu, 04 Sep 2025 09:40:18 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > > > I'm not yet sure I understand the issues and the proposed solutions. > > > > Let's back up a notch: Emacs in -nw mode on Unix systems already hides > > the cursor before writing glyphs, see tty_write_glyphs_1 and > > tty_write_glyphs_with_face. Why cannot we do the same in > > w32con_write_glyphs and w32con_write_glyphs_with_face, when > > WriteConsole is in use? Or what are the problems with doing that? > > On Unix systems, this rapid off/on cycle appears to be fast enough > to be imperceptible. Not so on Windows. My understanding is that > cursor changes are just less efficient on Windows. Why "rapid"? AFAICT, we hide the cursor before the first write, and unhide it only in update_end_hook, i.e. when we finished updating the entire frame. > Perhaps some visuals will help. Thanks, but they don't. Movies that show screens don't work well IME because the basic timing on the original system is basically lost. Tell you what: why don't you post a patch that includes all we were talking about, i.e. leaving most of the code not related to colors unmodified and using the system cursor, and including the call to hide/show the cursor modeled after what the Unix systems do, and we then take it from there? Maybe I'm missing something important here, but then I should be able to see if after applying the patch and building Emacs. Thanks.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 09:40:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 04 05:40:36 2025 Received: from localhost ([127.0.0.1]:45556 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uu6SK-0000nQ-7A for submit <at> debbugs.gnu.org; Thu, 04 Sep 2025 05:40:36 -0400 Received: from mail-24420.protonmail.ch ([109.224.244.20]:34693) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uu6SD-0000mU-MG for 79298 <at> debbugs.gnu.org; Thu, 04 Sep 2025 05:40:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756978822; x=1757238022; bh=+ikXZh52zpcZ7EOVY5rZMAltKzcCrgyxQPqEosG3oY8=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=mng2esdzv8WxdLKHY7kx1787YiVyXNw7ijcreB1Rh2FW5dDa8spn4QuTXpFNDXUcX Uphdk2+aAmHZMKN29k1jxJvWKA8LkU3gvMzOV6NabNz4AFMCutRPTujGAAAeWn+Tk3 RtYkP1Qd0jTdlfGI3F5282GWKcrkqB/G7eAWRBu9WBx6hdizRC77A0di1C7oReGngi ZW0y5itLhMIVSJK0Q3yBSPbtgBsI3nb7MzUB+FHZCxKeOneyjl8UT89uzk+gm59HxJ 1pAHlQ5Jgsm9cuuO5OG0J45QRZ5irvIejR/KyA7C/n3qBj97dcFA4XwOJDDiej00SJ /iR2AVa7PDn+w== Date: Thu, 04 Sep 2025 09:40:18 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <UsgD58K8KxwkYYtvOI7-rBa4OJkXiOE8Iv9_afjnfqw1rxKyFlvbxhMU-1nFxL-aaJLmmVak7MIfptZfxfZ47HQBIuhHrnDvM_LixgQeod8=@etown.dev> In-Reply-To: <868qiuk9jr.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> <868qiuk9jr.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: c8586ad5885f32390ace4880cb1fa8a33fa99de7 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: 79298 Cc: 79298 <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 (-) > I'm not yet sure I understand the issues and the proposed solutions. >=20 > Let's back up a notch: Emacs in -nw mode on Unix systems already hides > the cursor before writing glyphs, see tty_write_glyphs_1 and > tty_write_glyphs_with_face. Why cannot we do the same in > w32con_write_glyphs and w32con_write_glyphs_with_face, when > WriteConsole is in use? Or what are the problems with doing that? On Unix systems, this rapid off/on cycle appears to be fast enough to be imperceptible. Not so on Windows. My understanding is that cursor changes are just less efficient on Windows. Perhaps some visuals will help. Just FYI, all of these effects are=20 more pronounced with a colored background, because of the effect of colored spaces on write_row (in dispnew.c), and even more so when the=20 screen is full or changing significantly. Here is a baseline - no hiding of the cursor, so it jumps: https://sendvid.com/s25e79ou This one is from a build where the cursor is hidden before and shown after writing glyphs, as on Unix systems: https://sendvid.com/41falj8d And this one is where I ended up, hiding the cursor just for the=20 call to write_row where the row to be written is the echo area. The "flicker" is almost imperceptible, but still noticeable when=20 attending to the cursor, and esp. on my (quite large) monitor, when the 'q' in 'setq' is entered: https://sendvid.com/p43vhzav Frankly, the last of these is probably sufficient, and would=20 go unnoticed by the vast majority of users. But it required=20 changes to dispnew.c anyway, and being a perfectionist, I opted=20 for the perfectly stable option (drawing our own cursor): https://sendvid.com/6rxlxsfh > Yes, I understand. But I would prefer to leave the old code used > always, not just under the compatibility option (which should be > needed only in rare cases anyway). Totally understandable. It's fairly easy to just pull out the new bits added to handle cursor movement, clearing lines, etc., with ASCII sequences, and we just lose a tiny bit of efficiency.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 06:37:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 04 02:37:41 2025 Received: from localhost ([127.0.0.1]:44889 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uu3bJ-0007K0-2A for submit <at> debbugs.gnu.org; Thu, 04 Sep 2025 02:37:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37202) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uu3bE-0007Je-W7 for 79298 <at> debbugs.gnu.org; Thu, 04 Sep 2025 02:37:38 -0400 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 1uu3b9-0001AT-7I; Thu, 04 Sep 2025 02:37:31 -0400 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=HE6HnsNEBAXpEk0lEXFW3tGYD2YDc6UKXoh99eCRHWs=; b=UCEjsuEuxy/C eQAW7ODk8AtXRVprz3X2yVzYyyhM5JG6t6GLrh4f8lneUtClcpUoMZSnPM3s7fzmnLdG7zKSYipbM 0S8ed2C++5rZHzFMst/wpaGaj7p3fLjXdCECh8pqItbUOD4TCdgkpv0ZyEbNz3J/vvjaEL5Yj4od/ XxQRpMTTgUY3H1dOD7BaHyEybv07YPyaA6RRfh80L0TjaMKheoaYAHsHQNyYPGEIF5RnkfrqqKe1b BeHX8PK/2ALmsgWT0GDw40IXfzKvNvZlYZPwivahsd5EXZGbPCYBt1267aj7GD/Xjzj+ylDyFKpbP XFoF3gbse8UkZSI3pdPG4w==; Date: Thu, 04 Sep 2025 09:37:28 +0300 Message-Id: <868qiuk9jr.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> (message from Ewan on Thu, 04 Sep 2025 06:01:41 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Thu, 04 Sep 2025 06:01:41 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > > I meant hiding it at the beginning of an update (in > > w32con_update_begin) and showing it at the end of the update, which we > > already do. Then we can move it at will without it appearing on the > > screen, right? > > Correct, and I tried this initially, but while it fixes the "jumping" > problem, it causes the cursor to flash in-place irregularly, since it > is hidden during updates, and updates have a variable duration (meaning > you can't mitigate it with a tailored system cursor blink rate). The > strategy of hiding it only when updating the echo area was a response to > this issue. It minimizes the "off" time, so the flashing in-place is > reduced to a slight flicker. > > > > Previously, we maintained the "cursor" throughout the update as an internal > > > coordinate variable, without "realizing" the position in the system cursor, > > > through a call to SetConsoleCursorPosition, until the after-update hook. > > > That is no longer possible -- the system cursor position must be realized > > > in real-time. Hiding the system cursor the whole time, and replacing it > > > with a (nominal) "cursor" drawn in with the rest of the glyphs, achieves > > > the same effect that we had before, in light of the new constraint. The > > > (actual, system) cursor jumps around, invisibly, during the write, while > > > the (nominal, visible) cursor stays stable, then makes one discrete move > > > (when its new row is written). > > > > > > It sounds like you are describing what I suggested above, so we agree > > on how to handle this when WriteConsole is in use? > > Not quite. By "the whole time", I mean always, whether updating or not. > We effectively replace the internal coordinate variable with the actual > system cursor by making it invisible at all times, and moving it around. > > > But what do you mean by "replacing it with a (nominal) "cursor" drawn > > in with the rest of the glyphs" in this context? > > ... why "replacing", and what is the "nominal cursor"? > > You "replace" the (previously, visible) system cursor with a glyph that > has its regular face_id temporarily replaced by the CURSOR_FACE_ID. The > "nominal cursor" is then just a temporary assignment of the cursor face > to a whichever glyph will coincide with the (invisible) system cursor at > the end of the update cycle. You compute this position just before the > glyph matrix is written to the screen buffer. Visually, it is like the > solid GUI cursor, as its appearance is determined by the cursor face. > > Here's a recent build, in case you want to try for yourself: > https://github.com/ewantown/wemacs-build/releases/tag/v31.35.20250904.0a313d5 > > And here's a video demo, in case you don't want to run strangers' code: > https://sendvid.com/o4rr6p2b I'm not yet sure I understand the issues and the proposed solutions. Let's back up a notch: Emacs in -nw mode on Unix systems already hides the cursor before writing glyphs, see tty_write_glyphs_1 and tty_write_glyphs_with_face. Why cannot we do the same in w32con_write_glyphs and w32con_write_glyphs_with_face, when WriteConsole is in use? Or what are the problems with doing that? In general, drawing our own cursor on TTY frames sounds like a complication I would like to avoid. We don't do anything like that on Unix, so I'd prefer Windows to work similarly, using the system cursor. > > I know that Windows 11 has ConHost which supports the control > > sequences. It's the potential issues with older systems (AFAIR, > > ConHost premiered in XP) that I'm bothered with. Although I don't > > expect any such issues, it would be nice not to risk them at all, by > > keeping as much of the current code as possible. If someone does > > report such issues, testing a fix for them will be quite tricky, given > > the almost non-existent access to such old systems, and the fact that > > Emacs compiled with MinGW64 cannot even run on them. > > I see, fair concern. FWIW I have not /removed/ any of the old code. > The old path is still intact. At runtime you can ensure that it is used > by setting w32-use-virtual-terminal-sequences to nil (done automatically > if VT processing is not available), and w32-use-visible-system-cursor to > non-nil (manual - existing default is nil, unless using a screen-reader). > Not quite as comforting as a static guarantee of backward compatibility, > but I've tried to thread the new code through the old, branching on the > feature flags, so the old path remains functionally untouched. Yes, I understand. But I would prefer to leave the old code used always, not just under the compatibility option (which should be needed only in rare cases anyway).
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 06:01:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 04 02:01:54 2025 Received: from localhost ([127.0.0.1]:44686 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uu32f-00052z-H8 for submit <at> debbugs.gnu.org; Thu, 04 Sep 2025 02:01:53 -0400 Received: from mail-10625.protonmail.ch ([79.135.106.25]:44399) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uu32c-00052K-Vt for 79298 <at> debbugs.gnu.org; Thu, 04 Sep 2025 02:01:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756965703; x=1757224903; bh=uOnwU9KgOjsGJU1VX8aRXKPpCretXPvrPzqsMM6tGew=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=v8+boVm/ZQ/76qzGR3tYijygduDDiy7bj4PIqLWviS1CdeCbMSi/TRrYBhXyD68tc c7Z8R9f6UKKeui54q5058xggU05r9vh3qUOj/dQ+T/vv4MTfDpWqrzNDYq8juYBR+j jDSeUwhUkMX4LAviIQjOaSVq7ZIIOuTdwmTzzEN1bPLZb3aBvzKGPAyEp0pwtYcPOs rjjocIXbK10Xvttgn+jPg/8W01VG2EsbouEjMno7VlG7mAs3J2vmwh/ZYSsIHITc8L ak2PUOmJu+zTuBuo7QZZHn6ORASVakM/k+ARJfQ/a2OHx2KO784SH2Z9lRiZg3qiKq Jcy1HWxxu9AFg== Date: Thu, 04 Sep 2025 06:01:41 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <kEA3fkxMOZjiaAXERK22wnGZU7dvlCX03-nAcFL9JXjDHNx4qgVicl-DP3MEJoRaA4jUfrcJuOvpPSZLfuMg-OUsPapVi7CRrFD77WTOq4g=@etown.dev> In-Reply-To: <86jz2ekew5.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> <86jz2ekew5.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: d1af7b11b2f38eea9184641b315454f2629909a7 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: 79298 Cc: 79298 <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 (-) > I meant hiding it at the beginning of an update (in > w32con_update_begin) and showing it at the end of the update, which we > already do. Then we can move it at will without it appearing on the > screen, right? Correct, and I tried this initially, but while it fixes the "jumping"=20 problem, it causes the cursor to flash in-place irregularly, since it=20 is hidden during updates, and updates have a variable duration (meaning=20 you can't mitigate it with a tailored system cursor blink rate). The=20 strategy of hiding it only when updating the echo area was a response to this issue. It minimizes the "off" time, so the flashing in-place is=20 reduced to a slight flicker. > > Previously, we maintained the "cursor" throughout the update as an inte= rnal > > coordinate variable, without "realizing" the position in the system cur= sor, > > through a call to SetConsoleCursorPosition, until the after-update hook= . > > That is no longer possible -- the system cursor position must be realiz= ed > > in real-time. Hiding the system cursor the whole time, and replacing it > > with a (nominal) "cursor" drawn in with the rest of the glyphs, achieve= s > > the same effect that we had before, in light of the new constraint. The > > (actual, system) cursor jumps around, invisibly, during the write, whil= e > > the (nominal, visible) cursor stays stable, then makes one discrete mov= e > > (when its new row is written). >=20 >=20 > It sounds like you are describing what I suggested above, so we agree > on how to handle this when WriteConsole is in use?=20 Not quite. By "the whole time", I mean always, whether updating or not. We effectively replace the internal coordinate variable with the actual system cursor by making it invisible at all times, and moving it around. > But what do you mean by "replacing it with a (nominal) "cursor" drawn=20 > in with the rest of the glyphs" in this context?=20 > ... why "replacing", and what is the "nominal cursor"? You "replace" the (previously, visible) system cursor with a glyph that has its regular face_id temporarily replaced by the CURSOR_FACE_ID. The=20 "nominal cursor" is then just a temporary assignment of the cursor face to a whichever glyph will coincide with the (invisible) system cursor at=20 the end of the update cycle. You compute this position just before the=20 glyph matrix is written to the screen buffer. Visually, it is like the=20 solid GUI cursor, as its appearance is determined by the cursor face. Here's a recent build, in case you want to try for yourself: https://github.com/ewantown/wemacs-build/releases/tag/v31.35.20250904.0a313= d5 And here's a video demo, in case you don't want to run strangers' code: https://sendvid.com/o4rr6p2b > I know that Windows 11 has ConHost which supports the control > sequences. It's the potential issues with older systems (AFAIR, > ConHost premiered in XP) that I'm bothered with. Although I don't > expect any such issues, it would be nice not to risk them at all, by > keeping as much of the current code as possible. If someone does > report such issues, testing a fix for them will be quite tricky, given > the almost non-existent access to such old systems, and the fact that > Emacs compiled with MinGW64 cannot even run on them. I see, fair concern. FWIW I have not /removed/ any of the old code.=20 The old path is still intact. At runtime you can ensure that it is used=20 by setting w32-use-virtual-terminal-sequences to nil (done automatically if VT processing is not available), and w32-use-visible-system-cursor to=20 non-nil (manual - existing default is nil, unless using a screen-reader). Not quite as comforting as a static guarantee of backward compatibility, but I've tried to thread the new code through the old, branching on the feature flags, so the old path remains functionally untouched.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 04:56:18 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 04 00:56:18 2025 Received: from localhost ([127.0.0.1]:44478 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uu21C-0001J2-EW for submit <at> debbugs.gnu.org; Thu, 04 Sep 2025 00:56:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37428) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uu219-0001Io-IE for 79298 <at> debbugs.gnu.org; Thu, 04 Sep 2025 00:56:17 -0400 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 1uu212-0006of-T7; Thu, 04 Sep 2025 00:56:09 -0400 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=Ol9b/QgKnNdaMFcuPhHna/jM3cAIcb3hP82uj2wF250=; b=cMGieDaD7K2p a80JepxbELxflH3vux7ctqiByRKwyYt1ozsRtWPF2Zp+RaEfpSfjumC7cS8ePVtnbknsIAsEf9Zw5 a/DgJYetUGMdUYX0mX2UPLPxmwsnmmoMom8s/BYvFiiEA3Dpd5skitU0Vs+gYqgv7Zkj1Z4sYdnah 3ZLA3y5En269jK9BJoP4gBsQQsRHwdi2YInbNmmMDfy9rJ99ebs41pTq09q4AmszLKa2yA0d84DGv 4xW2kqc5GjyAFfdiM+bwrNxqobw7z0IX+fXn2cB5rYV42SNcEGlk8HE7ZtVEXS4d7qRnMmlvmUTH+ 8cG2kjQlAE2U6lZyJkTS+w==; Date: Thu, 04 Sep 2025 07:56:05 +0300 Message-Id: <86frd2ke8q.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <KEVNx_1ZJAuAsGHu3gPGw7pFe8gsYBivdXJUSoMLx6POSpqzHO4dlwUS841Hqx_KMecBCDe1jDHEmNIifIX2ksogt6yLMEJrTCqC4w0qYhI=@etown.dev> (message from Ewan on Wed, 03 Sep 2025 18:00:49 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <KEVNx_1ZJAuAsGHu3gPGw7pFe8gsYBivdXJUSoMLx6POSpqzHO4dlwUS841Hqx_KMecBCDe1jDHEmNIifIX2ksogt6yLMEJrTCqC4w0qYhI=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Wed, 03 Sep 2025 18:00:49 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > > > AFAIK users can choose to use the legacy ConHost even on newer Windows > > > versions, and I wouldn't want us to have to tell the users to tweak > > > their Emacs should it turn out ConHost causes problems with the > > > Virtual Terminal control sequences. > > > > > > Three things give me comfort on this front. One, Microsoft has added > > "support" for ASCII sequences (at least for color) to the Console. > > I have confirmed that the conhost.exe which ships with Win11 does > support the full range of ASCII control sequences. Emacs with the > above patch has no apparent differences from 30.2 release when run > with -q in ConHost. I don't have any older systems to test this on. I know that Windows 11 has ConHost which supports the control sequences. It's the potential issues with older systems (AFAIR, ConHost premiered in XP) that I'm bothered with. Although I don't expect any such issues, it would be nice not to risk them at all, by keeping as much of the current code as possible. If someone does report such issues, testing a fix for them will be quite tricky, given the almost non-existent access to such old systems, and the fact that Emacs compiled with MinGW64 cannot even run on them.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 04:42:16 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 04 00:42:16 2025 Received: from localhost ([127.0.0.1]:44438 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uu1nb-0000aE-S7 for submit <at> debbugs.gnu.org; Thu, 04 Sep 2025 00:42:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36654) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uu1nW-0000Zp-54 for 79298 <at> debbugs.gnu.org; Thu, 04 Sep 2025 00:42:11 -0400 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 1uu1nQ-0000hj-D5; Thu, 04 Sep 2025 00:42:04 -0400 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=Yz9Fl15RPc4g7JZSyzyx31x5b7b3Ra74+V06Gd2UQ7Y=; b=SGz4r9w+nRnb CEiP19KHhPCTCdS8bWXztRZz07tXp9hJpgfJi+bx7S5R5HAgiumheOQ9OXVaMVDr6AIzzZ+1DqTqH NwaR7vE73qyC64NWizKMgkj6vxET+b9NfmidovwXUVeiluMgp1t+ALXfx0CGcqiwwfNyR0ryxr8T6 rJnHFJiYDXkMiNoIUjaV5eViPlpXbOjG88xM4R7WDbPEwbTfhAma5gK4swFKb2bncTWQ5OEJPrjYM i4q09KBCLRqGM/t7jJqP6085eVDOU2lT8VfZkkd4VMaY0ijPDHR25cBWRm7pP9VsPxHrEGm81eFsH Fzs3+QQ2mGJ/w5I+1I5XdQ==; Date: Thu, 04 Sep 2025 07:42:02 +0300 Message-Id: <86jz2ekew5.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> (message from Ewan on Wed, 03 Sep 2025 17:05:56 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Wed, 03 Sep 2025 17:05:56 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > WriteConsoleOutput (used by the old code) doesn't move the cursor, but > can't be used for ASCII control sequences, and is being phased out by > Microsoft. WriteConsole is required for ASCII sequences, and moves the > cursor. Hiding the system cursor before every move/call to WriteConsole > and showing it after, makes for a very unstable cursor (flickers wildly). I meant hiding it at the beginning of an update (in w32con_update_begin) and showing it at the end of the update, which we already do. Then we can move it at will without it appearing on the screen, right? > Previously, we maintained the "cursor" throughout the update as an internal > coordinate variable, without "realizing" the position in the system cursor, > through a call to SetConsoleCursorPosition, until the after-update hook. > That is no longer possible -- the system cursor position must be realized > in real-time. Hiding the system cursor the whole time, and replacing it > with a (nominal) "cursor" drawn in with the rest of the glyphs, achieves > the same effect that we had before, in light of the new constraint. The > (actual, system) cursor jumps around, invisibly, during the write, while > the (nominal, visible) cursor stays stable, then makes one discrete move > (when its new row is written). It sounds like you are describing what I suggested above, so we agree on how to handle this when WriteConsole is in use? But what do you mean by "replacing it with a (nominal) "cursor" drawn in with the rest of the glyphs" in this context? I thought if we hide the cursor, it is simply not shown, although the system maintains its position, and so should we. Then why "replacing", and what is the "nominal cursor"?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 18:01:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 14:01:10 2025 Received: from localhost ([127.0.0.1]:41836 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1utrnC-0001XV-1D for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 14:01:10 -0400 Received: from mail-10627.protonmail.ch ([79.135.106.27]:17175) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1utrn4-0001Vk-T0 for 79298 <at> debbugs.gnu.org; Wed, 03 Sep 2025 14:01:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756922455; x=1757181655; bh=XumLVbgBm2hP3zMQpq8wS9y4UROKZJ2cqPeiBA8Iu5E=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=eUYF5PXaR+EgVv5Rvs2KFQUnDF4OAnC7s0OJ4Vioo+8X2LoHrYXnXTD6DheXl8v6I rNpq5nSZPZL8r1kYpKPi5at5sG65JumHNrL6qzHQRwSOt1UeKP0CHB7DvCX9HDMk9w B2o8nJeafD2ER35gKZTP6sjEnihToXzw8HeLxBgyKalq4YzXe5iaUbLwFY/34lP8PM RWa7iOLfn1iY0OEKMbYLS6xy/0TFWjmrShpgoEYSp/OOPt+XuMfS95Ozy0Kfxwh3A8 3YJqo3WYx2jB6siCMSZCDf408qQ+BgXZg8ERaz1JtFXhcddS0tcMK3cbi6/ZYvyVG9 AxiXR98wTrzyw== Date: Wed, 03 Sep 2025 18:00:49 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <KEVNx_1ZJAuAsGHu3gPGw7pFe8gsYBivdXJUSoMLx6POSpqzHO4dlwUS841Hqx_KMecBCDe1jDHEmNIifIX2ksogt6yLMEJrTCqC4w0qYhI=@etown.dev> In-Reply-To: <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 91b3dc5e93deeada66367d9f1cca92dc85e96c5d 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: 79298 Cc: 79298 <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 (-) > > AFAIK users can choose to use the legacy ConHost even on newer Windows > > versions, and I wouldn't want us to have to tell the users to tweak > > their Emacs should it turn out ConHost causes problems with the > > Virtual Terminal control sequences. >=20 >=20 > Three things give me comfort on this front. One, Microsoft has added > "support" for ASCII sequences (at least for color) to the Console. I have confirmed that the conhost.exe which ships with Win11 does support the full range of ASCII control sequences. Emacs with the=20 above patch has no apparent differences from 30.2 release when run with -q in ConHost. I don't have any older systems to test this on.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 17:06:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 13:06:13 2025 Received: from localhost ([127.0.0.1]:41385 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1utqw1-000500-Ec for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 13:06:13 -0400 Received: from mail-24421.protonmail.ch ([109.224.244.21]:38883) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1utqvv-0004zM-Hb for 79298 <at> debbugs.gnu.org; Wed, 03 Sep 2025 13:06:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756919160; x=1757178360; bh=oDUF0BY10ijCMlQ24OaHyg71VASdm629/TXbmb2pK2A=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=bf0MWMfPkhs2ZF84jtVAVPJDOPKwM5RE+HQR7Oc1BwWEU3eAng17mY98U+3CNXNRI ML4LYd3myy/KWhiIGZdDE9G0Opnci4gYcrpLgUlhqpe9jdfMuBD7UIoXgW8/bVDxfn 80RQgVTTAOr30Ki+nxeERYgnMWRMIBH3ApsdJO3rUPPiGNlK9yDxfQkynvsAJt7xWY ml9it9at6G7BedZAZ77ZwIxilQ6wq5AlMD1y8Tyk7DxKfglOsaktyW3fNjXeTVXM9i ewQwxcewFm/O2eu22iJNk3aCycEqZB36jPiQ9HLqjWQWWvSJT891VHXou0txvJN4/R qPGydGRiOO2ZQ== Date: Wed, 03 Sep 2025 17:05:56 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <T7XOcL6TC5iR5LGYIz6wqvrWM956LR1mmTAlBu-PdPu5N9V3_Avh72kvUqB6vnCVmt8pYswaQdyLKoHSaJHIxZuPBx4yOmwU-p9fLk3GlH0=@etown.dev> In-Reply-To: <86ms7bjxu9.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> <86ms7bjxu9.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 01644393d9efe30de4d7bfcb458f3e5dea7a82fd 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: 79298 Cc: 79298 <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 (-) > > But the previous implementation achieved color display by direct writes > > to regions of the screen (using WriteConsoleOutput etc.), not requiring > > cursor movement. The cursor was only moved once, at the very end of an > > update cycle. That was what enabled the stable cursor appearance (and > > there are comments about this "trick" dating back to MSDOS). But for > > true color support, that is not an option. We have to use WriteConsole > > (or printf, etc.), which move the cursor during the write, and that is > > what (re-)introduces the "unstable cursor" problem. AFAIK, it is not > > that redisplay is now inherently slower, per se... It is that it now > > requires cursor movement, and if the MSDOS commentary still holds up, > > this is "expensive" at a low level - enough so that it is perceptible, > > mostly because we make such frequent use of the echo area. >=20 >=20 > Why can't we turn off the cursor before calling WriteConsoleOutput, > then turn it on again, after the call returns and we move the cursor > to its original place? WriteConsoleOutput (used by the old code) doesn't move the cursor, but can't be used for ASCII control sequences, and is being phased out by=20 Microsoft. WriteConsole is required for ASCII sequences, and moves the cursor. Hiding the system cursor before every move/call to WriteConsole=20 and showing it after, makes for a very unstable cursor (flickers wildly). Previously, we maintained the "cursor" throughout the update as an internal= =20 coordinate variable, without "realizing" the position in the system cursor, through a call to SetConsoleCursorPosition, until the after-update hook.=20 That is no longer possible -- the system cursor position must be realized= =20 in real-time. Hiding the system cursor the whole time, and replacing it with a (nominal) "cursor" drawn in with the rest of the glyphs, achieves=20 the same effect that we had before, in light of the new constraint. The (actual, system) cursor jumps around, invisibly, during the write, while=20 the (nominal, visible) cursor stays stable, then makes one discrete move=20 (when its new row is written).
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 16:38:18 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 12:38:18 2025 Received: from localhost ([127.0.0.1]:41253 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1utqV0-0003Nu-3w for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 12:38:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49058) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1utqUx-0003Nh-Nt for 79298 <at> debbugs.gnu.org; Wed, 03 Sep 2025 12:38:16 -0400 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 1utqUr-0002k1-HD; Wed, 03 Sep 2025 12:38:09 -0400 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=pIWAxaw9WtFvMvLAQRLEUOu6b3zSgrUkEykOLKJK5JM=; b=IdxhNpPXyQgL J7EnrcPTHi3WpTjkWkd8fAw4ZPUpu50IGFtkqY8G4oLDvS5JyePawPA/ayWPz9+r1nP+ON8PxlbWb zV8HoLZc3oTb4QWGpcgWcYEKFFAsaGNWdoBCMDSAVLjPqW3+oLd5tTdFezvAmEkp1eoJuwd73v0o/ 6o7DZl57/SP4qVVVIOIO7PAx5Ic60ud9rnXDM/Jm+olpvblEI9FMZKPWslBWw/UMBI1SwdF0ru3fk dpVcnsyT+OUoXsmAd5vEOH5KpGzZLhR26wr+UT7ADGIpI8bLb47HuPF2ap6e3cEWlLo5MdHBuuCyS +tZoqJp9tC+GxxccKmDSLA==; Date: Wed, 03 Sep 2025 19:38:06 +0300 Message-Id: <86ms7bjxu9.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> (message from Ewan on Wed, 03 Sep 2025 15:54:11 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Wed, 03 Sep 2025 15:54:11 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > Not a problem, the implementation will be of use to me regardless of > whether it goes in to master, the documentation is just to explain it > to others. However, there is, I think, a fundamental incompatibility > between the mechanism supporting true color, and the way we were doing > things. There's a short bit about this in the manual entry. We could > stick with use of the API to move the cursor, clear lines, etc. - > that's all just a matter of choice (before, we jumped through hoops with > the API to achieve things there are now specific control sequences for). > > But the previous implementation achieved color display by direct writes > to regions of the screen (using WriteConsoleOutput etc.), not requiring > cursor movement. The cursor was only moved once, at the very end of an > update cycle. That was what enabled the stable cursor appearance (and > there are comments about this "trick" dating back to MSDOS). But for > true color support, that is not an option. We have to use WriteConsole > (or printf, etc.), which move the cursor during the write, and that is > what (re-)introduces the "unstable cursor" problem. AFAIK, it is not > that redisplay is now inherently slower, per se... It is that it now > requires cursor movement, and if the MSDOS commentary still holds up, > this is "expensive" at a low level - enough so that it is perceptible, > mostly because we make such frequent use of the echo area. Why can't we turn off the cursor before calling WriteConsoleOutput, then turn it on again, after the call returns and we move the cursor to its original place? > I share the concern about this all being relatively untested. I'll put > it through the motions in my (limited) use of Windows, but there > will probably be some bugs I don't catch. In any case, it's made my > use of terminal Emacs on Windows tolerable (if not pleasant!). For this reason, I'd prefer to make as few changes as possible in the console-related management code. Where we must do that, fine, but let's try leaving the rest intact, as it was tested by time and many users (and we had in the past some tricky issues, which are now resolved).
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 16:10:06 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 12:10:06 2025 Received: from localhost ([127.0.0.1]:41199 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1utq3i-00021Q-6c for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 12:10:06 -0400 Received: from mail-10626.protonmail.ch ([79.135.106.26]:10105) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1utq3d-00020T-V0 for 79298 <at> debbugs.gnu.org; Wed, 03 Sep 2025 12:10:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756915794; x=1757174994; bh=X3nW9EmmuOyFu+W5Ft3rfmWPA57e+y6EWz2JHU0Gu9Y=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=RYFB99WHP3Vvyyb9m/FJu0RsliNIL7PyB8CCbGs878kTvkS5MPgSJ4GWw/nXijO96 Atfkjz/I3BLcxi49GWfzSaSaoY94A6KBDZbpy1rBxNWlGPgWHI/oP4IXD9BD/IMayl LjXA99dCoyObl4DbutKzMQdazAlumVf9P8EZ9wJ/5V7FuezfQ9IrV2p7t2BxPhLfLr G7FECsLjNdHLaQh9VQndyyKLrmu8pmJxcsyxvwJ1bS10ItnL72VySgf4LsDunBbE1u fTUgehRGnPx+VxIhswCguupU/rS4x/QwBnRBFEKiKEqDnHWSUEtsNnAV67CTUETkQC 2qBCEsuTtAJGg== Date: Wed, 03 Sep 2025 16:09:50 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <XWeataIoDEi-jynOiRJApysD_xdYs9nJ6PxsYt74lfTCoj6EQEDGP2zhX8fKLy1tLNxbyPs9mjf5rUjIVFCdIJvOw1FQnilyIHblD3LEhFA=@etown.dev> In-Reply-To: <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: e4546d0c73cbec744a83ada2dc32225f6c0dcdbf 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: 79298 Cc: 79298 <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 (-) > Finally, the Emacs-drawn cursor replacing the system cursor when > w32-use-visible-system-caret is nil, is independent of ASCII sequence > support. It depends only on the 'cursor' face being defined (I believe > it always will be), and just adds an additional pass, for at most two > rows, through w32con_write_glyphs, which branches between old and new > based on the feature flag, and so should work with the legacy system. Correction, I managed to avoid the need for additional passes. Rather, it just forces full re-write (disabling optimizations), for at most=20 two rows (the one where the cursor was, and the one where it will be).
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 15:54:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 11:54:24 2025 Received: from localhost ([127.0.0.1]:41133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1utpoV-000179-Fa for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 11:54:24 -0400 Received: from mail-4317.protonmail.ch ([185.70.43.17]:35385) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1utpoS-00016i-4D for 79298 <at> debbugs.gnu.org; Wed, 03 Sep 2025 11:54:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756914853; x=1757174053; bh=UJR5z8HW3FK6Rd2GGbgU80u/LdhNs42MwpM10wBeP+Q=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=f+rWud2AsI7yyKnmOch4RktpnCB9lD38u68i/Z+3Pahxuyr3FxjR24/lM/sdgHzO5 3mPoToI3vhrSQwteyv0MkZFhAcIOTaX9Wk0I5RyAJAcifzn7DOfIUdv80qpsrJDWcF S5MBItGvgBD5oi10jDH/zoUgRtGfAWvqAvZV3zqZp1443SZHuWi2dSE8TZW8bb3/Tj ZyuAGJil9CUCvCOAAsQlV/pFYVBhyFCtzPALGF79AUV/v+KwAprOnNG0vf7lM0HULu PwJvU7R8HnfZp349TIfZ3DMkUYby7S3eauRedRah/2EIB5an9uRSHWwX+FT7xwP3gU pRUcAzn/wndPQ== Date: Wed, 03 Sep 2025 15:54:11 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <e-6EzFSZiPNxKB7OrYiXQDE8vF_XQaGaOM0yV4nMTsEXIgbwlU39Ct-mTDzi-5GyjoQShRtF5aX5cBFpKrDzOIPge13OUUdFT52SWBJVhW4=@etown.dev> In-Reply-To: <86qzwnk333.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> <86qzwnk333.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 3a78479a5bcbc86f97b1fcdb2207d20dce814f7d 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: 79298 Cc: 79298 <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 (-) > > (1) ASCII control sequences require moving the cursor during redisplay, > > (2) the Windows system cursor picks up these movements, and > > (3) redisplay is slow enough that cursor jumps to the echo area are per= ceptible. > >=20 > > So, I've also implemented some changes to cursor handling in Windows TT= Y. >=20 >=20 > I wish you brought this up for discussion before actually coding (and > documenting) these extensive changes. I'd rather we stayed with the > original use of the Windows Console APIs for everything except the > true color support, if possible. AFAIK, there are no fundamental > incompatibilities between these two features (if I'm mistaken, please > describe the problems), and we need to keep the old Console APIs > anyway for as long as we support the older Windows systems. Plus, > AFAIK users can choose to use the legacy ConHost even on newer Windows > versions, and I wouldn't want us to have to tell the users to tweak > their Emacs should it turn out ConHost causes problems with the > Virtual Terminal control sequences. And you have already bumped into > problems with this, in the form of cursor flashing momentarily in the > wrong places and slower redisplay. Not a problem, the implementation will be of use to me regardless of=20 whether it goes in to master, the documentation is just to explain it=20 to others. However, there is, I think, a fundamental incompatibility=20 between the mechanism supporting true color, and the way we were doing=20 things. There's a short bit about this in the manual entry. We could=20 stick with use of the API to move the cursor, clear lines, etc. -=20 that's all just a matter of choice (before, we jumped through hoops with=20 the API to achieve things there are now specific control sequences for).=20 But the previous implementation achieved color display by direct writes to regions of the screen (using WriteConsoleOutput etc.), not requiring=20 cursor movement. The cursor was only moved once, at the very end of an=20 update cycle. That was what enabled the stable cursor appearance (and there are comments about this "trick" dating back to MSDOS). But for=20 true color support, that is not an option. We have to use WriteConsole=20 (or printf, etc.), which move the cursor during the write, and that is what (re-)introduces the "unstable cursor" problem. AFAIK, it is not=20 that redisplay is now inherently slower, per se... It is that it now=20 requires cursor movement, and if the MSDOS commentary still holds up,=20 this is "expensive" at a low level - enough so that it is perceptible, mostly because we make such frequent use of the echo area. > In addition, the changes you propose introduce Windows-specific code > into platform-independent source files, like dispnew.c, something we > generally prefer to avoid. Agreed, this is not ideal, I just couldn't think of another way to solve the unstable cursor problem. I've been careful to ensure the functional changes are only present when compiled for Windows, but if there is an=20 alternative, I'm all for it. > So let's take a step back and discuss the need for this part of the > changes: what problems will we encounter if we leave cursor handling > and the rest of console management to the old Console APIs, and use > the new ASCII sequences only for true color? If the problems are not > too hard to solve, I'd prefer to leave that code alone, with minimal > necessary changes. If nothing else, it leaves use with code which was > tested by many users during a long time. In short, ASCII sequences for true color destabilize the system cursor=20 appearance, because they undermine the "trick" we were turning. As far as I can tell, there is no way around that. > AFAIK users can choose to use the legacy ConHost even on newer Windows > versions, and I wouldn't want us to have to tell the users to tweak > their Emacs should it turn out ConHost causes problems with the > Virtual Terminal control sequences. Three things give me comfort on this front. One, Microsoft has added=20 "support" for ASCII sequences (at least for color) to the Console. "Some virtual terminal emulators support a palette of colors greater=20 than the 16 colors provided by the Windows Console. For these extended=20 colors, the Windows Console will choose the nearest appropriate color=20 from the existing 16 color table for display." Two, when initializing a TTY session on Windows, we request the=20 ENABLE_VIRTUAL_TERMINAL_PROCESSING output mode. If not available, e.g. on legacy systems, we disable the feature flag and revert to=20 the older color display "trick". Finally, the Emacs-drawn cursor replacing the system cursor when w32-use-visible-system-caret is nil, is independent of ASCII sequence=20 support. It depends only on the 'cursor' face being defined (I believe it always will be), and just adds an additional pass, for at most two=20 rows, through w32con_write_glyphs, which branches between old and new based on the feature flag, and so should work with the legacy system. I share the concern about this all being relatively untested. I'll put it through the motions in my (limited) use of Windows, but there=20 will probably be some bugs I don't catch. In any case, it's made my=20 use of terminal Emacs on Windows tolerable (if not pleasant!).
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 14:45:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 10:45:10 2025 Received: from localhost ([127.0.0.1]:40771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1utojV-0005me-Gp for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 10:45:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37270) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1utojT-0005hZ-8i for 79298 <at> debbugs.gnu.org; Wed, 03 Sep 2025 10:45:08 -0400 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 1utojN-0005Le-Gi; Wed, 03 Sep 2025 10:45:01 -0400 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=zKyWestE/tKBZ027+GeKTAF3vAey/1jAeKqCEBRdPNE=; b=BC9g6m6rYXvD XA1dMD6Pwx52/Hh2mx8ym7+se/J05s6320TcXJYDMflBHiu5cjkl0n1Up5FhK55BDPXXJPtjdV+B+ 1IcGdESPliC8OifZQMhP6ZwRReU8yIuEf1D2J+NJQg8eqvMqFGIXBjVJTVEvUl4CRKH+pKS5Sdt2m blXGp1vHabvXk19vcR+uYa4E2MptcmFGuaw8dqiK8FsaEvxL2fnqGCPdAXEZrGbVIv1GS4YB927ji 89Xa10VM5si3pAdhVHsfZh6s4iS8ITjXc5zeQSDgnfBHf1R2Bqs3VvGPAW9WPob1xDUopiXXO7MYW EzzgqpdAuMqbbGG4qosWCw==; Date: Wed, 03 Sep 2025 17:44:48 +0300 Message-Id: <86qzwnk333.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> (message from Ewan on Wed, 03 Sep 2025 09:35:37 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Wed, 03 Sep 2025 09:35:37 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > I'm still waiting on a disclaimer, but in the meantime, I have attached > the revised patch (with a slightly broadened scope). Thanks. > Basically, it's much smoother to do a wholesale migration from the Windows > Console API to ASCII control sequences, controlled by an auto-set feature flag. > > However, > > (1) ASCII control sequences require moving the cursor during redisplay, > (2) the Windows system cursor picks up these movements, and > (3) redisplay is slow enough that cursor jumps to the echo area are perceptible. > > So, I've also implemented some changes to cursor handling in Windows TTY. > > If the existing variable 'w32-use-visible-system-caret is nil (the default), > then we always hide the system cursor, and Emacs handles cursor display. > This is the smoothest UX, currently limited to a non-blinking solid cursor. > Otherwise, the system cursor is used, but we hide it momentarily when > redisplaying the echo area, resulting in a slight cursor flicker in-place > (the alternative being a noticeable "flashing" of the cursor in the echo area). I wish you brought this up for discussion before actually coding (and documenting) these extensive changes. I'd rather we stayed with the original use of the Windows Console APIs for everything except the true color support, if possible. AFAIK, there are no fundamental incompatibilities between these two features (if I'm mistaken, please describe the problems), and we need to keep the old Console APIs anyway for as long as we support the older Windows systems. Plus, AFAIK users can choose to use the legacy ConHost even on newer Windows versions, and I wouldn't want us to have to tell the users to tweak their Emacs should it turn out ConHost causes problems with the Virtual Terminal control sequences. And you have already bumped into problems with this, in the form of cursor flashing momentarily in the wrong places and slower redisplay. In addition, the changes you propose introduce Windows-specific code into platform-independent source files, like dispnew.c, something we generally prefer to avoid. So let's take a step back and discuss the need for this part of the changes: what problems will we encounter if we leave cursor handling and the rest of console management to the old Console APIs, and use the new ASCII sequences only for true color? If the problems are not too hard to solve, I'd prefer to leave that code alone, with minimal necessary changes. If nothing else, it leaves use with code which was tested by many users during a long time. Thanks again for working on this.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 09:35:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 05:35:57 2025 Received: from localhost ([127.0.0.1]:38616 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1utjuH-00043T-DU for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 05:35:57 -0400 Received: from mail-4317.protonmail.ch ([185.70.43.17]:50357) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1utjuC-00043D-3s for 79298 <at> debbugs.gnu.org; Wed, 03 Sep 2025 05:35:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756892143; x=1757151343; bh=dKm9CN+s2MHcDqGWdoP/tEqPaViPqWYttJBMx9gfYf4=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=BxvH4YhNkb4NZQdOyaIzU+14/7/vCDAFhBqj3uN6oU/0PjVFBRQ1obqDnLd1dyCfb n0rUAV7H38/Ur5grJPbm8XXHsqG8LnqoWenDcGdBnY7ws51MVtAGfmKwKuc5LCUN3E ELl4wgQuwIN6fbVQn8lRDzDhkNRcNcgCpuxOPz3qoIX13bhjKQq2UTSiVEP0vGmbze JFi5rRrRGYp1dgUlM9gjcfvs7dPhfbq37736A2YPOY447GhAX5zIwpaj21RIfXqaXi oQhQDXP+lVcw8Nv22vDRdZc2BJBKa40K4/VJqVlegu5BC1bldQRgau59NWlWsiPzS6 JY0No6OfkJ5Fw== Date: Wed, 03 Sep 2025 09:35:37 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <QxauaRQZ_S5lFHJO8dwOJEqNg51BN1kNDjx1l8ARQvCQyDHl8zbfHb70A-Zj4aw7TC8gyUckkJnZB1u8xQVH5L_0xonkHCuyAA3K58bboSM=@etown.dev> In-Reply-To: <86sehdt15o.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> <86sehdt15o.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 47a494a5f8115d4cd905706ca86b27406a7b65b7 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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 (-) --b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I'm still waiting on a disclaimer, but in the meantime, I have attached=20 the revised patch (with a slightly broadened scope). Basically, it's much smoother to do a wholesale migration from the Windows Console API to ASCII control sequences, controlled by an auto-set feature f= lag. However, (1) ASCII control sequences require moving the cursor during redisplay, (2) the Windows system cursor picks up these movements, and (3) redisplay is slow enough that cursor jumps to the echo area are percept= ible. So, I've also implemented some changes to cursor handling in Windows TTY. If the existing variable 'w32-use-visible-system-caret is nil (the default)= , then we always hide the system cursor, and Emacs handles cursor display. This is the smoothest UX, currently limited to a non-blinking solid cursor. Otherwise, the system cursor is used, but we hide it momentarily when redisplaying the echo area, resulting in a slight cursor flicker in-place (the alternative being a noticeable "flashing" of the cursor in the echo ar= ea). More details in the included news entries and changes to the manual. Logs: * doc/emacs/cmdargs.texi: Added 24-bit option and note re: --color on Windo= ws. * doc/emacs/msdos.texi: Documented VT sequence migration and feature flag(s= ). * etc/NEWS.30: Entries on VT sequences (color) and cursor display. * lisp/term/tty-colors.el: Added '24bit cell in tty-color-mode-alist. * lisp/term/w32console.el: Changes/additions enabling VT sequence migration= . * src/dispnew.c: WINDOWSNT-specific segments for w32- and Emacs-drawn curso= r(s). * src/term.c: Extended existing TTY color infrastructure to include WINDOWS= NT. * src/termchar.h: Added extern decl. (tty_setup_colors) for use in w32conso= le.c. * src/w32console.c: Migration to ASCII control sequences (feature-flagged). * src/xdisp.c: Modified #if condition to call set_tty_color_mode for WINDOW= SNT. --b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI Content-Type: application/octet-stream; name=0001-Windows-TTY-Migration-to-Virtual-Terminal-Sequences.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Windows-TTY-Migration-to-Virtual-Terminal-Sequences.patch RnJvbSA4ZjZjNjQ1NmE1ZmZjN2FlYWQ1N2ViNDM4ZGNkZmM0YWI1NTEyMDY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFdlZCwg MyBTZXAgMjAyNSAwMTo0NzoyMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFdpbmRvd3MgVFRZIE1p Z3JhdGlvbiB0byBWaXJ0dWFsIFRlcm1pbmFsIFNlcXVlbmNlcwoKLS0tCiBkb2MvZW1hY3MvY21k YXJncy50ZXhpICB8ICAgOSArLQogZG9jL2VtYWNzL21zZG9zLnRleGkgICAgfCAgNDggKystCiBl dGMvTkVXUy4zMCAgICAgICAgICAgICB8ICAyOSArKwogbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwg fCAgIDMgKy0KIGxpc3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTUyICsrKysrKy0tCiBzcmMvZGlz cG5ldy5jICAgICAgICAgICB8ICA2NyArKystCiBzcmMvdGVybS5jICAgICAgICAgICAgICB8ICA4 NSArKystCiBzcmMvdGVybWNoYXIuaCAgICAgICAgICB8ICAgMiArCiBzcmMvdzMyY29uc29sZS5j ICAgICAgICB8IDgzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBz cmMveGRpc3AuYyAgICAgICAgICAgICB8ICAgMiArLQogMTAgZmlsZXMgY2hhbmdlZCwgOTY2IGlu c2VydGlvbnMoKyksIDI2NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvY21k YXJncy50ZXhpIGIvZG9jL2VtYWNzL2NtZGFyZ3MudGV4aQppbmRleCA3OWFlMmQwNjRkMS4uZWVk MjYzYzM5MDUgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKKysrIGIvZG9jL2Vt YWNzL2NtZGFyZ3MudGV4aQpAQCAtMTAyNCwxOSArMTAyNCwyMiBAQCBjb2xvcmVkIGRpc3BsYXku CiBAaXRlbXggYW5zaTgKIFR1cm4gb24gdGhlIGNvbG9yIHN1cHBvcnQgdW5jb25kaXRpb25hbGx5 LCBhbmQgdXNlIGNvbG9yIGNvbW1hbmRzCiBzcGVjaWZpZWQgYnkgdGhlIEFOU0kgZXNjYXBlIHNl cXVlbmNlcyBmb3IgdGhlIDggc3RhbmRhcmQgY29sb3JzLgorQGl0ZW0gMjRiaXQKK1R1cm4gb24g c3VwcG9ydCBmb3IgYWxsIGRlZmluZWQgMjQtYml0IFJHQiBjb2xvcnMgaWYgYXZhaWxhYmxlLgor Q3VycmVudGx5IHRoaXMgaXMgZWZmZWN0aXZlIG9uIE1TLVdpbmRvd3MgKDEwKykgb25seS4KIEBp dGVtIEB2YXJ7bnVtfQogVXNlIGNvbG9yIG1vZGUgZm9yIEB2YXJ7bnVtfSBjb2xvcnMuICBJZiBA dmFye251bX0gaXMgQG1pbnVze30xLCB0dXJuIG9mZgogY29sb3Igc3VwcG9ydCAoZXF1aXZhbGVu dCB0byBAc2FtcHtuZXZlcn0pOyBpZiBpdCBpcyAwLCB1c2UgdGhlCiBkZWZhdWx0IGNvbG9yIHN1 cHBvcnQgZm9yIHRoaXMgdGVybWluYWwgKGVxdWl2YWxlbnQgdG8gQHNhbXB7YXV0b30pOwogb3Ro ZXJ3aXNlIHVzZSBhbiBhcHByb3ByaWF0ZSBzdGFuZGFyZCBtb2RlIGZvciBAdmFye251bX0gY29s b3JzLgogRGVwZW5kaW5nIG9uIHlvdXIgdGVybWluYWwncyBjYXBhYmlsaXRpZXMsIEVtYWNzIG1p Z2h0IGJlIGFibGUgdG8gdHVybgotb24gYSBjb2xvciBtb2RlIGZvciA4LCAxNiwgODgsIG9yIDI1 NiBhcyB0aGUgdmFsdWUgb2YgQHZhcntudW19LiAgSWYKLXRoZXJlIGlzIG5vIG1vZGUgdGhhdCBz dXBwb3J0cyBAdmFye251bX0gY29sb3JzLCBFbWFjcyBhY3RzIGFzIGlmCitvbiBhIGNvbG9yIG1v ZGUgZm9yIDgsIDE2LCA4OCwgMjU2LCBvciAxNjc3NzIxNiBhcyB0aGUgdmFsdWUgb2YgQHZhcntu dW19LgorSWYgdGhlcmUgaXMgbm8gbW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMs IEVtYWNzIGFjdHMgYXMgaWYKIEB2YXJ7bnVtfSB3ZXJlIDAsIGkuZS4sIGl0IHVzZXMgdGhlIHRl cm1pbmFsJ3MgZGVmYXVsdCBjb2xvciBzdXBwb3J0CiBtb2RlLgogQGVuZCB0YWJsZQogCi1UaGlz IG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUy4KK1RoaXMgb3B0 aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMtRE9TLCBub3IgTVMtV2luZG93cyBwcmlvciB0byBXaW5k b3dzIDEwLgogCiBAY2luZGV4IGNvbG9ycyBvbiBjaGFyYWN0ZXIgdGVybWluYWwsIGNoYW5naW5n IGR1cmluZyBzZXNzaW9uCiBAY2luZGV4IGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdlIGNvbG9y IG1vZGUKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpIGIvZG9jL2VtYWNzL21zZG9z LnRleGkKaW5kZXggZjk3MTUxYzYzMGYuLmNkOGUzMjAyN2M3IDEwMDY0NAotLS0gYS9kb2MvZW1h Y3MvbXNkb3MudGV4aQorKysgYi9kb2MvZW1hY3MvbXNkb3MudGV4aQpAQCAtMTE2NSw3ICsxMTY1 LDcgQEAgYW55d2hlcmUgZWxzZS4KICAgVGhlIHZhcmlhYmxlIEBjb2Rle3czMi11c2UtdmlzaWJs ZS1zeXN0ZW0tY2FyZXR9IGlzIGEgZmxhZyB0aGF0CiBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gbWFr ZSB0aGUgc3lzdGVtIGNhcmV0IHZpc2libGUuICBUaGUgZGVmYXVsdCB3aGVuCiBubyBzY3JlZW4g cmVhZGVyIHNvZnR3YXJlIGlzIGluIHVzZSBpcyBAY29kZXtuaWx9LCB3aGljaCBtZWFucyBFbWFj cwotZHJhd3MgaXRzIG93biBjdXJzb3IgdG8gaW5kaWNhdGUgdGhlIHBvc2l0aW9uIG9mIHBvaW50 LiAgQQorZHJhd3MgaXRzIG93biBjdXJzb3IgdG8gaW5kaWNhdGUgdGhlIHBvc2l0aW9uIG9mIHBv aW50LiBBCiBub24tQGNvZGV7bmlsfSB2YWx1ZSBtZWFucyBFbWFjcyB3aWxsIGluZGljYXRlIHBv aW50IGxvY2F0aW9uIHdpdGggdGhlCiBzeXN0ZW0gY2FyZXQ7IHRoaXMgZmFjaWxpdGF0ZXMgdXNl IG9mIHNjcmVlbiByZWFkZXIgc29mdHdhcmUsIGFuZCBpcwogdGhlIGRlZmF1bHQgd2hlbiBzdWNo IHNvZnR3YXJlIGlzIGRldGVjdGVkIHdoZW4gcnVubmluZyBFbWFjcy4KQEAgLTEyMDAsNiArMTIw MCw1MiBAQCB5b3Ugc2hvdWxkIHNldCBpdHMgdmFsdWUgaW4geW91ciBpbml0IGZpbGUgKEBweHJl ZntJbml0IEZpbGV9KSwgZWl0aGVyCiBkaXJlY3RseSBvciB2aWEgQGtiZHtNLXggY3VzdG9taXpl LXZhcmlhYmxlfSwgd2hpY2ggbGV0cyB5b3Ugc2F2ZSB0aGUKIGN1c3RvbWl6ZWQgdmFsdWUsIHNl ZSBAcmVme1NhdmluZyBDdXN0b21pemF0aW9uc30uCiAKK0B2aW5kZXggdzMyLXVzZS12aXJ0dWFs LXRlcm1pbmFsLXNlcXVlbmNlcworQGNpbmRleCBXaW5kb3dzIFRlcm1pbmFsLCBXaW5kb3dzIENv bnNvbGUsIE1TLVdpbmRvd3MKKyAgVGhlIGltcGxlbWVudGF0aW9uIG9mIGRpc3BsYXkgZnVuY3Rp b25hbGl0eSBmb3IgV2luZG93cyBDb25zb2xlCitkaWZmZXJzIGZyb20gdGhlIGltcGxlbWVudGF0 aW9uIGZvciBvdGhlciB0ZXJtaW5hbCBlbXVsYXRvcnMsCitiZWNhdXNlIGhpc3RvcmljYWxseSwg V2luZG93cyByZXF1aXJlZCB1c2Ugb2YgYW4gaWRpb3N5bmNyYWN0aWMgQVBJLgorVGhhdCBBUEkg bGltaXRlZCBXaW5kb3dzIENvbnNvbGUgZGlzcGxheSBvZiBFbWFjcyB0byAxNiBiYXNpYyBjb2xv cnMuCitXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgV2luZG93cyBUZXJtaW5hbCwgTWljcm9zb2Z0 IGltcGxlbWVudGVkCitzdXBwb3J0IGZvciBBU0NJSSBjb250cm9sIHNlcXVlbmNlcywgbW9kZWxs ZWQgb24gdGhlIFZUMTAwIGFuZCBYdGVybSwKK2FuZCAyNC1iaXQgUkJHIGNvbG9yIGRpc3BsYXku CisKKyAgVGhlIHZhcmlhYmxlIEBjb2Rle3czMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5j ZXN9IGRldGVybWluZXMKK3doZXRoZXIgdGhpcyBuZXdlciBtZWNoYW5pc20gaXMgdXNlZCBmb3Ig ZGlzcGxheSwgb3IgdGhlIG9sZGVyIG9uZS4KK0l0IGlzIGF1dG9tYXRpY2FsbHkgc2V0IGJhc2Vk IG9uIHlvdXIgdGVybWluYWwncyBjYXBhYmlsaXRpZXMgb24KK3N0YXJ0dXAuIElmIGl0IGlzIG5v bi1uaWwsIEVtYWNzIHdpbGwgdXNlIEFTQ0lJIGVzY2FwZSBzZXF1ZW5jZXMgZm9yCitjdXJzb3Ig YW5kIGNvbG9yIGRpc3BsYXkuIEJ5IGRlZmF1bHQsIDI0LWJpdCBSR0IgY29sb3Igd2lsbCBiZSB1 c2VkLAorYnV0IG90aGVyICg4LCAxNiwgMjU2KSBjb2xvciBzcGFjZXMgbWF5IGJlIHVzZWQsIGJ5 IHBhc3NpbmcgdGhlCitAY29kZXstLWNvbG9yfSBjb21tYW5kIGxpbmUgYXJndW1lbnQsIG9yIHNl dHRpbmcgdGhlIHZhbHVlIG9mIHRoZQorQGNvZGV7dHR5LWNvbG9yLW1vZGV9IGZyYW1lIHBhcmFt ZXRlci4KKworICBBbnkgdGltZSBAY29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVu Y2VzfSBpcyBzZXQgbWFudWFsbHksCit0aGUgY2hhbmdlIGluIHZhbHVlIHNob3VsZCBiZSBpbW1l ZGlhdGVseSBmb2xsb3dlZCBieSBhIGNhbGwgdG8KK0Bjb2Rle3NldC1mcmFtZS1wYXJhbWV0ZXJ9 IChyZSlzZXR0aW5nIEBjb2Rleyd0dHktY29sb3ItbW9kZX0sIG9yCithdCB2ZXJ5IGxlYXN0LCBh IGNhbGwgdG8gQGNvZGV7dzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzfS4KKworICBP bmUgbm90ZSBvbiB0aGUgdHJhbnNpdGlvbiBhd2F5IGZyb20gdGhlIG9sZCBXaW5kb3dzIENvbnNv bGUgQVBJLgorVFRZIEVtYWNzIHRyYWRpdGlvbmFsbHkgbGVhdmVzIHRleHQgY3Vyc29yIGRpc3Bs YXkgdXAgdG8gdGhlIHRlcm1pbmFsLgorU2NyZWVuIHVwZGF0ZXMgdmlhIHRoZSBXaW5kb3dzIENv bnNvbGUgQVBJIHdlcmUgcGVyZm9ybWVkIGRpcmVjdGx5IG9uCityZWdpb25zIG9mIHRoZSBzY3Jl ZW4gYnVmZmVyLCB3aXRob3V0IGFueSBuZWVkIHRvIG1vdmUgdGhlIGN1cnNvciBkdXJpbmcKK2Eg ZGlzcGxheSB1cGRhdGUuIFZpcnR1YWwgdGVybWluYWwgc2VxdWVuY2VzIHJlcXVpcmUgbW92aW5n IHRoZSBjdXJzb3IKK3RvIGV2ZXJ5IHBvaW50IGF0IHdoaWNoIHdlIG5lZWQgdG8gd3JpdGUgYSBj aGFuZ2UuIFVuZm9ydHVuYXRlbHksIHRoZQorY29udGVudCBvZiB0aGUgZWNobyBhcmVhIGNoYW5n ZXMgZnJlcXVlbnRseSwgYW5kIHVwZGF0ZXMgYXJlIG5vdCBhbHdheXMKK3F1aWNrIGVub3VnaCBm b3IgdGhlIGN1cnNvciBtb3ZlbWVudCB0byBiZSBtYWRlIGltcGVyY2VwdGlibGUuIFRoaXMKK3By ZXNlbnRzIGEgVVggZGlsZW1tYS4gRWl0aGVyIHdlICgxKSBoaWRlIHRoZSBjdXJzb3IgbW9tZW50 YXJpbHkgd2hlbmV2ZXIKK2l0IGBganVtcHMnJyB0byB0aGUgZWNobyBhcmVhLCB3aGljaCBtYW5p ZmVzdHMgaW4gdGhlIGN1cnNvciBhcHBlYXJpbmcgdG8KK2BgZmxpY2tlcicnIGluLXBsYWNlLCBv ciAoMikgd2UgZG9uJ3QsIGluIHdoaWNoIGNhc2UgdGhlIGN1cnNvciBqdW1wcyB0bworLyBmbGFz aGVzIGluIHRoZSBlY2hvIGFyZWEuIFdlIGdldCB0aHJvdWdoIHRoZSBob3JucyBvZiB0aGUgZGls ZW1tYSBieSAoMykKK2Fsd2F5cyBoaWRpbmcgdGhlIHN5c3RlbSBjdXJzb3IsIGFuZCBoYXZpbmcg RW1hY3MgdGFrZSBvdmVyIGN1cnNvciBkaXNwbGF5LgorCisgIEFmdGVyIHRoZSBtaWdyYXRpb24g dG8gdmlydHVhbCB0ZXJtaW5hbCBzZXF1ZW5jZXMgRW1hY3MgZGVmYXVsdHMgdG8gKDMpLAorYnV0 IGxlYXZlcyAoMikgYXMgYW4gb3B0aW9uLiBXaGVuIEBjb2Rle3czMi11c2UtdmlzaWJsZS1zeXN0 ZW0tY2FyZXR9IGlzCitAY29kZXtuaWx9LCBhIHNvbGlkIG5vbi1ibGlua2luZyB0ZXh0IGN1cnNv ciB3aWxsIGRpc3BsYXllZCAoaW4gdGhlCisnY3Vyc29yJyBmYWNlKS4gV2hlbiBpdCBpcyBub24t QGNvZGV7bmlsfSwgYSBzeXN0ZW0gY3Vyc29yIHdpbGwgYmUgc2hvd24KKyhwb3NzaWJseSB3aXRo IGEgc2xpZ2h0IGZsaWNrZXIpLiBUaGlzIGNoYW5nZSBpcyBpbmRlcGVuZGVudCBvZgorQGNvZGV7 dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlc30sIGJ1dCByZXF1aXJlZCBmb3IgYSBz bW9vdGggVVguCisKKwogQGlmbm90dGV4CiBAaW5jbHVkZSBtc2Rvcy14dHJhLnRleGkKIEBlbmQg aWZub3R0ZXgKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTLjMwIGIvZXRjL05FV1MuMzAKaW5kZXggZGZl NmM1Y2FmZTYuLjgxNGNhODQzYmU1IDEwMDY0NAotLS0gYS9ldGMvTkVXUy4zMAorKysgYi9ldGMv TkVXUy4zMApAQCAtMTUsNiArMTUsMzUgQEAgaW4gb2xkZXIgRW1hY3MgdmVyc2lvbnMuCiBZb3Ug Y2FuIG5hcnJvdyBuZXdzIHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBieSBjYWxsaW5nICd2aWV3LWVt YWNzLW5ld3MnCiB3aXRoIGEgcHJlZml4IGFyZ3VtZW50IG9yIGJ5IHR5cGluZyAnQy11IEMtaCBD LW4nLgogCisMCisqIENoYW5nZXMgaW4gRW1hY3MgMzAuMworKiogV2luZG93cyBUZXJtaW5hbCBu b3cgZGlzcGxheXMgMjQtYml0IFJHQi4KK1ByZXZpb3VzbHksIHRlcm1pbmFsIHNlc3Npb25zIGlu IFdpbmRvd3MgVGVybWluYWwgYW5kIFdpbmRvd3MgQ29uc29sZQorc3VwcG9ydGVkIGRpc3BsYXkg b2YgMTYgY29sb3JzLCB2aWEgdGhlIFdpbmRvd3MgQ29uc29sZSBBUEkuIFRoZXJlIGlzCitub3cg c3VwcG9ydCBpbiBXaW5kb3dzIFRlcm1pbmFsIGZvciAyNTYgYW5kIDI0LWJpdCBSR0IgY29sb3Is IGJ5CitlbWl0dGluZyBBU0NJSSBjb250cm9sIHNlcXVlbmNlcyAobW9kZWxsZWQgb24gVlQxMDAg YW5kIFh0ZXJtKS4KK0N1cnNvciBtb3ZlbWVudCAvIGRpc3BsYXkgaGFzIGFsc28gYmVlbiAocmUt KWltcGxlbWVudGVkLiBUaGlzIGFsaWducword2l0aCBNaWNyb3NvZnQncyBsb25nLXRlcm0gcm9h ZG1hcCBhbmQgaXMgYSBmaXJzdCBzdGVwIGluIG1vdmluZyBFbWFjcwordGVybWluYWwgc2Vzc2lv bnMgb3ZlciB0byB0aGUgbmV3ZXIgV2luZG93cyBUZXJtaW5hbCBpbnRlcmZhY2UuCisKK1RoZSBu ZXcgbWVjaGFuaXNtIHdpbGwgYmUgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gc3VwcG9ydGVk LgorSXQgZGVmYXVsdHMgdG8gMjQtYml0IFJHQiBjb2xvciwgYnV0IGNhbiBiZSBzZXQgdG8gOCwg MTYsIDI1Niwgb3IKKycyNGJpdCcgYnkgcGFzc2luZyB0aGUgJy0tY29sb3InIGZsYWcgb3Igc2V0 dGluZyB0aGUgJ3R0eS1jb2xvci1tb2RlJworZnJhbWUgcGFyYW1ldGVyLiBJdCBjYW4gYmUgZGlz YWJsZWQvZW5hYmxlZCBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZQorJ3czMi11c2UtdmlydHVhbC10 ZXJtaW5hbC1zZXF1ZW5jZXMnLiBUaGUgb2xkZXIgKDE2LWNvbG9yKSBpbnRlcmZhY2UKK3dpbGwg c3RpbGwgYmUgdXNlZCBpbiBXaW5kb3dzIENvbnNvbGUgYW5kIG9uIHByZS1XaW4xMCBzeXN0ZW1z LgorCisqKiBFbWFjcyBub3cgaGFuZGxlcyB0ZXh0IGN1cnNvciBkaXNwbGF5IGluIFdpbmRvd3Mg VGVybWluYWwvQ29uc29sZS4KK1ByZXZpb3VzbHksIHdoZW4gcnVubmluZyBpbiBXaW5kb3dzIFRl cm1pbmFsL0NvbnNvbGUsIEVtYWNzIGRlbGVnYXRlZAordGV4dCBjdXJzb3IgZGlzcGxheSB0byB0 aGUgc3lzdGVtIChhcyBvbiBvdGhlciBUVFlzKS4gVG8gZW5hYmxlIGEKK3Ntb290aCBVWCBmb2xs b3dpbmcgdGhlIG1pZ3JhdGlvbiB0byBBU0NJSSBjb250cm9sIHNlcXVlbmNlcyAoc2VlIGFib3Zl KSwKK2N1cnNvciBkaXNwbGF5IGlzIG5vdyAtLSBvcHRpb25hbGx5LCBidXQgYnkgZGVmYXVsdCAt LSBoYW5kbGVkIGJ5IEVtYWNzLgorV2hlbiAndzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldCcg aXMgbmlsLCBhIHNvbGlkIG5vbi1ibGlua2luZyB0ZXh0CitjdXJzb3Igd2lsbCBkaXNwbGF5ZWQg KGluIHRoZSAnY3Vyc29yJyBmYWNlKS4gV2hlbiBpdCBpcyBzZXQgdG8gbm9uLW5pbCwKK3RoZSBz eXN0ZW0gY3Vyc29yIHdpbGwgYmUgc2hvd24uCisKK1NlZSB0aGUgbWFudWFsIGVudHJ5IHNwZWNp ZmljIHRvIE1TLVdpbmRvd3MgZm9yIG1vcmUgZGV0YWlscy4KKwogDAogKiBDaGFuZ2VzIGluIEVt YWNzIDMwLjIKIEVtYWNzIDMwLjIgaXMgYSBidWctZml4IHJlbGVhc2Ugd2l0aCBubyBuZXcgZmVh dHVyZXMuCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCBiL2xpc3AvdGVybS90 dHktY29sb3JzLmVsCmluZGV4IGRmZDIwN2Q3MWMxLi4xYmEwNDVjOGI3MSAxMDA2NDQKLS0tIGEv bGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKKysrIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKQEAg LTc2NCw3ICs3NjQsOCBAQAogICAgIChhdXRvIC4gMCkKICAgICAoYW5zaTggLiA4KQogICAgIChh bHdheXMgLiA4KQotICAgICh5ZXMgLiA4KSkKKyAgICAoeWVzIC4gOCkKKyAgICAoMjRiaXQgLiAx Njc3NzIxNikpCiAgICJBbiBhbGlzdCBvZiBzdXBwb3J0ZWQgc3RhbmRhcmQgdHR5IGNvbG9yIG1v ZGVzIGFuZCB0aGVpciBhbGlhc2VzLiIpCiAKIChkZWZ1biB0dHktY29sb3ItYWxpc3QgKCZvcHRp b25hbCBfZnJhbWUpCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbCBiL2xpc3Av dGVybS93MzJjb25zb2xlLmVsCmluZGV4IDFiNDRkYTQ4YmY3Li43YTI2MjA5NzQ5MiAxMDA2NDQK LS0tIGEvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKKysrIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUu ZWwKQEAgLTI0LDggKzI0LDcgQEAKIAogOzs7IENvZGU6CiAKLTs7IFczMiB1c2VzIGRpZmZlcmVu dCBjb2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQ6Ci0KKzs7IFczMiB1c2VzIGRpZmZlcmVudCBj b2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQKIChkZWZ2YXIgdzMyLXR0eS1zdGFuZGFyZC1jb2xv cnMKICAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAgICAwICAgICAwKQogICAgICgiYmx1 ZSIgICAgICAgICAgIDEgICAgIDAgICAgIDAgNTI0ODApIDsgTWVkaXVtQmx1ZQpAQCAtNDMsNTYg KzQyLDEzMyBAQAogICAgICgibGlnaHRtYWdlbnRhIiAgMTMgNjU1MzUgICAgIDAgNjU1MzUpIDsg TWFnZW50YQogICAgICgieWVsbG93IiAgICAgICAgMTQgNjU1MzUgNjU1MzUgICAgIDApIDsgWWVs bG93CiAgICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2NTUzNSA2NTUzNSkpCi0iQSBsaXN0 IG9mIFZHQSBjb25zb2xlIGNvbG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1 ZXMuIikKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5k IDE2LWJpdCBSR0IgdmFsdWVzLiIpCisKKzs7IFdoZW4gdXNpbmcgVlQgc2VxdWVuY2VzIGZvciBj b2xvciwgdXNlIHh0ZXJtLWxpa2UgaW5kaWNlcworKGRlZnZhciB3MzItdHR5LXZpcnR1YWwtdGVy bWluYWwtYmFzZS1jb2xvcnMKKyAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAgICAwICAg ICAwKQorICAgICgicmVkIiAgICAgICAgICAgIDEgNDU1NjggIDg3MDQgIDg3MDQpIDsgRmlyZUJy aWNrCisgICAgKCJncmVlbiIgICAgICAgICAgMiAgODcwNCAzNTU4NCAgODcwNCkgOyBGb3Jlc3RH cmVlbgorICAgICgiYnJvd24iICAgICAgICAgIDMgNDA5NjAgMjA5OTIgMTE1MjApIDsgU2llbm5h CisgICAgKCJibHVlIiAgICAgICAgICAgNCAgICAgMCAgICAgMCA1MjQ4MCkgOyBNZWRpdW1CbHVl CisgICAgKCJtYWdlbnRhIiAgICAgICAgNSAzNTU4NCAgICAgMCAzNTU4NCkgOyBEYXJrTWFnZW50 YQorICAgICgiY3lhbiIgICAgICAgICAgIDYgICAgIDAgNTI3MzYgNTM1MDQpIDsgRGFya1R1cnF1 b2lzZQorICAgICgibGlnaHRncmF5IiAgICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQor ICAgICgiZGFya2dyYXkiICAgICAgIDggMjYxMTIgMjYxMTIgMjYxMTIpIDsgR3JheTQwCisgICAg KCJsaWdodHJlZCIgICAgICAgOSA2NTUzNSAgICAgMCAgICAgMCkgOyBSZWQKKyAgICAoImxpZ2h0 Z3JlZW4iICAgIDEwICAgICAwIDY1NTM1ICAgICAwKSA7IEdyZWVuCisgICAgKCJ5ZWxsb3ciICAg ICAgICAxMSA2NTUzNSA2NTUzNSAgICAgMCkgOyBZZWxsb3cKKyAgICAoImxpZ2h0Ymx1ZSIgICAg IDEyICAgICAwICAgICAwIDY1NTM1KSA7IEJsdWUKKyAgICAoImxpZ2h0bWFnZW50YSIgIDEzIDY1 NTM1ICAgICAwIDY1NTM1KSA7IE1hZ2VudGEKKyAgICAoImxpZ2h0Y3lhbiIgICAgIDE0ICAgICAw IDY1NTM1IDY1NTM1KSA7IEN5YW4KKyAgICAoIndoaXRlIiAgICAgICAgIDE1IDY1NTM1IDY1NTM1 IDY1NTM1KSkKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMg YW5kIDE2LWJpdCBSR0IgdmFsdWVzLiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVu Y3Rpb24ta2V5cyAidGVybS9jb21tb24td2luIiAoZnJhbWUpKQogKGRlY2xhcmUtZnVuY3Rpb24g Z2V0LXNjcmVlbi1jb2xvciAidzMyY29uc29sZS5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHcz Mi1nZXQtY29uc29sZS1jb2RlcGFnZSAidzMycHJvYy5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9u IHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAKKyhkZWZ1 biB3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJhc2UgMTYtY29sb3Ig c3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCogKChjb2xvcnMgKGlmIHczMi11c2Utdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgIHczMi10dHktdmly dHVhbC10ZXJtaW5hbC1iYXNlLWNvbG9ycworICAgICAgICAgICAgICAgICAgIHczMi10dHktc3Rh bmRhcmQtY29sb3JzKSkKKyAgICAgICAgIChuYmFzZSAobGVuZ3RoIGNvbG9ycykpCisgICAgICAg ICAoY29sb3IgKGNhciBjb2xvcnMpKSkKKyAgICAocHJvZ24gKHdoaWxlIGNvbG9ycworICAgICAg ICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBj b2xvcikpCisgICAgICAgICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3JzKQorICAgICAgICAg ICAgICAgICAgIGNvbG9yICAoY2FyIGNvbG9ycykpKQorICAgICAgICAgICBuYmFzZSkpKQorCis7 OyBOb3RlOiB0dHktY29sb3ItZGVmaW5lIHN3YXBzIHBhc3NlZCBpbmRleCBmb3IgcGl4ZWwgb24g MjRiaXQgdGVybWluYWwKKzs7IFNvLCB3ZSBuZWVkIHRoaXMgZnVuY3Rpb24gdG8gInJlY292ZXIi IHRoZSB0ZXJtaW5hbCdzIG5hdGl2ZSBtYXBwaW5nCisoZGVmdW4gdzMyY29uLWdldC1waXhlbCAo aW5kZXgpCisgICJDb252ZXJ0IGEgYmFzZS1jb2xvciBpbmRleCBpbnRvIGEgcGl4ZWwgKGluZGV4 IGludG8gMjRiaXQgbWFwKSIKKyAgKGxldCAoKGNvbG9yIChudGggaW5kZXggdzMyLXR0eS12aXJ0 dWFsLXRlcm1pbmFsLWJhc2UtY29sb3JzKSkpCisgICAgKG9yICh0dHktY29sb3ItMjRiaXQgKGNk ZHIgY29sb3IpKSBpbmRleCkpKQorCisoZGVmdW4gdzMyY29uLWRlZmluZS0yNTYtY29sb3JzICgp CisgICJEZWZpbmVzIDI1Ni1jb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0ICgo ciAwKSAoYiAwKSAoZyAwKQorICAgICAgICAobiAoLSAyNTYgKHczMmNvbi1kZWZpbmUtYmFzZS1j b2xvcnMpKSkKKyAgICAgICAgKGNvbnZlcnQtdG8tMTZiaXQgKGxhbWJkYSAocHJpbSkgKGxvZ2lv ciBwcmltIChhc2ggcHJpbSA4KSkpKSkKKyAgICAod2hpbGUgKD4gbiAyNCkgOyBub24tZ3JleQor ICAgICAgKGxldCAoKGkgKC0gMjU2IG4pKQorICAgICAgICAgICAgKGMgKG1hcGNhciBjb252ZXJ0 LXRvLTE2Yml0CisgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoeCkgKGlm ICh6ZXJvcCB4KSAwICgrICgqIHggNDApIDU1KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3QgciBnIGIpKSkpKQorICAgICAgICAodHR5LWNvbG9yLWRlZmluZSAoZm9ybWF0 ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIGIgKDErIGIpKQorICAgICAgKHdoZW4g KD4gYiA1KSAoc2V0cSBnICgxKyBnKSBiIDApKQorICAgICAgKHdoZW4gKD4gZyA1KSAoc2V0cSBy ICgxKyByKSBnIDApKQorICAgICAgKHNldHEgbiAoMS0gbikpKQorICAgICh3aGlsZSAoPiBuIDAp IDsgYWxsLWdyZXkKKyAgICAgIChsZXQqICgoaSAoLSAyNTYgbikpCisgICAgICAgICAgICAgKHYg KGZ1bmNhbGwgY29udmVydC10by0xNmJpdCAoKyA4ICgqICgtIDI0IG4pIDEwKSkpKQorICAgICAg ICAgICAgIChjIChsaXN0IHYgdiB2KSkpCisgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChmb3Jt YXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEgbiAoMS0gbikpKSkpCisKKyhkZWZ1 biB3MzJjb24tZGVmaW5lLTI0Yml0LWNvbG9ycyAoKQorICAiRGVmaW5lcyAyNC1iaXQgY29sb3Ig c3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCAoKGkgKHczMmNvbi1kZWZpbmUtYmFzZS1j b2xvcnMpKSkKKyAgICAobWFwYyAobGFtYmRhIChjKSAodW5sZXNzIChhc3NvYyAoY2FyIGMpIHcz Mi10dHktc3RhbmRhcmQtY29sb3JzKQorICAgICAgICAgICAgICAgICAgICh0dHktY29sb3ItZGVm aW5lIChjYXIgYykgaSAoY2RyIGMpKQorICAgICAgICAgICAgICAgICAgIChzZXRxIGkgKDErIGkp KSkpCisgICAgICAgICAgY29sb3ItbmFtZS1yZ2ItYWxpc3QpKSkKKwogKGRlZnVuIHRlcm1pbmFs LWluaXQtdzMyY29uc29sZSAoKQogICAiVGVybWluYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24g Zm9yIHczMiBjb25zb2xlLiIKICAgOzsgU2hhcmUgZnVuY3Rpb24ga2V5IGluaXRpYWxpemF0aW9u IHdpdGggdzMyIGd1aSBmcmFtZXMKICAgKHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAoc2VsZWN0ZWQt ZnJhbWUpKQogICA7OyBTZXQgdGVybWluYWwgYW5kIGtleWJvYXJkIGVuY29kaW5ncyB0byB0aGUg Y3VycmVudCBPRU0gY29kZXBhZ2UuCiAgIChsZXQgKChvZW0tY29kZS1wYWdlLWNvZGluZwotCSAo aW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UpKSkpCi0JKG9l bS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzIt Z2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlKSkpKQotCW9lbS1jcy1wIG9lbS1vLWNzLXApCi0J KHNldHEgb2VtLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0J KHNldHEgb2VtLW8tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNv ZGluZykpCi0JKHdoZW4gb2VtLWNzLXAKLQkgIChzZXQta2V5Ym9hcmQtY29kaW5nLXN5c3RlbSBv ZW0tY29kZS1wYWdlLWNvZGluZykKLQkgIChzZXQtdGVybWluYWwtY29kaW5nLXN5c3RlbQotCSAg IChpZiBvZW0tby1jcy1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZyBvZW0tY29kZS1wYWdl LWNvZGluZykpCi0gICAgICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5j b2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0Ci0gICAgICAgICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNv ZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgotICAgICAgICAgIChzdGFydHVwLS1zZXR1cC1x dW90ZS1kaXNwbGF5KSkpCi0gIChsZXQqICgoY29sb3JzIHczMi10dHktc3RhbmRhcmQtY29sb3Jz KQotICAgICAgICAgKGNvbG9yIChjYXIgY29sb3JzKSkpCi0gICAgKHR0eS1jb2xvci1jbGVhcikK LSAgICAod2hpbGUgY29sb3JzCi0gICAgICAodHR5LWNvbG9yLWRlZmluZSAoY2FyIGNvbG9yKSAo Y2FkciBjb2xvcikgKGNkZHIgY29sb3IpKQotICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3Jz KQotICAgICAgICAgICAgY29sb3IgKGNhciBjb2xvcnMpKSkpCi0gIChjbGVhci1mYWNlLWNhY2hl KQotICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBjb2xvcnMgb2YgdGhlIGNvbnNvbGUgd2lu ZG93LCBhbmQgc2V0IHVwCi0gIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5 LgotICAobGV0KiAoKHNjcmVlbi1jb2xvciAoZ2V0LXNjcmVlbi1jb2xvcikpCi0JIChiZyAoY2Fk ciBzY3JlZW4tY29sb3IpKQotCSAoZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCi0JIHIg ZyBiIGJnLW1vZGUpCi0gICAgKHNldHEgciAobnRoIDIgZGVzY3IpCi0JICBnIChudGggMyBkZXNj cikKLQkgIGIgKG50aCA0IGRlc2NyKSkKLSAgICAoaWYgKDwgKCsgciBnIGIpICgqIC42ICgrIDY1 NTM1IDY1NTM1IDY1NTM1KSkpCi0JKHNldHEgYmctbW9kZSAnZGFyaykKLSAgICAgIChzZXRxIGJn LW1vZGUgJ2xpZ2h0KSkKLSAgICAoc2V0LXRlcm1pbmFsLXBhcmFtZXRlciBuaWwgJ2JhY2tncm91 bmQtbW9kZSBiZy1tb2RlKSkKLSAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKKyAg ICAgICAgIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSkp KSkKKyAgICAgICAgKG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZworICAgICAgICAgKGludGVy biAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLW91dHB1dC1jb2RlcGFnZSkpKSkKKyAg ICAgICAgb2VtLWNzLXAgb2VtLW8tY3MtcCkKKyAgICAoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5 c3RlbS1wIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAoc2V0cSBvZW0tby1jcy1wIChjb2Rp bmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKKyAgICAod2hlbiBvZW0t Y3MtcAorICAgICAgKHNldC1rZXlib2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29k aW5nKQorICAgICAgKHNldC10ZXJtaW5hbC1jb2Rpbmctc3lzdGVtCisgICAgICAgKGlmIG9lbS1v LWNzLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkK KyAgICAgIDs7IFNpbmNlIHdlIGNoYW5nZWQgdGhlIHRlcm1pbmFsIGVuY29kaW5nLCB3ZSBuZWVk IHRvIHJlcGVhdAorICAgICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5nIGRp c3BsYXlhYmxlLgorICAgICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKKyAgKHcz MmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKICAgKHJ1bi1ob29rcyAndGVybWluYWwt aW5pdC13MzItaG9vaykpCiAKKyhkZWZ1biB3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFj ZXMgKCkKKyAgIlNldCB1cCBpbml0aWFsIGZhY2UgY29sb3Igc2NoZW1lIGR5bmFtaWNhbGx5IGJh c2VkIG9uIHRoZSBudW1iZXIgb2YKK2Rpc3BsYXkgY29sb3JzIGFuZCB0aGUgdmFsdWUgb2YgYHcz Mi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMnLiIKKyAgKHR0eS1jb2xvci1jbGVhcikK KyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29sb3ItY2VsbHMpKSkKKyAgICAoaWYgdzMyLXVz ZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworICAgICAgICAoY29uZCAoKD0gbmNvbG9ycyAx Njc3NzIxNikgKHczMmNvbi1kZWZpbmUtMjRiaXQtY29sb3JzKSkKKyAgICAgICAgICAgICAgKCg9 IG5jb2xvcnMgMjY1ICAgICAgICh3MzJjb24tZGVmaW5lLTI1Ni1jb2xvcnMpKSkKKyAgICAgICAg ICAgICAgKHQgICAgICAgICAgICAgICAgICAgICh3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzKSkp CisgICAgICAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpCisgICAgKGNsZWFyLWZhY2UtY2Fj aGUpCisgICAgOzsgRmlndXJlIG91dCB3aGF0IGFyZSB0aGUgY29sb3JzIG9mIHRoZSBjb25zb2xl IHdpbmRvdywgYW5kIHNldCB1cAorICAgIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9u ZGluZ2x5LgorICAgIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2NyZWVuLWNvbG9yKSkKKyAg ICAgICAgICAgKGJhc2UtaW5kZXggKGNhZHIgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJn LXBpeGVsICh3MzJjb24tZ2V0LXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAoYmcgKGlm ICg9IG5jb2xvcnMgMTY3NzcyMTYpIGJnLXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAo ZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCisgICAgICAgICAgIHIgZyBiIGJnLW1vZGUp CisgICAgICAoc2V0cSByIChudGggMiBkZXNjcikKKyAgICAgICAgICAgIGcgKG50aCAzIGRlc2Ny KQorICAgICAgICAgICAgYiAobnRoIDQgZGVzY3IpKQorICAgICAgKGlmICg8ICgrIHIgZyBiKSAo KiAuNiAoKyA2NTUzNSA2NTUzNSA2NTUzNSkpKQorICAgICAgICAgIChzZXRxIGJnLW1vZGUgJ2Rh cmspCisgICAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkKKyAgICAgIChzZXQtdGVybWluYWwt cGFyYW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKSkKKyAgKHR0eS1zZXQtdXAt aW5pdGlhbC1mcmFtZS1mYWNlcykpCisKIChwcm92aWRlICd0ZXJtL3czMmNvbnNvbGUpCiAKIDs7 OyB3MzJjb25zb2xlLmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BuZXcuYyBiL3Ny Yy9kaXNwbmV3LmMKaW5kZXggZDY1YTdjYmMxZjEuLjkyOGZiZDc4YzE3IDEwMDY0NAotLS0gYS9z cmMvZGlzcG5ldy5jCisrKyBiL3NyYy9kaXNwbmV3LmMKQEAgLTEwMyw2ICsxMDMsMTMgQEAgc3Rh dGljIHZvaWQgYWRqdXN0X2ZyYW1lX2dseXBoc19mb3JfZnJhbWVfcmVkaXNwbGF5IChzdHJ1Y3Qg ZnJhbWUgKik7CiBzdGF0aWMgdm9pZCBzZXRfd2luZG93X3VwZGF0ZV9mbGFncyAoc3RydWN0IHdp bmRvdyAqdywgYm9vbCBvbl9wKTsKIHN0YXRpYyB2b2lkIHR0eV9zZXRfY3Vyc29yIChzdHJ1Y3Qg ZnJhbWUgKmYpOwogCisjaWZkZWYgV0lORE9XU05UCitleHRlcm4gdm9pZCB3MzJjb25faGlkZV9j dXJzb3IgKHZvaWQpOworZXh0ZXJuIHZvaWQgdzMyY29uX3Nob3dfY3Vyc29yICh2b2lkKTsKK2V4 dGVybiB2b2lkIHczMmNvbl9zYXZlX2N1cnNvciAodm9pZCk7CitleHRlcm4gdm9pZCB3MzJjb25f cmVzdG9yZV9jdXJzb3IgKHZvaWQpOworZXh0ZXJuIHZvaWQgdzMyY29uX2RyYXdfY3Vyc29yIChz dHJ1Y3QgZnJhbWUgKik7CisjZW5kaWYKIAogI2lmIDAgLyogUGxlYXNlIGxlYXZlIHRoaXMgaW4g YXMgYSBkZWJ1Z2dpbmcgYWlkLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC00MDUyLDIwICs0MDU5LDI2 IEBAIGNvbWJpbmVfdXBkYXRlc19mb3JfZnJhbWUgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBpbmhp Yml0X3Njcm9sbGluZykKICAgICAgIGlmICh0b3Btb3N0X2NoaWxkLT5hZnRlcl9tYWtlX2ZyYW1l KQogCWNvcHlfY2hpbGRfZ2x5cGhzIChyb290LCB0b3Btb3N0X2NoaWxkKTsKICAgICB9Ci0KLSAg dXBkYXRlX2JlZ2luIChyb290KTsKLSAgd3JpdGVfbWF0cml4IChyb290LCBpbmhpYml0X3Njcm9s bGluZywgZmFsc2UpOwotICBtYWtlX21hdHJpeF9jdXJyZW50IChyb290KTsKLSAgdXBkYXRlX2Vu ZCAocm9vdCk7Ci0KICAgLyogVGhlIHNlbGVjdGVkIGZyYW1lIGRldGVybWluZXMgd2hlcmUgdGhl IGN1cnNvciBvbiB0dHlzIGdvZXMsIGV4Y2VwdAogICAgICB3aGVuIGl0IGlzIGEgZnJhbWUgdGhh dCBpcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgZnJhbWUgYmVpbmcKICAgICAgZGlzcGxh eWVkLiAgVGhpcyBjYW4gaGFwcGVuIHdpdGggbXVsdGktdHR5LCB3aGVuIHRoZSBzZWxlY3RlZCBm cmFtZQogICAgICBjYW4gYmUgYSB3aW5kb3ctc3lzdGVtIGZyYW1lLiAgKi8KKyAgc3RydWN0IGZy YW1lICpjZjsKICAgaWYgKGZyYW1lX2FuY2VzdG9yX3AgKHJvb3QsIFNFTEVDVEVEX0ZSQU1FICgp KSkKLSAgICB0dHlfc2V0X2N1cnNvciAoU0VMRUNURURfRlJBTUUgKCkpOworICAgIGNmID0gU0VM RUNURURfRlJBTUUgKCk7CiAgIGVsc2UKLSAgICB0dHlfc2V0X2N1cnNvciAocm9vdCk7CisgICAg Y2YgPSByb290OworCisgIHVwZGF0ZV9iZWdpbiAocm9vdCk7CisjaWZkZWYgV0lORE9XU05UCisg IHR0eV9zZXRfY3Vyc29yIChjZik7CisgIHczMmNvbl9kcmF3X2N1cnNvcihjZik7CisjZW5kaWYg IAorICB3cml0ZV9tYXRyaXggKHJvb3QsIGluaGliaXRfc2Nyb2xsaW5nLCBmYWxzZSk7CisgIG1h a2VfbWF0cml4X2N1cnJlbnQgKHJvb3QpOworICB1cGRhdGVfZW5kIChyb290KTsKKworICB0dHlf c2V0X2N1cnNvciAoY2YpOwogCiAgIC8qIElmIGEgY2hpbGQgaXMgZGlzcGxheWVkLCBhbmQgdGhl IGN1cnNvciBpcyBkaXNwbGF5ZWQgaW4gYW5vdGhlcgogICAgICBmcmFtZSwgdGhlIGNoaWxkIG1p Z2h0IGxheSBhYm92ZSB0aGUgY3Vyc29yLCBzbyB0aGF0IGl0IGFwcGVhcnMgdG8KQEAgLTQxNDEs MTUgKzQxNTQsMjMgQEAgdXBkYXRlX2ZyYW1lX3dpdGhfbWVudSAoc3RydWN0IGZyYW1lICpmLCBp bnQgcm93LCBpbnQgY29sKQogCiAgIC8qIFVwZGF0ZSB0aGUgZGlzcGxheS4gICovCiAgIHVwZGF0 ZV9iZWdpbiAoZik7CisjaWZkZWYgV0lORE9XU05UCisgIGlmIChyb3cgPj0gMCAmJiBjb2wgPj0g MCkKKyAgICBjdXJzb3JfdG8gKGYsIHJvdywgY29sKTsKKyAgZWxzZQorICAgIHR0eV9zZXRfY3Vy c29yIChmKTsKKyAgdzMyY29uX2RyYXdfY3Vyc29yIChmKTsKKyNlbmRpZgogICB3cml0ZV9tYXRy aXggKGYsIHRydWUsIHRydWUpOwogICBtYWtlX21hdHJpeF9jdXJyZW50IChmKTsKLSAgY2xlYXJf ZGVzaXJlZF9tYXRyaWNlcyAoZik7CiAgIC8qIFJPVyBhbmQgQ09MIHRlbGwgdXMgd2hlcmUgaW4g dGhlIG1lbnUgdG8gcG9zaXRpb24gdGhlIGN1cnNvciwgc28KICAgICAgdGhhdCBzY3JlZW4gcmVh ZGVycyBrbm93IHRoZSBhY3RpdmUgcmVnaW9uIG9uIHRoZSBzY3JlZW4uICAqLwogICBpZiAocm93 ID49IDAgJiYgY29sID49IDApCiAgICAgY3Vyc29yX3RvIChmLCByb3csIGNvbCk7CiAgIGVsc2UK ICAgICB0dHlfc2V0X2N1cnNvciAoZik7CisKKyAgY2xlYXJfZGVzaXJlZF9tYXRyaWNlcyAoZik7 CiAgIHVwZGF0ZV9lbmQgKGYpOwogICBmbHVzaF90ZXJtaW5hbCAoZik7CiAKQEAgLTU3NDcsNyAr NTc2OCwzMyBAQCB3cml0ZV9tYXRyaXggKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBpbmhpYml0X2lk X3AsIGJvb2wgdXBkYXRpbmdfbWVudV9wKQogICAgICBpcyBkb25lIHNvIHRoYXQgbWVzc2FnZXMg YXJlIG1hZGUgdmlzaWJsZSB3aGVuIHBhdXNpbmcuICAqLwogICBpbnQgbGFzdF9yb3cgPSBmLT5k ZXNpcmVkX21hdHJpeC0+bnJvd3MgLSAxOwogICBpZiAoTUFUUklYX1JPV19FTkFCTEVEX1AgKGYt PmRlc2lyZWRfbWF0cml4LCBsYXN0X3JvdykpCi0gICAgd3JpdGVfcm93IChmLCBsYXN0X3Jvdywg dXBkYXRpbmdfbWVudV9wKTsKKyAgICB7CisgICAgICAvKiBUaGlzIHNwZWNpYWwgY2FzZSBoYW5k bGVzIHN5c3RlbSBjdXJzb3IgZmxhc2hpbmcgaW4vdG8gdGhlIGVjaG8KKyAgICAgIGFyZWEgd2hl biBydW5uaW5nIHdpdGggY29sb3IgYmFja2dyb3VuZHMgaW4gV2luZG93cyBUZXJtaW5hbC4gV2UK KyAgICAgIGhhdmUgb25lIGN1cnNvciwgaXQgbW92ZXMgaW50byB3aGF0ZXZlciByb3cgd2Ugd3Jp dGUsIGFuZCBXaW5kb3dzCisgICAgICBkcmF3cyBpdCB0aGVyZS4gV2UgZG9uJ3Qgd2FudCB0aGUg Y3Vyc29yIGp1bXBpbmcgYXQgZXZlcnkgZWNoby4KKyAgICAgIFNvIHdlIGhpZGUgaXQgd2hlbiBp dCBqdW1wcywgYW5kIGl0IGp1c3QgImZsaWNrZXJzIiBpbi1wbGFjZS4gKi8KKworI2lmZGVmIFdJ TkRPV1NOVAorICAgICAgaW50IHByZXZfY3Vyc29yX2hpZGRlbiA9IChGUkFNRV9UVFkgKGYpKS0+ Y3Vyc29yX2hpZGRlbjsKKyAgICAgIGlmICh3MzJfdXNlX3Zpc2libGVfc3lzdGVtX2NhcmV0ICYm ICFjdXJzb3JfaW5fZWNob19hcmVhKQorCXsKKwkgIHczMmNvbl9zYXZlX2N1cnNvciAoKTsKKwkg IHczMmNvbl9oaWRlX2N1cnNvciAoKTsKKwl9CisjZW5kaWYKKworICAgICAgd3JpdGVfcm93IChm LCBsYXN0X3JvdywgdXBkYXRpbmdfbWVudV9wKTsKKworI2lmZGVmIFdJTkRPV1NOVAorICAgICAg aWYgKHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQgJiYgIWN1cnNvcl9pbl9lY2hvX2FyZWEp CisJeworCSAgdzMyY29uX3Jlc3RvcmVfY3Vyc29yICgpOworCSAgaWYgKCFwcmV2X2N1cnNvcl9o aWRkZW4pIHczMmNvbl9zaG93X2N1cnNvciAoKTsKKwl9CisjZW5kaWYKKyAgICB9CisKIAogICBp ZiAoZmlyc3Rfcm93ID49IDApCiAgICAgZm9yIChpbnQgaSA9IGZpcnN0X3JvdzsgaSA8IGxhc3Rf cm93OyArK2kpCmRpZmYgLS1naXQgYS9zcmMvdGVybS5jIGIvc3JjL3Rlcm0uYwppbmRleCBhMWUz ZjYzMTJjNi4uNmMzMTE2ZjdmY2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rl cm0uYwpAQCAtNzMsNyArNzMsNiBAQCBzdGF0aWMgdm9pZCBjbGVhcl90dHlfaG9va3MgKHN0cnVj dCB0ZXJtaW5hbCAqdGVybWluYWwpOwogc3RhdGljIHZvaWQgc2V0X3R0eV9ob29rcyAoc3RydWN0 IHRlcm1pbmFsICp0ZXJtaW5hbCk7CiBzdGF0aWMgdm9pZCBkaXNzb2NpYXRlX2lmX2NvbnRyb2xs aW5nX3R0eSAoaW50IGZkKTsKIHN0YXRpYyB2b2lkIGRlbGV0ZV90dHkgKHN0cnVjdCB0ZXJtaW5h bCAqKTsKLQogI2VuZGlmIC8qICFIQVZFX0FORFJPSUQgKi8KIAogc3RhdGljIEFWT0lEIG1heWJl X2ZhdGFsIChib29sLCBzdHJ1Y3QgdGVybWluYWwgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosCkBAIC0zNDYsMTAgKzM0NSwxMCBAQCB0dHlfaGlkZV9jdXJzb3IgKHN0cnVjdCB0dHlfZGlz cGxheV9pbmZvICp0dHkpCiB7CiAgIGlmICh0dHktPmN1cnNvcl9oaWRkZW4gPT0gMCkKICAgICB7 Ci0gICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAxOwogI2lmZGVmIFdJTkRPV1NOVAogICAgICAg dzMyY29uX2hpZGVfY3Vyc29yICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRlbiA9 IDE7CiAgICAgICBPVVRQVVRfSUYgKHR0eSwgdHR5LT5UU19jdXJzb3JfaW52aXNpYmxlKTsKICNl bmRpZgogICAgIH0KQEAgLTM2MywxMCArMzYyLDEwIEBAIHR0eV9zaG93X2N1cnNvciAoc3RydWN0 IHR0eV9kaXNwbGF5X2luZm8gKnR0eSkKIHsKICAgaWYgKHR0eS0+Y3Vyc29yX2hpZGRlbikKICAg ICB7Ci0gICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAwOwogI2lmZGVmIFdJTkRPV1NOVAogICAg ICAgdzMyY29uX3Nob3dfY3Vyc29yICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRl biA9IDA7CiAgICAgICBPVVRQVVRfSUYgKHR0eSwgdHR5LT5UU19jdXJzb3Jfbm9ybWFsKTsKICAg ICAgIGlmICh2aXNpYmxlX2N1cnNvcikKICAgICAgICAgT1VUUFVUX0lGICh0dHksIHR0eS0+VFNf Y3Vyc29yX3Zpc2libGUpOwpAQCAtMjIwNyw3ICsyMjA2LDcgQEAgVEVSTUlOQUwgZG9lcyBub3Qg cmVmZXIgdG8gYSB0ZXh0IHRlcm1pbmFsLiAgKi8pCiAgIHJldHVybiBtYWtlX2ZpeG51bSAodCA/ IHQtPmRpc3BsYXlfaW5mby50dHktPlROX21heF9jb2xvcnMgOiAwKTsKIH0KIAotI2lmICFkZWZp bmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAm JiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAogLyogRGVjbGFyZSBoZXJlIHJhdGhlciB0aGFuIGlu IHRoZSBmdW5jdGlvbiwgYXMgaW4gdGhlIHJlc3Qgb2YgRW1hY3MsCiAgICB0byB3b3JrIGFyb3Vu ZCBhbiBIUFVYIGNvbXBpbGVyIGJ1ZyAoPykuIFNlZQpAQCAtMjI0Niw3ICsyMjQ1LDcgQEAgdHR5 X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5 LCBib29sIHNhdmUpCiAgICBNT0RFJ3MgdmFsdWUgaXMgZ2VuZXJhbGx5IHRoZSBudW1iZXIgb2Yg Y29sb3JzIHdoaWNoIHdlIHdhbnQgdG8KICAgIHN1cHBvcnQ7IHplcm8gbWVhbnMgc2V0IHVwIGZv ciB0aGUgZGVmYXVsdCBjYXBhYmlsaXRpZXMsIHRoZSBvbmVzCiAgICB3ZSBzYXcgYXQgaW5pdF90 dHkgdGltZTsgLTEgbWVhbnMgdHVybiBvZmYgY29sb3Igc3VwcG9ydC4gICovCi1zdGF0aWMgdm9p ZAordm9pZAogdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwg aW50IG1vZGUpCiB7CiAgIC8qIENhbm9uaWNhbGl6ZSBhbGwgbmVnYXRpdmUgdmFsdWVzIG9mIE1P REUuICAqLwpAQCAtMjI2NCwxOCArMjI2Myw0MiBAQCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3Qg dHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKICAgICAgIGRlZmF1bHQ6CiAJdHR5X2Rl ZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzICh0dHksIDApOwogCWJyZWFrOwotICAgICAgY2FzZSA4 OgkvKiA4IHN0YW5kYXJkIEFOU0kgY29sb3JzICovCi0JdHR5LT5UU19vcmlnX3BhaXIgPSAiXDAz M1swbSI7CisgICAgICBjYXNlIDg6IC8qIDggc3RhbmRhcmQgQU5TSSBjb2xvcnMgKi8KKwl0dHkt PlRTX29yaWdfcGFpciA9ICJceDFiWzBtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4 MWJbMyVkbSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlZG0iOwogI2lmZGVm IFRFUk1JTkZPCi0JdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlcDElZG0iOwotCXR0 eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0JXAxJWRtIjsKLSNlbHNlCi0JdHR5LT5UU19z ZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAi XDAzM1s0JWRtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMyVwMSVkbSI7CisJ dHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlcDElZG0iOworI2VuZGlmCisjaWZkZWYg V0lORE9XU05UCisJdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgxYlszOW1ceDFiWzQ5bSI7CisJdHR5 LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91 bmQgPSAiXHgxYlslbHVtIjsKICNlbmRpZgogCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDg7CiAJdHR5 LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CiAJYnJlYWs7CisjaWZkZWYgV0lORE9XU05UCisgICAg ICBjYXNlIDE2OgorCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHkt PlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UTl9tYXhfY29sb3JzID0g MTY7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDI1 NjoKKwl0dHktPlROX21heF9jb2xvcnMgPSAyNTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9 ICJceDFiWzM4OzU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzU7 JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNl IDE2Nzc3MjE2OgorCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2Nzc3MjE2OworCXR0eS0+VFNfc2V0 X2ZvcmVncm91bmQgPSAiXHgxYlszODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFj a2dyb3VuZCA9ICJceDFiWzQ4OzI7JWx1OyVsdTslbHVtIjsKKwl0dHktPlROX25vX2NvbG9yX3Zp ZGVvID0gMDsKKwlicmVhazsKKyNlbmRpZgogICAgIH0KIH0KIApAQCAtMjMwNywxMiArMjMzMCwx NiBAQCBzZXRfdHR5X2NvbG9yX21vZGUgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIHN0 cnVjdCBmcmFtZSAqZikKICAgICB7CiAgICAgICB0dHktPnByZXZpb3VzX2NvbG9yX21vZGUgPSBt b2RlOwogICAgICAgdHR5X3NldHVwX2NvbG9ycyAodHR5ICwgbW9kZSk7Ci0gICAgICAvKiAgVGhp cyByZWNvbXB1dGVzIGFsbCB0aGUgZmFjZXMgZ2l2ZW4gdGhlIG5ldyBjb2xvciBkZWZpbml0aW9u cy4gICovCisgICAgICAvKiAgVGhpcyByZWNvbXB1dGVzIGFsbCB0aGUgZmFjZXMgZ2l2ZW4gdGhl IG5ldyBjb2xvciBkZWZpbml0aW9ucy4gKi8KKyNpZmRlZiBXSU5ET1dTTlQKKyAgICAgIHNhZmVf Y2FsbG4gKFF3MzJjb25fc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2Vsc2UKICAgICAg IHNhZmVfY2FsbG4gKFF0dHlfc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2VuZGlmCiAg ICAgfQogfQogCi0jZW5kaWYgLyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5kaWYg LyogIU1TRE9TICYmICFIQVZFX0FORFJPSUQgKi8KIAogY2hhciAqCiB0dHlfdHlwZV9uYW1lIChM aXNwX09iamVjdCB0ZXJtaW5hbCkKQEAgLTQ1ODYsOCArNDYxMyw4IEBAIHVzZSB0aGUgQm91cm5l IHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6XG5cCiAJCSB8 fCAoKGJnID0gZ2V0ZW52ICgiQ09MT1JURVJNIikpICE9IE5VTEwKIAkJICAgICAmJiBzdHJjYXNl Y21wIChiZywgInRydWVjb2xvciIpID09IDApKQogCSAgewotCSAgICB0dHktPlRTX3NldF9mb3Jl Z3JvdW5kID0gIlwwMzNbJT8lcDElezh9JTwldDMlcDElZCVlMzg7MjslcDElezY1NTM2fSUvJWQ7 JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOwotCSAgICB0dHktPlRTX3Nl dF9iYWNrZ3JvdW5kID0gIlwwMzNbJT8lcDElezh9JTwldDQlcDElZCVlNDg7MjslcDElezY1NTM2 fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAgICB0dHkt PlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbJT8lcDElezh9JTwldDMlcDElZCVlMzg7MjslcDEl ezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAg ICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJT8lcDElezh9JTwldDQlcDElZCVlNDg7 MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20i OwogCSAgICB0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKIAkgIH0KICAgICAgIH0KQEAg LTQ2NDEsNiArNDY2OCwyNyBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdURVJNPS4u LjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogCiAgICAgaW5pdGlhbGl6ZV93MzJfZGlzcGxh eSAodGVybWluYWwsICZ3aWR0aCwgJmhlaWdodCk7CiAKKyAgICAvKiAyNGJpdCBSR0Igc3VwcG9y dCBpbiBXaW5kb3dzICgxMCspIFRlcm1pbmFsIGFuZCBDb25zb2xlIEhvc3QKKyAgICAgICBodHRw czovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9jb25zb2xlL2NvbnNvbGUtdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMgKi8KKyAgICB0dHktPlROX25vX2NvbG9yX3ZpZGVvID0g MDsKKyAgICB0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKyAgICB0dHktPlRTX29yaWdf cGFpciA9ICJceDFiWzM5bVx4MWJbNDltIjsKKyAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0g Ilx4MWJbMzg7MjslbHU7JWx1OyVsdW0iOworICAgIHR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAi XHgxYls0ODsyOyVsdTslbHU7JWx1bSI7CisKKyAgICAvKiBTYXZlIGRlZmF1bHQgY29sb3IgY2Fw YWJpbGl0aWVzICovCisgICAgdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzICh0dHksIDEp OworCisgICAgdHR5LT5UU19lbnRlcl9ib2xkX21vZGUgPSAiXHgxYlsxbSI7CisgICAgdHR5LT5U U19lbnRlcl9pdGFsaWNfbW9kZSA9ICJceDFiWzNtIjsKKyAgICB0dHktPlRTX2VudGVyX3N0cmlr ZV90aHJvdWdoX21vZGUgPSAiXHgxYls5bSI7CisgICAgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVf bW9kZSA9ICJceDFiWzRtIjsKKyAgICB0dHktPlRTX2V4aXRfdW5kZXJsaW5lX21vZGUgPSAiXHgx YlsyNG0iOworICAgIHR0eS0+VFNfZW50ZXJfcmV2ZXJzZV9tb2RlID0gIlx4MWJbN20iOworICAg IHR0eS0+VFNfZXhpdF9hdHRyaWJ1dGVfbW9kZSA9ICJceDFiWzBtIjsKKyAgICB0dHktPlRTX2N1 cnNvcl9pbnZpc2libGUgPSAiXHgxYls/MjVsIjsKKyAgICB0dHktPlRTX2N1cnNvcl92aXNpYmxl ID0gIlx4MWJbPzI1aCI7CisKICAgICBGcmFtZVJvd3MgKHR0eSkgPSBoZWlnaHQ7CiAgICAgRnJh bWVDb2xzICh0dHkpID0gd2lkdGg7CiAgICAgdHR5LT5zcGVjaWZpZWRfd2luZG93ID0gaGVpZ2h0 OwpAQCAtNDY4Niw3ICs0NzM0LDYgQEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVS TT0uLi47IGV4cG9ydCBURVJNJyAoQy1zaGVsbDpcblwKICAgICAgZG9uJ3QgdGhpbmsgd2UncmUg bG9zaW5nIGFueXRoaW5nIGJ5IHR1cm5pbmcgaXQgb2ZmLiAgKi8KICAgdHR5LT5saW5lX2luc19k ZWxfb2sgPSAwOwogCi0gIHR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2OyAgLyogTXVzdCBiZSBub24t emVybyBmb3IgdHR5LWRpc3BsYXktY29sb3ItcC4gICovCiAjZW5kaWYJLyogRE9TX05UICovCiAK ICNpZmRlZiBIQVZFX0dQTQpAQCAtNTIwMiwxMSArNTI0OSwxMSBAQCBub24tbmlsIHRvIGVuYWJs ZSB0aGlzIG9wdGltaXphdGlvbi4gICovKTsKICAgZGVmc3ViciAoJlN0dHlfZGlzcGxheV9waXhl bF93aWR0aCk7CiAgIGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfaGVpZ2h0KTsKIAotI2lm ICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBN U0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKICAgZGVmYXVsdF9vcmlnX3BhaXIgPSBOVUxM OwogICBkZWZhdWx0X3NldF9mb3JlZ3JvdW5kID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfYmFja2dy b3VuZCA9IE5VTEw7Ci0jZW5kaWYgLyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5k aWYgLyogIU1TRE9TICYmICFIQVZFX0FORFJPSUQgKi8KIAogI2lmbmRlZiBIQVZFX0FORFJPSUQK ICAgZW5jb2RlX3Rlcm1pbmFsX3NyYyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVybWNoYXIu aCBiL3NyYy90ZXJtY2hhci5oCmluZGV4IGVjZTNhNjc2YzZlLi4xM2FkMmYwYTcyYSAxMDA2NDQK LS0tIGEvc3JjL3Rlcm1jaGFyLmgKKysrIGIvc3JjL3Rlcm1jaGFyLmgKQEAgLTI0OSw0ICsyNDks NiBAQCBzdHJ1Y3QgaW5wdXRfZXZlbnQ7CiBleHRlcm4gTGlzcF9PYmplY3QgdHR5X2hhbmRsZV90 YWJfYmFyX2NsaWNrIChzdHJ1Y3QgZnJhbWUgKiwgaW50LCBpbnQsIGJvb2wsCiAJCQkJCSAgICAg c3RydWN0IGlucHV0X2V2ZW50ICopOwogCitleHRlcm4gdm9pZCB0dHlfc2V0dXBfY29sb3JzIChz dHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSk7CisKICNlbmRpZiAvKiBFTUFD U19URVJNQ0hBUl9IICovCmRpZmYgLS1naXQgYS9zcmMvdzMyY29uc29sZS5jIGIvc3JjL3czMmNv bnNvbGUuYwppbmRleCAxYmNhMGNhZGZmOS4uZTQ5MzdiNDMxOWQgMTAwNjQ0Ci0tLSBhL3NyYy93 MzJjb25zb2xlLmMKKysrIGIvc3JjL3czMmNvbnNvbGUuYwpAQCAtMTksMTIgKzE5LDYyIEBAIGFs b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCiAvKgogICAgVGltIEZsZWVoYXJ0IChhcG9sbG9Ab25saW5lLmNvbSkJCTEt MTctOTIKICAgIEdlb2ZmIFZvZWxrZXIgKHZvZWxrZXJAY3Mud2FzaGluZ3Rvbi5lZHUpCTktMTIt OTMKKyAgIEV3YW4gVG93bnNoZW5kIChld2FuQGV0b3duLmRldikgICAgICAgICAgICAgIDIwMjUt MDgKKworICAgYy4gfiAyMDI1OgorICAgKiAyNGJpdCBSR0Igc3VwcG9ydCBpbiBXaW5kb3dzICgx MCspIFRlcm1pbmFsCisgICAqIE1pY3Jvc29mdCBtb3ZpbmcgYXdheSBmcm9tIGlkaW9zeW5jcmF0 aWMgQVBJLCB0b3dhcmQgQVNDSUkgY29udHJvbHMKKworICAgaHR0cHM6Ly9sZWFybi5taWNyb3Nv ZnQuY29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwtc2Vx dWVuY2VzCisKKyAgIEZvciByZWZlcmVuY2UgKG1vcmUgZGVmaW5lZCBhdCBsaW5rIGFib3ZlKToK KworICAgKiAiY2xlYXIiIDo9IG92ZXJ3cml0ZSB3aXRoIHNwYWNlIGNoYXJhY3RlcgorCisgICBc eDFiWzBKID0+IGNsZWFyIGN1cnNvciAoaW5jbHVzaXZlKSB0byBlbmQgb2Ygc2NyZWVuCisgICBc eDFiWzFKID0+IGNsZWFyIGJlZ2lubmluZyBvZiBzY3JlZW4gdG8gY3Vyc29yIChpbmNsdXNpdmUp CisgICBceDFiWzJKID0+IGNsZWFyIGVudGlyZSBzY3JlZW4gKGV4Y2x1ZGluZyBzY3JvbGxiYWNr IGFyZWEpCisgICBceDFiWzNKID0+IGNsZWFyIHNjcm9sbGJhY2sgYXJlYQorCisgICBceDFiWzBL ID0+IGNsZWFyIGN1cnNvciAoaW5jbHVzaXZlKSB0byBlbmQgb2YgbGluZQorICAgXHgxYlsxSyA9 PiBjbGVhciBiZWdpbm5pbmcgb2YgbGluZSB0byBjdXJzb3IgKGluY2x1c2l2ZSkKKyAgIFx4MWJb MksgPT4gY2xlYXIgZW50aXJlIGxpbmUKKworICAgXHgxYls8bj5AID0+IGluc2VydCA8bj4gc3Bh Y2VzIGF0IGN1cnNvciwgc2hpZnQgY3VycmVudCB0ZXh0IHJpZ2h0CisgICBceDFiWzxuPlAgPT4g ZGVsZXRlIDxuPiBjaGFycyAgYXQgY3Vyc29yLCBhZGRpbmcgc3BhY2VzIGZyb20gcmlnaHQKKwor ICAgXHgxYls3ICAgICAgICA9PiBzYXZlIGN1cnNvciBwb3NpdGlvbgorICAgXHgxYls4ICAgICAg ICA9PiByZXN0b3JlIHNhdmVkIGN1cnNvciBwb3NpdGlvbgorICAgXHgxYls8eT47PHg+SCA9PiBt b3ZlIGN1cnNvciB0byByb3cgPHk+LCBjb2wgPHg+ICgxLWluZGV4ZWQpCisgICBceDFiWz8yNWwg ICAgID0+IGhpZGUgY3Vyc29yCisgICBceDFiWz8yNWggICAgID0+IHNob3cgY3Vyc29yCisKKyAg IFx4MWJbMG0gPT4gYWxsIGF0dHJpYnV0ZXMgb2ZmCisgICBceDFiWzFtID0+IGJvbGQKKyAgIFx4 MWJbM20gPT4gaXRhbGljCisgICBceDFiWzRtID0+IHVuZGVybGluZQorICAgXHgxYls3bSA9PiBp bnZlcnNlIHZpZGVvCisgICBceDFiWzltID0+IHN0cmlrZS10aHJvdWdoCisKKyAgICogMTYgYmFz ZSBjb2xvcnMgZGVmaW5lZCBpbiB3MzJjb25zb2xlLmVsCisgICBceDFiWzM8aT4gICg8aT4gaW4g MC4uNykgPT4gZm9yZWdyb3VuZCA9IDE2Y29sb3JzW2ldCisgICBceDFiWzQ8aT4gICg8aT4gaW4g MC4uNykgPT4gYmFja2dyb3VuZCA9IDE2Y29sb3JzW2ldCisgICBceDFiWzk8aT4gICg8aT4gaW4g MC4uNykgPT4gZm9yZWdyb3VuZCA9IDE2Y29sb3JzW2kgKyA4XQorICAgXHgxYlsxMDxpPiAoPGk+ IGluIDAuLjcpID0+IGJhY2tncm91bmQgPSAxNmNvbG9yc1tpICsgOF0KKworICAgKiAyNTYgY29s b3JzIGZvbGxvdyB4dGVybQorICAgXHgxYlszODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gZm9yZWdy b3VuZCA9IDI1NmNvbG9yc1tpXQorICAgXHgxYls0ODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gYmFj a2dyb3VuZCA9IDI1NmNvbG9yc1tpXQorCisgICAqIDI0LWJpdCBjb3ZlcnMgYWxsIG5hbWVkIGNv bG9ycyAoc2VlIGNvbG9yLW5hbWUtcmdiLWFsaXN0KQorICAgXHgxYlszODsyOzxyPjs8Zz47PGI+ ID0+IGZvcmVncm91bmQgPSAoPHI+LCA8Zz4sIDxiPikKKyAgIFx4MWJbNDg7Mjs8cj47PGc+Ozxi PiA9PiBiYWNrZ3JvdW5kID0gKDxyPiwgPGc+LCA8Yj4pCiAqLwogCiAKICNpbmNsdWRlIDxjb25m aWcuaD4KLQogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVk ZSA8d2luZG93cy5oPgogCiAjaW5jbHVkZSAibGlzcC5oIgpAQCAtNDAsNyArOTAsNiBAQCBhbG9u ZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwogI2luY2x1ZGUgInczMi5oIgkvKiBmb3Igc3ltc19vZl9udHRlcm0gKi8KICNl bmRpZgogCi1zdGF0aWMgdm9pZCB3MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwg aW50IHJvdywgaW50IGNvbCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fY2xlYXJfdG9fZW5kIChzdHJ1 Y3QgZnJhbWUgKmYpOwogc3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX2ZyYW1lIChzdHJ1Y3QgZnJh bWUgKmYpOwogc3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJh bWUgKmYsIGludCk7CkBAIC01MSwxMyArMTAwLDMwIEBAIHN0YXRpYyB2b2lkIHczMmNvbl9kZWxl dGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKTsKIHN0YXRpYyB2b2lkIHczMmNvbl9y ZXNldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFsICp0KTsKIHN0YXRpYyB2b2lkIHcz MmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9p ZCB3MzJjb25fdXBkYXRlX2JlZ2luIChzdHJ1Y3QgZnJhbWUgKiBmKTsKLXN0YXRpYyB2b2lkIHcz MmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKiBmKTsKK3N0YXRpYyB2b2lkIHczMmNvbl91 cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKmYpOworc3RhdGljIGludCAgdzMyY29uX3dyaXRlX3Z0 X3NlcSAoY2hhciAqKTsKIHN0YXRpYyBXT1JEIHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVjdCBm cmFtZSAqZiwgaW50IGZhY2VfaWQpOworc3RhdGljIHZvaWQgdHVybl9vbl9mYWNlIChzdHJ1Y3Qg ZnJhbWUgKiwgaW50IGZhY2VfaWQpOworc3RhdGljIHZvaWQgdHVybl9vZmZfZmFjZSAoc3RydWN0 IGZyYW1lICosIGludCBmYWNlX2lkKTsKK3N0YXRpYyB2b2lkIHczMmNvbl9tb3ZlX2N1cnNvciAo c3RydWN0IGZyYW1lICpmLCBpbnQgcm93LCBpbnQgY29sKTsKK3ZvaWQgdzMyY29uX3NhdmVfY3Vy c29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX3Jlc3RvcmVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMy Y29uX3Nob3dfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX2hpZGVfY3Vyc29yICh2b2lkKTsK K3ZvaWQgdzMyY29uX2RyYXdfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYpOworCitzdGF0aWMgdW5z aWduZWQgbG9uZyBnZXRfcGl4ZWwgKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworCitleHRlcm4gdm9p ZCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9k ZSk7CiAKLXN0YXRpYyBDT09SRAljdXJzb3JfY29vcmRzOwotc3RhdGljIEhBTkRMRQlwcmV2X3Nj cmVlbiwgY3VyX3NjcmVlbjsKLXN0YXRpYyBXT1JECWNoYXJfYXR0cl9ub3JtYWw7Ci1zdGF0aWMg RFdPUkQJcHJldl9jb25zb2xlX21vZGU7CitzdGF0aWMgQ09PUkQgICAgY3Vyc29yX2Nvb3JkczsK K3N0YXRpYyBDT09SRCAgICBzYXZlZF9jb29yZHM7CitzdGF0aWMgSEFORExFICAgcHJldl9zY3Jl ZW4sIGN1cl9zY3JlZW47CitzdGF0aWMgV09SRCAgICAgY2hhcl9hdHRyX25vcm1hbDsKK3N0YXRp YyBXT1JEICAgICBiZ19ub3JtYWw7CitzdGF0aWMgV09SRCAgICAgZmdfbm9ybWFsOworc3RhdGlj IERXT1JEICAgIHByZXZfY29uc29sZV9tb2RlOworc3RhdGljIGludCAgICAgIHVzaW5nX3N5c3Rl bV9jYXJldDsKIAogc3RhdGljIENPTlNPTEVfQ1VSU09SX0lORk8gY29uc29sZV9jdXJzb3JfaW5m bzsKICNpZm5kZWYgVVNFX1NFUEFSQVRFX1NDUkVFTgpAQCAtNjgsMTMgKzEzNCwxNCBAQCBleHRl cm4gSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIGlu dCB3MzJfY29uc29sZV91bmljb2RlX2lucHV0OwogCi0KLS8qIFNldHRpbmcgdGhpcyBhcyB0aGUg Y3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20gYmVpbmcga2lsbGVkIHdoZW4KLSAgIHNv bWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4KLSAg IEFsc28gaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4gICovCitleHRlcm4gc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Oworc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJl bnRfdHR5ID0gTlVMTDsKIAogQk9PTCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyk7CiAK Ky8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20g YmVpbmcga2lsbGVkCisgICB3aGVuIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNl c3Npb24gKGNoaWxkIHNoZWxsKS4gQWxzbworICAgaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4g ICovCiBCT09MCiBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogewpAQCAtODMs NiArMTUwLDU1IEBAIGN0cmxfY19oYW5kbGVyICh1bnNpZ25lZCBsb25nIHR5cGUpCiAJICAmJiAo dHlwZSA9PSBDVFJMX0NfRVZFTlQgfHwgdHlwZSA9PSBDVFJMX0JSRUFLX0VWRU5UKSk7CiB9CiAK KyNkZWZpbmUgU1NQUklOVEYoYnVmLCBpLCBzeiwgZm10LCAuLi4pCQkJCQlcCisgIGRvIHsJCQkJ CQkJCQlcCisgICAgaWYgKGZtdCkJCQkJCQkJCVwKKyAgICAgICppICs9IHNucHJpbnRmIChidWYg KyAqaSwgc3ogLSAqaSwgZm10LCBfX1ZBX0FSR1NfXyk7CQlcCisgIH0gd2hpbGUgKDApCisKKyNk ZWZpbmUgREVGQVVMVFAocCkJCQkJCQkJXAorICAocCA9PSBGQUNFX1RUWV9ERUZBVUxUX0NPTE9S CQkJCQkJXAorICAgfHwgcCA9PSBGQUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9SCQkJCQlcCisgICB8 fCBwID09IEZBQ0VfVFRZX0RFRkFVTFRfQkdfQ09MT1IpCisKKyNkZWZpbmUgU0VRTUFYIDI1NiAv KiBBcmJpdHJhcnkgdXBwZXIgbGltaXQgb24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisvKiBGb3Ig ZGVidWdnaW5nICovCitzdGF0aWMgdm9pZAordnRfc2VxX2Vycm9yIChjaGFyICpzZXEpCit7Cisg IGludCBpID0gMDsgaW50IGogPSAwOworICBpZiAoc2VxKQorICAgIGlmIChzZXFbMF0gPT0gJ1ww Jykgc2VxID0gIjxlbXB0eT4iOworICAgIGVsc2UKKyAgICAgIHdoaWxlIChpIDwgU0VRTUFYKQor CXsKKwkgIGlmIChzZXFbaV0gPT0gJ1x4MWInKSBzZXFbaV0gPSAnIyc7CisJICBpZiAoc2VxW2ld ID09ICAgICclJykgc2VxW2ldID0gJ18nOworCSAgaWYgKHNlcVtpXSA9PSAgICdcMCcpIHsgaisr OyBicmVhazsgfQorCSAgaSsrOworCX0KKyAgZWxzZSBzZXEgPSAiPG51bGw+IjsKKyAgcHJpbnRm ICgiRmFpbGVkIHRvIHdyaXRlIFZUIHNlcXVlbmNlOiAlc1xuIiwgaiA/IHNlcSA6ICI8b3ZlcmZs b3c+Iik7CisgIHByaW50ZiAoIkxhc3RFcnJvcjogMHglZHhcbiIsIEdldExhc3RFcnJvciAoKSk7 CisgIGZmbHVzaCAoc3Rkb3V0KTsKKyAgZXhpdCAoMSk7Cit9CisKKy8qIFdyaXRlcyAoZHluYW1p YykgdmlydHVhbCB0ZXJtaW5hbCBBU0NJSSBzZXF1ZW5jZXMgdG8gc2NyZWVuICovCitzdGF0aWMg aW50Cit3MzJjb25fd3JpdGVfdnRfc2VxIChjaGFyICpzZXEpCit7CisgIGNoYXIgYnVmW1NFUU1B WF07CisgIERXT1JEIG4gPSAwLCBrID0gMDsKKyAgU1NQUklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwg c2VxLCBOVUxMKTsKKyAgaWYgKG4pIFdyaXRlQ29uc29sZUEgKGN1cl9zY3JlZW4sIChMUENTVFIp IGJ1ZiwgbiwgJmssIE5VTEwpOworICByZXR1cm4gazsKK30KKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Vyc29yIENvbnRyb2wKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogCiAvKiBNb3ZlIHRoZSBjdXJzb3IgdG8gKFJPVywgQ09MKSBvbiBGUkFNRS4gICovCiBzdGF0 aWMgdm9pZApAQCAtOTAsNTQgKzIwNiwxODAgQEAgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3Qg ZnJhbWUgKmYsIGludCByb3csIGludCBjb2wpCiB7CiAgIGN1cnNvcl9jb29yZHMuWCA9IGNvbDsK ICAgY3Vyc29yX2Nvb3Jkcy5ZID0gcm93OwotCi0gIC8qIFRPRE86IGZvciBtdWx0aS10dHkgc3Vw cG9ydCwgY3VyX3NjcmVlbiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhCi0gICAgIHJlZmVyZW5j ZSB0byB0aGUgdGVybWluYWwgZm9yIHRoaXMgZnJhbWUuICAqLwotICBTZXRDb25zb2xlQ3Vyc29y UG9zaXRpb24gKGN1cl9zY3JlZW4sIGN1cnNvcl9jb29yZHMpOworICBpZiAodzMyX3VzZV92aXJ0 dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7CisgICAgICBjaGFyIHNlcVszMl07CisgICAg ICBzcHJpbnRmKHNlcSwgIlx4MWJbJWQ7JWRIIiwgcm93ICsgMSwgY29sICsgMSk7IC8qIDEtaW5k ZXhlZCAqLworICAgICAgdzMyY29uX3dyaXRlX3Z0X3NlcShzZXEpOworICAgIH0KKyAgZWxzZQor ICB7CisgICAgLyogVE9ETzogZm9yIG11bHRpLXR0eSBzdXBwb3J0LCBjdXJfc2NyZWVuIHNob3Vs ZCBiZSByZXBsYWNlZCB3aXRoIGEKKyAgICAgICByZWZlcmVuY2UgdG8gdGhlIHRlcm1pbmFsIGZv ciB0aGlzIGZyYW1lLiAgKi8KKyAgICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24gKGN1cl9zY3Jl ZW4sIGN1cnNvcl9jb29yZHMpOworICB9CiB9CiAKIHZvaWQKIHczMmNvbl9oaWRlX2N1cnNvciAo dm9pZCkKIHsKLSAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1 cnNvcl9pbmZvKTsKLSAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9IEZBTFNFOwotICBT ZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOwor ICBpZiAodXNpbmdfc3lzdGVtX2NhcmV0KQorICAgIHsKKyAgICAgIEdldENvbnNvbGVDdXJzb3JJ bmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgICAgICBjb25zb2xlX2N1 cnNvcl9pbmZvLmJWaXNpYmxlID0gRkFMU0U7CisKKyAgICAgIGlmICh3MzJfdXNlX3ZpcnR1YWxf dGVybWluYWxfc2VxdWVuY2VzKQorCWlmICghY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4pCisJ ICB3MzJjb25fd3JpdGVfdnRfc2VxICgoY2hhciAqKSBjdXJyZW50X3R0eS0+VFNfY3Vyc29yX2lu dmlzaWJsZSk7CisJZWxzZQorCSAgU2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZj b25zb2xlX2N1cnNvcl9pbmZvKTsKKyAgICB9CisgIGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVu ID0gMTsKIH0KIAogdm9pZAogdzMyY29uX3Nob3dfY3Vyc29yICh2b2lkKQogewotICBHZXRDb25z b2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOwotICBjb25z b2xlX2N1cnNvcl9pbmZvLmJWaXNpYmxlID0gVFJVRTsKLSAgU2V0Q29uc29sZUN1cnNvckluZm8g KGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKKyAgaWYgKHVzaW5nX3N5c3RlbV9j YXJldCkKKyAgICB7CisgICAgICBHZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNv bnNvbGVfY3Vyc29yX2luZm8pOworICAgICAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9 IFRSVUU7CisKKyAgICAgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQor CWlmIChjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbikKKwkgIHczMmNvbl93cml0ZV92dF9zZXEg KChjaGFyICopIGN1cnJlbnRfdHR5LT5UU19jdXJzb3JfdmlzaWJsZSk7CisJZWxzZQorCSAgU2V0 Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKKyAg ICB9CisgIGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVuID0gMDsKK30KKwordm9pZAordzMyY29u X3NhdmVfY3Vyc29yICh2b2lkKQoreworICBzYXZlZF9jb29yZHMgPSBjdXJzb3JfY29vcmRzOwor ICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB3MzJjb25fd3Jp dGVfdnRfc2VxICgoY2hhciAqKSAiXHgxYls3Iik7Cit9CisKK3ZvaWQKK3czMmNvbl9yZXN0b3Jl X2N1cnNvciAodm9pZCkKK3sKKyAgY3Vyc29yX2Nvb3JkcyA9IHNhdmVkX2Nvb3JkczsKKyAgaWYg KHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisgICAgdzMyY29uX3dyaXRlX3Z0 X3NlcSAoKGNoYXIgKikgIlx4MWJbOCIpOworICBlbHNlCisgICAgU2V0Q29uc29sZUN1cnNvclBv c2l0aW9uIChjdXJfc2NyZWVuLCBjdXJzb3JfY29vcmRzKTsKIH0KIAorLyogVGhpcyBmdW5jdGlv biBvbmx5IHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgd3JpdGVfbWF0cml4ICovCitz dGF0aWMgdW5zaWduZWQgbG9uZyBzYXZlZF9jdXJzb3JfYmcgPSAtOTsKK3N0YXRpYyB1bnNpZ25l ZCBsb25nIHNhdmVkX2N1cnNvcl9mZyA9IC05Oworc3RhdGljIENPT1JEIHByZXZfY3Vyc29yX3Bv cyA9IHsgLTEsIC0xIH07CitzdGF0aWMgaW50IHNhdmVkX2ZhY2VfaWQgPSAtMTsKK3ZvaWQKK3cz MmNvbl9kcmF3X2N1cnNvciAoc3RydWN0IGZyYW1lICpmKQoreworICBpZiAoIXVzaW5nX3N5c3Rl bV9jYXJldCkKKyAgICB7CisgICAgICBpbnQgeCA9IGN1cnNvcl9jb29yZHMuWCwgeSA9IGN1cnNv cl9jb29yZHMuWTsKKyAgICAgIHN0cnVjdCBnbHlwaF9yb3cgKm9yb3cgPSBNQVRSSVhfUk9XIChm LT5jdXJyZW50X21hdHJpeCwgeSk7CisgICAgICBzdHJ1Y3QgZ2x5cGhfcm93ICpucm93ID0gTUFU UklYX1JPVyAoZi0+ZGVzaXJlZF9tYXRyaXgsIHkpOworICAgICAgaW50IGdseXBoX2ZhY2VfaWQg PSBucm93LT5nbHlwaHNbVEVYVF9BUkVBXVt4XS5mYWNlX2lkOworICAgICAgaWYgKGdseXBoX2Zh Y2VfaWQgIT0gQ1VSU09SX0ZBQ0VfSUQpCisJeworCSAgc3RydWN0IGZhY2UgKmdseXBoX2ZhY2Ug PSBGQUNFX0ZST01fSUQgKGYsIGdseXBoX2ZhY2VfaWQpOworCSAgc3RydWN0IGZhY2UgKmN1cnNv cl9mYWNlID0gRkFDRV9GUk9NX0lEIChmLCBDVVJTT1JfRkFDRV9JRCk7CisKKwkgIC8qIGNsZWFu IHVwIGZyb20gbGFzdCBydW4gaWYgZmFjZXMgY29uZmxpY3RlZCAqLworCSAgaWYgKHNhdmVkX2N1 cnNvcl9iZyA+IC05ICYmIHNhdmVkX2N1cnNvcl9mZyA+IC05KQorCSAgICB7CisJICAgICAgY3Vy c29yX2ZhY2UtPmJhY2tncm91bmQgPSBzYXZlZF9jdXJzb3JfYmc7CisJICAgICAgY3Vyc29yX2Zh Y2UtPmZvcmVncm91bmQgPSBzYXZlZF9jdXJzb3JfZmc7CisJICAgICAgc2F2ZWRfY3Vyc29yX2Jn ID0gLTk7CisJICAgICAgc2F2ZWRfY3Vyc29yX2ZnID0gLTk7CisJICAgIH0KKwkgIC8qIGRyYXcg Y3Vyc29yIChpLmUuIG1hbmlwdWxhdGUgZmFjZXMpICovCisJICBpZiAoY3Vyc29yX2ZhY2UtPmJh Y2tncm91bmQgPT0gZ2x5cGhfZmFjZS0+YmFja2dyb3VuZCkKKwkgICAgeworCSAgICAgIHNhdmVk X2N1cnNvcl9iZyA9IGN1cnNvcl9mYWNlLT5iYWNrZ3JvdW5kOworCSAgICAgIHNhdmVkX2N1cnNv cl9mZyA9IGN1cnNvcl9mYWNlLT5mb3JlZ3JvdW5kOworCSAgICAgIGN1cnNvcl9mYWNlLT5iYWNr Z3JvdW5kID0gZ2x5cGhfZmFjZS0+Zm9yZWdyb3VuZDsKKwkgICAgICBjdXJzb3JfZmFjZS0+Zm9y ZWdyb3VuZCA9IGdseXBoX2ZhY2UtPmJhY2tncm91bmQ7CisJICAgIH0KKwkgIG5yb3ctPmdseXBo c1tURVhUX0FSRUFdW3hdLmZhY2VfaWQgPSBDVVJTT1JfRkFDRV9JRDsKKworCSAgLyogZm9yY2Ug YSByZXdyaXRlIG9mIG5ldyBjdXJzb3Igcm93IChpbmNsdWRpbmcgc3BhY2VzKSAqLworCSAgRlJB TUVfVFRZIChmKS0+bXVzdF93cml0ZV9zcGFjZXMgPSAxOworCSAgb3Jvdy0+ZW5hYmxlZF9wID0g MDsKKwkgIG5yb3ctPmVuYWJsZWRfcCA9IDE7CisKKwkgIC8qIGZvcmNlIGEgcmV3cml0ZSBvZiBv bGQgY3Vyc29yIHJvdyAoaWYgbmVlZGVkKSAqLworCSAgaW50IHB4ID0gcHJldl9jdXJzb3JfcG9z LlgsIHB5ID0gcHJldl9jdXJzb3JfcG9zLlk7CisJICBpZiAoc2F2ZWRfZmFjZV9pZCA+IC0xICYm IChweCAhPSB4IHx8IHB5ICE9IHkpKQorCSAgICB7CisJICAgICAgc3RydWN0IGdseXBoX3JvdyAq cG9yb3cgPSBNQVRSSVhfUk9XIChmLT5jdXJyZW50X21hdHJpeCwgcHkpOworCSAgICAgIHN0cnVj dCBnbHlwaF9yb3cgKnBucm93ID0gTUFUUklYX1JPVyAoZi0+ZGVzaXJlZF9tYXRyaXgsIHB5KTsK KwkgICAgICBpZiAocG5yb3ctPmdseXBoc1tURVhUX0FSRUFdW3B4XS5mYWNlX2lkID09IENVUlNP Ul9GQUNFX0lEKQorCQlwbnJvdy0+Z2x5cGhzW1RFWFRfQVJFQV1bcHhdLmZhY2VfaWQgPSBzYXZl ZF9mYWNlX2lkOworCSAgICAgIHBvcm93LT5lbmFibGVkX3AgPSAwOworCSAgICAgIHBucm93LT5l bmFibGVkX3AgPSAxOworCSAgICB9CisJICBzYXZlZF9mYWNlX2lkID0gZ2x5cGhfZmFjZV9pZDsK KwkgIHByZXZfY3Vyc29yX3Bvcy5YID0geDsKKwkgIHByZXZfY3Vyc29yX3Bvcy5ZID0geTsKKwl9 CisgICAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICBU ZXh0IE1vZGlmaWNhdGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiAvKiBDbGVhciBmcm9tIGN1cnNv ciB0byBlbmQgb2Ygc2NyZWVuLiAgKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fY2xlYXJfdG9fZW5k IChzdHJ1Y3QgZnJhbWUgKmYpCiB7Ci0gIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJB TUVfQ09MUyAoZikgLSAxKTsKLSAgdzMyY29uX2luc19kZWxfbGluZXMgKGYsIGN1cnNvcl9jb29y ZHMuWSwgRlJBTUVfVE9UQUxfTElORVMgKGYpIC0gY3Vyc29yX2Nvb3Jkcy5ZIC0gMSk7CisgIGlm ICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorICAgIHsKKyAgICAgIHR1cm5f b25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3MzJjb25fd3JpdGVfdnRf c2VxICgiXHgxYlsxSiIpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFj ZV9pZCk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgdzMyY29uX2NsZWFyX2VuZF9vZl9s aW5lIChmLCBGUkFNRV9DT0xTIChmKSAtIDEpOworICAgICAgaW50IG4gPSBGUkFNRV9UT1RBTF9M SU5FUyAoZikgLSBjdXJzb3JfY29vcmRzLlkgLSAxOworICAgICAgdzMyY29uX2luc19kZWxfbGlu ZXMgKGYsIGN1cnNvcl9jb29yZHMuWSwgbik7CisgICAgfQogfQogCiAvKiBDbGVhciB0aGUgZnJh bWUuICAqLwogc3RhdGljIHZvaWQKIHczMmNvbl9jbGVhcl9mcmFtZSAoc3RydWN0IGZyYW1lICpm KQogewotICBDT09SRAkgICAgIGRlc3Q7Ci0gIGludCAgICAgICAgbjsKLSAgRFdPUkQgICAgICBy OwotICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBpbmZvOwotCi0gIEdldENvbnNvbGVTY3Jl ZW5CdWZmZXJJbmZvIChHZXRTdGRIYW5kbGUgKFNURF9PVVRQVVRfSEFORExFKSwgJmluZm8pOwot Ci0gIC8qIFJlbWVtYmVyIHRoYXQgdGhlIHNjcmVlbiBidWZmZXIgbWlnaHQgYmUgd2lkZXIgdGhh biB0aGUgd2luZG93LiAgKi8KLSAgbiA9IEZSQU1FX1RPVEFMX0xJTkVTIChmKSAqIGluZm8uZHdT aXplLlg7Ci0gIGRlc3QuWCA9IGRlc3QuWSA9IDA7Ci0KLSAgRmlsbENvbnNvbGVPdXRwdXRBdHRy aWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0cl9ub3JtYWwsIG4sIGRlc3QsICZyKTsKLSAgRmls bENvbnNvbGVPdXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sICcgJywgbiwgZGVzdCwgJnIpOwot CisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorICAgIHsKKyAgICAg IHR1cm5fb25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3MzJjb25fd3Jp dGVfdnRfc2VxICgiXHgxYlsySlx4MWJbM0oiKTsKKyAgICAgIHR1cm5fb2ZmX2ZhY2UgKGYsIHNw YWNlX2dseXBoLmZhY2VfaWQpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIENPT1JECSAg ICAgZGVzdDsKKyAgICAgIGludCAgICAgICAgbjsKKyAgICAgIERXT1JEICAgICAgcjsKKyAgICAg IENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGluZm87CisgICAgICAKKyAgICAgIEdldENvbnNv bGVTY3JlZW5CdWZmZXJJbmZvIChHZXRTdGRIYW5kbGUgKFNURF9PVVRQVVRfSEFORExFKSwgJmlu Zm8pOworICAgICAgCisgICAgICAvKiBSZW1lbWJlciB0aGF0IHRoZSBzY3JlZW4gYnVmZmVyIG1p Z2h0IGJlIHdpZGVyIHRoYW4gdGhlIHdpbmRvdy4gICovCisgICAgICBuID0gRlJBTUVfVE9UQUxf TElORVMgKGYpICogaW5mby5kd1NpemUuWDsKKyAgICAgIGRlc3QuWCA9IGRlc3QuWSA9IDA7Cisg ICAgICAKKyAgICAgIEZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFy X2F0dHJfbm9ybWFsLCBuLCBkZXN0LCAmcik7CisgICAgICBGaWxsQ29uc29sZU91dHB1dENoYXJh Y3RlciAoY3VyX3NjcmVlbiwgJyAnLCBuLCBkZXN0LCAmcik7CisgICAgfQogICB3MzJjb25fbW92 ZV9jdXJzb3IgKGYsIDAsIDApOwogfQogCkBAIC0xNTEsOTUgKzM5MywxMTkgQEAgc3RhdGljIEJP T0wgIGNlb2xfaW5pdGlhbGl6ZWQgPSBGQUxTRTsKIHN0YXRpYyB2b2lkCiB3MzJjb25fY2xlYXJf ZW5kX29mX2xpbmUgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGVuZCkKIHsKLSAgLyogVGltZSB0byBy ZWFsbG9jYXRlIG91ciAiZW1wdHkgcm93Ij8gIFdpdGggdG9kYXkncyBsYXJnZSBzY3JlZW5zLAot ICAgICBpdCBpcyBub3QgdW50aGlua2FibGUgdG8gc2VlIFRUWSBmcmFtZXMgd2VsbCBpbiBleGNl c3Mgb2YKLSAgICAgODAtY2hhcmFjdGVyIHdpZHRoLiAgKi8KLSAgaWYgKGVuZCAtIGN1cnNvcl9j b29yZHMuWCA+IGdseXBoc19sZW4pCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2Vx dWVuY2VzKQogICAgIHsKLSAgICAgIGlmIChnbHlwaHMgPT0gZ2x5cGhfYmFzZSkKLQlnbHlwaHMg PSBOVUxMOwotICAgICAgZ2x5cGhzID0geHJlYWxsb2MgKGdseXBocywgRlJBTUVfQ09MUyAoZikg KiBzaXplb2YgKHN0cnVjdCBnbHlwaCkpOwotICAgICAgZ2x5cGhzX2xlbiA9IEZSQU1FX0NPTFMg KGYpOwotICAgICAgY2VvbF9pbml0aWFsaXplZCA9IEZBTFNFOworICAgICAgdHVybl9vbl9mYWNl IChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICAgIHczMmNvbl93cml0ZV92dF9zZXEgKCJc eDFiWzBLIik7CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsK ICAgICB9Ci0gIGlmICghY2VvbF9pbml0aWFsaXplZCkKKyAgZWxzZQogICAgIHsKLSAgICAgIGlu dCBpOwotICAgICAgZm9yIChpID0gMDsgaSA8IGdseXBoc19sZW47IGkrKykKLSAgICAgICAgewot CSAgbWVtY3B5ICgmZ2x5cGhzW2ldLCAmc3BhY2VfZ2x5cGgsIHNpemVvZiAoc3RydWN0IGdseXBo KSk7Ci0JICBnbHlwaHNbaV0uZnJhbWUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgICBjZW9sX2lu aXRpYWxpemVkID0gVFJVRTsKKyAgICAgIC8qIFRpbWUgdG8gcmVhbGxvY2F0ZSBvdXIgImVtcHR5 IHJvdyI/ICBXaXRoIHRvZGF5J3MgbGFyZ2Ugc2NyZWVucywKKwkgaXQgaXMgbm90IHVudGhpbmth YmxlIHRvIHNlZSBUVFkgZnJhbWVzIHdlbGwgaW4gZXhjZXNzIG9mCisJIDgwLWNoYXJhY3RlciB3 aWR0aC4gICovCisgICAgICBpZiAoZW5kIC0gY3Vyc29yX2Nvb3Jkcy5YID4gZ2x5cGhzX2xlbikK Kwl7CisJICBpZiAoZ2x5cGhzID09IGdseXBoX2Jhc2UpCisJICAgIGdseXBocyA9IE5VTEw7CisJ ICBnbHlwaHMgPSB4cmVhbGxvYyAoZ2x5cGhzLCBGUkFNRV9DT0xTIChmKSAqIHNpemVvZiAoc3Ry dWN0IGdseXBoKSk7CisJICBnbHlwaHNfbGVuID0gRlJBTUVfQ09MUyAoZik7CisJICBjZW9sX2lu aXRpYWxpemVkID0gRkFMU0U7CisJfQorICAgICAgaWYgKCFjZW9sX2luaXRpYWxpemVkKQorCXsK KwkgIGludCBpOworCSAgZm9yIChpID0gMDsgaSA8IGdseXBoc19sZW47IGkrKykKKwkgICAgewor CSAgICAgIG1lbWNweSAoJmdseXBoc1tpXSwgJnNwYWNlX2dseXBoLCBzaXplb2YgKHN0cnVjdCBn bHlwaCkpOworCSAgICAgIGdseXBoc1tpXS5mcmFtZSA9IE5VTEw7CisJICAgIH0KKwkgIGNlb2xf aW5pdGlhbGl6ZWQgPSBUUlVFOworCX0KKyAgICAgIHczMmNvbl93cml0ZV9nbHlwaHMgKGYsIGds eXBocywgZW5kIC0gY3Vyc29yX2Nvb3Jkcy5YKTsKICAgICB9Ci0gIHczMmNvbl93cml0ZV9nbHlw aHMgKGYsIGdseXBocywgZW5kIC0gY3Vyc29yX2Nvb3Jkcy5YKTsKIH0KIAogLyogSW5zZXJ0IG4g bGluZXMgYXQgdnBvcy4gaWYgbiBpcyBuZWdhdGl2ZSBkZWxldGUgLW4gbGluZXMuICAqLworLyog VE9ETyAtIG1pZ3JhdGUgdG8gVlQgc2VxdWVuY2VzCisgICBceDFiWzxuPkwgPT4gaW5zZXJ0IDxu PiBsaW5lcyBhYm92ZSwgc2hpZnRpbmcgY3Vyc29yIGFuZCBiZWxvdyBkb3duCisgICBceDFiWzxu Pk0gPT4gZGVsZXRlIDxuPiBsaW5lcyBiZWxvdywgZnJvbSBjdXJzb3IgbGluZSAoaW5jbC4pIGRv d24gKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpm LCBpbnQgdnBvcywgaW50IG4pCiB7Ci0gIGludAkgICAgIGksIG5iOwotICBTTUFMTF9SRUNUIHNj cm9sbDsKLSAgU01BTExfUkVDVCBjbGlwOwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5G TyAgZmlsbDsKLQotICBpZiAobiA8IDApCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxf c2VxdWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5Ub3AgPSB2cG9zIC0gbjsKLSAgICAgIHNj cm9sbC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7Ci0gICAgICBkZXN0LlkgPSB2cG9z OworICAgICAgY2hhciBzZXFbMzJdOworICAgICAgY2hhciAqZm10ID0gbiA8IDAgPyAiXHgxYlsl ZEwiIDogIlx4MWJbJWRNIjsKKyAgICAgIHNwcmludGYgKHNlcSwgZm10LCBhYnMgKG4pKTsKKwor ICAgICAgdHVybl9vbl9mYWNlIChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICAgIHczMmNv bl93cml0ZV92dF9zZXEgKHNlcSk7CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBzcGFjZV9nbHlw aC5mYWNlX2lkKTsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBzY3JvbGwuVG9wID0gdnBv czsKLSAgICAgIHNjcm9sbC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBuOwotICAg ICAgZGVzdC5ZID0gdnBvcyArIG47Ci0gICAgfQotICBjbGlwLlRvcCA9IGNsaXAuTGVmdCA9IHNj cm9sbC5MZWZ0ID0gMDsKLSAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMg KGYpOwotICBjbGlwLkJvdHRvbSA9IEZSQU1FX1RPVEFMX0xJTkVTIChmKTsKKyAgICAgIGludAkg ICAgIGksIG5iOworICAgICAgU01BTExfUkVDVCBzY3JvbGw7CisgICAgICBTTUFMTF9SRUNUIGNs aXA7CisgICAgICBDT09SRAkgICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CiAKLSAg ZGVzdC5YID0gMDsKKyAgICAgIGlmIChuIDwgMCkKKwl7CisJICBzY3JvbGwuVG9wID0gdnBvcyAt IG47CisJICBzY3JvbGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpOworCSAgZGVzdC5Z ID0gdnBvczsKKwl9CisgICAgICBlbHNlCisJeworCSAgc2Nyb2xsLlRvcCA9IHZwb3M7CisJICBz Y3JvbGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpIC0gbjsKKwkgIGRlc3QuWSA9IHZw b3MgKyBuOworCX0KKyAgICAgIGNsaXAuVG9wID0gY2xpcC5MZWZ0ID0gc2Nyb2xsLkxlZnQgPSAw OworICAgICAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpOworICAg ICAgY2xpcC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7CiAKLSAgZmlsbC5DaGFyLkFz Y2lpQ2hhciA9IDB4MjA7Ci0gIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7Cisg ICAgICBkZXN0LlggPSAwOwogCi0gIFNjcm9sbENvbnNvbGVTY3JlZW5CdWZmZXIgKGN1cl9zY3Jl ZW4sICZzY3JvbGwsICZjbGlwLCBkZXN0LCAmZmlsbCk7CisgICAgICBmaWxsLkNoYXIuQXNjaWlD aGFyID0gMHgyMDsKKyAgICAgIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7CiAK LSAgLyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBhIHczMiBjb25zb2xlIGZsYWtlOiBJZiB0 aGUgc2Nyb2xsCi0gICAgIHJlZ2lvbiBsb29rcyBsaWtlIGFiYyBhbmQgd2Ugc2Nyb2xsIGMgdG8g YSBhbmQgZmlsbCB3aXRoIGQgd2UgZ2V0Ci0gICAgIGNiZC4uLiBpZiB3ZSBzY3JvbGwgYmxvY2sg YyBvbmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4uLgotICAgICBFbWFjcyBleHBl Y3RzIGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhhdAotICAg ICBoZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2FtZSB3YXkgaW4gdGhl IG90aGVyCi0gICAgIGRpcmVjdGlvbi4gICovCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVm ZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogCi0gIGlmIChu ID4gMCkKLSAgICB7Ci0gICAgICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAg ewotCSAgZm9yIChpID0gc2Nyb2xsLkJvdHRvbTsgaSA8IGRlc3QuWTsgaSsrKQotICAgICAgICAg ICAgewotCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7Ci0JICAgICAgdzMyY29u X2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAgICAgICB9Ci0g ICAgICAgIH0KLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBuYiA9IGRlc3QuWSArIChzY3Jv bGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwotCi0gICAgICBpZiAobmIgPCBzY3JvbGwuVG9w KQotICAgICAgICB7Ci0JICBmb3IgKGkgPSBuYjsgaSA8IHNjcm9sbC5Ub3A7IGkrKykKLSAgICAg ICAgICAgIHsKLQkgICAgICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOwotCSAgICAgIHcz MmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOwotICAgICAgICAgICAg fQotICAgICAgICB9Ci0gICAgfQorICAgICAgLyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBh IHczMiBjb25zb2xlIGZsYWtlOiBJZiB0aGUgc2Nyb2xsCisJIHJlZ2lvbiBsb29rcyBsaWtlIGFi YyBhbmQgd2Ugc2Nyb2xsIGMgdG8gYSBhbmQgZmlsbCB3aXRoIGQgd2UgZ2V0CisJIGNiZC4uLiBp ZiB3ZSBzY3JvbGwgYmxvY2sgYyBvbmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4u LgorCSBFbWFjcyBleHBlY3RzIGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFs IHdpdGggdGhhdAorCSBoZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2Ft ZSB3YXkgaW4gdGhlIG90aGVyCisJIGRpcmVjdGlvbi4gICovCisKKyAgICAgIGlmIChuID4gMCkK Kwl7CisJICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKKwkgICAgeworCSAgICAgIGZvciAo aSA9IHNjcm9sbC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKKwkJeworCQkgIHczMmNvbl9tb3Zl X2N1cnNvciAoZiwgaSwgMCk7CisJCSAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFN RV9DT0xTIChmKSk7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBuYiA9IGRl c3QuWSArIChzY3JvbGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCisJICBpZiAobmIgPCBz Y3JvbGwuVG9wKQorCSAgICB7CisJICAgICAgZm9yIChpID0gbmI7IGkgPCBzY3JvbGwuVG9wOyBp KyspCisJCXsKKwkJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOworCQkgIHczMmNvbl9j bGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOworCQl9CisJICAgIH0KKwl9Cisg ICAgfQogICBjdXJzb3JfY29vcmRzLlggPSAwOwogICBjdXJzb3JfY29vcmRzLlkgPSB2cG9zOwog fQpAQCAtMjQ4LDM4ICs1MTQsNTAgQEAgdzMyY29uX2luc19kZWxfbGluZXMgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IHZwb3MsIGludCBuKQogI3VuZGVmCVJJR0hUCiAjZGVmaW5lCUxFRlQJMQogI2Rl ZmluZQlSSUdIVAkwCi0KKy8qIFRoZSBpZGVhIGhlcmUgaXMgdG8gaW1wbGVtZW50IGEgaG9yaXpv bnRhbCBzY3JvbGwgaW4gb25lIGxpbmUgdG8KKyAgIGltcGxlbWVudCBkZWxldGUgYW5kIGhhbGYg b2YgaW5zZXJ0LiAgKi8KIHN0YXRpYyB2b2lkCiBzY3JvbGxfbGluZSAoc3RydWN0IGZyYW1lICpm LCBpbnQgZGlzdCwgaW50IGRpcmVjdGlvbikKIHsKLSAgLyogVGhlIGlkZWEgaGVyZSBpcyB0byBp bXBsZW1lbnQgYSBob3Jpem9udGFsIHNjcm9sbCBpbiBvbmUgbGluZSB0bwotICAgICBpbXBsZW1l bnQgZGVsZXRlIGFuZCBoYWxmIG9mIGluc2VydC4gICovCi0gIFNNQUxMX1JFQ1Qgc2Nyb2xsLCBj bGlwOwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5GTyAgZmlsbDsKLQotICBjbGlwLlRv cCA9IHNjcm9sbC5Ub3AgPSBjbGlwLkJvdHRvbSA9IHNjcm9sbC5Cb3R0b20gPSBjdXJzb3JfY29v cmRzLlk7Ci0gIGNsaXAuTGVmdCA9IDA7Ci0gIGNsaXAuUmlnaHQgPSBGUkFNRV9DT0xTIChmKTsK LQotICBpZiAoZGlyZWN0aW9uID09IExFRlQpCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWlu YWxfc2VxdWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5MZWZ0ID0gY3Vyc29yX2Nvb3Jkcy5Y ICsgZGlzdDsKLSAgICAgIHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpIC0gMTsKKyAgICAg IGNoYXIgc2VxWzMyXTsKKyAgICAgIGNoYXIgKmZtdCA9IGRpcmVjdGlvbiA9PSBMRUZUID8gIlx4 MWJbJWRAIiA6ICJceDFiWyVkUCI7CisgICAgICBzcHJpbnRmIChzZXEsIGZtdCwgYWJzIChkaXN0 KSk7CisKKyAgICAgIHR1cm5fb25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAg ICB3MzJjb25fd3JpdGVfdnRfc2VxIChzZXEpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3Bh Y2VfZ2x5cGguZmFjZV9pZCk7CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgc2Nyb2xsLkxl ZnQgPSBjdXJzb3JfY29vcmRzLlg7Ci0gICAgICBzY3JvbGwuUmlnaHQgPSBGUkFNRV9DT0xTIChm KSAtIGRpc3QgLSAxOworICAgICAgU01BTExfUkVDVCBzY3JvbGwsIGNsaXA7CisgICAgICBDT09S RAkgICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CisgICAgICAKKyAgICAgIGNsaXAu VG9wID0gc2Nyb2xsLlRvcCA9IGNsaXAuQm90dG9tID0gc2Nyb2xsLkJvdHRvbSA9IGN1cnNvcl9j b29yZHMuWTsKKyAgICAgIGNsaXAuTGVmdCA9IDA7CisgICAgICBjbGlwLlJpZ2h0ID0gRlJBTUVf Q09MUyAoZik7CisgICAgICAKKyAgICAgIGlmIChkaXJlY3Rpb24gPT0gTEVGVCkKKwl7CisJICBz Y3JvbGwuTGVmdCA9IGN1cnNvcl9jb29yZHMuWCArIGRpc3Q7CisJICBzY3JvbGwuUmlnaHQgPSBG UkFNRV9DT0xTIChmKSAtIDE7CisJfQorICAgICAgZWxzZQorCXsKKwkgIHNjcm9sbC5MZWZ0ID0g Y3Vyc29yX2Nvb3Jkcy5YOworCSAgc2Nyb2xsLlJpZ2h0ID0gRlJBTUVfQ09MUyAoZikgLSBkaXN0 IC0gMTsKKwl9CisgICAgICAKKyAgICAgIGRlc3QuWCA9IGN1cnNvcl9jb29yZHMuWDsKKyAgICAg IGRlc3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKKyAgICAgIAorICAgICAgZmlsbC5DaGFyLkFzY2lp Q2hhciA9IDB4MjA7CisgICAgICBmaWxsLkF0dHJpYnV0ZXMgPSBjaGFyX2F0dHJfbm9ybWFsOwor ICAgICAgCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Ny b2xsLCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogICAgIH0KLQotICBkZXN0LlggPSBjdXJzb3JfY29v cmRzLlg7Ci0gIGRlc3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKLQotICBmaWxsLkNoYXIuQXNjaWlD aGFyID0gMHgyMDsKLSAgZmlsbC5BdHRyaWJ1dGVzID0gY2hhcl9hdHRyX25vcm1hbDsKLQotICBT Y3JvbGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVz dCwgJmZpbGwpOwogfQogCiAKQEAgLTI4OCwxNCArNTY2LDEzIEBAIHN0YXRpYyB2b2lkCiB3MzJj b25faW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGgg KnN0YXJ0LAogCQkgICAgICByZWdpc3RlciBpbnQgbGVuKQogeworICAvKiBNb3ZlIGxlbiBjaGFy cyB0byB0aGUgcmlnaHQgZnJvbSBjdXJzb3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCiAg IHNjcm9sbF9saW5lIChmLCBsZW4sIFJJR0hUKTsKLQotICAvKiBNb3ZlIGxlbiBjaGFycyB0byB0 aGUgcmlnaHQgc3RhcnRpbmcgYXQgY3Vyc29yX2Nvb3JkcywgZmlsbCB3aXRoIGJsYW5rcyAqLwor ICAKICAgaWYgKHN0YXJ0KQogICAgIHsKLSAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hh cmFjdGVycyBvZiBzdGFydCwgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkCi0JIGJ5IHdyaXRlX2ds eXBocy4gICovCi0KKyAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hhcmFjdGVycyBvZiBz dGFydC4KKwkgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkIGJ5IHdyaXRlX2dseXBocy4gICovCiAg ICAgICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBzdGFydCwgbGVuKTsKICAgICB9CiAgIGVsc2UK QEAgLTMwNiw3ICs1ODMsNyBAQCB3MzJjb25faW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpm LCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0YXJ0LAogCiBzdGF0aWMgdm9pZAogdzMyY29uX3dy aXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmlu ZywKLSAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBsZW4pCisJCSAgICAgcmVnaXN0 ZXIgaW50IGxlbikKIHsKICAgRFdPUkQgcjsKICAgV09SRCBjaGFyX2F0dHI7CkBAIC0zNDIsNDMg KzYxOSw0NSBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVy IHN0cnVjdCBnbHlwaCAqc3RyaW5nLAogCiAgICAgICAvKiB3MzJjb25fY2xlYXJfZW5kX29mX2xp bmUgc2V0cyBmcmFtZSBvZiBnbHlwaHMgdG8gTlVMTC4gICovCiAgICAgICBzdHJ1Y3QgZnJhbWUg KmF0dHJfZnJhbWUgPSBmYWNlX2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFtZSA6IGY7Ci0gICAgICAv KiBUdXJuIGFwcGVhcmFuY2UgbW9kZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICovCi0g ICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1lLCBmYWNlX2lk KTsKIAogICAgICAgaWYgKG4gPT0gbGVuKQogCS8qIFRoaXMgaXMgdGhlIGxhc3QgcnVuLiAgKi8K IAljb2RpbmctPm1vZGUgfD0gQ09ESU5HX01PREVfTEFTVF9CTE9DSzsKKwogICAgICAgY29udmVy c2lvbl9idWZmZXIgPSAoTFBDU1RSKSBlbmNvZGVfdGVybWluYWxfY29kZSAoc3RyaW5nLCBuLCBj b2RpbmcpOwogICAgICAgaWYgKGNvZGluZy0+cHJvZHVjZWQgPiAwKQogCXsKLQkgIC8qIFNldCB0 aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghRmlsbENvbnNv bGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKLQkJCQkJICAgY29kaW5n LT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgJnIpKQorCSAgaWYgKHczMl91c2Vf dmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCiAJICAgIHsKLQkgICAgICBwcmludGYgKCJGYWls ZWQgd3JpdGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVsdVxuIiwKLQkJICAgICAgR2V0TGFzdEVy cm9yICgpKTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7CisJICAgICAgdHVybl9vbl9mYWNlIChm LCBmYWNlX2lkKTsKKwkgICAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25f YnVmZmVyLAorCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxMKTsKKwkgICAgICB0dXJu X29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgICAgICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5n LT5wcm9kdWNlZDsKIAkgICAgfQotCi0JICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCi0J ICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lv bl9idWZmZXIsCi0JCQkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAotCQkJ CQkgICAgJnIpKQorCSAgZWxzZQogCSAgICB7Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRp bmcgY29uc29sZSBjaGFyYWN0ZXJzOiAlbHVcbiIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7 Ci0JICAgICAgZmZsdXNoIChzdGRvdXQpOwotCSAgICB9CisJICAgICAgLyogVHVybiBhcHBlYXJh bmNlIG1vZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLworCSAgICAgIGNoYXJfYXR0 ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOworCSAgICAgIC8q IFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBGaWxs Q29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAorCQkJCQkgIGNv ZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCisJCQkJCSAgJnIpOworCSAgICAgIC8qIFdy aXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0 ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCQkgICBjb2RpbmctPnByb2R1 Y2VkLCBjdXJzb3JfY29vcmRzLAorCQkJCQkgICAmcik7CiAKLQkgIGN1cnNvcl9jb29yZHMuWCAr PSBjb2RpbmctPnByb2R1Y2VkOwotCSAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29v cmRzLlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgICAgY3Vyc29yX2Nvb3Jkcy5YICs9IGNvZGlu Zy0+cHJvZHVjZWQ7CisJICAgICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRz LlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgIH0KIAl9CiAgICAgICBsZW4gLT0gbjsKICAgICAg IHN0cmluZyArPSBuOwogICAgIH0KIH0KIAorCiAvKiBVc2VkIGZvciBtb3VzZSBoaWdobGlnaHQu ICAqLwogc3RhdGljIHZvaWQKIHczMmNvbl93cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3Qg ZnJhbWUgKmYsIHJlZ2lzdGVyIGludCB4LCByZWdpc3RlciBpbnQgeSwKQEAgLTM4Nyw2ICs2NjYs NyBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdp c3RlciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiB7CiAgIExQQ1NUUiBjb252ZXJzaW9uX2J1ZmZl cjsKICAgc3RydWN0IGNvZGluZ19zeXN0ZW0gKmNvZGluZzsKKyAgRFdPUkQgZmlsbGVkLCB3cml0 dGVuOwogCiAgIGlmIChsZW4gPD0gMCkKICAgICByZXR1cm47CkBAIC0zOTksMjkgKzY3OSwzOCBA QCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3Rl ciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiAgIC8qIFdlIGFyZSBnb2luZyB0byB3cml0ZSB0aGUg ZW50aXJlIGJsb2NrIG9mIGdseXBocyBpbiBvbmUgZ28sIGFzCiAgICAgIHRoZXkgYWxsIGhhdmUg dGhlIHNhbWUgZmFjZS4gIFNvIHRoaXMgX2lzXyB0aGUgbGFzdCBibG9jay4gICovCiAgIGNvZGlu Zy0+bW9kZSB8PSBDT0RJTkdfTU9ERV9MQVNUX0JMT0NLOwotCiAgIGNvbnZlcnNpb25fYnVmZmVy ID0gKExQQ1NUUikgZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbGVuLCBjb2RpbmcpOwog ICBpZiAoY29kaW5nLT5wcm9kdWNlZCA+IDApCiAgICAgewotICAgICAgRFdPUkQgZmlsbGVkLCB3 cml0dGVuOwotICAgICAgLyogQ29tcHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVz cG9uZGluZyB0byB0aGUgZmFjZS4gICovCi0gICAgICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFj ZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKICAgICAgIENPT1JEIHN0YXJ0X2Nvb3JkczsKLQog ICAgICAgc3RhcnRfY29vcmRzLlggPSB4OwogICAgICAgc3RhcnRfY29vcmRzLlkgPSB5OwotICAg ICAgLyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwotICAgICAg aWYgKCFGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAot CQkJCSAgICAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFydF9jb29yZHMsCi0JCQkJICAgICAgICZm aWxsZWQpKQotCURlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRlczog JWRcbiIsIEdldExhc3RFcnJvciAoKSkpOworCisgICAgICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rl cm1pbmFsX3NlcXVlbmNlcykKKwl7CisJICBpbnQgcHJldl9jdXJzb3JfaGlkZGVuID0gY3VycmVu dF90dHktPmN1cnNvcl9oaWRkZW47CisJICB3MzJjb25faGlkZV9jdXJzb3IgKCk7CisJICB3MzJj b25fc2F2ZV9jdXJzb3IgKCk7CisJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIHksIHgpOworCSAg dHVybl9vbl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwg Y29udmVyc2lvbl9idWZmZXIsCisJCQljb2RpbmctPnByb2R1Y2VkLCAmd3JpdHRlbiwgTlVMTCk7 CisJICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIHczMmNvbl9yZXN0b3JlX2N1cnNv ciAoKTsKKwkgIGlmICghcHJldl9jdXJzb3JfaGlkZGVuKSB3MzJjb25fc2hvd19jdXJzb3IgKCk7 CisJfQogICAgICAgZWxzZQogCXsKKwkgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBhdHRyaWJ1 dGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICovCisJICBEV09SRCBjaGFyX2F0dHIgPSB3 MzJfZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKKworCSAgLyogU2V0IHRoZSBhdHRyaWJ1 dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1 dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkgICAgICBjb2RpbmctPnByb2R1Y2VkLCBz dGFydF9jb29yZHMsCisJCQkJICAgICAgJmZpbGxlZCk7CiAJICAvKiBXcml0ZSB0aGUgY2hhcmFj dGVycy4gICovCi0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVl biwgY29udmVyc2lvbl9idWZmZXIsCi0JCQkJCSAgICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndy aXR0ZW4pKQotCSAgICBEZWJQcmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3Rl cnM6ICVkXG4iLAotCQkgICAgICAgR2V0TGFzdEVycm9yICgpKSk7CisJICBXcml0ZUNvbnNvbGVP dXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCSAgICAg ICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0ZW4pOwogCX0KICAgICB9CiB9CkBAIC00NTIs OSArNzQxLDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3RydWN0IHdpbmRvdyAq dywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKICAgcm9vdF94eSAoZiwgZnJhbWVfZW5k X3gsIGZyYW1lX3ksICZyb290X2VuZF94LCAmcm9vdF95KTsKICAgc3RydWN0IGdseXBoX3JvdyAq cm9vdF9yb3cgPSBNQVRSSVhfUk9XIChyb290LT5jdXJyZW50X21hdHJpeCwgcm9vdF95KTsKIAot ICAvKiBSZW1lbWJlciBjdXJyZW50IGN1cnNvciBjb29yZGluYXRlcyBzbyB0aGF0IHdlIGNhbiBy ZXN0b3JlCi0gICAgIHRoZW0gYXQgdGhlIGVuZC4gICovCi0gIENPT1JEIHNhdmVfY29vcmRzID0g Y3Vyc29yX2Nvb3JkczsKKyAgdzMyY29uX3NhdmVfY3Vyc29yKCk7CiAKICAgLyogSWYgdGhlIHJv b3QgZnJhbWUgZGlzcGxheXMgY2hpbGQgZnJhbWVzLCB3ZSBjYW5ub3QgbmFpdmVseQogICAgICB3 cml0ZSB0byB0aGUgdGVybWluYWwgd2hhdCB0aGUgd2luZG93IHRoaW5rcyBzaG91bGQgYmUgZHJh d24uCkBAIC01MDcsOSArNzk0LDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3Ry dWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKIAkgICAgfQogCX0K ICAgICB9Ci0KLSAgLyogUmVzdG9yZSBjdXJzb3Igd2hlcmUgaXQgd2FzIGJlZm9yZS4gICovCi0g IHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgc2F2ZV9jb29yZHMuWSwgc2F2ZV9jb29yZHMuWCk7Cisg IHczMmNvbl9yZXN0b3JlX2N1cnNvcigpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTIxLDcgKzgw Niw5IEBAIHczMmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogCiAg IHNjcm9sbF9saW5lIChmLCBuLCBMRUZUKTsKIH0KLQorLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAg ICAgICAgICAgICAgICAgICAgU2V0IHVwIC8gVGVhciBkb3duCisqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAog c3RhdGljIHZvaWQKIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFs ICp0KQpAQCAtNTU5LDkgKzg0NiwxMSBAQCB3MzJjb25fc2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1 Y3QgdGVybWluYWwgKnQpCiB7CiAgIENPTlNPTEVfQ1VSU09SX0lORk8gY2NpOwogCisgIHVzaW5n X3N5c3RlbV9jYXJldCA9IHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQ7CisKICAgLyogbWFr ZSBjdXJzb3IgYmlnIGFuZCB2aXNpYmxlICgxMDAgb24gV2luZG93cyA5NSBtYWtlcyBpdCBkaXNh cHBlYXIpICAqLwogICBjY2kuZHdTaXplID0gOTk7Ci0gIGNjaS5iVmlzaWJsZSA9IFRSVUU7Cisg IGNjaS5iVmlzaWJsZSA9IHVzaW5nX3N5c3RlbV9jYXJldCA/IFRSVUUgOiBGQUxTRTsKICAgKHZv aWQpIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY2NpKTsKIAogICBTZXRDb25z b2xlQWN0aXZlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuKTsKQEAgLTU2OSwzMCArODU4LDcwIEBA IHczMmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKICAgLyogSWYg UXVpY2sgRWRpdCBpcyBlbmFibGVkIGZvciB0aGUgY29uc29sZSwgaXQgd2lsbCBnZXQgaW4gdGhl IHdheQogICAgICBvZiByZWNlaXZpbmcgbW91c2UgZXZlbnRzLCBzbyB3ZSBkaXNhYmxlIGl0LiAg QnV0IGxlYXZlIHRoZQogICAgICBJbnNlcnQgTW9kZSBhcyBpdCB3YXMgc2V0IGJ5IHRoZSB1c2Vy LiAgKi8KLSAgRFdPUkQgbmV3X2NvbnNvbGVfbW9kZQorICBEV09SRCBpbl9tb2RlCiAgICAgPSBF TkFCTEVfTU9VU0VfSU5QVVQgfCBFTkFCTEVfV0lORE9XX0lOUFVUIHwgRU5BQkxFX0VYVEVOREVE X0ZMQUdTOwogICBpZiAoKHByZXZfY29uc29sZV9tb2RlICYgRU5BQkxFX0lOU0VSVF9NT0RFKSAh PSAwKQotICAgIG5ld19jb25zb2xlX21vZGUgfD0gRU5BQkxFX0lOU0VSVF9NT0RFOwotICBTZXRD b25zb2xlTW9kZSAoa2V5Ym9hcmRfaGFuZGxlLCBuZXdfY29uc29sZV9tb2RlKTsKKyAgICBpbl9t b2RlIHw9IEVOQUJMRV9JTlNFUlRfTU9ERTsKKyAgU2V0Q29uc29sZU1vZGUgKGtleWJvYXJkX2hh bmRsZSwgaW5fbW9kZSk7CiAKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2RlOiBpbnRlcnJ1cHRf aW5wdXQgb2ZmLCBubyBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0IGNoYXJhY3RlciBp bnB1dCwgc3RhbmRhcmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9tb2RlIChRbmlsLCBR bmlsLCBtYWtlX2ZpeG51bSAoMiksIFFuaWwpOworCisgIERXT1JEIG91dF9tb2RlOworICBHZXRD b25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgJm91dF9tb2RlKTsKKyAgb3V0X21vZGUgfD0gRU5BQkxF X1BST0NFU1NFRF9PVVRQVVQ7CisgIG91dF9tb2RlIHw9IEVOQUJMRV9WSVJUVUFMX1RFUk1JTkFM X1BST0NFU1NJTkc7CisgIG91dF9tb2RlIHw9IERJU0FCTEVfTkVXTElORV9BVVRPX1JFVFVSTjsK KyAgdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcyA9IFNldENvbnNvbGVNb2RlIChj dXJfc2NyZWVuLCBvdXRfbW9kZSk7CisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2Vx dWVuY2VzKQorICAgIHsKKyAgICAgIGludCBjdXJzb3Jfb2ZmX3AgPSBYV0lORE9XIChzZWxlY3Rl ZF93aW5kb3cpLT5jdXJzb3Jfb2ZmX3A7CisgICAgICB0LT5kaXNwbGF5X2luZm8udHR5LT5jdXJz b3JfaGlkZGVuID0gY3Vyc29yX29mZl9wOworICAgIH0KIH0KIAogLyogaG1tbS4uLiBwZXJoYXBz IHRoZXNlIGxldCB1cyBicmFja2V0IHNjcmVlbiBjaGFuZ2VzIHNvIHRoYXQgd2UgY2FuIGZsdXNo CiAgICBjbHVtcHMgcmF0aGVyIHRoYW4gb25lLWNoYXJhY3Rlci1hdC1hLXRpbWUuLi4KIAotICAg d2UnbGwgc3RhcnQgd2l0aCBub3QgbW92aW5nIHRoZSBjdXJzb3Igd2hpbGUgYW4gdXBkYXRlIGlz IGluIHByb2dyZXNzLiAgKi8KKyAgIHdlJ2xsIHN0YXJ0IHdpdGggbm90IG1vdmluZyB0aGUgY3Vy c29yIHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4KKworICAgLi4uIGMuIDIwMjUsIFZU IHNlcXVlbmNlcyBjYW4gb25seSBiZSB3cml0dGVuIHdpdGggV3JpdGVDb25zb2xlLAorICAgcHJp bnRmLCBldGMuLCB3aGljaCBhZHZhbmNlIHRoZSBjdXJzb3IuCisqLwogc3RhdGljIHZvaWQKIHcz MmNvbl91cGRhdGVfYmVnaW4gKHN0cnVjdCBmcmFtZSAqIGYpCiB7CisgIGN1cnJlbnRfdHR5ID0g RlJBTUVfVFRZIChmKTsKKworICBpZiAoIXczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5j ZXMKKyAgICAgICYmIGN1cnJlbnRfdHR5LT5UTl9tYXhfY29sb3JzID4gMTYpCisgICAgeworICAg ICAgdHR5X3NldHVwX2NvbG9ycyAoY3VycmVudF90dHksIDE2KTsKKyAgICAgIHNhZmVfY2FsbG4g KFF3MzJjb25fc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworICAgIH0KKworICBpZiAodXNp bmdfc3lzdGVtX2NhcmV0ICE9IHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQpCisgICAgewor ICAgICAgaWYgKHVzaW5nX3N5c3RlbV9jYXJldCkgdzMyY29uX2hpZGVfY3Vyc29yICgpOworCisg ICAgICB1c2luZ19zeXN0ZW1fY2FyZXQgPSB3MzJfdXNlX3Zpc2libGVfc3lzdGVtX2NhcmV0Owor CisgICAgICBpZiAodXNpbmdfc3lzdGVtX2NhcmV0KSAvKiBuZWVkIHRvIHN5bmMgKi8KKwl7CisJ ICBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9ICFjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRl bjsKKwkgIGlmIChjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbikKKwkgICAgdzMyY29uX3Nob3df Y3Vyc29yICgpOworCSAgZWxzZQorCSAgICB3MzJjb25faGlkZV9jdXJzb3IgKCk7CisJfQorICAg IH0KIH0KIAogc3RhdGljIHZvaWQKIHczMmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKiBm KQogewotICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24gKGN1cl9zY3JlZW4sIGN1cnNvcl9jb29y ZHMpOworICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGN1cnNvcl9jb29yZHMuWSwgY3Vyc29yX2Nv b3Jkcy5YKTsKICAgaWYgKCFYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpLT5jdXJzb3Jfb2ZmX3AK ICAgICAgICYmIGN1cnNvcl9jb29yZHMuWCA8IEZSQU1FX0NPTFMgKGYpKQogICAgIHczMmNvbl9z aG93X2N1cnNvciAoKTsKQEAgLTYyNCw4ICs5NTMsNiBAQCBzeXNfdGdldHN0ciAoY2hhciAqY2Fw LCBjaGFyICoqYXJlYSkKIAkJCXN0dWJzIGZyb20gY20uYwogICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1l eHRlcm4gc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Owotc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5ID0gTlVMTDsKIGV4dGVybiBpbnQgY29zdDsKIGludCBj b3N0ID0gMDsKIApAQCAtNjkzLDcgKzEwMjAsNiBAQCBjdXJzb3JZIChzdHJ1Y3QgdHR5X2Rpc3Bs YXlfaW5mbyAqdHR5KQogCQkJCUZhY2VzCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQogLyogVHVybiBh cHBlYXJhbmNlcyBvZiBmYWNlIEZBQ0VfSUQgb24gdHR5IGZyYW1lIEYgb24uICAqLwogCiBzdGF0 aWMgV09SRApAQCAtNzI5LDYgKzEwNTUsMTAwIEBAIHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVj dCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCiAgIHJldHVybiBjaGFyX2F0dHI7CiB9CiAKK3N0YXRp YyB2b2lkCit0dXJuX29uX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCit7Cisg IHN0cnVjdCBmYWNlICpmYWNlID0gRkFDRV9GUk9NX0lEIChmLCBmYWNlX2lkKTsKKyAgc3RydWN0 IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1FX1RUWSAoZik7CisgIHVuc2lnbmVkIGxvbmcg ZmcgPSBmYWNlLT5mb3JlZ3JvdW5kOworICB1bnNpZ25lZCBsb25nIGJnID0gZmFjZS0+YmFja2dy b3VuZDsKKworICAvKiBpZiBlaXRoZXIgb3V0IG9mIHJhbmdlLCBzZXQgYm90aCB0byB2YWx1ZXMg cmV0cmlldmVkIGZyb20gdGVybWluYWwgKi8KKyAgaWYgKERFRkFVTFRQIChmZykpIGZnID0gZmdf bm9ybWFsOworICBpZiAoREVGQVVMVFAgKGJnKSkgYmcgPSBiZ19ub3JtYWw7CisKKyAgLyogY29u c3RydWN0IGNvbWJpbmVkIFZUIHNlcXVlbmNlIGZvciBmYWNlIGF0dHJpYnV0ZXMgKi8KKyAgRFdP UkQgbiA9IDA7CisgIHNpemVfdCBzeiA9IFNFUU1BWDsKKyAgY2hhciBzZXFbc3pdOworICBzei0t OworCisgIGlmIChmYWNlLT50dHlfYm9sZF9wKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwg dHR5LT5UU19lbnRlcl9ib2xkX21vZGUsIE5VTEwpOworICBpZiAoZmFjZS0+dHR5X2l0YWxpY19w KQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9pdGFsaWNfbW9kZSwg TlVMTCk7CisgIGlmIChmYWNlLT50dHlfc3RyaWtlX3Rocm91Z2hfcCkKKyAgICBTU1BSSU5URiAo c2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfc3RyaWtlX3Rocm91Z2hfbW9kZSwgTlVMTCk7Cisg IGlmIChmYWNlLT51bmRlcmxpbmUgIT0gMCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0 eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUsIE5VTEwpOworICAvKiBOb3RlOiB0aGUgdmFsdWVz IG9mIGZnIGFuZCBiZyBhcmUgYWxyZWFkeSBzd2FwcGVkIHdoZW4gZmcgYW5kIGJnIGFyZQorICAg ICBzZXQgYW5kIGZhY2UtPnR0eV9yZXZlcnNlX3AuIEFkZGluZyB0aGUgdGVybWluYWwgc2VxdWVu Y2UgY29udGFpbmVkCisgICAgIGluIHR0eS0+VFNfZW50ZXJfcmV2ZXJzZV9tb2RlIHN3YXBzIHRo ZW0gYmFjaywgd2hpY2ggaXMgbm8gZ29vZC4gKi8KKworICBjb25zdCBjaGFyICpzZXRfZmcgPSB0 dHktPlRTX3NldF9mb3JlZ3JvdW5kOworICBjb25zdCBjaGFyICpzZXRfYmcgPSB0dHktPlRTX3Nl dF9iYWNrZ3JvdW5kOworICBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09IDggIHx8CisgICAgICB0 dHktPlROX21heF9jb2xvcnMgPT0gMTYgfHwKKyAgICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAy NTYpCisgICAgeworICAgICAgLyogaW5kaWNlcyBpbnRvIE1pY3Jvc29mdC1kZWZpbmVkIGNvbG9y cyAoc2VlIGxpbmsgYXQgdG9wKSAqLworICAgICAgdW5zaWduZWQgbG9uZyBmZ2kgPSAwLCBiZ2kg PSAwOworCisgICAgICBmZ2kgPSAoZmcgPj0gMCAgJiYgZmcgPCA4KSAgID8gZmcgKyAzMAorCTog ICAoZmcgPj0gOCAgJiYgZmcgPCAxNikgID8gZmcgLSA4ICsgOTAKKwk6ICAgKGZnID49IDE2ICYm IGZnIDwgMjU2KSA/IGZnCisJOiAwOworICAgICAgaWYgKGZnaSkKKwlTU1BSSU5URiAoc2VxLCAm biwgc3osIHNldF9mZywgZmdpKTsKKworICAgICAgYmdpID0gKGJnID49IDAgICYmIGJnIDwgOCkg ICA/IGJnICsgNDAKKwk6ICAgKGJnID49IDggICYmIGJnIDwgMTYpICA/IGJnIC0gOCArIDEwMAor CTogICAoYmcgPj0gMTYgJiYgYmcgPCAyNTYpID8gYmcKKwk6IDA7CisgICAgICBpZiAoYmdpKQor CVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCBiZ2kpOworICAgIH0KKyAgZWxzZSBpZiAo dHR5LT5UTl9tYXhfY29sb3JzID09IDE2Nzc3MjE2KQorICAgIHsKKyAgICAgIC8qIG5lZWQgdG8g Y29udmVydCBkZWZhdWx0ZWQgdmFsdWVzIHRvIHBpeGVsIGluZGljZXMgKi8KKyAgICAgIGlmIChm ZyA9PSBmZ19ub3JtYWwpIGZnID0gZ2V0X3BpeGVsKGZnKTsKKyAgICAgIGlmIChiZyA9PSBiZ19u b3JtYWwpIGJnID0gZ2V0X3BpeGVsKGJnKTsKKworICAgICAgLyogZmcgYW5kIGJnIGFyZSBwaXhl bCB2YWx1ZXMgLSBkZWNvbXBvc2UgdG8gcmdiIHRyaXBsZXMgKi8KKyAgICAgIHVuc2lnbmVkIGxv bmcgcmYgPSBmZy82NTUzNiwgZ2YgPSAoZmcvMjU2KSYyNTUsIGJmID0gZmcmMjU1OworICAgICAg dW5zaWduZWQgbG9uZyByYiA9IGJnLzY1NTM2LCBnYiA9IChiZy8yNTYpJjI1NSwgYmIgPSBiZyYy NTU7CisgICAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9mZywgcmYsIGdmLCBiZik7Cisg ICAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9iZywgcmIsIGdiLCBiYik7CisgICAgfQor ICB3MzJjb25fd3JpdGVfdnRfc2VxIChzZXEpOworfQorCitzdGF0aWMgdm9pZAordHVybl9vZmZf ZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IHR0eV9kaXNw bGF5X2luZm8gKnR0eSA9IEZSQU1FX1RUWSAoZik7CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHR0 eS0+VFNfZXhpdF9hdHRyaWJ1dGVfbW9kZSk7Cit9CisKKy8qIHJldHVybnMgdGhlIHBpeGVsIHZh bHVlIGZvciB0aGUgZ2l2ZW4gaW5kZXggaW50byBWVCBiYXNlIGNvbG9yIG1hcCAqLworc3RhdGlj IHVuc2lnbmVkIGxvbmcgcGl4ZWxfY2FjaGVbMTZdOworc3RhdGljIHVuc2lnbmVkIGxvbmcKK2dl dF9waXhlbCAodW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKyAgdW5zaWduZWQgaW50IGkgPSAodW5z aWduZWQgaW50KSBpbmRleDsKKyAgaWYgKGkgPiAxNSkgcmV0dXJuIDA7CisgIGlmIChpID09IDAg fHwgcGl4ZWxfY2FjaGVbaV0gPiAwKQorICAgIHJldHVybiBwaXhlbF9jYWNoZVtpXTsKKworICBM aXNwX09iamVjdCBwaXggPSBzYWZlX2NhbGxuIChRdzMyY29uX2dldF9waXhlbCwgbWFrZV91Zml4 bnVtIChpKSk7CisgIHBpeGVsX2NhY2hlW2ldID0gKHVuc2lnbmVkIGxvbmcpIFhVRklYTlVNIChw aXgpOworICByZXR1cm4gcGl4ZWxfY2FjaGVbaV07Cit9CisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXphdGlvbgorKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKIC8qIFRoZSBJTUUgd2luZG93IGlzIG5lZWRlZCB0byByZWNlaXZlIHRoZSBzZXNzaW9uIG5v dGlmaWNhdGlvbnMKICAgIHJlcXVpcmVkIHRvIHJlc2V0IHRoZSBsb3cgbGV2ZWwga2V5Ym9hcmQg aG9vayBzdGF0ZS4gICovCiAKQEAgLTgzNCw3ICsxMjU0LDcgQEAgaW5pdGlhbGl6ZV93MzJfZGlz cGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIAlH ZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyAoY3VyX3NjcmVlbiwgJmluZm8pOwogCiAJLyogU2hy aW5rIHRoZSB3aW5kb3cgZmlyc3QsIHNvIHRoZSBidWZmZXIgZGltZW5zaW9ucyBjYW4gYmUKLSAg ICAgICAgICAgcmVkdWNlZCBpZiBuZWNlc3NhcnkuICAqLworCSAgIHJlZHVjZWQgaWYgbmVjZXNz YXJ5LiAgKi8KIAluZXdfd2luX2RpbXMuVG9wID0gMDsKIAluZXdfd2luX2RpbXMuTGVmdCA9IDA7 CiAJbmV3X3dpbl9kaW1zLkJvdHRvbSA9IG1pbiAobmV3X3NpemUuWSwgaW5mby5kd1NpemUuWSkg LSAxOwpAQCAtODQ5LDYgKzEyNjksNyBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3Qg dGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQogCW5ld193aW5fZGltcy5C b3R0b20gPSBuZXdfc2l6ZS5ZIC0gMTsKIAluZXdfd2luX2RpbXMuUmlnaHQgPSBuZXdfc2l6ZS5Y IC0gMTsKIAlTZXRDb25zb2xlV2luZG93SW5mbyAoY3VyX3NjcmVlbiwgVFJVRSwgJm5ld193aW5f ZGltcyk7CisKICAgICAgIH0KICAgfQogCkBAIC04NjEsNiArMTI4Miw4IEBAIGluaXRpYWxpemVf dzMyX2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWln aHQpCiAgICAgfQogCiAgIGNoYXJfYXR0cl9ub3JtYWwgPSBpbmZvLndBdHRyaWJ1dGVzOworICBm Z19ub3JtYWwgPSBjaGFyX2F0dHJfbm9ybWFsICYgMHgwMDBmOworICBiZ19ub3JtYWwgPSAoY2hh cl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4MDAwZjsKIAogICAvKiBEZXRlcm1pbmUgaWYgdGhlIGlu Zm8gcmV0dXJuZWQgYnkgR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8KICAgICAgaXMgcmVhbGlz dGljLiAgT2xkIE1TIFRlbG5ldCBzZXJ2ZXJzIHVzZWQgdG8gb25seSBmaWxsIG91dApAQCAtOTE3 LDEzICsxMzQwLDIxIEBAIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAq dGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCiB9CiAKIAorLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzcCBJbnRlcmZhY2UKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisvKiBUT0RPIC0gbWlncmF0ZSB0byBWVCBzZXF1ZW5jZXMgKDI1NiBhbmQgMjRiaXQgY29s b3IpICovCiBERUZVTiAoInNldC1zY3JlZW4tY29sb3IiLCBGc2V0X3NjcmVlbl9jb2xvciwgU3Nl dF9zY3JlZW5fY29sb3IsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQgc2NyZWVuIGZvcmVn cm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzLgogCiBBcmd1bWVudHMgc2hvdWxkIGJlIGluZGlj ZXMgYmV0d2VlbiAwIGFuZCAxNSwgc2VlIHczMmNvbnNvbGUuZWwuICAqLykKICAgKExpc3BfT2Jq ZWN0IGZvcmVncm91bmQsIExpc3BfT2JqZWN0IGJhY2tncm91bmQpCiB7Ci0gIGNoYXJfYXR0cl9u b3JtYWwgPSBYRklYTkFUIChmb3JlZ3JvdW5kKSArIChYRklYTkFUIChiYWNrZ3JvdW5kKSA8PCA0 KTsKKworICBmZ19ub3JtYWwgPSBYRklYTkFUIChmb3JlZ3JvdW5kKTsKKyAgYmdfbm9ybWFsID0g WEZJWE5BVCAoYmFja2dyb3VuZCk7CisgIGNoYXJfYXR0cl9ub3JtYWwgPSBmZ19ub3JtYWwgKyAo Ymdfbm9ybWFsIDw8IDQpOwogCiAgIEZyZWNlbnRlciAoUW5pbCwgUXQpOwogICByZXR1cm4gUXQ7 CkBAIC05MzcsOCArMTM2OCw4IEBAIFNlZSB3MzJjb25zb2xlLmVsIGFuZCBgdHR5LWRlZmluZWQt Y29sb3ItYWxpc3QnIGZvciBtYXBwaW5nIG9mIGluZGljZXMKIHRvIGNvbG9ycy4gICovKQogICAo dm9pZCkKIHsKLSAgcmV0dXJuIEZjb25zIChtYWtlX2ZpeG51bSAoY2hhcl9hdHRyX25vcm1hbCAm IDB4MDAwZiksCi0JCUZjb25zIChtYWtlX2ZpeG51bSAoKGNoYXJfYXR0cl9ub3JtYWwgPj4gNCkg JiAweDAwMGYpLCBRbmlsKSk7CisgIHJldHVybiBGY29ucyAobWFrZV9maXhudW0gKGZnX25vcm1h bCksCisJCUZjb25zIChtYWtlX2ZpeG51bSAoYmdfbm9ybWFsKSwgUW5pbCkpOwogfQogCiBERUZV TiAoInNldC1jdXJzb3Itc2l6ZSIsIEZzZXRfY3Vyc29yX3NpemUsIFNzZXRfY3Vyc29yX3NpemUs IDEsIDEsIDAsCkBAIC05NTcsMTUgKzEzODgsMzQgQEAgdm9pZAogc3ltc19vZl9udHRlcm0gKHZv aWQpCiB7CiAgIERFRlZBUl9CT09MICgidzMyLXVzZS1mdWxsLXNjcmVlbi1idWZmZXIiLAotICAg ICAgICAgICAgICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIsCi0JICAgICAgIGRvYzogLyog Tm9uLW5pbCBtZWFucyBtYWtlIHRlcm1pbmFsIGZyYW1lcyB1c2UgdGhlIGZ1bGwgc2NyZWVuIGJ1 ZmZlciBkaW1lbnNpb25zLgorCQl3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciwKKwkJZG9jOiAv KiBOb24tbmlsIG1lYW5zIG1ha2UgdGVybWluYWwgZnJhbWVzIHVzZSB0aGUgZnVsbCBzY3JlZW4g YnVmZmVyIGRpbWVuc2lvbnMuCiBUaGlzIGlzIGRlc2lyYWJsZSB3aGVuIHJ1bm5pbmcgRW1hY3Mg b3ZlciB0ZWxuZXQuCiBBIHZhbHVlIG9mIG5pbCBtZWFucyB1c2UgdGhlIGN1cnJlbnQgY29uc29s ZSB3aW5kb3cgZGltZW5zaW9uczsgdGhpcwogbWF5IGJlIHByZWZlcmFibGUgd2hlbiB3b3JraW5n IGRpcmVjdGx5IGF0IHRoZSBjb25zb2xlIHdpdGggYSBsYXJnZQogc2Nyb2xsLWJhY2sgYnVmZmVy LiAgKi8pOwogICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciA9IDA7CiAKKyAgREVGVkFSX0JP T0wgKCJ3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzIiwKKwkJdzMyX3VzZV92aXJ0 dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcywKKwkJZG9jOiAvKiBJZiBub24tbmlsIHczMiBjb25zb2xl IHVzZXMgdGVybWluYWwgc2VxdWVuY2VzIGZvciBzb21lIG91dHB1dCBwcm9jZXNzaW5nLgorVGhp cyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVz IG9mIHRoZSB0ZXJtaW5hbC4KK0l0IGRldGVybWluZXMgdGhlIG51bWJlciBhbmQgaW5kaWNlcyBv ZiBjb2xvcnMgdXNlZCBmb3IgZmFjZXMgaW4gdGhlIHRlcm1pbmFsLgorSWYgdGhlIHRlcm1pbmFs IGNhbm5vdCBoYW5kbGUgVlQgc2VxdWVuY2VzLCB0aGUgdXBkYXRlIGhvb2sgdHJpZ2dlcnMgcmVj b21wdXRhdGlvbiBvZiBmYWNlcy4KK1NlZSBgdzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZh Y2VzJywgd2hpY2ggc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBzZXR0aW5nIHRoaXMgdmFyaWFibGUg CittYW51YWxseSBpbiBhIHJ1bm5pbmcgc2Vzc2lvbi4gKi8pOworICB3MzJfdXNlX3ZpcnR1YWxf dGVybWluYWxfc2VxdWVuY2VzID0gMDsKKworICBERUZTWU0gKFF3MzJjb25fc2V0X3VwX2luaXRp YWxfZnJhbWVfZmFjZXMsCisJICAidzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzIik7 CisKKyAgREVGU1lNIChRdzMyY29uX2dldF9waXhlbCwKKwkgICJ3MzJjb24tZ2V0LXBpeGVsIik7 CisKKyAgREVGU1lNIChRaXNlYXJjaCwgImlzZWFyY2giKTsgLyogVG8gbG9vayB1cCB0aGUgZmFj ZS4gKi8KKwogICBkZWZzdWJyICgmU3NldF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU2dl dF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU3NldF9jdXJzb3Jfc2l6ZSk7CisKIH0KZGlm ZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggODk1NjFkNzUwYjYuLmQz MDQwZWE2MjliIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAt MTcyMzksOCArMTcyMzksNyBAQCByZWRpc3BsYXlfaW50ZXJuYWwgKHZvaWQpCiAJICAgICBhcmVh LCBkaXNwbGF5aW5nIGEgZGlmZmVyZW50IGZyYW1lIG1lYW5zIHJlZGlzcGxheSB0aGUKIAkgICAg IHdob2xlIHRoaW5nLiAgKi8KIAkgIFNFVF9GUkFNRV9HQVJCQUdFRCAoc2YpOwotI2lmICFkZWZp bmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAm JiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAkgIHNldF90dHlfY29sb3JfbW9kZSAoRlJBTUVfVFRZ IChzZiksIHNmKTsKICNlbmRpZgogCX0KLS0KMi40OS4wCgo= --b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI--
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 27 Aug 2025 12:11:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 27 08:11:34 2025 Received: from localhost ([127.0.0.1]:59833 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1urF02-0007Ee-Ga for submit <at> debbugs.gnu.org; Wed, 27 Aug 2025 08:11:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35696) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1urEzy-0007EL-T2 for 79298 <at> debbugs.gnu.org; Wed, 27 Aug 2025 08:11:31 -0400 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 1urEzr-0001vu-12; Wed, 27 Aug 2025 08:11:23 -0400 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=l7msnwYm0OT6J+IACtoDhRgmdq9pB7a089+noRGuJe4=; b=SwnXOIn2Lskq yjA35fwNBEjOk4TGsy3aT/KCDHq2+LAQ5DM04JauFuJqW4NA/nrGAPLJftXAFq5JR45ZMxWZS2A+M RE1y5AojFHYURUD2N2J5ns61gbBX8hvHoL3I2nfTfBxvFb3kUEQC7kOiqUZD6rG8C+kt+o6ntYtm+ D/QULklxRkflHF9loSAxmRxpuFutGaGGQxjO1uVIGUegJ9JdLj4x6BOKKeIwSCro095PiZvMEqynl Svre4l23vErxTHlits6+5ebqCTrxWnhhXhgzkOy6OLay0upIwJTrKvRb4j3TJAYJnJI4ZO/KfwTQE fBwuzCYnU1XxUqnQCXEUXQ==; Date: Wed, 27 Aug 2025 15:11:15 +0300 Message-Id: <86sehdt15o.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> (message from Ewan on Wed, 27 Aug 2025 04:29:00 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <865xed89uf.fsf@HIDDEN> <CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Wed, 27 Aug 2025 04:29:00 +0000 > From: Ewan <ewan@HIDDEN> > > On Tuesday, August 26th, 2025 at 4:03 AM, Eli Zaretskii <eliz@HIDDEN> wrote: > > > > > > Can you identify those formulas in the patch you submitted? > > > > > > In lisp/term/w32console.el, the definition and application of convert-to-16-bit > > > in the body of w32con-define-256-colors, and the overall of shape of the > > > w32con-define-N-colors functions. > > Note, those functions appear to be pulled, with minor changes, from xterm.el. > > > > In src/w32console.c, within turn_on_face, the conversions of fg and bg which > > > yield substituends in the calls to snprintf . > > > > > > Thanks. Is there some Microsoft documentation that describes how to > > convert fg and bg colors to virtual console escape sequences? If so, > > can you point to it? > > The conversion is derived from the table in this spec: > https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#text-formatting Thanks. I think with this information, and with the rewriting to make the code more concise (as we already discussed), the actual code taken from the other person is mall and/or trivial enough for us not to bother about the legal issues. > I can also include the link in the source code, but it may go dead some day. Please do include the link. We will update it as needed.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 27 Aug 2025 04:29:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Aug 27 00:29:28 2025 Received: from localhost ([127.0.0.1]:58255 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1ur7mp-0006R9-OM for submit <at> debbugs.gnu.org; Wed, 27 Aug 2025 00:29:28 -0400 Received: from mail-10626.protonmail.ch ([79.135.106.26]:24141) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1ur7mk-0006Qs-Dz for 79298 <at> debbugs.gnu.org; Wed, 27 Aug 2025 00:29:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756268954; x=1756528154; bh=blt0gSORNk4vevCQDXKWIOHeg56pfhojp1y7SsdM/8A=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=rxzYJ5jQkckVBEyZpcv6ZRr/9hSJMFrF36bBqY0p/liinaR3mwYAN1inOi8iAxDgq j9cTCgf66mGxMorXLMdEqHdKZNnVIC7+Tpm1eWhfWiQ+UjDb6lJFyOC3edq9iVdpsS 8yJLRarE8/K6EW8gI3e5E6kalW+LNVDn3JOPrRObH/Di7RObz6FwiSWMfZfax8Ro5h WRfZ7n/1johlPij03N7ilppAjcu0OVMOKtzb8mOEpJp/9+REBM70YA6Bl90MruYomf 5O3w2W2qYKkXmzaJ2ufKzN24H4X8Vbz0PEp4qb+o9/HzkajymN/ZK9J6pYU37XjxN8 w76okVc9Kvnmw== Date: Wed, 27 Aug 2025 04:29:00 +0000 To: Eli Zaretskii <eliz@HIDDEN>, "79298 <at> debbugs.gnu.org" <79298 <at> debbugs.gnu.org> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <t3vyURqzD210WcECdL060Ib51ua7xE48jS6cmNGy4KVL0gjZTvyIiutSentawWEwxBJ_MWnRb8jV81yx4GBoBGBsnJWApNHI4vrU1wNRlsQ=@etown.dev> In-Reply-To: <86plciuz02.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <865xed89uf.fsf@HIDDEN> <CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> <86plciuz02.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: c9c2aaaeb829f32dc0480c6959272078400df662 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: 79298 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 (-) On Tuesday, August 26th, 2025 at 4:03 AM, Eli Zaretskii <eliz@HIDDEN> wrot= e: > > > Date: Mon, 25 Aug 2025 20:23:52 +0000 > > > From: Ewan ewan@HIDDEN > > Cc: 79298 <at> debbugs.gnu.org > > > > > > The initial patch drew heavily (>15 lines) from this public fork of= emacs: > > > > https://github.com/tsuu32/emacs-w32con-vt > > > > > > > > The revised patch differs substantially, but I suspect it will keep= some > > > > small chunks of color-computing code, as the forumulas are what the= y are. > > > > > > Can you identify those formulas in the patch you submitted? > > > > In lisp/term/w32console.el, the definition and application of convert-t= o-16-bit > > in the body of w32con-define-256-colors, and the overall of shape of th= e > > w32con-define-N-colors functions. Note, those functions appear to be pulled, with minor changes, from xterm.e= l. > > In src/w32console.c, within turn_on_face, the conversions of fg and bg = which > > yield substituends in the calls to snprintf . > > > Thanks. Is there some Microsoft documentation that describes how to > convert fg and bg colors to virtual console escape sequences? If so, > can you point to it? The conversion is derived from the table in this spec: https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-= sequences#text-formatting I can also include the link in the source code, but it may go dead some day= .
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 26 Aug 2025 11:03:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Aug 26 07:03:23 2025 Received: from localhost ([127.0.0.1]:54443 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uqrSV-0006IF-B7 for submit <at> debbugs.gnu.org; Tue, 26 Aug 2025 07:03:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38878) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uqrSQ-0006Hx-H5 for 79298 <at> debbugs.gnu.org; Tue, 26 Aug 2025 07:03:19 -0400 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 1uqrSK-0003ko-7D; Tue, 26 Aug 2025 07:03:12 -0400 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=FLQ4Ytb4umEoQuQlBuIB0q+V+OArgcq4cAuD35g4b7o=; b=ieaVZXM9/OIN EpTJsrYTUwmgqM25ljUE60J5dWxzpGrNKOore+p2FIckDAiICiBcR4K7PqTDuH9LaN2kDmWkJopKd vVkwZpIqltwEVVjICKm+jsF/BJLlmdRQuAB8y3pdO4oYOid0ze4h7uPQg3hyXaNM4f8AmJEVqyvqp FgFEsdU5mwyb40s9/B2rwbr27z80UhlOWqe9bSdlGw5kkxM2zaN2mbxpiCqZFq09h/jafvqlQFs9p 2m7ZNXmCdl2ZGmJSAbBIwpKpeSEsj4g9t7cwIVEM49EZSDTconCeFpeOiV5KOi+jDyiyjwfnNAtbP A83rLgpP/YnHDsxXr6iHag==; Date: Tue, 26 Aug 2025 14:02:37 +0300 Message-Id: <86plciuz02.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> (message from Ewan on Mon, 25 Aug 2025 20:23:52 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <865xed89uf.fsf@HIDDEN> <CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Mon, 25 Aug 2025 20:23:52 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > > > The initial patch drew heavily (>15 lines) from this public fork of emacs: > > > https://github.com/tsuu32/emacs-w32con-vt > > > > > > The revised patch differs substantially, but I suspect it will keep some > > > small chunks of color-computing code, as the forumulas are what they are. > > > > > > Can you identify those formulas in the patch you submitted? > > In lisp/term/w32console.el, the definition and application of convert-to-16-bit > in the body of w32con-define-256-colors, and the overall of shape of the > w32con-define-N-colors functions. > > In src/w32console.c, within turn_on_face, the conversions of fg and bg which > yield substituends in the calls to snprintf . Thanks. Is there some Microsoft documentation that describes how to convert fg and bg colors to virtual console escape sequences? If so, can you point to it?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 20:24:11 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 25 16:24:11 2025 Received: from localhost ([127.0.0.1]:51453 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uqdjf-0002sx-Cj for submit <at> debbugs.gnu.org; Mon, 25 Aug 2025 16:24:11 -0400 Received: from mail-4323.protonmail.ch ([185.70.43.23]:42583) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uqdja-0002rv-AH for 79298 <at> debbugs.gnu.org; Mon, 25 Aug 2025 16:24:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756153439; x=1756412639; bh=IME4H8SxqQAv+XZtQaeJKpYNAEbfjokEpcfj8xZisG4=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=JoUonFQLsC+rZY3yYfgP4Ik2y0Fw/WCNRsjQXVf9Z5t9OmpCRN/RjgYZJ4xcoOm1r KZopRNgD5M3yNpLs8zv6/zPEUqeUwhPdhMQt/tQMeGCrPBhzdT5AeYtmc7FDHll1bx wxt8DZ604UCLklRre9f5GYwPNi7FavMFRGOMO/Ks39QXovrRG1oN5UCTaN7Qm+htGf XsbzeNzWPfFQT5HzSpbLP39hVjw0xLNrg83RoXwtJ5diRs4KyfjxnT5etplSr4z0Bm AcaJ0XQyRQ8kyLv5ChSCaaI46YStG1SiaYha0YIysB3anmzyu8iXBBwgj8cdMF17XL QM4F11Npf9fVg== Date: Mon, 25 Aug 2025 20:23:52 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <Aro_gTmfisG6a4IMdbg0N6aKVYdJ6OILBRpX-ONiIckvI2ENQHgTxX2GqRtXi9x1bdU0GC_kmY2MSDP80zIIPbm46ONHx23nZgW9EoQBuaI=@etown.dev> In-Reply-To: <86a53nwms8.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <865xed89uf.fsf@HIDDEN> <CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> <86a53nwms8.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: e5f9bdff1d4d3970a7e0746f0005b6739bc71bd5 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: 79298 Cc: 79298 <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 (-) > > The initial patch drew heavily (>15 lines) from this public fork of ema= cs: > > https://github.com/tsuu32/emacs-w32con-vt > >=20 > > The revised patch differs substantially, but I suspect it will keep som= e > > small chunks of color-computing code, as the forumulas are what they ar= e. >=20 >=20 > Can you identify those formulas in the patch you submitted? In lisp/term/w32console.el, the definition and application of convert-to-16= -bit=20 in the body of w32con-define-256-colors, and the overall of shape of the w32con-define-N-colors functions. In src/w32console.c, within turn_on_face, the conversions of fg and bg whic= h=20 yield substituends in the calls to snprintf .
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 13:31:37 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 25 09:31:37 2025 Received: from localhost ([127.0.0.1]:49140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uqXIO-0004R4-OK for submit <at> debbugs.gnu.org; Mon, 25 Aug 2025 09:31:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38194) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uqXII-0004Qg-7x for 79298 <at> debbugs.gnu.org; Mon, 25 Aug 2025 09:31:33 -0400 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 1uqXIC-0002jC-6O; Mon, 25 Aug 2025 09:31:24 -0400 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=MBpyaZrgJZceqXX0IbIcfZd5eHibzuvrHscct12wi9k=; b=OgxipGcGBQKA VRKJnt+wlJYbEJNfn6cSvNvwR6QehlDvPD6Q5C6TGdAZshkU8QA+NdmeUAwosDd+AE0O0kpDwR8Ne twcLfcZSYxKe5aGIyXS6YQpkP0rT1SbYyi6w7r7PyqPVyVVjGYgH+OHiNH5Gt4pGEXgVH5oe/q0h9 bHUlEqrtSzreoOvsPXoyU6sXBregvVLYKJ9sZdkY7YQeMH6V0lC0tP7yzDl38qD85O2rfDztxMMCX Bg95AZqh8OLldBicge8M6tYtDSOCapQ3McMPITbUTgHUA/GTTlagTxhnb2M2WdOLkutxnp3zPpzCj n5W3qnryPbSXZBcVQPlr7w==; Date: Mon, 25 Aug 2025 16:31:19 +0300 Message-Id: <86a53nwms8.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Ewan <ewan@HIDDEN> In-Reply-To: <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> (message from Ewan on Mon, 25 Aug 2025 12:06:22 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <865xed89uf.fsf@HIDDEN> <CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: Mon, 25 Aug 2025 12:06:22 +0000 > From: Ewan <ewan@HIDDEN> > Cc: 79298 <at> debbugs.gnu.org > > > Hmm... the fact that some of the code is "inherited from someone else" > > worries me. If the code you took from someone else's work is > > substantial (more than, say, 15 lines), we will need that other person > > to assign the copyright to the FSF, in addition to your assignment. > > Can you tell who is that other person and how much of the code he/she > > wrote? > > The initial patch drew heavily (>15 lines) from this public fork of emacs: > https://github.com/tsuu32/emacs-w32con-vt > > >From breadcrumbs in the working tree and other GNU mailing list discussions, > I gather the owner of that repo has this address: tsuucat <at> icloud.com, > and has contributed patches in the past, but I don't know them. > > The revised patch differs substantially, but I suspect it will keep some > small chunks of color-computing code, as the forumulas are what they are. Can you identify those formulas in the patch you submitted?
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 12:06:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 25 08:06:41 2025 Received: from localhost ([127.0.0.1]:48803 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uqVyC-0008OE-OA for submit <at> debbugs.gnu.org; Mon, 25 Aug 2025 08:06:41 -0400 Received: from mail-10625.protonmail.ch ([79.135.106.25]:16625) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uqVy8-0008Ns-0M for 79298 <at> debbugs.gnu.org; Mon, 25 Aug 2025 08:06:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756123587; x=1756382787; bh=TD1SLZbEXwZIC/dra40Pr05oHE7xkv61bXUSg0KX5Bw=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=NMcSz27upXwDmqgFz0NIt0ypaak1jn4WmBrBf1nVMCRML4UiLpoZeYJSrvEuVroaO jJXPCPI3YMKHHRPxDqKhcybfDcRej8MJMR6fEDJG4V+jtANfXhm8+O5xx2u9Hgvff7 mZuV8niJGlgTUzLNFp6zhz1x16qv2OXP/k0ae7gAap/pLhgtAfOswe8I4bY94PbiaC azeCaYmAvQK3qMo8u2bXA6LEChjZ7hjCtJW9uLnib91N3x2lBbOWjcuzjtYMUBSK6D cvZ0F4ljthFttpGtvEq8scyknfqKO2/jXj4Ou778I2boyIziT8tlW0+OiBbNH8qXKz OajdUdyi9/y0Q== Date: Mon, 25 Aug 2025 12:06:22 +0000 To: Eli Zaretskii <eliz@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: <wVAQj1gUO2XONSC-t-PwaONqZx3mdq87ODHD8ICT7qK4oow8Xc7H3-5rSJ44e3MQqrlkn0LgWJ7eZIVn7tKWXpYP4AQxcyG50mu10dg3U5s=@etown.dev> In-Reply-To: <86sehf65gb.fsf@HIDDEN> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> <865xed89uf.fsf@HIDDEN> <CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev> <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev> <86sehf65gb.fsf@HIDDEN> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 43134bbf754f34684f88a925f3f474b856a32d9a MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 79298 Cc: 79298 <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: -2.0 (--) > Hmm... the fact that some of the code is "inherited from someone else" > worries me. If the code you took from someone else's work is > substantial (more than, say, 15 lines), we will need that other person > to assign the copyright to the FSF, in addition to your assignment. > Can you tell who is that other person and how much of the code he/she > wrote? The initial patch drew heavily (>15 lines) from this public fork of emacs: https://github.com/tsuu32/emacs-w32con-vt From breadcrumbs in the working tree and other GNU mailing list discussions= , I gather the owner of that repo has this address: tsuucat <at> icloud.com, and has contributed patches in the past, but I don't know them. The revised patch differs substantially, but I suspect it will keep some small chunks of color-computing code, as the forumulas are what they are. > > Will do (just need to figure out where the --color arg gets processed). > It is processed in lisp/startup.el. Thank you! > At least the description of --color in the user manual should be > adjusted: it currently says that it has no effect on Windows. I think > the way to turn on/off 24-bit colors in a running session should also > be mentioned in the MS-Windows-specific appendix to the user manual. I'll take a look!
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 10:50:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 25 06:50:29 2025
Received: from localhost ([127.0.0.1]:48553 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uqUmS-0001rp-Lr
for submit <at> debbugs.gnu.org; Mon, 25 Aug 2025 06:50:29 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:49612)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uqUmO-0001rY-UO
for 79298 <at> debbugs.gnu.org; Mon, 25 Aug 2025 06:50:26 -0400
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 1uqUmH-0000Iy-VG; Mon, 25 Aug 2025 06:50:18 -0400
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=zSOeaFYSorMxCdTau+wil9ociNLwwRBx91XsEtam0D8=; b=PJa9YUFGWVYe
lTAGzLjSYlymtHGKuCFKShrz8bgiwyxCtGdqqiswmZNrP28y09STQSDQrncfkgE7/yVM1e/UWHqGI
goMERyNY6GiWckc8ooy0nYCOjFPkWIAcp14mO4jO2K/iUQtnsL41x81/KR4/fFvUWU34haob7rrkM
VOfk7YDIsoYuDuc3Vl+dXp7LuNYWNc5l7/cfD1mEBDNEkj0mq1raUKnQrPoU3er/6qUH5O2gBfgrs
n0Ic0XArBLBx+aFRUCGxtBogPOwqqHlZvPK/QtjJsMzoaXgmHmk0roD1VjulnvvUDCRlYj6g3//yh
80UfKkosLHee9tBZKcMAeA==;
Date: Mon, 25 Aug 2025 13:50:12 +0300
Message-Id: <86sehf65gb.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ewan <ewan@HIDDEN>
In-Reply-To: <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev>
(message from Ewan on Mon, 25 Aug 2025 06:09:37 +0000)
Subject: Re: bug#79298: patch: full color in windows terminal
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev>
<865xed89uf.fsf@HIDDEN>
<CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev>
<wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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: Mon, 25 Aug 2025 06:09:37 +0000
> From: Ewan <ewan@HIDDEN>
>
>
> > merge 79298 79297
>
> > Such a large contribution will need you to sign a
> > copyright-assignment agreement with the FSF.
>
>
> I assumed as much, and have sent off my details in the form request to assign@HIDDEN
> If it's easier for you to just send me the form, that works too!
Thanks, form sent off-list.
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -299,6 +299,21 @@ AC_ARG_WITH([all],
> > > [with_features=$withval],
> > > [with_features=yes])
> > >
> > > +AC_ARG_WITH([w32-vt-color],
> > > +[AS_HELP_STRING([--with-w32-vt-color=ARG],
> > > +[use VT sequences for w32 console color (ARG one of: no, 16, 156, 24bit)])],
> > > ...
> >
> > Why do we need this configure-time switch? why not compile this
> > feature into Emacs unconditionally?
>
>
> This work was inherited from someone else, and I had wondered the same...
Hmm... the fact that some of the code is "inherited from someone else"
worries me. If the code you took from someone else's work is
substantial (more than, say, 15 lines), we will need that other person
to assign the copyright to the FSF, in addition to your assignment.
Can you tell who is that other person and how much of the code he/she
wrote?
> > I think it's sub-optimal to have this conditioned on the build-time
> > conditions. I think users should be able to change the number of
> > supported colors when starting Emacs (using the --color command-line
> > option) and/or from within a running Emacs session by changing the
> > value of a variable. Could you please rework the patch to allow that?
>
>
> Will do (just need to figure out where the --color arg gets processed).
It is processed in lisp/startup.el.
> > AFAIK, the ENABLE_VIRTUAL_TERMINAL_PROCESSING is not supported on
> > Windows 9X (which we still strive to support).
>
> Will it be sufficient to disable the enhanced color modes on start up,
> but still allow W9 users to activate them (at their own peril)?
Yes.
> > > + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> > > + }
> > > + if (fg >= 8 && fg < 16)
> > > + {
> > > + char p[10];
> > > + snprintf(p, 10, "[%lum", fg - 8 + 90);
> > > + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> > > + }
> > > + ...
> >
> > Can we make this code more compact, like by using fewer snprintf calls
> > (since they are all so much alike), and just a single WriteConsole
> > call for each of foreground and background colors?
>
>
> More compact, definitely, and we should actually be able to get away with:
> - one WriteConsole call for turning the face on
> - one WriteConsole call for writing the text
> - one WriteConsole call for turning the face off
>
> > Finally, these changes will need a NEWS entry and suitable
> > additions/changes to the user manual.
>
>
> I'll add a NEWS entry.
Thanks.
> I'm not sure what exactly editing the manual entails, but happy to do so.
At least the description of --color in the user manual should be
adjusted: it currently says that it has no effect on Windows. I think
the way to turn on/off 24-bit colors in a running session should also
be mentioned in the MS-Windows-specific appendix to the user manual.
> I'll make these changes in the next few days and send off a new patch.
TIA
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 06:09:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 25 02:09:52 2025
Received: from localhost ([127.0.0.1]:47920 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uqQOu-0002Ej-1e
for submit <at> debbugs.gnu.org; Mon, 25 Aug 2025 02:09:52 -0400
Received: from mail-24421.protonmail.ch ([109.224.244.21]:16807)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uqQOp-0002EL-Pm
for 79298 <at> debbugs.gnu.org; Mon, 25 Aug 2025 02:09:48 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev;
s=protonmail; t=1756102180; x=1756361380;
bh=sVZeC4pZngH/VIeQPh9pG/Y2oArYFcURNz9Zd7cp6EA=;
h=Date:To:From:Subject:Message-ID:In-Reply-To:References:
Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
Message-ID:BIMI-Selector;
b=v5oF9cnQafUZHZyN8SXu84WTTk3wjSACr0K9sPoTXRaur5WheSZ+KgnqEZTDu9hfY
bk+2d+K+fVNXq3sEz2HgNeHoIP8lyXEIwnsawovcpXm9ELp4VWe/bpCpvkt/9yGprT
/bfC1zlN6HKQX9AddF5R494mbyCFGW9tF3Rcg29YyBny/NLZV3wRj8sJTXFUeoRPea
Moj8wKXLvr935oG3MV+yYFDHNoK93QZSz/Bp4hHPdYTXEnbFb7WyJX6NSGCaqtYjPp
7+YSssM3vDLZ89T1Oj9T6clGvs+QgPWAaFbfspn80EdfVcfdKl3MLdOiB0dYVUHCPK
AaSzL+Jck7F/g==
Date: Mon, 25 Aug 2025 06:09:37 +0000
To: Eli Zaretskii <eliz@HIDDEN>,
"79298 <at> debbugs.gnu.org" <79298 <at> debbugs.gnu.org>
From: Ewan <ewan@HIDDEN>
Subject: Re: bug#79298: patch: full color in windows terminal
Message-ID: <wqlFR_U5bQZUIizzxEDAvxrQK-Ho5UC4sp-gNyMsq1kby7yVq-xJe9tegGzMSy2MTpEsQA8cVOrZokpWZ7_K8L7dVZO6Vd1ehxOBcxYK5V4=@etown.dev>
In-Reply-To: <CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev>
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev>
<865xed89uf.fsf@HIDDEN>
<CingvPcQOqyh80NWmrSYRQk6Yvl6aWRY_abl4j29QDoN_EsvBmjpT1JCy1KC9E0JU5FwDp6EtODTrCXrThQt0pKX4kNdnuTB19TSAf4oCj0=@etown.dev>
Feedback-ID: 150490971:user:proton
X-Pm-Message-ID: bc08385cb16625b9dfcb49a6b10244f6f754e3b7
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -1.0 (-)
X-Debbugs-Envelope-To: 79298
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: -2.0 (--)
> merge 79298 79297
> Such a large contribution will need you to sign a
> copyright-assignment agreement with the FSF.
I assumed as much, and have sent off my details in the form request to assi=
gn@HIDDEN
If it's easier for you to just send me the form, that works too!
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -299,6 +299,21 @@ AC_ARG_WITH([all],
> > [with_features=3D$withval],
> > [with_features=3Dyes])
> >=20
> > +AC_ARG_WITH([w32-vt-color],
> > +[AS_HELP_STRING([--with-w32-vt-color=3DARG],
> > +[use VT sequences for w32 console color (ARG one of: no, 16, 156, 24bi=
t)])],
> > ...
>=20
> Why do we need this configure-time switch? why not compile this
> feature into Emacs unconditionally?
This work was inherited from someone else, and I had wondered the same...
I had some worries about supporting Windows Console Host (still 16-color),
but on further review, they've implemented a mapping from 24bit RGB.
Happy to remove the compiler flags and default to 24bit!
> I think it's sub-optimal to have this conditioned on the build-time
> conditions. I think users should be able to change the number of
> supported colors when starting Emacs (using the --color command-line
> option) and/or from within a running Emacs session by changing the
> value of a variable. Could you please rework the patch to allow that?
Will do (just need to figure out where the --color arg gets processed).
> > +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) ||=
defined(USE_W32CONVTCOLOR_24BIT)
> > + if (!WriteConsole (cur_screen, conversion_buffer,
> > + coding->produced, &r, NULL))
> > + {
> > + printf ("Failed writing console characters: %lu\n",
> > + GetLastError ());
> > + fflush (stdout);
> > + }
>=20
> We cannot use such printf's in a production session. I guess this is
> debugging code that should be removed?
I suspect so, and the existing ones got duplicated in the changes I inherit=
ed.
I'll remove them in the revised patch.
> > +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) ||=
defined(USE_W32CONVTCOLOR_24BIT)
> > + DWORD mode;
> > + GetConsoleMode (cur_screen, &mode);
> > + mode |=3D ENABLE_VIRTUAL_TERMINAL_PROCESSING;
> > + SetConsoleMode (cur_screen, mode);
> > +#endif
>=20
> AFAIK, the ENABLE_VIRTUAL_TERMINAL_PROCESSING is not supported on
> Windows 9X (which we still strive to support).
Will it be sufficient to disable the enhanced color modes on start up,
but still allow W9 users to activate them (at their own peril)?
> > + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> > + }
> > + if (fg >=3D 8 && fg < 16)
> > + {
> > + char p[10];
> > + snprintf(p, 10, "=1B[%lum", fg - 8 + 90);
> > + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> > + }
> > + ...
>=20
> Can we make this code more compact, like by using fewer snprintf calls
> (since they are all so much alike), and just a single WriteConsole
> call for each of foreground and background colors?
More compact, definitely, and we should actually be able to get away with:
- one WriteConsole call for turning the face on
- one WriteConsole call for writing the text
- one WriteConsole call for turning the face off
> Finally, these changes will need a NEWS entry and suitable
> additions/changes to the user manual.
I'll add a NEWS entry.
I'm not sure what exactly editing the manual entails, but happy to do so.
I'll make these changes in the next few days and send off a new patch.
Best,
- Ewan
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Eli Zaretskii <eliz@HIDDEN>
to control <at> debbugs.gnu.org.
Full text available.
Received: (at 79298) by debbugs.gnu.org; 24 Aug 2025 07:20:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 24 03:20:19 2025
Received: from localhost ([127.0.0.1]:43219 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1uq51X-0006NS-6n
for submit <at> debbugs.gnu.org; Sun, 24 Aug 2025 03:20:19 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:57656)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>)
id 1uq51U-0006NC-P8; Sun, 24 Aug 2025 03:20:17 -0400
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 1uq51P-0004Tk-0V; Sun, 24 Aug 2025 03:20:11 -0400
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=luldEC5fLhQGPRGWCX9HrEgt9rAjcQqh9LfCO8Dlbh4=; b=fPFEaH45fpv8
2XCFzwrvDXzxkPQ1Qds5HCUWmfgN13fUWViLJ6xWGtKJcl4Cx4z72dub+LL9pQKnM8dZNI9l235ZG
Gw+oTAthNi9+r4zqX9ui0YqYA+XZf3lpk5N7Z0I2gC6y53l7h/E7KHYfPZ3av7zCaHq9TqqHrY2m0
RHiK81gSof8Ob8dHHzTcXQQbBOGUd3eDmBjzrcEmcjysrE3HR8AzYhpShZTiVoTsstfhtkvSuUqCK
VtM5czD1k36qZSF9ks8VTbYuPB7FnPWzCNqsmSTZTTOpn/7hPUynTZyXxCboys5QsdE605egESRcf
0Ec6E+UPgNZEoYluRD/fSw==;
Date: Sun, 24 Aug 2025 10:20:08 +0300
Message-Id: <865xed89uf.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ewan <ewan@HIDDEN>
In-Reply-To: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev>
(bug-gnu-emacs@HIDDEN)
Subject: Re: bug#79298: patch: full color in windows terminal
References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev>
<iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79298
Cc: 79298 <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 (---)
merge 79298 79297
thanks
> Date: Sun, 24 Aug 2025 02:27:35 +0000
> From: Ewan via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@HIDDEN>
>
> * configure.ac: Compiler flag for setting w32 console color space.
> * lisp/term/w32console.el: Define and apply different color spaces.
> * src/term.c: Set tty max colors based on compiler flag.
> * src/w32console.c: Write face colors to console via VT sequences.
Thanks. Such a large contribution will need you to sign a
copyright-assignment agreement with the FSF. If you agree to do it, I
will send you the form to fill and the instructions to go with it.
> --- a/configure.ac
> +++ b/configure.ac
> @@ -299,6 +299,21 @@ AC_ARG_WITH([all],
> [with_features=$withval],
> [with_features=yes])
>
> +AC_ARG_WITH([w32-vt-color],
> +[AS_HELP_STRING([--with-w32-vt-color=ARG],
> +[use VT sequences for w32 console color (ARG one of: no, 16, 156, 24bit)])],
> +[ case "${withval}" in
> + no ) val=no ;;
> + 16 ) val=16 ;;
> + 256 ) val=256 ;;
> + 24bit ) val=24bit ;;
> + * )
> + AC_MSG_ERROR(['--with-vt-color=$withval' is invalid;
> + the value should be 'no', '16', '256', or '24bit']) ;;
> + esac
> + with_w32_vt_color=$val
> +])
Why do we need this configure-time switch? why not compile this
feature into Emacs unconditionally?
> +(defun w32con-define-256-colors ()
> + "Defines 256 color space"
The first line of a doc string should be a single complete sentence,
and must end in a period (here and elsewhere in the patch).
> + ;; Define the color space
> + (tty-color-clear)
> + (let ((ncolors (display-color-cells)))
> + (cond ((= ncolors 16777216) (w32con-define-24bit-colors))
> + ((= ncolors 265 (w32con-define-256-colors)))
> + (t (w32con-define-base-colors))))
> (clear-face-cache)
> ;; Figure out what are the colors of the console window, and set up
> ;; the background-mode correspondingly.
> diff --git a/src/term.c b/src/term.c
> index a1e3f6312c6..e762024bdd5 100644
> --- a/src/term.c
> +++ b/src/term.c
> @@ -4686,7 +4686,17 @@ use the Bourne shell command 'TERM=...; export TERM' (C-shell:\n\
> don't think we're losing anything by turning it off. */
> tty->line_ins_del_ok = 0;
>
> - tty->TN_max_colors = 16; /* Must be non-zero for tty-display-color-p. */
> + /* Support full range of colors in new windows terminal app */
> + #if defined(USE_W32CONVTCOLOR_16)
> + tty->TN_max_colors = 16;
> + #elif defined(USE_W32CONVTCOLOR_256)
> + tty->TN_max_colors = 256;
> + #elif defined(USE_W32CONVTCOLOR_24BIT)
> + tty->TN_max_colors = 16777216;
> + #else
> + /* Must be non-zero for tty-display-color-p. */
> + tty->TN_max_colors = 16;
> + #endif
I think it's sub-optimal to have this conditioned on the build-time
conditions. I think users should be able to change the number of
supported colors when starting Emacs (using the --color command-line
option) and/or from within a running Emacs session by changing the
value of a variable. Could you please rework the patch to allow that?
> +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) || defined(USE_W32CONVTCOLOR_24BIT)
> + if (!WriteConsole (cur_screen, conversion_buffer,
> + coding->produced, &r, NULL))
> + {
> + printf ("Failed writing console characters: %lu\n",
> + GetLastError ());
> + fflush (stdout);
> + }
We cannot use such printf's in a production session. I guess this is
debugging code that should be removed?
> +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) || defined(USE_W32CONVTCOLOR_24BIT)
> + DWORD mode;
> + GetConsoleMode (cur_screen, &mode);
> + mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
> + SetConsoleMode (cur_screen, mode);
> +#endif
AFAIK, the ENABLE_VIRTUAL_TERMINAL_PROCESSING is not supported on
Windows 9X (which we still strive to support). So either we should
make sure it is ignored on those old systems, or we should disable
these enhanced color modes on those systems.
> + snprintf(p, 10, "[%lum", fg + 30);
Our style is to leave 1 space between the function's name and the
following opening parenthesis.
> + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> + }
> + if (fg >= 8 && fg < 16)
> + {
> + char p[10];
> + snprintf(p, 10, "[%lum", fg - 8 + 90);
> + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> + }
> + if (fg >= 16 && fg < 256)
> + {
> + char p[20];
> + snprintf(p, 20, "[38;5;%lum", fg);
> + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> + }
> + if (bg >= 0 && bg < 8)
> + {
> + char p[10];
> + snprintf(p, 10, "[%lum", bg + 40);
> + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> + }
> + if (bg >= 8 && bg < 16)
> + {
> + char p[10];
> + snprintf(p, 10, "[%lum", bg - 8 + 100);
> + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> + }
> + if (bg>= 16 && bg < 256)
> + {
> + char p[20];
> + snprintf(p, 20, "[48;5;%lum", bg);
> + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> + }
> + }
> + else if (tty->TN_max_colors == 16777216)
> +
> +
> + {
> + char p[30];
> + snprintf(p,30, "[38;2;%lu;%lu;%lum", fg/65536, (fg/256)&255, fg&255);
> + WriteConsole (cur_screen, p, strlen(p), &r, NULL);
> +
> + char q[30];
> + snprintf(q, 30, "[48;2;%lu;%lu;%lum", bg/65536, (bg/256)&255, bg&255);
> + WriteConsole (cur_screen, q, strlen(q), &r, NULL);
> + }
> + }
Can we make this code more compact, like by using fewer snprintf calls
(since they are all so much alike), and just a single WriteConsole
call for each of foreground and background colors?
Finally, these changes will need a NEWS entry and suitable
additions/changes to the user manual.
Thanks again for working on this.
bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.Received: (at submit) by debbugs.gnu.org; 24 Aug 2025 06:06:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Aug 24 02:06:23 2025 Received: from localhost ([127.0.0.1]:43063 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1uq3rz-0002u5-By for submit <at> debbugs.gnu.org; Sun, 24 Aug 2025 02:06:23 -0400 Received: from lists.gnu.org ([2001:470:142::17]:59974) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ewan@HIDDEN>) id 1uq0SU-0000Kd-47 for submit <at> debbugs.gnu.org; Sat, 23 Aug 2025 22:27:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ewan@HIDDEN>) id 1uq0SO-0005Xu-M0 for bug-gnu-emacs@HIDDEN; Sat, 23 Aug 2025 22:27:44 -0400 Received: from mail-4323.protonmail.ch ([185.70.43.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ewan@HIDDEN>) id 1uq0SK-0008Mh-Qs for bug-gnu-emacs@HIDDEN; Sat, 23 Aug 2025 22:27:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756002458; x=1756261658; bh=H535G/m68CGsSqs/234s6Y4B5GLIYVRmAVmOTyMdIog=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=GF+ZOrrN2hyTTzQsIoV9EToPd6LwNJoMvqy9mMhTWvI/iy4LZck/efMFrUEadLc0B vC2+LnOH5BfKNEry4OQrtABOYVxl2trZfMAu5c3J2OIzONn4gsn3n1Se94UJpEkKW8 QcVhKqaVTfQck+AxxIoVwCRnk12IizFvyKUYPfK06HRxRnqNcW8Lq8BnPWezexUCm9 au7O05JVZPzwEHP3YJdwx8pVC/0AX+VFK5rlZ/LQt44K1d7mkeChiNLk3clIfK5FsB qU7L3Na1WRW+N2MKTorN5sJsindGAsgxzpwHS0FBQ4jvW9oYn8ysVnhu+Y/Dl8ZfQj O35aeuc7+m/wg== Date: Sun, 24 Aug 2025 02:27:35 +0000 To: "bug-gnu-emacs@HIDDEN" <bug-gnu-emacs@HIDDEN> From: Ewan <ewan@HIDDEN> Subject: Re: patch: full color in windows terminal Message-ID: <iQstamC8sjpAdYHarDC0EYuKLwA42KW8wwBRbnUUdRK8Hp_HpKYXLbMhescsq6pcwoX-j1Xv7ijxxN03scsuYr6p0CKnzmBXY0ZrEH5dKB8=@etown.dev> In-Reply-To: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> References: <G4Tou5OvKHBfVV6-9kmLezwXc0HkZ4RfJuFP5jFYbXZOVCiHPUDok76STaDWDT3d7nlqLLsJll2fHv8k9u3xgT1_DfsosfScbqHDWZG01-o=@etown.dev> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: d088fd425f91e0bf630689df1f01599642efdf53 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo" Received-SPF: pass client-ip=185.70.43.23; envelope-from=ewan@HIDDEN; helo=mail-4323.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sun, 24 Aug 2025 02:06:20 -0400 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: -0.0 (/) --b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Apologies, previous patch inherited an unrelated bug fix. Fixed patch attac= hed, fixed commit logs below. * configure.ac: Compiler flag for setting w32 console color space. * lisp/term/w32console.el: Define and apply different color spaces. * src/term.c: Set tty max colors based on compiler flag. * src/w32console.c: Write face colors to console via VT sequences. --b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo Content-Type: application/octet-stream; name=0001-Windows-Terminal-full-color-support.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Windows-Terminal-full-color-support.patch RnJvbSAxZDBjMWEzMGI1MDg2MGE5OGMzNTNjMmQ4MzQ4ODE1MWY2NmUyNjA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFNhdCwg MjMgQXVnIDIwMjUgMTk6MjU6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXaW5kb3dzIFRlcm1p bmFsIGZ1bGwgY29sb3Igc3VwcG9ydAoKLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICB8ICAy MiArKysrKwogbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwgfCAxMjUgKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tCiBzcmMvdGVybS5jICAgICAgICAgICAgICB8ICAxMiArKy0KIHNyYy93MzJjb25z b2xlLmMgICAgICAgIHwgMTg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0KIDQgZmlsZXMgY2hhbmdlZCwgMjg5IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAxNDBmZjc2MDI5 ZS4uNzJhNjhiODA0YjEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUu YWMKQEAgLTI5OSw2ICsyOTksMjEgQEAgQUNfQVJHX1dJVEgoW2FsbF0sCiAgIFt3aXRoX2ZlYXR1 cmVzPSR3aXRodmFsXSwKICAgW3dpdGhfZmVhdHVyZXM9eWVzXSkKIAorQUNfQVJHX1dJVEgoW3cz Mi12dC1jb2xvcl0sCitbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC13MzItdnQtY29sb3I9QVJHXSwK K1t1c2UgVlQgc2VxdWVuY2VzIGZvciB3MzIgY29uc29sZSBjb2xvciAoQVJHIG9uZSBvZjogbm8s IDE2LCAxNTYsIDI0Yml0KV0pXSwKK1sgICAgY2FzZSAiJHt3aXRodmFsfSIgaW4KKyAgICAgbm8g KSAgICB2YWw9bm8gOzsKKyAgICAgMTYgKSAgICB2YWw9MTYgOzsKKyAgICAgMjU2ICkgICB2YWw9 MjU2IDs7CisgICAgIDI0Yml0ICkgdmFsPTI0Yml0IDs7CisgICAgICogKQorICAgICBBQ19NU0df RVJST1IoWyctLXdpdGgtdnQtY29sb3I9JHdpdGh2YWwnIGlzIGludmFsaWQ7CisgICAgIHRoZSB2 YWx1ZSBzaG91bGQgYmUgJ25vJywgJzE2JywgJzI1NicsIG9yICcyNGJpdCddKSA7OworICAgICBl c2FjCisgICAgIHdpdGhfdzMyX3Z0X2NvbG9yPSR2YWwKK10pCisKIGRubCBBUkNIX0lOREVQRU5E RU5UX0NPTkZJR19GSUxFUyhGSUxFLi4uKQogZG5sIExpa2UgQUNfQ09ORklHX0ZJTEVTKEZJTEUp LiAgSG93ZXZlciwgZG8gbm90IGdlbmVyYXRlIHRoaXMKIGRubCAgIGlmIGNvbmZpZ3VyZSBpcyBi ZWluZyBjYWxsZWQgcmVjdXJzaXZlbHkgaW4gcHJlcGFyYXRpb24KQEAgLTMwMzMsNiArMzA0OCwx MyBAQCBpZiB0ZXN0ICIke29wc3lzfSIgPSAibWluZ3czMiI7IHRoZW4KICAgICBBQ19NU0dfRVJS T1IoW3RoZSBXaW5kb3dzIEFQSSBoZWFkZXJzIGFyZSB0b28gb2xkIHRvIHN1cHBvcnQgdGhpcyBi dWlsZC5dKQogICBmaQogICBIQVZFX1czMj0ke2VtYWNzX2N2X3czMmFwaX0KKyAgY2FzZSAiJHt3 aXRoX3czMl92dF9jb2xvcn0iIGluCisgICAgICAgMTYgKSBBQ19ERUZJTkUoVVNFX1czMkNPTlZU Q09MT1JfMTYsIDEsIFtEZWZpbmUgdG8gdXNlIFZUIHNlcXVlbmNlcyBmb3IgMTYgY29sb3JzLl0p IDs7CisgICAgICAgMjU2ICkgQUNfREVGSU5FKFVTRV9XMzJDT05WVENPTE9SXzI1NiwgMSwgW0Rl ZmluZSB0byB1c2UgVlQgc2VxdWVuY2VzIGZvciAyNTYgY29sb3JzLl0pIDs7CisgICAgICAgMjRi aXQgKSBBQ19ERUZJTkUoVVNFX1czMkNPTlZUQ09MT1JfMjRCSVQsIDEsIFtEZWZpbmUgdG8gdXNl IFZUIHNlcXVlbmNlcyBmb3IgMjRiaXQgY29sb3JzLl0pIDs7CisgICAgICAgbm8gKSA7OworICAg ICAgICogKSA7OworICBlc2FjCiBmaQogCiBOVERJUj0KZGlmZiAtLWdpdCBhL2xpc3AvdGVybS93 MzJjb25zb2xlLmVsIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKaW5kZXggMWI0NGRhNDhiZjcu LjI3NzRjYWU4Y2Q2IDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAorKysgYi9s aXNwL3Rlcm0vdzMyY29uc29sZS5lbApAQCAtMjQsMjUgKzI0LDQyIEBACiAKIDs7OyBDb2RlOgog Ci07OyBXMzIgdXNlcyBkaWZmZXJlbnQgY29sb3IgaW5kZXhlcyB0aGFuIHN0YW5kYXJkOgotCis7 OyBXMzIgdXNlcyBkaWZmZXJlbnQgY29sb3IgaW5kZXhlcyB0aGFuIHN0YW5kYXJkCis7OyBXaGVu IHVzaW5nIFZUIHNlcXVlbmNlcyBmb3IgY29sb3IsIHN0YW5kYXJkaXplCiAoZGVmdmFyIHczMi10 dHktc3RhbmRhcmQtY29sb3JzCi0gICcoKCJibGFjayIgICAgICAgICAgMCAgICAgMCAgICAgMCAg ICAgMCkKLSAgICAoImJsdWUiICAgICAgICAgICAxICAgICAwICAgICAwIDUyNDgwKSA7IE1lZGl1 bUJsdWUKLSAgICAoImdyZWVuIiAgICAgICAgICAyICA4NzA0IDM1NTg0ICA4NzA0KSA7IEZvcmVz dEdyZWVuCi0gICAgKCJjeWFuIiAgICAgICAgICAgMyAgICAgMCA1MjczNiA1MzUwNCkgOyBEYXJr VHVycXVvaXNlCi0gICAgKCJyZWQiICAgICAgICAgICAgNCA0NTU2OCAgODcwNCAgODcwNCkgOyBG aXJlQnJpY2sKLSAgICAoIm1hZ2VudGEiICAgICAgICA1IDM1NTg0ICAgICAwIDM1NTg0KSA7IERh cmtNYWdlbnRhCi0gICAgKCJicm93biIgICAgICAgICAgNiA0MDk2MCAyMDk5MiAxMTUyMCkgOyBT aWVubmEKLSAgICAoImxpZ2h0Z3JheSIgICAgICA3IDQ4NjQwIDQ4NjQwIDQ4NjQwKSA7IEdyYXkK LSAgICAoImRhcmtncmF5IiAgICAgICA4IDI2MTEyIDI2MTEyIDI2MTEyKSA7IEdyYXk0MAotICAg ICgibGlnaHRibHVlIiAgICAgIDkgICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQotICAgICgibGln aHRncmVlbiIgICAgMTAgICAgIDAgNjU1MzUgICAgIDApIDsgR3JlZW4KLSAgICAoImxpZ2h0Y3lh biIgICAgIDExICAgICAwIDY1NTM1IDY1NTM1KSA7IEN5YW4KLSAgICAoImxpZ2h0cmVkIiAgICAg IDEyIDY1NTM1ICAgICAwICAgICAwKSA7IFJlZAotICAgICgibGlnaHRtYWdlbnRhIiAgMTMgNjU1 MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQotICAgICgieWVsbG93IiAgICAgICAgMTQgNjU1MzUg NjU1MzUgICAgIDApIDsgWWVsbG93Ci0gICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2NTUz NSA2NTUzNSkpCisgIChpZiB3MzJjb24tdXNlLXZ0LWNvbG9yCisgICAgICAnKCgiYmxhY2siICAg ICAgICAgIDAgICAgIDAgICAgIDAgICAgIDApCisgICAgICAgICgicmVkIiAgICAgICAgICAgIDEg NDU1NjggIDg3MDQgIDg3MDQpIDsgRmlyZUJyaWNrCisgICAgICAgICgiZ3JlZW4iICAgICAgICAg IDIgIDg3MDQgMzU1ODQgIDg3MDQpIDsgRm9yZXN0R3JlZW4KKyAgICAgICAgKCJicm93biIgICAg ICAgICAgMyA0MDk2MCAyMDk5MiAxMTUyMCkgOyBTaWVubmEKKyAgICAgICAgKCJibHVlIiAgICAg ICAgICAgNCAgICAgMCAgICAgMCA1MjQ4MCkgOyBNZWRpdW1CbHVlCisgICAgICAgICgibWFnZW50 YSIgICAgICAgIDUgMzU1ODQgICAgIDAgMzU1ODQpIDsgRGFya01hZ2VudGEKKyAgICAgICAgKCJj eWFuIiAgICAgICAgICAgNiAgICAgMCA1MjczNiA1MzUwNCkgOyBEYXJrVHVycXVvaXNlCisgICAg ICAgICgibGlnaHRncmF5IiAgICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQorICAgICAg ICAoImRhcmtncmF5IiAgICAgICA4IDI2MTEyIDI2MTEyIDI2MTEyKSA7IEdyYXk0MAorICAgICAg ICAoImxpZ2h0cmVkIiAgICAgICA5IDY1NTM1ICAgICAwICAgICAwKSA7IFJlZAorICAgICAgICAo ImxpZ2h0Z3JlZW4iICAgIDEwICAgICAwIDY1NTM1ICAgICAwKSA7IEdyZWVuCisgICAgICAgICgi eWVsbG93IiAgICAgICAgMTEgNjU1MzUgNjU1MzUgICAgIDApIDsgWWVsbG93CisgICAgICAgICgi bGlnaHRibHVlIiAgICAgMTIgICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQorICAgICAgICAoImxp Z2h0bWFnZW50YSIgIDEzIDY1NTM1ICAgICAwIDY1NTM1KSA7IE1hZ2VudGEKKyAgICAgICAgKCJs aWdodGN5YW4iICAgICAxNCAgICAgMCA2NTUzNSA2NTUzNSkgOyBDeWFuCisgICAgICAgICgid2hp dGUiICAgICAgICAgMTUgNjU1MzUgNjU1MzUgNjU1MzUpKQorICAgICcoKCJibGFjayIgICAgICAg ICAgMCAgICAgMCAgICAgMCAgICAgMCkKKyAgICAgICgiYmx1ZSIgICAgICAgICAgIDEgICAgIDAg ICAgIDAgNTI0ODApIDsgTWVkaXVtQmx1ZQorICAgICAgKCJncmVlbiIgICAgICAgICAgMiAgODcw NCAzNTU4NCAgODcwNCkgOyBGb3Jlc3RHcmVlbgorICAgICAgKCJjeWFuIiAgICAgICAgICAgMyAg ICAgMCA1MjczNiA1MzUwNCkgOyBEYXJrVHVycXVvaXNlCisgICAgICAoInJlZCIgICAgICAgICAg ICA0IDQ1NTY4ICA4NzA0ICA4NzA0KSA7IEZpcmVCcmljaworICAgICAgKCJtYWdlbnRhIiAgICAg ICAgNSAzNTU4NCAgICAgMCAzNTU4NCkgOyBEYXJrTWFnZW50YQorICAgICAgKCJicm93biIgICAg ICAgICAgNiA0MDk2MCAyMDk5MiAxMTUyMCkgOyBTaWVubmEKKyAgICAgICgibGlnaHRncmF5IiAg ICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQorICAgICAgKCJkYXJrZ3JheSIgICAgICAg OCAyNjExMiAyNjExMiAyNjExMikgOyBHcmF5NDAKKyAgICAgICgibGlnaHRibHVlIiAgICAgIDkg ICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQorICAgICAgKCJsaWdodGdyZWVuIiAgICAxMCAgICAg MCA2NTUzNSAgICAgMCkgOyBHcmVlbgorICAgICAgKCJsaWdodGN5YW4iICAgICAxMSAgICAgMCA2 NTUzNSA2NTUzNSkgOyBDeWFuCisgICAgICAoImxpZ2h0cmVkIiAgICAgIDEyIDY1NTM1ICAgICAw ICAgICAwKSA7IFJlZAorICAgICAgKCJsaWdodG1hZ2VudGEiICAxMyA2NTUzNSAgICAgMCA2NTUz NSkgOyBNYWdlbnRhCisgICAgICAoInllbGxvdyIgICAgICAgIDE0IDY1NTM1IDY1NTM1ICAgICAw KSA7IFllbGxvdworICAgICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2NTUzNSA2NTUzNSkp KQogIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJp dCBSR0IgdmFsdWVzLiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5 cyAidGVybS9jb21tb24td2luIiAoZnJhbWUpKQpAQCAtNTAsNiArNjcsNDcgQEAKIChkZWNsYXJl LWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSAidzMycHJvYy5jIiAoKSkKIChkZWNs YXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UgInczMnByb2MuYyIg KCkpCiAKKyhkZWZ1biB3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJh c2UgY29sb3Igc3BhY2UgZm9yIHczMiIKKyAgKGxldCogKChjb2xvcnMgdzMyLXR0eS1zdGFuZGFy ZC1jb2xvcnMpCisgICAgICAgICAobmJhc2UgKGxlbmd0aCBjb2xvcnMpKQorICAgICAgICAgKGNv bG9yIChjYXIgY29sb3JzKSkpCisgICAgKHByb2duICh3aGlsZSBjb2xvcnMKKyAgICAgICAgICAg ICAodHR5LWNvbG9yLWRlZmluZSAoY2FyIGNvbG9yKSAoY2FkciBjb2xvcikgKGNkZHIgY29sb3Ip KQorICAgICAgICAgICAgIChzZXRxIGNvbG9ycyAoY2RyIGNvbG9ycykKKyAgICAgICAgICAgICAg ICAgICBjb2xvciAgKGNhciBjb2xvcnMpKSkKKyAgICAgICAgICAgbmJhc2UpKSkKKworKGRlZnVu IHczMmNvbi1kZWZpbmUtMjU2LWNvbG9ycyAoKQorICAiRGVmaW5lcyAyNTYgY29sb3Igc3BhY2Ui CisgIChsZXQgKChyIDApIChiIDApIChnIDApCisgICAgICAgIChuICgtIDI1NiAodzMyY29uLWRl ZmluZS1iYXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVydC10by0xNmJpdCAobGFtYmRhIChw cmltKSAobG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQorICAgICh3aGlsZSAoPiBuIDI0KSA7 OyBub24tZ3JleQorICAgICAgKGxldCAoKGkgKC0gMjU2IG4pKQorICAgICAgICAgICAgKGMgKG1h cGNhciBjb252ZXJ0LXRvLTE2Yml0CisgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgKGxh bWJkYSAoeCkgKGlmICh6ZXJvcCB4KSAwICgrICgqIHggNDApIDU1KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxpc3QgciBnIGIpKSkpKQorICAgICAgICAodHR5LWNvbG9yLWRl ZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIGIgKDErIGIpKQor ICAgICAgKHdoZW4gKD4gYiA1KSAoc2V0cSBnICgxKyBnKSBiIDApKQorICAgICAgKHdoZW4gKD4g ZyA1KSAoc2V0cSByICgxKyByKSBnIDApKQorICAgICAgKHNldHEgbiAoMS0gbikpKQorICAgICh3 aGlsZSAoPiBuIDApIDs7IGFsbC1ncmV5CisgICAgICAobGV0KiAoKGkgKC0gMjU2IG4pKQorICAg ICAgICAgICAgICh2IChmdW5jYWxsIGNvbnZlcnQtdG8tMTZiaXQgKCsgOCAoKiAoLSAyNCBuKSAx MCkpKSkKKyAgICAgICAgICAgICAoYyAobGlzdCB2IHYgdikpKQorICAgICAgICAodHR5LWNvbG9y LWRlZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIG4gKDEtIG4p KSkpKQorCisoZGVmdW4gdzMyY29uLWRlZmluZS0yNGJpdC1jb2xvcnMgKCkKKyAgIkRlZmluZXMg MjQgYml0IGNvbG9yIHNwYWNlIgorICAobGV0ICgoaSAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9y cykpKQorICAgIChtYXBjIChsYW1iZGEgKGMpICh1bmxlc3MgKGFzc29jIChjYXIgYykgdzMyLXR0 eS1zdGFuZGFyZC1jb2xvcnMpCisgICAgICAgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUg KGNhciBjKSBpIChjZHIgYykpCisgICAgICAgICAgICAgICAgICAgKHNldHEgaSAoMSsgaSkpKSkK KyAgICAgICAgICBjb2xvci1uYW1lLXJnYi1hbGlzdCkpKQorCiAoZGVmdW4gdGVybWluYWwtaW5p dC13MzJjb25zb2xlICgpCiAgICJUZXJtaW5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3Ig dzMyIGNvbnNvbGUuIgogICA7OyBTaGFyZSBmdW5jdGlvbiBrZXkgaW5pdGlhbGl6YXRpb24gd2l0 aCB3MzIgZ3VpIGZyYW1lcwpAQCAtNjAsMjIgKzExOCwyMSBAQAogCShvZW0tY29kZS1wYWdlLW91 dHB1dC1jb2RpbmcKIAkgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLW91 dHB1dC1jb2RlcGFnZSkpKSkKIAlvZW0tY3MtcCBvZW0tby1jcy1wKQotCShzZXRxIG9lbS1jcy1w IChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQotCShzZXRxIG9lbS1vLWNz LXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcpKQotCSh3aGVu IG9lbS1jcy1wCi0JICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1j b2RpbmcpCi0JICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0ZW0KLQkgICAoaWYgb2VtLW8tY3Mt cCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQotICAg ICAgICAgIDs7IFNpbmNlIHdlIGNoYW5nZWQgdGhlIHRlcm1pbmFsIGVuY29kaW5nLCB3ZSBuZWVk IHRvIHJlcGVhdAotICAgICAgICAgIDs7IHRoZSB0ZXN0IGZvciBVbmljb2RlIHF1b3RlcyBiZWlu ZyBkaXNwbGF5YWJsZS4KLSAgICAgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkp KQotICAobGV0KiAoKGNvbG9ycyB3MzItdHR5LXN0YW5kYXJkLWNvbG9ycykKLSAgICAgICAgIChj b2xvciAoY2FyIGNvbG9ycykpKQotICAgICh0dHktY29sb3ItY2xlYXIpCi0gICAgKHdoaWxlIGNv bG9ycwotICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjb2xvcikgKGNhZHIgY29sb3IpIChj ZGRyIGNvbG9yKSkKLSAgICAgIChzZXRxIGNvbG9ycyAoY2RyIGNvbG9ycykKLSAgICAgICAgICAg IGNvbG9yIChjYXIgY29sb3JzKSkpKQorICAgIChzZXRxIG9lbS1jcy1wIChjb2Rpbmctc3lzdGVt LXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAgIChzZXRxIG9lbS1vLWNzLXAgKGNvZGluZy1z eXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcpKQorICAgICh3aGVuIG9lbS1jcy1w CisgICAgICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1jb2Rpbmcp CisgICAgICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0ZW0KKyAgICAgICAoaWYgb2VtLW8tY3Mt cCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAg ICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8g cmVwZWF0CisgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxh eWFibGUuCisgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkpKQorICA7OyBEZWZp bmUgdGhlIGNvbG9yIHNwYWNlCisgICh0dHktY29sb3ItY2xlYXIpCisgIChsZXQgKChuY29sb3Jz IChkaXNwbGF5LWNvbG9yLWNlbGxzKSkpCisgICAgKGNvbmQgKCg9IG5jb2xvcnMgMTY3NzcyMTYp ICh3MzJjb24tZGVmaW5lLTI0Yml0LWNvbG9ycykpCisgICAgICAgICAgKCg9IG5jb2xvcnMgMjY1 ICAgICAgICh3MzJjb24tZGVmaW5lLTI1Ni1jb2xvcnMpKSkKKyAgICAgICAgICAodCAgICAgICAg ICAgICAgICAgICAgKHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkpCiAgIChjbGVhci1mYWNl LWNhY2hlKQogICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBjb2xvcnMgb2YgdGhlIGNvbnNv bGUgd2luZG93LCBhbmQgc2V0IHVwCiAgIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9u ZGluZ2x5LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggYTFlM2Y2 MzEyYzYuLmU3NjIwMjRiZGQ1IDEwMDY0NAotLS0gYS9zcmMvdGVybS5jCisrKyBiL3NyYy90ZXJt LmMKQEAgLTQ2ODYsNyArNDY4NiwxNyBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdU RVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogICAgICBkb24ndCB0aGluayB3ZSdy ZSBsb3NpbmcgYW55dGhpbmcgYnkgdHVybmluZyBpdCBvZmYuICAqLwogICB0dHktPmxpbmVfaW5z X2RlbF9vayA9IDA7CiAKLSAgdHR5LT5UTl9tYXhfY29sb3JzID0gMTY7ICAvKiBNdXN0IGJlIG5v bi16ZXJvIGZvciB0dHktZGlzcGxheS1jb2xvci1wLiAgKi8KKyAgLyogU3VwcG9ydCBmdWxsIHJh bmdlIG9mIGNvbG9ycyBpbiBuZXcgd2luZG93cyB0ZXJtaW5hbCBhcHAgKi8KKyAgI2lmIGRlZmlu ZWQoVVNFX1czMkNPTlZUQ09MT1JfMTYpCisgICAgdHR5LT5UTl9tYXhfY29sb3JzID0gMTY7Cisg ICNlbGlmIGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjU2KQorICAgIHR0eS0+VE5fbWF4X2Nv bG9ycyA9IDI1NjsKKyAgI2VsaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNEJJVCkKKyAg ICB0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKyAgI2Vsc2UKKyAgICAvKiBNdXN0IGJl IG5vbi16ZXJvIGZvciB0dHktZGlzcGxheS1jb2xvci1wLiAgKi8KKyAgICB0dHktPlROX21heF9j b2xvcnMgPSAxNjsKKyAgI2VuZGlmCiAjZW5kaWYJLyogRE9TX05UICovCiAKICNpZmRlZiBIQVZF X0dQTQpkaWZmIC0tZ2l0IGEvc3JjL3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5k ZXggMWJjYTBjYWRmZjkuLjVhNWQ1MTlmZmMzIDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5j CisrKyBiL3NyYy93MzJjb25zb2xlLmMKQEAgLTUzLDYgKzUzLDEwIEBAIHN0YXRpYyB2b2lkIHcz MmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9p ZCB3MzJjb25fdXBkYXRlX2JlZ2luIChzdHJ1Y3QgZnJhbWUgKiBmKTsKIHN0YXRpYyB2b2lkIHcz MmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKiBmKTsKIHN0YXRpYyBXT1JEIHczMl9mYWNl X2F0dHJpYnV0ZXMgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpOworI2lmIGRlZmluZWQo VVNFX1czMkNPTlZUQ09MT1JfMTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjU2KSB8 fCBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzI0QklUKQorc3RhdGljIHZvaWQgdHVybl9vbl9m YWNlIChzdHJ1Y3QgZnJhbWUgKiwgaW50IGZhY2VfaWQpOworc3RhdGljIHZvaWQgdHVybl9vZmZf ZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBmYWNlX2lkKTsKKyNlbmRpZgogCiBzdGF0aWMgQ09P UkQJY3Vyc29yX2Nvb3JkczsKIHN0YXRpYyBIQU5ETEUJcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47 CkBAIC0xNjYsMTAgKzE3MCwxMCBAQCB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUgKHN0cnVjdCBm cmFtZSAqZiwgaW50IGVuZCkKICAgICB7CiAgICAgICBpbnQgaTsKICAgICAgIGZvciAoaSA9IDA7 IGkgPCBnbHlwaHNfbGVuOyBpKyspCi0gICAgICAgIHsKKwl7CiAJICBtZW1jcHkgKCZnbHlwaHNb aV0sICZzcGFjZV9nbHlwaCwgc2l6ZW9mIChzdHJ1Y3QgZ2x5cGgpKTsKIAkgIGdseXBoc1tpXS5m cmFtZSA9IE5VTEw7Ci0gICAgICAgIH0KKwl9CiAgICAgICBjZW9sX2luaXRpYWxpemVkID0gVFJV RTsKICAgICB9CiAgIHczMmNvbl93cml0ZV9nbHlwaHMgKGYsIGdseXBocywgZW5kIC0gY3Vyc29y X2Nvb3Jkcy5YKTsKQEAgLTIxOCwyNiArMjIyLDI2IEBAIHczMmNvbl9pbnNfZGVsX2xpbmVzIChz dHJ1Y3QgZnJhbWUgKmYsIGludCB2cG9zLCBpbnQgbikKICAgaWYgKG4gPiAwKQogICAgIHsKICAg ICAgIGlmIChzY3JvbGwuQm90dG9tIDwgZGVzdC5ZKQotICAgICAgICB7CisJewogCSAgZm9yIChp ID0gc2Nyb2xsLkJvdHRvbTsgaSA8IGRlc3QuWTsgaSsrKQotICAgICAgICAgICAgeworCSAgICB7 CiAJICAgICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBpLCAwKTsKIAkgICAgICB3MzJjb25fY2xl YXJfZW5kX29mX2xpbmUgKGYsIEZSQU1FX0NPTFMgKGYpKTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgfQorCSAgICB9CisJfQogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIG5iID0gZGVzdC5Z ICsgKHNjcm9sbC5Cb3R0b20gLSBzY3JvbGwuVG9wKSArIDE7CiAKICAgICAgIGlmIChuYiA8IHNj cm9sbC5Ub3ApCi0gICAgICAgIHsKKwl7CiAJICBmb3IgKGkgPSBuYjsgaSA8IHNjcm9sbC5Ub3A7 IGkrKykKLSAgICAgICAgICAgIHsKKwkgICAgewogCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAo ZiwgaSwgMCk7CiAJICAgICAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xT IChmKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkgICAgfQorCX0KICAgICB9CiAKICAg Y3Vyc29yX2Nvb3Jkcy5YID0gMDsKQEAgLTMwNiwxMCArMzEwLDE0IEBAIHczMmNvbl9pbnNlcnRf Z2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBnbHlwaCAqc3RhcnQsCiAK IHN0YXRpYyB2b2lkCiB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lz dGVyIHN0cnVjdCBnbHlwaCAqc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIg aW50IGxlbikKKwkJICAgICByZWdpc3RlciBpbnQgbGVuKQogewogICBEV09SRCByOworCisgICNp ZiBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzE2KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05WVENP TE9SXzI1NikgfHwgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNEJJVCkKKyAgI2Vsc2UKICAg V09SRCBjaGFyX2F0dHI7CisgICNlbmRpZgogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAg IHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7CiAKQEAgLTM0MCwxMCArMzQ4LDE1IEBAIHcz MmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBo ICpzdHJpbmcsCiAJICAgICAgJiYgc3RyaW5nW25dLmZyYW1lID09IGZhY2VfaWRfZnJhbWUpKQog CSAgYnJlYWs7CiAKLSAgICAgIC8qIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSBzZXRzIGZyYW1l IG9mIGdseXBocyB0byBOVUxMLiAgKi8KLSAgICAgIHN0cnVjdCBmcmFtZSAqYXR0cl9mcmFtZSA9 IGZhY2VfaWRfZnJhbWUgPyBmYWNlX2lkX2ZyYW1lIDogZjsKLSAgICAgIC8qIFR1cm4gYXBwZWFy YW5jZSBtb2RlcyBvZiB0aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KLSAgICAgIGNoYXJfYXR0 ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOworI2lmIGRlZmlu ZWQoVVNFX1czMkNPTlZUQ09MT1JfMTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjU2 KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzI0QklUKQorCXR1cm5fb25fZmFjZSAoZiwg ZmFjZV9pZCk7CisjZWxzZQorCS8qIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSBzZXRzIGZyYW1l IG9mIGdseXBocyB0byBOVUxMLiAgKi8KKwlzdHJ1Y3QgZnJhbWUgKmF0dHJfZnJhbWUgPSBmYWNl X2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFtZSA6IGY7CisKKwkvKiBUdXJuIGFwcGVhcmFuY2UgbW9k ZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICovCisJY2hhcl9hdHRyID0gdzMyX2ZhY2Vf YXR0cmlidXRlcyAoYXR0cl9mcmFtZSwgZmFjZV9pZCk7CisjZW5kaWYKIAogICAgICAgaWYgKG4g PT0gbGVuKQogCS8qIFRoaXMgaXMgdGhlIGxhc3QgcnVuLiAgKi8KQEAgLTM1MSw2ICszNjQsMTUg QEAgdzMyY29uX3dyaXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3Qg Z2x5cGggKnN0cmluZywKICAgICAgIGNvbnZlcnNpb25fYnVmZmVyID0gKExQQ1NUUikgZW5jb2Rl X3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbiwgY29kaW5nKTsKICAgICAgIGlmIChjb2RpbmctPnBy b2R1Y2VkID4gMCkKIAl7CisjaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8xNikgfHwgZGVm aW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1Jf MjRCSVQpCisJICBpZiAoIVdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZm ZXIsCisJCQkgICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxMKSkKKwkgICAgeworCSAgICAg IHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hhcmFjdGVyczogJWx1XG4iLAorCQkg ICAgICBHZXRMYXN0RXJyb3IgKCkpOworCSAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKKwkgICAgfQor I2Vsc2UKIAkgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8K IAkgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0 ciwKIAkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKQEAgLTM3MCwxMiAr MzkyLDE2IEBAIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIg c3RydWN0IGdseXBoICpzdHJpbmcsCiAJCSAgICAgIEdldExhc3RFcnJvciAoKSk7CiAJICAgICAg ZmZsdXNoIChzdGRvdXQpOwogCSAgICB9Ci0KKyNlbmRpZgogCSAgY3Vyc29yX2Nvb3Jkcy5YICs9 IGNvZGluZy0+cHJvZHVjZWQ7CiAJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGN1cnNvcl9jb29y ZHMuWSwgY3Vyc29yX2Nvb3Jkcy5YKTsKIAl9CiAgICAgICBsZW4gLT0gbjsKICAgICAgIHN0cmlu ZyArPSBuOworCisjaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8xNikgfHwgZGVmaW5lZChV U0VfVzMyQ09OVlRDT0xPUl8yNTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjRCSVQp CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKyNlbmRpZgogICAgIH0KIH0KIApA QCAtNDk4LDcgKzUyNCw3IEBAIHR0eV9kcmF3X3Jvd193aXRoX21vdXNlX2ZhY2UgKHN0cnVjdCB3 aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKndpbmRvd19yb3csCiAJCSAgfQogCQkgIGJyZWFr OwogCi0JCWNhc2UgRFJBV19JTlZFUlNFX1ZJREVPOgorCQljYXNlIERSQVdfSU5WRVJTRV9WSURF TzogLy8gc2VlIGNvbW1lbnQgaW4gdHVybl9vbl9mYWNlCiAJCWNhc2UgRFJBV19DVVJTT1I6CiAJ CWNhc2UgRFJBV19JTUFHRV9SQUlTRUQ6CiAJCWNhc2UgRFJBV19JTUFHRV9TVU5LRU46CkBAIC01 NzgsNiArNjA0LDEzIEBAIHczMmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5h bCAqdCkKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2RlOiBpbnRlcnJ1cHRfaW5wdXQgb2ZmLCBu byBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0IGNoYXJhY3RlciBpbnB1dCwgc3RhbmRh cmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9tb2RlIChRbmlsLCBRbmlsLCBtYWtlX2Zp eG51bSAoMiksIFFuaWwpOworCisjaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8xNikgfHwg ZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09M T1JfMjRCSVQpCisgIERXT1JEIG1vZGU7CisgIEdldENvbnNvbGVNb2RlIChjdXJfc2NyZWVuLCAm bW9kZSk7CisgIG1vZGUgfD0gRU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORzsKKyAg U2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sIG1vZGUpOworI2VuZGlmCiB9CiAKIC8qIGhtbW0u Li4gcGVyaGFwcyB0aGVzZSBsZXQgdXMgYnJhY2tldCBzY3JlZW4gY2hhbmdlcyBzbyB0aGF0IHdl IGNhbiBmbHVzaApAQCAtNzI5LDYgKzc2MiwxMTAgQEAgdzMyX2ZhY2VfYXR0cmlidXRlcyAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAgcmV0dXJuIGNoYXJfYXR0cjsKIH0KIAorI2lm IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09M T1JfMjU2KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzI0QklUKQorc3RhdGljIHZvaWQK K3R1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0 IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSUQgKGYsIGZhY2VfaWQpOworICB1bnNpZ25lZCBsb25n IGZnID0gZmFjZS0+Zm9yZWdyb3VuZDsKKyAgdW5zaWduZWQgbG9uZyBiZyA9IGZhY2UtPmJhY2tn cm91bmQ7CisgIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkgKGYpOwor ICBEV09SRCByOworCisgIC8qIHJlYWxpemVfdHR5X2ZhY2UgaW4geGZhY2VzLmMgc3dhcHMgdGhl IHZhbHVlcyBvZiBmZyBhbmQgYmcgaWYKKyAgZmFjZS0+dHR5X3JldmVyc2VfcC4gQWRkaW5nIHRo ZSB0ZXJtaW5hbCBzZXF1ZW5jZSAiG1s3bSIgaGVyZQorICBzd2FwcyB0aGVtIGJhY2ssIGFuZCBt YWtlcyBmb3IgYSB0cmlja3kgbGl0dGxlIGJ1Zy4gQmV3YXJlISAqLworICBpZiAoZmFjZS0+dHR5 X2JvbGRfcCkKKyAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sICIbWzFtIiwgNCwgJnIsIE5V TEwpOworICBpZiAoZmFjZS0+dHR5X2l0YWxpY19wKQorICAgIFdyaXRlQ29uc29sZSAoY3VyX3Nj cmVlbiwgIhtbM20iLCA0LCAmciwgTlVMTCk7CisgIGlmIChmYWNlLT50dHlfc3RyaWtlX3Rocm91 Z2hfcCkKKyAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sICIbWzltIiwgNCwgJnIsIE5VTEwp OworICBpZiAoZmFjZS0+dW5kZXJsaW5lICE9IDApIC8qIG5vIHN1cHBvcnQgZm9yIG11bHRpY29s b3IgZ2x5cGhzIG5vdyAqLworICAgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgIhtbNG0iLCA0 LCAmciwgTlVMTCk7CisKKyAgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA+IDApCisgICAgeworICAg ICAgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNiB8fCB0dHktPlROX21heF9jb2xvcnMgPT0g MjU2KQorCXsKKwkgIGlmIChmZyA+PSAwICYmIGZnIDwgOCkKKwkgICAgeworCSAgICAgIGNoYXIg cFsxMF07CisJICAgICAgc25wcmludGYocCwgMTAsICIbWyVsdW0iLCBmZyArIDMwKTsKKwkgICAg ICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAg ICB9CisJICBpZiAoZmcgPj0gOCAmJiBmZyA8IDE2KQorCSAgICB7CisJICAgICAgY2hhciBwWzEw XTsKKwkgICAgICBzbnByaW50ZihwLCAxMCwgIhtbJWx1bSIsIGZnIC0gOCArIDkwKTsKKwkgICAg ICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAg ICB9CisJICBpZiAoZmcgPj0gMTYgJiYgZmcgPCAyNTYpCisJICAgIHsKKwkgICAgICBjaGFyIHBb MjBdOworCSAgICAgIHNucHJpbnRmKHAsIDIwLCAiG1szODs1OyVsdW0iLCBmZyk7CisJICAgICAg V3JpdGVDb25zb2xlIChjdXJfc2NyZWVuLCBwLCBzdHJsZW4ocCksICZyLCBOVUxMKTsKKwkgICAg fQorCSAgaWYgKGJnID49IDAgJiYgYmcgPCA4KQorCSAgICB7CisJICAgICAgY2hhciBwWzEwXTsK KwkgICAgICBzbnByaW50ZihwLCAxMCwgIhtbJWx1bSIsIGJnICsgNDApOworCSAgICAgIFdyaXRl Q29uc29sZSAoY3VyX3NjcmVlbiwgcCwgc3RybGVuKHApLCAmciwgTlVMTCk7CisJICAgIH0KKwkg IGlmIChiZyA+PSA4ICYmIGJnIDwgMTYpCisJICAgIHsKKwkgICAgICBjaGFyIHBbMTBdOworCSAg ICAgIHNucHJpbnRmKHAsIDEwLCAiG1slbHVtIiwgYmcgLSA4ICsgMTAwKTsKKwkgICAgICBXcml0 ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAgICB9CisJ ICBpZiAoYmc+PSAxNiAmJiBiZyA8IDI1NikKKwkgICAgeworCSAgICAgIGNoYXIgcFsyMF07CisJ ICAgICAgc25wcmludGYocCwgMjAsICIbWzQ4OzU7JWx1bSIsIGJnKTsKKwkgICAgICBXcml0ZUNv bnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAgICB9CisJfQor ICAgICAgZWxzZSBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09IDE2Nzc3MjE2KQorCisKKwl7CisJ ICBjaGFyIHBbMzBdOworCSAgc25wcmludGYocCwzMCwgIhtbMzg7MjslbHU7JWx1OyVsdW0iLCBm Zy82NTUzNiwgKGZnLzI1NikmMjU1LCBmZyYyNTUpOworCSAgV3JpdGVDb25zb2xlIChjdXJfc2Ny ZWVuLCBwLCBzdHJsZW4ocCksICZyLCBOVUxMKTsKKworCSAgY2hhciBxWzMwXTsKKwkgIHNucHJp bnRmKHEsIDMwLCAiG1s0ODsyOyVsdTslbHU7JWx1bSIsIGJnLzY1NTM2LCAoYmcvMjU2KSYyNTUs IGJnJjI1NSk7CisJICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHEsIHN0cmxlbihxKSwgJnIs IE5VTEwpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit0dXJuX29mZl9mYWNlIChzdHJ1 Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQoreworICBzdHJ1Y3QgZmFjZSAqZmFjZSA9IEZBQ0Vf RlJPTV9JRCAoZiwgZmFjZV9pZCk7CisgIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBG UkFNRV9UVFkgKGYpOworICBEV09SRCByOworCisgIGlmIChmYWNlLT50dHlfYm9sZF9wCisgICAg ICB8fCBmYWNlLT50dHlfaXRhbGljX3AKKyAgICAgIHx8IGZhY2UtPnR0eV9zdHJpa2VfdGhyb3Vn aF9wCisgICAgICB8fCAoZmFjZS0+dW5kZXJsaW5lICE9IDApKQorICAgIHsKKyAgICAgIFdyaXRl Q29uc29sZSAoY3VyX3NjcmVlbiwgIhtbbSIsIDMsICZyLCBOVUxMKTsKKyAgICB9CisgIC8qIFN3 aXRjaCBiYWNrIHRvIGRlZmF1bHQgY29sb3JzLiAgKi8KKyAgaWYgKHR0eS0+VE5fbWF4X2NvbG9y cyA+IDAKKyAgICAgICYmICgoZmFjZS0+Zm9yZWdyb3VuZCAhPSBGQUNFX1RUWV9ERUZBVUxUX0NP TE9SCisJICAgJiYgZmFjZS0+Zm9yZWdyb3VuZCAhPSBGQUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9S KQorCSAgfHwgKGZhY2UtPmJhY2tncm91bmQgIT0gRkFDRV9UVFlfREVGQVVMVF9DT0xPUgorCSAg ICAgICYmIGZhY2UtPmJhY2tncm91bmQgIT0gRkFDRV9UVFlfREVGQVVMVF9CR19DT0xPUikpKQor ICAgIHsKKyAgICAgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgIhtbMzk7NDltIiwgOCwgJnIs IE5VTEwpOworICAgIH0KK30KKyNlbmRpZgorCiAvKiBUaGUgSU1FIHdpbmRvdyBpcyBuZWVkZWQg dG8gcmVjZWl2ZSB0aGUgc2Vzc2lvbiBub3RpZmljYXRpb25zCiAgICByZXF1aXJlZCB0byByZXNl dCB0aGUgbG93IGxldmVsIGtleWJvYXJkIGhvb2sgc3RhdGUuICAqLwogCkBAIC04MzQsNyArOTcx LDcgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQg KndpZHRoLCBpbnQgKmhlaWdodCkKIAlHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyAoY3VyX3Nj cmVlbiwgJmluZm8pOwogCiAJLyogU2hyaW5rIHRoZSB3aW5kb3cgZmlyc3QsIHNvIHRoZSBidWZm ZXIgZGltZW5zaW9ucyBjYW4gYmUKLSAgICAgICAgICAgcmVkdWNlZCBpZiBuZWNlc3NhcnkuICAq LworCSAgIHJlZHVjZWQgaWYgbmVjZXNzYXJ5LiAgKi8KIAluZXdfd2luX2RpbXMuVG9wID0gMDsK IAluZXdfd2luX2RpbXMuTGVmdCA9IDA7CiAJbmV3X3dpbl9kaW1zLkJvdHRvbSA9IG1pbiAobmV3 X3NpemUuWSwgaW5mby5kd1NpemUuWSkgLSAxOwpAQCAtOTU3LDcgKzEwOTQsNyBAQCB2b2lkCiBz eW1zX29mX250dGVybSAodm9pZCkKIHsKICAgREVGVkFSX0JPT0wgKCJ3MzItdXNlLWZ1bGwtc2Ny ZWVuLWJ1ZmZlciIsCi0gICAgICAgICAgICAgICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciwK KwkgICAgICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIsCiAJICAgICAgIGRvYzogLyogTm9u LW5pbCBtZWFucyBtYWtlIHRlcm1pbmFsIGZyYW1lcyB1c2UgdGhlIGZ1bGwgc2NyZWVuIGJ1ZmZl ciBkaW1lbnNpb25zLgogVGhpcyBpcyBkZXNpcmFibGUgd2hlbiBydW5uaW5nIEVtYWNzIG92ZXIg dGVsbmV0LgogQSB2YWx1ZSBvZiBuaWwgbWVhbnMgdXNlIHRoZSBjdXJyZW50IGNvbnNvbGUgd2lu ZG93IGRpbWVuc2lvbnM7IHRoaXMKQEAgLTk2NSw2ICsxMTAyLDE1IEBAIG1heSBiZSBwcmVmZXJh YmxlIHdoZW4gd29ya2luZyBkaXJlY3RseSBhdCB0aGUgY29uc29sZSB3aXRoIGEgbGFyZ2UKIHNj cm9sbC1iYWNrIGJ1ZmZlci4gICovKTsKICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIgPSAw OwogCisgIERFRlZBUl9CT09MICgidzMyY29uLXVzZS12dC1jb2xvciIsCisJCXczMmNvbl91c2Vf dnRfY29sb3IsCisJCWRvYzogLyogTm9uLW5pbCBtZWFucyB3MzJjb25zb2xlIHVzZXMgdGVybWlu YWwgc2VxdWVuY2VzIHJhdGhlciB0aGFuIHczMiBjb25zb2xlIEFQSSBmb3IgY29sb3IuICovKTsK KyNpZiBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzE2KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05W VENPTE9SXzI1NikgfHwgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNEJJVCkKKyAgdzMyY29u X3VzZV92dF9jb2xvciA9IDE7CisjZWxzZQorICB3MzJjb25fdXNlX3Z0X2NvbG9yID0gMDsKKyNl bmRpZgorCiAgIGRlZnN1YnIgKCZTc2V0X3NjcmVlbl9jb2xvcik7CiAgIGRlZnN1YnIgKCZTZ2V0 X3NjcmVlbl9jb2xvcik7CiAgIGRlZnN1YnIgKCZTc2V0X2N1cnNvcl9zaXplKTsKLS0gCjIuNDku MAoK --b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo--
Ewan <ewan@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#79298; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.